diff --git a/test_util/wpt b/test_util/wpt
index 96f98c458c..959a86ad2e 160000
--- a/test_util/wpt
+++ b/test_util/wpt
@@ -1 +1 @@
-Subproject commit 96f98c458cd36e1f12b6807b22a3a9ee1e1b0326
+Subproject commit 959a86ad2e36ec5b939a6ccbfdb4ba2916c92f85
diff --git a/tools/wpt/expectation.json b/tools/wpt/expectation.json
index de02fd7f9e..38a1e3db54 100644
--- a/tools/wpt/expectation.json
+++ b/tools/wpt/expectation.json
@@ -939,7 +939,44 @@
"Event constructors 3"
],
"event-global.worker.html": true
- }
+ },
+ "idlharness-shadowrealm.window.html": false,
+ "idlharness.any.worker.html": [
+ "Event interface: attribute srcElement",
+ "Event interface: operation composedPath()",
+ "Event interface: constant NONE on interface object",
+ "Event interface: constant NONE on interface prototype object",
+ "Event interface: constant CAPTURING_PHASE on interface object",
+ "Event interface: constant CAPTURING_PHASE on interface prototype object",
+ "Event interface: constant AT_TARGET on interface object",
+ "Event interface: constant AT_TARGET on interface prototype object",
+ "Event interface: constant BUBBLING_PHASE on interface object",
+ "Event interface: constant BUBBLING_PHASE on interface prototype object",
+ "Event interface: operation stopPropagation()",
+ "Event interface: attribute cancelBubble",
+ "Event interface: operation stopImmediatePropagation()",
+ "Event interface: attribute returnValue",
+ "Event interface: operation preventDefault()",
+ "Event interface: attribute defaultPrevented",
+ "Event interface: operation initEvent(DOMString, optional boolean, optional boolean)",
+ "Event interface: new Event(\"foo\") must have own property \"isTrusted\"",
+ "Event interface: new Event(\"foo\") must inherit property \"initEvent(DOMString, optional boolean, optional boolean)\" with the proper type",
+ "Event interface: calling initEvent(DOMString, optional boolean, optional boolean) on new Event(\"foo\") with too few arguments must throw TypeError",
+ "CustomEvent interface: operation initCustomEvent(DOMString, optional boolean, optional boolean, optional any)",
+ "CustomEvent interface: new CustomEvent(\"foo\") must inherit property \"initCustomEvent(DOMString, optional boolean, optional boolean, optional any)\" with the proper type",
+ "CustomEvent interface: calling initCustomEvent(DOMString, optional boolean, optional boolean, optional any) on new CustomEvent(\"foo\") with too few arguments must throw TypeError",
+ "Event interface: new CustomEvent(\"foo\") must have own property \"isTrusted\"",
+ "Event interface: new CustomEvent(\"foo\") must inherit property \"initEvent(DOMString, optional boolean, optional boolean)\" with the proper type",
+ "Event interface: calling initEvent(DOMString, optional boolean, optional boolean) on new CustomEvent(\"foo\") with too few arguments must throw TypeError",
+ "EventTarget interface: operation addEventListener(DOMString, EventListener?, optional (AddEventListenerOptions or boolean))",
+ "EventTarget interface: operation removeEventListener(DOMString, EventListener?, optional (EventListenerOptions or boolean))",
+ "AbortController interface: existence and properties of interface object",
+ "AbortController interface: operation abort(optional any)",
+ "AbortSignal interface: existence and properties of interface object",
+ "AbortSignal interface: operation abort(optional any)",
+ "AbortSignal interface: operation timeout(unsigned long long)",
+ "AbortSignal interface: attribute onabort"
+ ]
},
"encoding": {
"api-basics.any.html": true,
@@ -1126,7 +1163,8 @@
"unsupported-encodings.any.worker.html": false,
"single-byte-decoder.window.html?TextDecoder": true,
"textdecoder-eof.any.html": true,
- "textdecoder-eof.any.worker.html": true
+ "textdecoder-eof.any.worker.html": true,
+ "idlharness-shadowrealm.window.html": false
},
"hr-time": {
"monotonic-clock.any.html": true,
@@ -1154,7 +1192,8 @@
"WorkerGlobalScope interface: attribute performance",
"WorkerGlobalScope interface: self must inherit property \"performance\" with the proper type"
],
- "window-worker-timeOrigin.window.html": false
+ "window-worker-timeOrigin.window.html": false,
+ "idlharness-shadowrealm.window.html": false
},
"streams": {
"idlharness.any.html": true,
@@ -1296,7 +1335,8 @@
"queuing-strategies-size-function-per-global.window.html": false,
"transferable": {
"deserialize-error.window.html": false
- }
+ },
+ "idlharness-shadowrealm.window.html": false
},
"user-timing": {
"buffered-flag.any.html": false,
@@ -1842,9 +1882,8 @@
"Parsing: against ",
"Parsing: against ",
"Parsing: against ",
- "Parsing: against ",
- "Parsing: against ",
"Parsing: against ",
+ "Parsing: against ",
"Parsing: against ",
"Parsing: against ",
"Parsing: against ",
@@ -1987,9 +2026,8 @@
"Parsing: against ",
"Parsing: against ",
"Parsing: against ",
- "Parsing: against ",
- "Parsing: against ",
"Parsing: against ",
+ "Parsing: against ",
"Parsing: against ",
"Parsing: against ",
"Parsing: against ",
@@ -2083,14 +2121,14 @@
"Setting pathname with trailing U+0000 (https:)",
"Setting protocol with leading U+001F (https:)",
"Setting protocol with U+001F before inserted colon (https:)",
- "Setting port with leading U+001F (https:)",
- "Setting pathname with trailing U+001F (https:)",
"Setting host with leading U+001F (https:)",
"Setting hostname with leading U+001F (https:)",
"Setting host with middle U+001F (https:)",
"Setting hostname with middle U+001F (https:)",
"Setting host with trailing U+001F (https:)",
"Setting hostname with trailing U+001F (https:)",
+ "Setting port with leading U+001F (https:)",
+ "Setting pathname with trailing U+001F (https:)",
"Setting protocol with leading U+0000 (wpt++:)",
"Setting protocol with U+0000 before inserted colon (wpt++:)",
"Setting port with leading U+0000 (wpt++:)",
@@ -2107,14 +2145,14 @@
"Setting pathname with trailing U+0000 (https:)",
"Setting protocol with leading U+001F (https:)",
"Setting protocol with U+001F before inserted colon (https:)",
- "Setting port with leading U+001F (https:)",
- "Setting pathname with trailing U+001F (https:)",
"Setting host with leading U+001F (https:)",
"Setting hostname with leading U+001F (https:)",
"Setting host with middle U+001F (https:)",
"Setting hostname with middle U+001F (https:)",
"Setting host with trailing U+001F (https:)",
"Setting hostname with trailing U+001F (https:)",
+ "Setting port with leading U+001F (https:)",
+ "Setting pathname with trailing U+001F (https:)",
"Setting protocol with leading U+0000 (wpt++:)",
"Setting protocol with U+0000 before inserted colon (wpt++:)",
"Setting port with leading U+0000 (wpt++:)",
@@ -2177,6 +2215,459 @@
"URL: Setting .pathname = '/..//p'",
"URL: Setting .pathname = '//p'",
"URL: Setting .pathname = 'p' Drop /. from path"
+ ],
+ "idlharness-shadowrealm.window.html": false,
+ "percent-encoding.window.html": [
+ "Input † with encoding big5",
+ "Input † with encoding euc-kr",
+ "Input † with encoding utf-8",
+ "Input † with encoding windows-1252",
+ "Input \u000eA with encoding big5",
+ "Input \u000eA with encoding iso-2022-jp",
+ "Input \u000eA with encoding utf-8",
+ "Input ‾\\ with encoding iso-2022-jp",
+ "Input ‾\\ with encoding utf-8",
+ "Input with encoding gb18030",
+ "Input with encoding utf-8",
+ "Input − with encoding shift_jis",
+ "Input − with encoding utf-8",
+ "Input á| with encoding utf-8"
+ ],
+ "url-setters-a-area.window.html": [
+ ": Setting .protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.",
+ ": Setting .protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.",
+ ": Setting .protocol = 'b'",
+ ": Setting .protocol = 'b'",
+ ": Setting .protocol = 'defuse'",
+ ": Setting .protocol = 'defuse'",
+ ": Setting .protocol = 'B' Upper-case ASCII is lower-cased",
+ ": Setting .protocol = 'B' Upper-case ASCII is lower-cased",
+ ": Setting .protocol = 'é' Non-ASCII is rejected",
+ ": Setting .protocol = 'é' Non-ASCII is rejected",
+ ": Setting .protocol = '0b' No leading digit",
+ ": Setting .protocol = '0b' No leading digit",
+ ": Setting .protocol = '+b' No leading punctuation",
+ ": Setting .protocol = '+b' No leading punctuation",
+ ": Setting .protocol = 'bC0+-.'",
+ ": Setting .protocol = 'bC0+-.'",
+ ": Setting .protocol = 'b,c' Only some punctuation is acceptable",
+ ": Setting .protocol = 'b,c' Only some punctuation is acceptable",
+ ": Setting .protocol = 'bé' Non-ASCII is rejected",
+ ": Setting .protocol = 'bé' Non-ASCII is rejected",
+ ": Setting .protocol = 'file' Can’t switch from URL containing username/password/port to file",
+ ": Setting .protocol = 'file' Can’t switch from URL containing username/password/port to file",
+ ": Setting .protocol = 'file'",
+ ": Setting .protocol = 'file'",
+ ": Setting .protocol = 'file'",
+ ": Setting .protocol = 'file'",
+ ": Setting .protocol = 'http' Can’t switch from file URL with no host",
+ ": Setting .protocol = 'http' Can’t switch from file URL with no host",
+ ": Setting .protocol = 'https'",
+ ": Setting .protocol = 'https'",
+ ": Setting .protocol = 'wss'",
+ ": Setting .protocol = 'wss'",
+ ": Setting .protocol = 'b' Can’t switch from special scheme to non-special",
+ ": Setting .protocol = 'b' Can’t switch from special scheme to non-special",
+ ": Setting .protocol = 's'",
+ ": Setting .protocol = 's'",
+ ": Setting .protocol = 's'",
+ ": Setting .protocol = 's'",
+ ": Setting .protocol = 'test'",
+ ": Setting .protocol = 'test'",
+ ": Setting .protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must.",
+ ": Setting .protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must.",
+ ": Setting .protocol = 'http' Can’t switch from non-special scheme to special",
+ ": Setting .protocol = 'http' Can’t switch from non-special scheme to special",
+ ": Setting .protocol = 'https'",
+ ": Setting .protocol = 'https'",
+ ": Setting .protocol = 'file'",
+ ": Setting .protocol = 'file'",
+ ": Setting .protocol = 'file'",
+ ": Setting .protocol = 'file'",
+ ": Setting .protocol = 'https'",
+ ": Setting .protocol = 'https'",
+ ": Setting .protocol = 'https:foo : bar' Stuff after the first ':' is ignored",
+ ": Setting .protocol = 'https:foo : bar' Stuff after the first ':' is ignored",
+ ": Setting Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored",
+ ": Setting Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored",
+ ": Setting .protocol = 'https' Port is set to null if it is the default for new scheme.",
+ ": Setting .protocol = 'https' Port is set to null if it is the default for new scheme.",
+ ": Setting .username = 'me' No host means no username",
+ ": Setting .username = 'me' No host means no username",
+ ": Setting .username = 'me' No host means no username",
+ ": Setting .username = 'me' No host means no username",
+ ": Setting .username = 'me' Cannot-be-a-base means no username",
+ ": Setting .username = 'me' Cannot-be-a-base means no username",
+ ": Setting .username = 'wario'",
+ ": Setting .username = 'wario'",
+ ": Setting .username = 'me'",
+ ": Setting .username = 'me'",
+ ": Setting .username = 'me'",
+ ": Setting .username = 'me'",
+ ": Setting .username = ''",
+ ": Setting .username = ''",
+ ": Setting .username = ''",
+ ": Setting .username = ''",
+ ": Setting .username = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.",
+ ": Setting .username = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.",
+ ": Setting .username = '%c3%89té' Bytes already percent-encoded are left as-is.",
+ ": Setting .username = '%c3%89té' Bytes already percent-encoded are left as-is.",
+ ": Setting .username = 'x'",
+ ": Setting .username = 'x'",
+ ": Setting .username = 'wario'",
+ ": Setting .username = 'wario'",
+ ": Setting .username = 'test'",
+ ": Setting .username = 'test'",
+ ": Setting .password = 'secret' No host means no password",
+ ": Setting .password = 'secret' No host means no password",
+ ": Setting .password = 'secret' No host means no password",
+ ": Setting .password = 'secret' No host means no password",
+ ": Setting .password = 'secret' Cannot-be-a-base means no password",
+ ": Setting .password = 'secret' Cannot-be-a-base means no password",
+ ": Setting .password = 'secret'",
+ ": Setting .password = 'secret'",
+ ": Setting .password = 'secret'",
+ ": Setting .password = 'secret'",
+ ": Setting .password = ''",
+ ": Setting .password = ''",
+ ": Setting .password = ''",
+ ": Setting .password = ''",
+ ": Setting .password = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.",
+ ": Setting .password = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.",
+ ": Setting .password = '%c3%89té' Bytes already percent-encoded are left as-is.",
+ ": Setting .password = '%c3%89té' Bytes already percent-encoded are left as-is.",
+ ": Setting .password = 'x'",
+ ": Setting .password = 'x'",
+ ": Setting .password = 'bowser'",
+ ": Setting .password = 'bowser'",
+ ": Setting .password = 'test'",
+ ": Setting .password = 'test'",
+ ": Setting .host = '\u0000' Non-special scheme",
+ ": Setting .host = '\u0000' Non-special scheme",
+ ": Setting .host = '\t'",
+ ": Setting .host = '\t'",
+ ": Setting .host = '\n'",
+ ": Setting .host = '\n'",
+ ": Setting .host = '\r'",
+ ": Setting .host = '\r'",
+ ": Setting .host = ' '",
+ ": Setting .host = ' '",
+ ": Setting .host = '#'",
+ ": Setting .host = '#'",
+ ": Setting .host = '/'",
+ ": Setting .host = '/'",
+ ": Setting .host = '?'",
+ ": Setting .host = '?'",
+ ": Setting .host = '@'",
+ ": Setting .host = '@'",
+ ": Setting .host = 'ß'",
+ ": Setting .host = 'ß'",
+ ": Setting .host = 'ß' IDNA Nontransitional_Processing",
+ ": Setting .host = 'ß' IDNA Nontransitional_Processing",
+ ": Setting .host = 'example.com' Cannot-be-a-base means no host",
+ ": Setting .host = 'example.com' Cannot-be-a-base means no host",
+ ": Setting .host = 'example.net' Cannot-be-a-base means no host",
+ ": Setting .host = 'example.net' Cannot-be-a-base means no host",
+ ": Setting .host = 'example.com:8080'",
+ ": Setting .host = 'example.com:8080'",
+ ": Setting .host = 'example.com' Port number is unchanged if not specified in the new value",
+ ": Setting .host = 'example.com' Port number is unchanged if not specified in the new value",
+ ": Setting .host = 'example.com:' Port number is unchanged if not specified",
+ ": Setting .host = 'example.com:' Port number is unchanged if not specified",
+ ": Setting .host = '' The empty host is not valid for special schemes",
+ ": Setting .host = '' The empty host is not valid for special schemes",
+ ": Setting .host = '' The empty host is OK for non-special schemes",
+ ": Setting .host = '' The empty host is OK for non-special schemes",
+ ": Setting .host = 'example.net' Path-only URLs can gain a host",
+ ": Setting .host = 'example.net' Path-only URLs can gain a host",
+ ": Setting .host = '0x7F000001:8080' IPv4 address syntax is normalized",
+ ": Setting .host = '0x7F000001:8080' IPv4 address syntax is normalized",
+ ": Setting .host = '[::0:01]:2' IPv6 address syntax is normalized",
+ ": Setting .host = '[::0:01]:2' IPv6 address syntax is normalized",
+ ": Setting .host = '[2001:db8::2]:4002' IPv6 literal address with port, crbug.com/1012416",
+ ": Setting .host = '[2001:db8::2]:4002' IPv6 literal address with port, crbug.com/1012416",
+ ": Setting .host = 'example.com:80' Default port number is removed",
+ ": Setting .host = 'example.com:80' Default port number is removed",
+ ": Setting .host = 'example.com:443' Default port number is removed",
+ ": Setting .host = 'example.com:443' Default port number is removed",
+ ": Setting .host = 'example.com:80' Default port number is only removed for the relevant scheme",
+ ": Setting .host = 'example.com:80' Default port number is only removed for the relevant scheme",
+ ": Setting .host = 'example.com:80' Port number is removed if new port is scheme default and existing URL has a non-default port",
+ ": Setting .host = 'example.com:80' Port number is removed if new port is scheme default and existing URL has a non-default port",
+ ": Setting .host = 'example.com/stuff' Stuff after a / delimiter is ignored",
+ ": Setting .host = 'example.com/stuff' Stuff after a / delimiter is ignored",
+ ": Setting .host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored",
+ ": Setting .host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored",
+ ": Setting .host = 'example.com?stuff' Stuff after a ? delimiter is ignored",
+ ": Setting .host = 'example.com?stuff' Stuff after a ? delimiter is ignored",
+ ": Setting .host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored",
+ ": Setting .host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored",
+ ": Setting .host = 'example.com#stuff' Stuff after a # delimiter is ignored",
+ ": Setting .host = 'example.com#stuff' Stuff after a # delimiter is ignored",
+ ": Setting .host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored",
+ ": Setting .host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored",
+ ": Setting .host = 'example.com\\stuff' Stuff after a \\ delimiter is ignored for special schemes",
+ ": Setting .host = 'example.com\\stuff' Stuff after a \\ delimiter is ignored for special schemes",
+ ": Setting .host = 'example.com:8080\\stuff' Stuff after a \\ delimiter is ignored for special schemes",
+ ": Setting .host = 'example.com:8080\\stuff' Stuff after a \\ delimiter is ignored for special schemes",
+ ": Setting .host = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts",
+ ": Setting .host = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts",
+ ": Setting .host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ ": Setting .host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ ": Setting .host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ ": Setting .host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ ": Setting .host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ ": Setting .host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error",
+ ": Setting .host = 'example.com:65535' Port numbers are 16 bit integers",
+ ": Setting .host = 'example.com:65535' Port numbers are 16 bit integers",
+ ": Setting .host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though.",
+ ": Setting .host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though.",
+ ": Setting .host = '[google.com]' Broken IPv6",
+ ": Setting .host = '[google.com]' Broken IPv6",
+ ": Setting .host = '[::1.2.3.4x]'",
+ ": Setting .host = '[::1.2.3.4x]'",
+ ": Setting .host = '[::1.2.3.]'",
+ ": Setting .host = '[::1.2.3.]'",
+ ": Setting .host = '[::1.2.]'",
+ ": Setting .host = '[::1.2.]'",
+ ": Setting .host = '[::1.]'",
+ ": Setting .host = '[::1.]'",
+ ": Setting .host = 'x:123'",
+ ": Setting .host = 'x:123'",
+ ": Setting .host = 'loc%41lhost'",
+ ": Setting .host = 'loc%41lhost'",
+ ": Setting .host = ''",
+ ": Setting .host = ''",
+ "