if (self.location) { test(function() { assert_false("searchParams" in self.location, "location object should not have a searchParams attribute"); }, "searchParams on location object"); } if(self.GLOBAL.isWindow()) { test(() => { assert_false("searchParams" in document.createElement("a")) assert_false("searchParams" in document.createElement("area")) }, " and .searchParams should be undefined"); } test(function() { var url = new URL("./foo", "http://www.example.org"); assert_equals(url.href, "http://www.example.org/foo"); assert_throws_js(TypeError, function() { url.href = "./bar"; }); }, "Setting URL's href attribute and base URLs"); test(function() { assert_equals(URL.domainToASCII, undefined); }, "URL.domainToASCII should be undefined"); test(function() { assert_equals(URL.domainToUnicode, undefined); }, "URL.domainToUnicode should be undefined"); test(() => { assert_throws_dom("DataCloneError", () => self.structuredClone(new URL("about:blank"))); }, "URL: no structured serialize/deserialize support"); test(() => { assert_throws_dom("DataCloneError", () => self.structuredClone(new URLSearchParams())); }, "URLSearchParams: no structured serialize/deserialize support"); test(() => { const url = new URL("about:blank"); url.toString = () => { throw 1 }; assert_throws_exactly(1, () => new URL(url), "url argument"); assert_throws_exactly(1, () => new URL("about:blank", url), "base argument"); }, "Constructor only takes strings"); done();