| <!doctype html> |
| <meta charset=utf-8> |
| <title>Test URL parser failure consistency</title> |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <div id=log></div> |
| <iframe></iframe> |
| <script> |
| promise_test(() => fetch("urltestdata.json").then(res => res.json()).then(runTests), "Loading data…") |
| |
| function runTests(testData) { |
| for(const test of testData) { |
| if (typeof test === "string" || !test.failure || test.base !== "about:blank") { |
| continue |
| } |
| |
| const name = test.input + " should throw" |
| |
| self.test(() => { // new URL itself is already tested by url-constructor.html |
| const url = new URL("about:blank") |
| assert_throws(new TypeError, () => url.href = test.input) |
| }, "URL's href: " + name) |
| |
| self.test(() => { |
| const client = new XMLHttpRequest() |
| assert_throws("SyntaxError", () => client.open("GET", test.input)) |
| }, "XHR: " + name) |
| |
| self.test(() => { |
| assert_throws(new TypeError, () => self.navigator.sendBeacon(test.input)) |
| }, "sendBeacon(): " + name) |
| |
| self.test(() => { |
| assert_throws(new TypeError, () => self[0].location = test.input) |
| }, "Location's href: " + name) |
| |
| self.test(() => { |
| assert_throws("SyntaxError", () => self.open(test.input).close()) |
| }, "window.open(): " + name) |
| } |
| } |
| </script> |