diff options
author | bors-servo <servo-ops@mozilla.com> | 2020-07-03 11:17:27 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-03 11:17:27 -0400 |
commit | 745eb88e32bbae4a85b605706de25a1639ca8902 (patch) | |
tree | 3f5a63af8c8ff638276e60465092fef90f422d7d | |
parent | 4504eebdc3fb0f033748c9d8665a8ae024bf7c88 (diff) | |
parent | ba2986d694c6ec39a8b3fc697fda3d01d08b1cc3 (diff) | |
download | servo-745eb88e32bbae4a85b605706de25a1639ca8902.tar.gz servo-745eb88e32bbae4a85b605706de25a1639ca8902.zip |
Auto merge of #27159 - servo-wpt-sync:wpt_update_03-07-2020, r=jdm
Sync WPT with upstream (03-07-2020)
Automated downstream sync of changes from upstream as of 03-07-2020.
[no-wpt-sync]
r? @servo-wpt-sync
85 files changed, 1490 insertions, 309 deletions
diff --git a/tests/wpt/metadata-layout-2020/FileAPI/url/url-charset.window.js.ini b/tests/wpt/metadata-layout-2020/FileAPI/url/url-charset.window.js.ini new file mode 100644 index 00000000000..a9005e45d6e --- /dev/null +++ b/tests/wpt/metadata-layout-2020/FileAPI/url/url-charset.window.js.ini @@ -0,0 +1,8 @@ +[url-charset.window.html] + expected: TIMEOUT + [Blob charset should override any auto-detected charset.] + expected: TIMEOUT + + [Blob charset should override <meta charset>.] + expected: TIMEOUT + diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini new file mode 100644 index 00000000000..f64b45fea6b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-002.html] + [Hit test float] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini new file mode 100644 index 00000000000..f29da48a2a0 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-003.html] + [Miss float below something else] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini new file mode 100644 index 00000000000..4bfb0c2053a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-004.html] + [Miss float below something else] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini deleted file mode 100644 index baa9f1a7541..00000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-005.html] - [Miss clipped float] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/variations/font-weight-matching.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/variations/font-weight-matching.html.ini new file mode 100644 index 00000000000..75f98e27a8c --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-fonts/variations/font-weight-matching.html.ini @@ -0,0 +1,37 @@ +[font-weight-matching.html] + [Test @font-face matching for weight 99] + expected: FAIL + + [Test @font-face matching for weight 420] + expected: FAIL + + [Test @font-face matching for weight 600] + expected: FAIL + + [Test @font-face matching for weight 1000] + expected: FAIL + + [Test @font-face matching for weight 470] + expected: FAIL + + [Test @font-face matching for weight 900] + expected: FAIL + + [Test @font-face matching for weight 100] + expected: FAIL + + [Test @font-face matching for weight 400] + expected: FAIL + + [Test @font-face matching for weight 249] + expected: FAIL + + [Test @font-face matching for weight 750] + expected: FAIL + + [Test @font-face matching for weight 751] + expected: FAIL + + [Test @font-face matching for weight 399] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini index 26d9a6ee392..9dc4e4c7787 100644 --- a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini @@ -315,9 +315,6 @@ [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html] expected: FAIL - [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] - expected: FAIL - [<iframe>: separate response Content-Type: text/html;x=" text/plain] expected: FAIL @@ -327,12 +324,15 @@ [<iframe>: combined response Content-Type: text/html;" text/plain] expected: FAIL - [<iframe>: separate response Content-Type: text/html */*;charset=gbk] - expected: FAIL - [<iframe>: separate response Content-Type: text/html */*] expected: FAIL [<iframe>: combined response Content-Type: text/html;" \\" text/plain] expected: FAIL + [<iframe>: combined response Content-Type: */* text/html] + expected: FAIL + + [<iframe>: combined response Content-Type: text/html */*] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini index d2df9b78483..8d0261f22a0 100644 --- a/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini @@ -56,3 +56,6 @@ [separate text/javascript x/x] expected: FAIL + [separate text/javascript; charset=windows-1252 text/javascript] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/fetch/redirect-navigate/preserve-fragment.html.ini b/tests/wpt/metadata-layout-2020/fetch/redirect-navigate/preserve-fragment.html.ini new file mode 100644 index 00000000000..71f705c28a8 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/fetch/redirect-navigate/preserve-fragment.html.ini @@ -0,0 +1,361 @@ +[preserve-fragment.html] + [[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 302 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 308 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 307 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 308 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 301 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in multiple 301 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in multiple 302 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 301 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in 308 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 301 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 308 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 302 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in multiple 308 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in multiple 307 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 302 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in multiple 302 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 301 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in 302 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 303 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 308 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in multiple 303 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in 302 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 301 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 308 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 307 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 307 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 301 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in 303 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 303 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in multiple 303 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in 307 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 303 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 302 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 307 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 307 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in 303 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 307 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in 301 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in multiple 308 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 301 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 302 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 302 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 303 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 302 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in 303 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 308 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 301 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in 301 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in multiple 302 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 307 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in 303 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 301 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in multiple 302 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 308 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 307 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 303 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in multiple 301 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 302 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 302 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 303 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 307 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 302 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 308 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 307 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in 307 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 303 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 308 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in 307 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 307 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 308 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in multiple 303 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in multiple 308 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in 302 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 302 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 303 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 301 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in multiple 307 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 307 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 303 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 303 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 301 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 301 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 307 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in multiple 307 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in 308 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 307 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 307 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in multiple 303 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 303 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in multiple 301 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in multiple 308 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in 308 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 301 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 303 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 308 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in 307 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 308 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 308 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 301 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 301 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 308 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in 302 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in 308 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in multiple 301 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 302 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 308 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in 301 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 303 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in 301 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 302 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 301 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 302 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 302 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 308 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in multiple 307 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 303 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 302 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 307 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 303 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 303 redirects] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-non-utf8-encoded-document.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-non-utf8-encoded-document.html.ini new file mode 100644 index 00000000000..b32bbd545da --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-non-utf8-encoded-document.html.ini @@ -0,0 +1,4 @@ +[scroll-frag-non-utf8-encoded-document.html] + [Fragment Navigation: fragment id should not be found in non UTF8 document] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini deleted file mode 100644 index 75d75b4cda2..00000000000 --- a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_2.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini deleted file mode 100644 index 385376c7321..00000000000 --- a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_4.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini deleted file mode 100644 index dc2e45516de..00000000000 --- a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_5.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini new file mode 100644 index 00000000000..735a9a75a2a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini @@ -0,0 +1,2 @@ +[cross-origin-objects-on-new-window.html] + expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini index f45aaafe1c5..3538891dae8 100644 --- a/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini +++ b/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini @@ -1,4 +1,5 @@ [supported-elements.html] + expected: TIMEOUT [Contenteditable element should support autofocus] expected: FAIL @@ -9,7 +10,7 @@ expected: FAIL [Area element should support autofocus] - expected: FAIL + expected: TIMEOUT [Host element with delegatesFocus should support autofocus] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini index 09ae27d7480..5c3ac06f42a 100644 --- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini @@ -171,6 +171,3 @@ [XHTML img usemap="#hash-id"] expected: FAIL - [HTML (standards) IMG usemap="no-hash-name"] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/media-elements/event_timeupdate.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/media-elements/event_timeupdate.html.ini new file mode 100644 index 00000000000..9ee5c01b36f --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/media-elements/event_timeupdate.html.ini @@ -0,0 +1,2 @@ +[event_timeupdate.html] + expected: CRASH diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini index 88f4ddd0e9a..42ebcc9d57e 100644 --- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini @@ -1,5 +1,5 @@ [iframe_sandbox_popups_escaping-1.html] - expected: CRASH + expected: TIMEOUT [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini index 0407f0cc2b7..9eb581fcf1f 100644 --- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini @@ -1,5 +1,5 @@ [iframe_sandbox_popups_nonescaping-2.html] - expected: TIMEOUT + expected: CRASH [Check that popups from a sandboxed iframe do not escape the sandbox] expected: NOTRUN diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini index 450c88bd32b..dbec6f2c2ff 100644 --- a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini +++ b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini @@ -3,6 +3,3 @@ [The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] expected: TIMEOUT - [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/webmessaging/with-ports/017.html.ini b/tests/wpt/metadata-layout-2020/webmessaging/with-ports/017.html.ini deleted file mode 100644 index 064cf47545b..00000000000 --- a/tests/wpt/metadata-layout-2020/webmessaging/with-ports/017.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[017.html] - expected: TIMEOUT - [origin of the script that invoked the method, about:blank] - expected: TIMEOUT - diff --git a/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini deleted file mode 100644 index 663a1f8fa30..00000000000 --- a/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[018.html] - expected: TIMEOUT - [origin of the script that invoked the method, javascript:] - expected: TIMEOUT - diff --git a/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini b/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini deleted file mode 100644 index 064cf47545b..00000000000 --- a/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[017.html] - expected: TIMEOUT - [origin of the script that invoked the method, about:blank] - expected: TIMEOUT - diff --git a/tests/wpt/metadata-layout-2020/webxr/ar-module/idlharness.https.window.js.ini b/tests/wpt/metadata-layout-2020/webxr/ar-module/idlharness.https.window.js.ini index c278bb7ef80..8d851f3188c 100644 --- a/tests/wpt/metadata-layout-2020/webxr/ar-module/idlharness.https.window.js.ini +++ b/tests/wpt/metadata-layout-2020/webxr/ar-module/idlharness.https.window.js.ini @@ -11,3 +11,6 @@ [XRSession interface: xrSession must inherit property "interactionMode" with the proper type] expected: FAIL + [XRView interface: attribute isFirstPersonObserver] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/workers/semantics/run-a-worker/003.html.ini b/tests/wpt/metadata-layout-2020/workers/semantics/run-a-worker/003.html.ini index dd49aa8e457..c2c57aec558 100644 --- a/tests/wpt/metadata-layout-2020/workers/semantics/run-a-worker/003.html.ini +++ b/tests/wpt/metadata-layout-2020/workers/semantics/run-a-worker/003.html.ini @@ -1,5 +1,4 @@ [003.html] - expected: ERROR [shared] expected: FAIL diff --git a/tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini new file mode 100644 index 00000000000..a9005e45d6e --- /dev/null +++ b/tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini @@ -0,0 +1,8 @@ +[url-charset.window.html] + expected: TIMEOUT + [Blob charset should override any auto-detected charset.] + expected: TIMEOUT + + [Blob charset should override <meta charset>.] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index f0627fca7c7..c90d3bdc02a 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -2217,8 +2217,29 @@ }, "appmanifest": { "display-member": { - "display-member-media-feature-manual.html": [ - "d4807febee965ba42474bbb4a740a3e5ed8d07fc", + "display-member-media-feature-browser-manual.html": [ + "e568cc538abf46056b9ceb745286228805bc60b6", + [ + null, + {} + ] + ], + "display-member-media-feature-fullscreen-manual.html": [ + "77f41b0a5a9f2906f6a5ce84841cd7b5e1b6ae20", + [ + null, + {} + ] + ], + "display-member-media-feature-minimal-ui-manual.html": [ + "b0a67d7867a8e8aa953d98797db6b1c7e7372c43", + [ + null, + {} + ] + ], + "display-member-media-feature-standalone-manual.html": [ + "b62007b7ae6872de0561c08f903756a0a104a413", [ null, {} @@ -249078,11 +249099,35 @@ [] ], "display-member": { - "display-member-media-feature.webmanifest": [ + "display-member-media-feature-browser.webmanifest": [ + "1b633378ad49a20434a4eca619bde612d660a958", + [] + ], + "display-member-media-feature-browser.webmanifest.headers": [ + "2bab061d43ab9e533b0160ca506231939886cd89", + [] + ], + "display-member-media-feature-fullscreen.webmanifest": [ + "a39466df1ac15bf41a80ed1e8ffe70838d40e7e7", + [] + ], + "display-member-media-feature-fullscreen.webmanifest.headers": [ + "2bab061d43ab9e533b0160ca506231939886cd89", + [] + ], + "display-member-media-feature-minimal-ui.webmanifest": [ + "471f5d5d5d0bc3387d964260f7354908ad997b7a", + [] + ], + "display-member-media-feature-minimal-ui.webmanifest.headers": [ + "2bab061d43ab9e533b0160ca506231939886cd89", + [] + ], + "display-member-media-feature-standalone.webmanifest": [ "891bd79fbfe119c185a3dc5606063eeda60ccc47", [] ], - "display-member-media-feature.webmanifest.headers": [ + "display-member-media-feature-standalone.webmanifest.headers": [ "2bab061d43ab9e533b0160ca506231939886cd89", [] ] @@ -268454,7 +268499,7 @@ [] ], "testharness-helper.sub.js": [ - "238daef65d2fb7b3cdce104699038d3456bb8de6", + "7714f2d804773f3b0e2cccf9931d9538616a6a64", [] ] } @@ -324280,11 +324325,11 @@ [] ], "long-wav.py": [ - "5df28eb741e670046176777955c5bd346938154e", + "8af2aca8a959b39c7cbd91704e9228a119f2b2d8", [] ], "partial-script.py": [ - "5b642c601d89dcd30632074d877252b0bbb07ee1", + "a9570ec355c63d60fb0731bddeb79ba87b491492", [] ], "range-sw.js": [ @@ -324292,7 +324337,7 @@ [] ], "stash-take.py": [ - "4ec1fe57647f41ea8196dad102815d06f8b1109f", + "6cf6ff585bf1462af1537448e8c5e72fd180879a", [] ], "utils.js": [ @@ -324305,7 +324350,13 @@ "302-found-post-handler.py": [ "23bf4b2c522b7c00ab6bd0fc3eb99f0737d512ec", [] - ] + ], + "resources": { + "destination.html": [ + "f98c5a8cd77717d7d37078797c57241c53e24c27", + [] + ] + } }, "security": { "support": { @@ -324318,15 +324369,15 @@ "stale-while-revalidate": { "resources": { "stale-css.py": [ - "a6ae546d0651f97f3020829452db6225486dc451", + "b87668373acb0b0483cd152e2e70adc1adc1ec7e", [] ], "stale-image.py": [ - "839eb84bb34bbd15e2ca7061ee4fa5724d2c64f8", + "36e6fc0c9bbb0cc3a3e655dd458ded951fd4bc35", [] ], "stale-script.py": [ - "8ad54671f4211735f56df50a55deea6ed281d5a2", + "731cd805654f15f324c71c98bdb9a1cda3e94b73", [] ] }, @@ -338358,7 +338409,7 @@ [] ], "webxr-ar-module.idl": [ - "2a525d2da89c215057407002b6ecdd08c8472f9c", + "097469d400d3ef4b7030c75a80c17b6fc9e797f0", [] ], "webxr-gamepads-module.idl": [ @@ -345286,11 +345337,11 @@ [] ], "about-blank-replacement-ping-frame.py": [ - "bb07c241ad49a7535ba62ee8664a75c8c59cd64c", + "30fbbbb53578bf795f841c6ad6862e1e9a7c8384", [] ], "about-blank-replacement-popup-frame.py": [ - "f0b8cd578e3e05e30e72cdfc343ed89f60670a7a", + "04c12a6037d9d18ef395d0bc0d1b5fd3af99d9fe", [] ], "about-blank-replacement-srcdoc-nested-frame.html": [ @@ -345326,11 +345377,11 @@ [] ], "bytecheck-worker-imported-script.py": [ - "04f544b9b1b7748e7be3b1591856776818f4bc23", + "47e0a1179ccbd571bcff781e7cf84597e934fac5", [] ], "bytecheck-worker.py": [ - "df8481b7d1e95db8445cf583683ac012a5ef8385", + "dfce9e7ed46d8719409f45f33f21888230b1f3b8", [] ], "claim-nested-worker-fetch-iframe.html": [ @@ -345470,11 +345521,11 @@ [] ], "echo-content.py": [ - "c40ef0cf2bbbd435caa68fca81204342ca1dc120", + "70ae4b60254cf7971cdd92dc2b1e382ef1a6196b", [] ], "echo-cookie-worker.py": [ - "73e8caf7f8ed87f6e41b8510b55e56d5ac971a69", + "561f64a35ad42ec326a52bb3b1f6334583356d00", [] ], "echo-message-to-source-worker.js": [ @@ -345554,7 +345605,7 @@ [] ], "fetch-access-control.py": [ - "61b89cbd95b4b910670e4795cb2518c51abec121", + "a6cc9b12ad1fab3babd088d1edde5bf27fa51dfb", [] ], "fetch-canvas-tainting-double-write-worker.js": [ @@ -345746,7 +345797,7 @@ [] ], "fetch-request-no-freshness-headers-script.py": [ - "e6a392c863e33e658488e9c7a10c5a46dc4ad485", + "bf8df154a88cf36dc6a1fa68a97592e03d8725bc", [] ], "fetch-request-no-freshness-headers-worker.js": [ @@ -345838,7 +345889,7 @@ [] ], "import-mime-type-worker.py": [ - "aa885e7a4de04820822eb562d47780999fa253e4", + "b6e82f31d3732a385401bf4fc3d2fd9908e8887e", [] ], "import-relative.xsl": [ @@ -345862,7 +345913,7 @@ [] ], "import-scripts-echo.py": [ - "7d92794e31b6b1270db26779f63644ac42a3d3d6", + "d38d660e65935d49255a3879e38bbfb9be4cd5a2", [] ], "import-scripts-get.py": [ @@ -432763,7 +432814,7 @@ ] ], "script-resource-with-nonsniffable-types.tentative.sub.html": [ - "255ff1da267af5a3fead4ad3f94584d70d9bdf4f", + "81e256003b685305551fb54bf729461024853cf4", [ null, {} @@ -433723,6 +433774,13 @@ null, {} ] + ], + "preserve-fragment.html": [ + "72ed24c837f143191a08d6df69544c0601385863", + [ + null, + {} + ] ] }, "security": { @@ -435072,6 +435130,15 @@ {} ] ], + "scroll-frag-non-utf8-encoded-document.html": [ + "7d4e994f0a1856ad40974741d772223f7859ff6b", + [ + null, + { + "timeout": "long" + } + ] + ], "scroll-frag-percent-encoded.html": [ "aa179425c5bb6e8e521ac9871a2afe06829ca518", [ @@ -503322,7 +503389,7 @@ }, "readable-streams": { "async-iterator.any.js": [ - "a1acaeb6b1f864beb0764c83481286f312e2e769", + "7c49fe937de87245d98c70b3398019d3586e17fd", [ null, { diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini new file mode 100644 index 00000000000..f64b45fea6b --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-002.html] + [Hit test float] + expected: FAIL + diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini new file mode 100644 index 00000000000..f29da48a2a0 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-003.html] + [Miss float below something else] + expected: FAIL + diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini new file mode 100644 index 00000000000..4bfb0c2053a --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-004.html] + [Miss float below something else] + expected: FAIL + diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini deleted file mode 100644 index baa9f1a7541..00000000000 --- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-005.html] - [Miss clipped float] - expected: FAIL - diff --git a/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini index 071178d695e..6f3f93585f7 100644 --- a/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini +++ b/tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini @@ -14,9 +14,6 @@ [Test @font-face matching for weight 1000] expected: FAIL - [Test @font-face matching for weight 250] - expected: FAIL - [Test @font-face matching for weight 399] expected: FAIL @@ -26,9 +23,6 @@ [Test @font-face matching for weight 400] expected: FAIL - [Test @font-face matching for weight 500] - expected: FAIL - [Test @font-face matching for weight 470] expected: FAIL diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini index 3b2356d80fb..e5596ea57a2 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -315,9 +315,6 @@ [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html] expected: FAIL - [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] - expected: FAIL - [<iframe>: separate response Content-Type: text/html;x=" text/plain] expected: FAIL @@ -327,12 +324,15 @@ [<iframe>: combined response Content-Type: text/html;" text/plain] expected: FAIL - [<iframe>: separate response Content-Type: text/html */*;charset=gbk] - expected: FAIL - [<iframe>: separate response Content-Type: text/html */*] expected: FAIL [<iframe>: combined response Content-Type: text/html;" \\" text/plain] expected: FAIL + [<iframe>: combined response Content-Type: */* text/html] + expected: FAIL + + [<iframe>: combined response Content-Type: text/html */*] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini index d2df9b78483..8d0261f22a0 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -56,3 +56,6 @@ [separate text/javascript x/x] expected: FAIL + [separate text/javascript; charset=windows-1252 text/javascript] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/redirect-navigate/preserve-fragment.html.ini b/tests/wpt/metadata/fetch/redirect-navigate/preserve-fragment.html.ini new file mode 100644 index 00000000000..71f705c28a8 --- /dev/null +++ b/tests/wpt/metadata/fetch/redirect-navigate/preserve-fragment.html.ini @@ -0,0 +1,361 @@ +[preserve-fragment.html] + [[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 302 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 308 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 307 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 308 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 301 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in multiple 301 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in multiple 302 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 301 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in 308 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 301 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 308 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 302 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in multiple 308 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in multiple 307 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 302 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in multiple 302 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 301 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in 302 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 303 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 308 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in multiple 303 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in 302 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 301 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 308 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 307 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 307 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 301 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in 303 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 303 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in multiple 303 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in 307 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 303 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 302 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 307 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 307 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in 303 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 307 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in 301 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in multiple 308 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 301 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 302 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 302 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 303 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 302 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in 303 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 308 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 301 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in 301 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in multiple 302 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 307 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in 303 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 301 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in multiple 302 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 308 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 307 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 303 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in multiple 301 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 302 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 302 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 303 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 307 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 302 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 308 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 307 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in 307 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 303 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 308 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in 307 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 307 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 308 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in multiple 303 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in multiple 308 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in 302 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 302 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 303 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 301 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in multiple 307 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 307 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 303 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve intermediate fragment in multiple 303 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Redirect URL fragment takes precedence in 301 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 301 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 307 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in multiple 307 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in 308 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Redirect URL fragment takes precedence in 307 redirect] + expected: FAIL + + [[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 307 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in multiple 303 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 303 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in multiple 301 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in multiple 308 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in 308 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 301 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 303 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 308 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in 307 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 308 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve intermediate fragment in multiple 308 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Destination URL fragment takes precedence in multiple 301 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 301 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 308 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in 302 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Preserve fragment in 308 redirect] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in multiple 301 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Destination URL fragment takes precedence in multiple 302 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 308 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve fragment in 301 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 303 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve fragment in 301 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Redirect URL fragment takes precedence in 302 redirect] + expected: FAIL + + [[HTTP - CrossOrigin\] Redirect URL fragment takes precedence in 301 redirect] + expected: FAIL + + [[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 302 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 302 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Destination URL fragment takes precedence in multiple 308 redirects] + expected: FAIL + + [[HTTP - SameOrigin\] Preserve fragment in multiple 307 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Preserve intermediate fragment in multiple 303 redirects] + expected: FAIL + + [[HTTPS - SameOrigin\] Final redirect fragment takes precedence over intermediate in multiple 302 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Destination URL fragment takes precedence in multiple 307 redirects] + expected: FAIL + + [[HTTP - CrossOrigin\] Preserve intermediate fragment in multiple 303 redirects] + expected: FAIL + + [[HTTPS - CrossOrigin\] Final redirect fragment takes precedence over intermediate in multiple 303 redirects] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-non-utf8-encoded-document.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-non-utf8-encoded-document.html.ini new file mode 100644 index 00000000000..b32bbd545da --- /dev/null +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-non-utf8-encoded-document.html.ini @@ -0,0 +1,4 @@ +[scroll-frag-non-utf8-encoded-document.html] + [Fragment Navigation: fragment id should not be found in non UTF8 document] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini deleted file mode 100644 index 75d75b4cda2..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_2.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini deleted file mode 100644 index 385376c7321..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_4.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini deleted file mode 100644 index dc2e45516de..00000000000 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[traverse_the_history_5.html] - [Multiple history traversals, last would be aborted] - expected: FAIL - diff --git a/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini new file mode 100644 index 00000000000..735a9a75a2a --- /dev/null +++ b/tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini @@ -0,0 +1,2 @@ +[cross-origin-objects-on-new-window.html] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini index 6b68e9094e4..d1ca01ebc5f 100644 --- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini +++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini @@ -1,4 +1,5 @@ [supported-elements.html] + expected: TIMEOUT [Contenteditable element should support autofocus] expected: FAIL @@ -9,7 +10,7 @@ expected: FAIL [Area element should support autofocus] - expected: FAIL + expected: TIMEOUT [Host element with delegatesFocus should support autofocus] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini index 98163335e40..1de3f8d68b2 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini @@ -172,6 +172,3 @@ [XHTML img usemap="http://example.org/#garbage-before-hash-id"] expected: FAIL - [HTML (standards) IMG usemap="no-hash-name"] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini index 2a166bb97b7..fc37df7e3fa 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini @@ -1,6 +1,6 @@ [iframe_sandbox_popups_escaping-1.html] type: testharness - expected: CRASH + expected: TIMEOUT [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] expected: TIMEOUT diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini index d43f38b40cd..45d8be1c898 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini @@ -1,6 +1,6 @@ [iframe_sandbox_popups_nonescaping-2.html] type: testharness - expected: TIMEOUT + expected: CRASH [Check that popups from a sandboxed iframe do not escape the sandbox] expected: NOTRUN diff --git a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini index 01f7b72cbe7..0cef5158fae 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini @@ -4,6 +4,3 @@ [The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] expected: TIMEOUT - [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] - expected: FAIL - diff --git a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini deleted file mode 100644 index 064cf47545b..00000000000 --- a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[017.html] - expected: TIMEOUT - [origin of the script that invoked the method, about:blank] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini deleted file mode 100644 index 663a1f8fa30..00000000000 --- a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[018.html] - expected: TIMEOUT - [origin of the script that invoked the method, javascript:] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/webmessaging/without-ports/017.html.ini b/tests/wpt/metadata/webmessaging/without-ports/017.html.ini deleted file mode 100644 index 064cf47545b..00000000000 --- a/tests/wpt/metadata/webmessaging/without-ports/017.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[017.html] - expected: TIMEOUT - [origin of the script that invoked the method, about:blank] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/webxr/ar-module/idlharness.https.window.js.ini b/tests/wpt/metadata/webxr/ar-module/idlharness.https.window.js.ini index c278bb7ef80..8d851f3188c 100644 --- a/tests/wpt/metadata/webxr/ar-module/idlharness.https.window.js.ini +++ b/tests/wpt/metadata/webxr/ar-module/idlharness.https.window.js.ini @@ -11,3 +11,6 @@ [XRSession interface: xrSession must inherit property "interactionMode" with the proper type] expected: FAIL + [XRView interface: attribute isFirstPersonObserver] + expected: FAIL + diff --git a/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini b/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini index 49f489d2a1c..d6e39444229 100644 --- a/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini +++ b/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini @@ -1,6 +1,5 @@ [003.html] type: testharness - expected: ERROR [shared] expected: FAIL diff --git a/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-browser-manual.html b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-browser-manual.html new file mode 100644 index 00000000000..e568cc538ab --- /dev/null +++ b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-browser-manual.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<title>Test "browser" value of display member + media feature</title> +<link rel="help" href="https://w3c.github.io/manifest#display-member" /> +<link rel="help" href="https://w3c.github.io/manifest/#dom-displaymodetype-browser" /> +<link rel="help" href="https://w3c.github.io/manifest/#the-display-mode-media-feature" /> +<link rel="manifest" href="display-member-media-feature-browser.webmanifest" /> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<h1>Testing support for "browser" value of display member + media feature</h1> +<style> + .fail { + background-color: red; + } + + @media all and (display-mode: browser) { + body { + background-color: green; + } + } +</style> +<script> +const browser = matchMedia("(display-mode: browser)"); + +browser.onchange = () => { + if (browser.matches) { + document.body.classList.remove("fail"); + } +} + +if (!browser.matches) { + document.body.classList.add("fail"); +} +</script> +<p> + To pass, the background color must be green after installing. +</p> diff --git a/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-browser.webmanifest b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-browser.webmanifest new file mode 100644 index 00000000000..1b633378ad4 --- /dev/null +++ b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-browser.webmanifest @@ -0,0 +1,3 @@ +{ + "display": "browser" +} diff --git a/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature.webmanifest.headers b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-browser.webmanifest.headers index 2bab061d43a..2bab061d43a 100644 --- a/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature.webmanifest.headers +++ b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-browser.webmanifest.headers diff --git a/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-fullscreen-manual.html b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-fullscreen-manual.html new file mode 100644 index 00000000000..77f41b0a5a9 --- /dev/null +++ b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-fullscreen-manual.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<title>Test "fullscreen" value of display member + media feature</title> +<link rel="help" href="https://w3c.github.io/manifest#display-member" /> +<link rel="help" href="https://w3c.github.io/manifest/#dom-displaymodetype-fullscreen" /> +<link rel="help" href="https://w3c.github.io/manifest/#the-display-mode-media-feature" /> +<link rel="manifest" href="display-member-media-feature-fullscreen.webmanifest" /> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<h1>Testing support for "fullscreen" value of display member + media feature</h1> +<style> + .fail { + background-color: red; + } + + @media all and (display-mode: fullscreen) { + body { + background-color: green; + } + } +</style> +<script> +const fullscreen = matchMedia("(display-mode: fullscreen)"); + +fullscreen.onchange = () => { + if (fullscreen.matches) { + document.body.classList.remove("fail"); + } +} + +if (!fullscreen.matches) { + document.body.classList.add("fail"); +} +</script> +<p> + To pass, the background color must be green after installing. +</p> diff --git a/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-fullscreen.webmanifest b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-fullscreen.webmanifest new file mode 100644 index 00000000000..a39466df1ac --- /dev/null +++ b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-fullscreen.webmanifest @@ -0,0 +1,3 @@ +{ + "display": "fullscreen" +} diff --git a/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-fullscreen.webmanifest.headers b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-fullscreen.webmanifest.headers new file mode 100644 index 00000000000..2bab061d43a --- /dev/null +++ b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-fullscreen.webmanifest.headers @@ -0,0 +1 @@ +Content-Type: application/manifest+json; charset=utf-8 diff --git a/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-minimal-ui-manual.html b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-minimal-ui-manual.html new file mode 100644 index 00000000000..b0a67d7867a --- /dev/null +++ b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-minimal-ui-manual.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<title>Test "minimal-ui" value of display member + media feature</title> +<link rel="help" href="https://w3c.github.io/manifest#display-member" /> +<link rel="help" href="https://w3c.github.io/manifest/#dom-displaymodetype-minimal-ui" /> +<link rel="help" href="https://w3c.github.io/manifest/#the-display-mode-media-feature" /> +<link rel="manifest" href="display-member-media-feature-minimal-ui.webmanifest" /> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<h1>Testing support for "minimal-ui" value of display member + media feature</h1> +<style> + .fail { + background-color: red; + } + + @media all and (display-mode: minimal-ui) { + body { + background-color: green; + } + } +</style> +<script> +const minimalUi = matchMedia("(display-mode: minimal-ui)"); + +minimalUi.onchange = () => { + if (minimalUi.matches) { + document.body.classList.remove("fail"); + } +} + +if (!minimalUi.matches) { + document.body.classList.add("fail"); +} +</script> +<p> + To pass, the background color must be green after installing. +</p> diff --git a/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-minimal-ui.webmanifest b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-minimal-ui.webmanifest new file mode 100644 index 00000000000..471f5d5d5d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-minimal-ui.webmanifest @@ -0,0 +1,3 @@ +{ + "display": "minimal-ui" +} diff --git a/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-minimal-ui.webmanifest.headers b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-minimal-ui.webmanifest.headers new file mode 100644 index 00000000000..2bab061d43a --- /dev/null +++ b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-minimal-ui.webmanifest.headers @@ -0,0 +1 @@ +Content-Type: application/manifest+json; charset=utf-8 diff --git a/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-manual.html b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-standalone-manual.html index d4807febee9..b62007b7ae6 100644 --- a/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-manual.html +++ b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-standalone-manual.html @@ -1,10 +1,11 @@ <!DOCTYPE html> -<title>Test that display member plus media feature is supported</title> +<title>Test "standalone" value of display member + media feature</title> <link rel="help" href="https://w3c.github.io/manifest#display-member" /> <link rel="help" href="https://w3c.github.io/manifest/#the-display-mode-media-feature" /> -<link rel="manifest" href="display-member-media-feature.webmanifest" /> +<link rel="help" href="https://w3c.github.io/manifest/#dom-displaymodetype-standalone" /> +<link rel="manifest" href="display-member-media-feature-standalone.webmanifest" /> <meta name="viewport" content="width=device-width, initial-scale=1"> -<h1>Testing support for display member plus media feature</h1> +<h1>Testing support for "standalone" value of display member + media feature</h1> <style> .fail { background-color: red; diff --git a/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature.webmanifest b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-standalone.webmanifest index 891bd79fbfe..891bd79fbfe 100644 --- a/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature.webmanifest +++ b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-standalone.webmanifest diff --git a/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-standalone.webmanifest.headers b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-standalone.webmanifest.headers new file mode 100644 index 00000000000..2bab061d43a --- /dev/null +++ b/tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-standalone.webmanifest.headers @@ -0,0 +1 @@ +Content-Type: application/manifest+json; charset=utf-8 diff --git a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/testharness-helper.sub.js b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/testharness-helper.sub.js index 238daef65d2..7714f2d8047 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/testharness-helper.sub.js +++ b/tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/testharness-helper.sub.js @@ -17,7 +17,7 @@ const IframeLoad = { function getOrigin() { var url = new URL("http://{{host}}:{{ports[http][0]}}/"); - return url.toString(); + return url.origin; } function getCrossOrigin() { diff --git a/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html b/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html index 255ff1da267..81e256003b6 100644 --- a/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html +++ b/tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html @@ -44,7 +44,7 @@ function test(mime_type, is_blocking_expected) { // www1 is cross-origin, so the HTTP response is CORB-eligible. // // TODO(lukasza@chromium.org): Once https://crbug.com/888079 and - // https://crbug.com/891872 are fixed, we should use a cross-*origin* + // https://crbug.com/1098938 are fixed, we should use a cross-*origin* // rather than cross-*site* URL below (e.g. s/hosts[alt]/domains/g). // See also https://crbug.com/918660 for more context. var src_prefix = "http://{{hosts[alt][www1]}}:{{ports[http][0]}}/fetch/corb/resources/sniffable-resource.py"; diff --git a/tests/wpt/web-platform-tests/fetch/range/resources/long-wav.py b/tests/wpt/web-platform-tests/fetch/range/resources/long-wav.py index 5df28eb741e..8af2aca8a95 100644 --- a/tests/wpt/web-platform-tests/fetch/range/resources/long-wav.py +++ b/tests/wpt/web-platform-tests/fetch/range/resources/long-wav.py @@ -6,9 +6,10 @@ import time import re import struct +from wptserve.utils import isomorphic_decode def create_wav_header(sample_rate, bit_depth, channels, duration): - bytes_per_sample = bit_depth / 8 + bytes_per_sample = int(bit_depth / 8) block_align = bytes_per_sample * channels byte_rate = sample_rate * block_align sub_chunk_2_size = duration * byte_rate @@ -45,32 +46,32 @@ def create_wav_header(sample_rate, bit_depth, channels, duration): def main(request, response): - response.headers.set("Content-Type", "audio/wav") - response.headers.set("Accept-Ranges", "bytes") - response.headers.set("Cache-Control", "no-cache") + response.headers.set(b"Content-Type", b"audio/wav") + response.headers.set(b"Accept-Ranges", b"bytes") + response.headers.set(b"Cache-Control", b"no-cache") - range_header = request.headers.get('Range', '') - range_header_match = range_header and re.search(r'^bytes=(\d*)-(\d*)$', range_header) - range_received_key = request.GET.first('range-received-key', '') - accept_encoding_key = request.GET.first('accept-encoding-key', '') + range_header = request.headers.get(b'Range', b'') + range_header_match = range_header and re.search(r'^bytes=(\d*)-(\d*)$', isomorphic_decode(range_header)) + range_received_key = request.GET.first(b'range-received-key', b'') + accept_encoding_key = request.GET.first(b'accept-encoding-key', b'') if range_received_key and range_header: # Remove any current value - request.server.stash.take(range_received_key, '/fetch/range/') + request.server.stash.take(range_received_key, b'/fetch/range/') # This is later collected using stash-take.py - request.server.stash.put(range_received_key, 'range-header-received', '/fetch/range/') + request.server.stash.put(range_received_key, u'range-header-received', b'/fetch/range/') if accept_encoding_key: # Remove any current value request.server.stash.take( accept_encoding_key, - '/fetch/range/' + b'/fetch/range/' ) # This is later collected using stash-take.py request.server.stash.put( accept_encoding_key, - request.headers.get('Accept-Encoding', ''), - '/fetch/range/' + isomorphic_decode(request.headers.get(b'Accept-Encoding', b'')), + b'/fetch/range/' ) # Audio details @@ -79,9 +80,9 @@ def main(request, response): channels = 1 duration = 60 * 5 - total_length = (sample_rate * bit_depth * channels * duration) / 8 + total_length = int((sample_rate * bit_depth * channels * duration) / 8) bytes_remaining_to_send = total_length - initial_write = '' + initial_write = b'' if range_header_match: response.status = 206 @@ -103,13 +104,13 @@ def main(request, response): if bytes_remaining_to_send < len(initial_write): initial_write = initial_write[0:bytes_remaining_to_send] - content_range = "bytes {}-{}/{}".format(start, end or total_length - 1, total_length) + content_range = b"bytes %d-%d/%d" % (start, end or total_length - 1, total_length) - response.headers.set("Content-Range", content_range) + response.headers.set(b"Content-Range", content_range) else: initial_write = create_wav_header(sample_rate, bit_depth, channels, duration) - response.headers.set("Content-Length", bytes_remaining_to_send) + response.headers.set(b"Content-Length", bytes_remaining_to_send) response.write_status_headers() response.writer.write(initial_write) diff --git a/tests/wpt/web-platform-tests/fetch/range/resources/partial-script.py b/tests/wpt/web-platform-tests/fetch/range/resources/partial-script.py index 5b642c601d8..a9570ec355c 100644 --- a/tests/wpt/web-platform-tests/fetch/range/resources/partial-script.py +++ b/tests/wpt/web-platform-tests/fetch/range/resources/partial-script.py @@ -2,29 +2,28 @@ This generates a partial response containing valid JavaScript. """ - def main(request, response): - require_range = request.GET.first('require-range', '') - pretend_offset = int(request.GET.first('pretend-offset', '0')) - range_header = request.headers.get('Range', '') + require_range = request.GET.first(b'require-range', b'') + pretend_offset = int(request.GET.first(b'pretend-offset', b'0')) + range_header = request.headers.get(b'Range', b'') if require_range and not range_header: - response.set_error(412, "Range header required") + response.set_error(412, u"Range header required") response.write() return - response.headers.set("Content-Type", "text/plain") - response.headers.set("Accept-Ranges", "bytes") - response.headers.set("Cache-Control", "no-cache") + response.headers.set(b"Content-Type", b"text/plain") + response.headers.set(b"Accept-Ranges", b"bytes") + response.headers.set(b"Cache-Control", b"no-cache") response.status = 206 - to_send = 'self.scriptExecuted = true;' + to_send = b'self.scriptExecuted = true;' length = len(to_send) - content_range = "bytes {}-{}/{}".format( + content_range = b"bytes %d-%d/%d" % ( pretend_offset, pretend_offset + length - 1, pretend_offset + length) - response.headers.set("Content-Range", content_range) - response.headers.set("Content-Length", length) + response.headers.set(b"Content-Range", content_range) + response.headers.set(b"Content-Length", length) response.content = to_send diff --git a/tests/wpt/web-platform-tests/fetch/range/resources/stash-take.py b/tests/wpt/web-platform-tests/fetch/range/resources/stash-take.py index 4ec1fe57647..6cf6ff585bf 100644 --- a/tests/wpt/web-platform-tests/fetch/range/resources/stash-take.py +++ b/tests/wpt/web-platform-tests/fetch/range/resources/stash-take.py @@ -3,5 +3,5 @@ from wptserve.handlers import json_handler @json_handler def main(request, response): - key = request.GET.first("key") - return request.server.stash.take(key, '/fetch/range/') + key = request.GET.first(b"key") + return request.server.stash.take(key, b'/fetch/range/') diff --git a/tests/wpt/web-platform-tests/fetch/redirect-navigate/preserve-fragment.html b/tests/wpt/web-platform-tests/fetch/redirect-navigate/preserve-fragment.html new file mode 100644 index 00000000000..72ed24c837f --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/redirect-navigate/preserve-fragment.html @@ -0,0 +1,197 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="UTF-8"> + <title>Ensure fragment is kept across redirects</title> + <script src="/common/get-host-info.sub.js"></script> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script> + let frame; + let message; + + const HTTP_SAME_ORIGIN = "HTTP - SameOrigin"; + const HTTPS_SAME_ORIGIN = "HTTPS - SameOrigin"; + const HTTP_CROSS_ORIGIN = "HTTP - CrossOrigin"; + const HTTPS_CROSS_ORIGIN = "HTTPS - CrossOrigin"; + + function messageReceived(f) { + return new Promise((resolve) => { + window.addEventListener("message", (e) => { + message = e.data; + resolve(); + }, {once: true}); + f(); + }); + } + + function getHostname(navigation_type) { + switch (navigation_type) { + case HTTP_SAME_ORIGIN: + return get_host_info().HTTP_ORIGIN; + case HTTPS_SAME_ORIGIN: + return get_host_info().HTTPS_ORIGIN + case HTTP_CROSS_ORIGIN: + return get_host_info().HTTP_REMOTE_ORIGIN + case HTTPS_CROSS_ORIGIN: + return get_host_info().HTTPS_REMOTE_ORIGIN + } + + return 'nonexistent' + } + + // Turns |path| from a relative to this file path into a full URL, with + // the host being determined by one of the ORIGIN strings above. + function relativePathToFull(path, navigation_type) { + let host = getHostname(navigation_type); + + const pathname = window.location.pathname; + const base_path = pathname.substring(0, pathname.lastIndexOf('/') + 1); + + return host + base_path + path; + } + + // Constructs a URL to redirect.py which will respond with the given + // redirect status |code| to the provided |to_url|. Optionally adds on a + // |fragment|, if provided, to use in the initial request to redirect.py + function buildRedirectUrl(to_url, code, fragment) { + to_url = encodeURIComponent(to_url); + let dest = `/common/redirect.py?status=${code}&location=${to_url}`; + if (fragment) + dest = dest + '#' + fragment; + return dest; + } + + async function redirectTo(url, code, navigation_type, fragment) { + const dest = buildRedirectUrl(url, code, fragment); + await messageReceived( () => { + frame.contentWindow.location = getHostname(navigation_type) + dest; + }); + } + + async function doubleRedirectTo(url, code, navigation_type, fragment, intermediate_fragment) { + const second_redirection = buildRedirectUrl(url, code, intermediate_fragment); + const first_redirection = buildRedirectUrl(second_redirection, code, fragment); + await messageReceived( () => { + frame.contentWindow.location = getHostname(navigation_type) + first_redirection; + }); + } + + onload = () => { + frame = document.getElementById("frame"); + + // The tests in this file verify fragments are correctly propagated in + // a number of HTTP redirect scenarios. Each test is run for every + // relevant redirect status code. We also run each scenario under each + // combination of navigating to cross/same origin and using http/https. + const status_codes = [301, 302, 303, 307, 308]; + const navigation_types = [HTTP_SAME_ORIGIN, + HTTPS_SAME_ORIGIN, + HTTP_CROSS_ORIGIN, + HTTPS_CROSS_ORIGIN]; + + for (let navigation_type of navigation_types) { + // Navigate to a URL with a fragment. The URL redirects to a different + // page. Ensure we land on the redirected page with the fragment + // specified in the initial navigation's URL. + // + // Redirect chain: urlA#target -> urlB + // + for (let code of status_codes) { + promise_test(async () => { + const to_url = relativePathToFull('resources/destination.html', navigation_type); + await redirectTo(to_url, code, navigation_type, "target"); + assert_true(message.url.endsWith('#target')); + assert_equals(message.scrollY, 2000, "scrolls to fragment from initial navigation."); + }, `[${navigation_type}] Preserve fragment in ${code} redirect`); + } + + // Navigate to a URL with a fragment. The URL redirects to a different + // URL that also contains a fragment. Ensure we land on the redirected + // page using the fragment specified in the redirect response and not + // the one in the initial navigation. + // + // Redirect chain: urlA#target -> urlB#fromRedirect + // + for (let code of status_codes) { + promise_test(async () => { + const to_url = relativePathToFull('resources/destination.html#fromRedirect', navigation_type); + await redirectTo(to_url, code, navigation_type, "target"); + assert_true(message.url.endsWith('#fromRedirect'), `Unexpected fragment: ${message.url}`); + assert_equals(message.scrollY, 4000, "scrolls to fragment from redirect."); + }, `[${navigation_type}] Redirect URL fragment takes precedence in ${code} redirect`); + } + + // Perform two redirects. The initial navigation has a fragment and + // will redirect to a URL that also responds with a redirect. Ensure we + // land on the final page with the fragment from the original + // navigation. + // + // Redirect chain: urlA#target -> urlB -> urlC + // + for (let code of status_codes) { + promise_test(async () => { + const to_url = relativePathToFull('resources/destination.html', navigation_type); + await doubleRedirectTo(to_url, code, navigation_type, "target"); + assert_true(message.url.endsWith('#target'), `Unexpected fragment: ${message.url}`); + assert_equals(message.scrollY, 2000, "scrolls to fragment from initial navigation."); + }, `[${navigation_type}] Preserve fragment in multiple ${code} redirects`); + } + + // Perform two redirects. The initial navigation has a fragment and + // will redirect to a URL that also responds with a redirect. The + // second redirection to the final page also has a fragment. Ensure we + // land on the final page with the fragment from the redirection + // response URL. + // + // Redirect chain: urlA#target -> urlB -> urlC#fromRedirect + // + for (let code of status_codes) { + promise_test(async () => { + const to_url = relativePathToFull('resources/destination.html#fromRedirect', navigation_type); + await doubleRedirectTo(to_url, code, navigation_type, "target"); + assert_true(message.url.endsWith('#fromRedirect'), `Unexpected fragment: ${message.url}`); + assert_equals(message.scrollY, 4000, "scrolls to fragment from redirect."); + }, `[${navigation_type}] Destination URL fragment takes precedence in multiple ${code} redirects`); + } + + // Perform two redirects. The initial navigation has a fragment and + // will redirect to a URL that also responds with a redirect. This + // time, both redirect response have a fragment. Ensure we land on the + // final page with the fragment from the last redirection response URL. + // + // Redirect chain: urlA#target -> urlB#intermediate -> urlC#fromRedirect + // + for (let code of status_codes) { + promise_test(async () => { + const to_url = relativePathToFull('resources/destination.html#fromRedirect', navigation_type); + await doubleRedirectTo(to_url, code, navigation_type, "target", "intermediate"); + assert_true(message.url.endsWith('#fromRedirect'), `Unexpected fragment: ${message.url}`); + assert_equals(message.scrollY, 4000, "scrolls to fragment from redirect."); + }, `[${navigation_type}] Final redirect fragment takes precedence over intermediate in multiple ${code} redirects`); + } + + // Perform two redirects. The initial navigation has a fragment and + // will redirect to a URL that also responds with a redirect. The first + // redirect response has a fragment but the second doesn't. Ensure we + // land on the final page with the fragment from the first redirection + // response URL. + // + // Redirect chain: urlA#target -> urlB#fromRedirect -> urlC + // + for (let code of status_codes) { + promise_test(async () => { + const to_url = relativePathToFull('resources/destination.html', navigation_type); + await doubleRedirectTo(to_url, code, navigation_type, "target", "fromRedirect"); + assert_true(message.url.endsWith('#fromRedirect'), `Unexpected fragment: ${message.url}`); + assert_equals(message.scrollY, 4000, "scrolls to fragment from redirect."); + }, `[${navigation_type}] Preserve intermediate fragment in multiple ${code} redirects`); + } + } + } + </script> + </head> + <body> + <iframe id="frame" src=""></iframe> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/fetch/redirect-navigate/resources/destination.html b/tests/wpt/web-platform-tests/fetch/redirect-navigate/resources/destination.html new file mode 100644 index 00000000000..f98c5a8cd77 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/redirect-navigate/resources/destination.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="UTF-8"> + <style> + body { + height: 10000px; + margin: 0; + } + p { + position: absolute; + margin: 0; + } + </style> + <script> + window.onload = () => { + window.parent.postMessage({ + url: window.location.toString(), + scrollY: window.scrollY + }, "*"); + } + </script> + </head> + <body> + <p style="top: 2000px" id="target">Target</p> + <p style="top: 4000px" id="fromRedirect">Target</p> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/resources/stale-css.py b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/resources/stale-css.py index a6ae546d065..b87668373ac 100644 --- a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/resources/stale-css.py +++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/resources/stale-css.py @@ -1,7 +1,7 @@ def main(request, response): - token = request.GET.first("token", None) - is_query = request.GET.first("query", None) != None + token = request.GET.first(b"token", None) + is_query = request.GET.first(b"query", None) != None with request.server.stash.lock: value = request.server.stash.take(token) count = 0 @@ -14,15 +14,15 @@ def main(request, response): count = count + 1 request.server.stash.put(token, count) if is_query: - headers = [("Count", count)] - content = "" + headers = [(b"Count", count)] + content = b"" return 200, headers, content else: - content = "body { background: rgb(0, 128, 0); }" + content = b"body { background: rgb(0, 128, 0); }" if count > 1: - content = "body { background: rgb(255, 0, 0); }" + content = b"body { background: rgb(255, 0, 0); }" - headers = [("Content-Type", "text/css"), - ("Cache-Control", "private, max-age=0, stale-while-revalidate=60")] + headers = [(b"Content-Type", b"text/css"), + (b"Cache-Control", b"private, max-age=0, stale-while-revalidate=60")] return 200, headers, content diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/resources/stale-image.py b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/resources/stale-image.py index 839eb84bb34..36e6fc0c9bb 100644 --- a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/resources/stale-image.py +++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/resources/stale-image.py @@ -1,9 +1,11 @@ import os.path +from wptserve.utils import isomorphic_decode + def main(request, response): - token = request.GET.first("token", None) - is_query = request.GET.first("query", None) != None + token = request.GET.first(b"token", None) + is_query = request.GET.first(b"query", None) != None with request.server.stash.lock: value = request.server.stash.take(token) count = 0 @@ -17,22 +19,22 @@ def main(request, response): request.server.stash.put(token, count) if is_query: - headers = [("Count", count)] - content = "" + headers = [(b"Count", count)] + content = b"" return 200, headers, content else: - filename = "green-16x16.png" + filename = u"green-16x16.png" if count > 1: - filename = "green-256x256.png" + filename = u"green-256x256.png" - path = os.path.join(os.path.dirname(__file__), "../../../images", filename) + path = os.path.join(os.path.dirname(isomorphic_decode(__file__)), u"../../../images", filename) body = open(path, "rb").read() response.add_required_headers = False response.writer.write_status(200) - response.writer.write_header("content-length", len(body)) - response.writer.write_header("Cache-Control", "private, max-age=0, stale-while-revalidate=60") - response.writer.write_header("content-type", "image/png") + response.writer.write_header(b"content-length", len(body)) + response.writer.write_header(b"Cache-Control", b"private, max-age=0, stale-while-revalidate=60") + response.writer.write_header(b"content-type", b"image/png") response.writer.end_headers() response.writer.write(body) diff --git a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/resources/stale-script.py b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/resources/stale-script.py index 8ad54671f42..731cd805654 100644 --- a/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/resources/stale-script.py +++ b/tests/wpt/web-platform-tests/fetch/stale-while-revalidate/resources/stale-script.py @@ -1,12 +1,12 @@ -import random, string, datetime +import random, string def id_token(): letters = string.ascii_lowercase - return ''.join(random.choice(letters) for i in range(20)) + return b''.join(random.choice(letters).encode("utf-8") for i in range(20)) def main(request, response): - token = request.GET.first("token", None) - is_query = request.GET.first("query", None) != None + token = request.GET.first(b"token", None) + is_query = request.GET.first(b"query", None) != None with request.server.stash.lock: value = request.server.stash.take(token) count = 0 @@ -20,13 +20,13 @@ def main(request, response): request.server.stash.put(token, count) if is_query: - headers = [("Count", count)] - content = "" + headers = [(b"Count", count)] + content = u"" return 200, headers, content else: unique_id = id_token() - headers = [("Content-Type", "text/javascript"), - ("Cache-Control", "private, max-age=0, stale-while-revalidate=60"), - ("Unique-Id", unique_id)] - content = "report('{}')".format(unique_id) + headers = [(b"Content-Type", b"text/javascript"), + (b"Cache-Control", b"private, max-age=0, stale-while-revalidate=60"), + (b"Unique-Id", unique_id)] + content = b"report('%s')" % unique_id return 200, headers, content diff --git a/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-non-utf8-encoded-document.html b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-non-utf8-encoded-document.html new file mode 100644 index 00000000000..7d4e994f0a1 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-non-utf8-encoded-document.html @@ -0,0 +1,21 @@ +<!doctype html> +<title>Fragment Navigation: fragment id should not be found in non UTF8 document</title> +<meta name=timeout content=long> +<meta http-equiv="Content-Type" content="text/html; charset=gbk"/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<body> +<div></div> +<div id="塯" style="position:absolute; top:100px;"></div> +<div style="height:200vh;"></div> +<script> +async_test(test => { + assert_equals(document.characterSet, "GBK", "Document should be GBK encoded"); + assert_equals(location.hash, "", "Page must be loaded with no hash"); + location.hash = '%89g'; + test.step_timeout(() => { + assert_equals( document.scrollingElement.scrollTop, 0 ); + test.done(); + }, 1); +}); +</script> diff --git a/tests/wpt/web-platform-tests/interfaces/webxr-ar-module.idl b/tests/wpt/web-platform-tests/interfaces/webxr-ar-module.idl index 2a525d2da89..097469d400d 100644 --- a/tests/wpt/web-platform-tests/interfaces/webxr-ar-module.idl +++ b/tests/wpt/web-platform-tests/interfaces/webxr-ar-module.idl @@ -23,3 +23,7 @@ partial interface XRSession { // Attributes readonly attribute XRInteractionMode interactionMode; }; + +partial interface XRView { + readonly attribute boolean isFirstPersonObserver; +}; diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-ping-frame.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-ping-frame.py index bb07c241ad4..30fbbbb5357 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-ping-frame.py +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-ping-frame.py @@ -1,11 +1,11 @@ def main(request, response): - if 'nested' in request.GET: + if b'nested' in request.GET: return ( - [('Content-Type', 'text/html')], - 'failed: nested frame was not intercepted by the service worker' + [(b'Content-Type', b'text/html')], + b'failed: nested frame was not intercepted by the service worker' ) - return ([('Content-Type', 'text/html')], """ + return ([(b'Content-Type', b'text/html')], b""" <!doctype html> <html> <body> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-popup-frame.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-popup-frame.py index f0b8cd578e3..04c12a6037d 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-popup-frame.py +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-popup-frame.py @@ -1,11 +1,11 @@ def main(request, response): - if 'nested' in request.GET: + if b'nested' in request.GET: return ( - [('Content-Type', 'text/html')], - 'failed: nested frame was not intercepted by the service worker' + [(b'Content-Type', b'text/html')], + b'failed: nested frame was not intercepted by the service worker' ) - return ([('Content-Type', 'text/html')], """ + return ([(b'Content-Type', b'text/html')], b""" <!doctype html> <html> <body> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/bytecheck-worker-imported-script.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/bytecheck-worker-imported-script.py index 04f544b9b1b..47e0a1179cc 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/bytecheck-worker-imported-script.py +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/bytecheck-worker-imported-script.py @@ -1,18 +1,18 @@ import time def main(request, response): - headers = [('Content-Type', 'application/javascript'), - ('Cache-Control', 'max-age=0')] + headers = [(b'Content-Type', b'application/javascript'), + (b'Cache-Control', b'max-age=0')] - imported_content_type = '' - if 'imported' in request.GET: - imported_content_type = request.GET['imported'] + imported_content_type = b'' + if b'imported' in request.GET: + imported_content_type = request.GET[b'imported'] - imported_content = 'default' - if imported_content_type == 'time': - imported_content = '%f' % time.time() + imported_content = b'default' + if imported_content_type == b'time': + imported_content = b'%f' % time.time() - body = ''' + body = b''' // %s ''' % (imported_content) diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/bytecheck-worker.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/bytecheck-worker.py index df8481b7d1e..dfce9e7ed46 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/bytecheck-worker.py +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/bytecheck-worker.py @@ -1,30 +1,30 @@ import time def main(request, response): - headers = [('Content-Type', 'application/javascript'), - ('Cache-Control', 'max-age=0')] + headers = [(b'Content-Type', b'application/javascript'), + (b'Cache-Control', b'max-age=0')] - main_content_type = '' - if 'main' in request.GET: - main_content_type = request.GET['main'] + main_content_type = b'' + if b'main' in request.GET: + main_content_type = request.GET[b'main'] - main_content = 'default' - if main_content_type == 'time': - main_content = '%f' % time.time() + main_content = b'default' + if main_content_type == b'time': + main_content = b'%f' % time.time() - imported_request_path = '' - if 'path' in request.GET: - imported_request_path = request.GET['path'] + imported_request_path = b'' + if b'path' in request.GET: + imported_request_path = request.GET[b'path'] - imported_request_type = '' - if 'imported' in request.GET: - imported_request_type = request.GET['imported'] + imported_request_type = b'' + if b'imported' in request.GET: + imported_request_type = request.GET[b'imported'] - imported_request = '' - if imported_request_type == 'time': - imported_request = '?imported=time'; + imported_request = b'' + if imported_request_type == b'time': + imported_request = b'?imported=time' - body = ''' + body = b''' // %s importScripts('%sbytecheck-worker-imported-script.py%s'); ''' % (main_content, imported_request_path, imported_request) diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/echo-content.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/echo-content.py index c40ef0cf2bb..70ae4b60254 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/echo-content.py +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/echo-content.py @@ -1,13 +1,15 @@ # This is a copy of fetch/api/resources/echo-content.py since it's more # convenient in this directory due to service worker's path restriction. +from wptserve.utils import isomorphic_encode + def main(request, response): - headers = [("X-Request-Method", request.method), - ("X-Request-Content-Length", request.headers.get("Content-Length", "NO")), - ("X-Request-Content-Type", request.headers.get("Content-Type", "NO")), + headers = [(b"X-Request-Method", isomorphic_encode(request.method)), + (b"X-Request-Content-Length", request.headers.get(b"Content-Length", b"NO")), + (b"X-Request-Content-Type", request.headers.get(b"Content-Type", b"NO")), # Avoid any kind of content sniffing on the response. - ("Content-Type", "text/plain")] + (b"Content-Type", b"text/plain")] content = request.body diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/echo-cookie-worker.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/echo-cookie-worker.py index 73e8caf7f8e..561f64a35ad 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/echo-cookie-worker.py +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/echo-cookie-worker.py @@ -1,24 +1,24 @@ def main(request, response): - headers = [("Content-Type", "text/javascript")] + headers = [(b"Content-Type", b"text/javascript")] values = [] for key in request.cookies: for cookie in request.cookies.get_list(key): - values.append('"%s": "%s"' % (key, cookie.value)) + values.append(b'"%s": "%s"' % (key, cookie.value)) # Update the counter to change the script body for every request to trigger # update of the service worker. - key = request.GET['key'] + key = request.GET[b'key'] counter = request.server.stash.take(key) if counter is None: counter = 0 counter += 1 request.server.stash.put(key, counter) - body = """ + body = b""" // %d self.addEventListener('message', e => { e.source.postMessage({%s}) -});""" % (counter, ','.join(values)) +});""" % (counter, b','.join(values)) return headers, body diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-access-control.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-access-control.py index 61b89cbd95b..a6cc9b12ad1 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-access-control.py +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-access-control.py @@ -1,108 +1,109 @@ import base64 import json import os -import sys + +from wptserve.utils import isomorphic_decode, isomorphic_encode def main(request, response): headers = [] - headers.append(('X-ServiceWorker-ServerHeader', 'SetInTheServer')) + headers.append((b'X-ServiceWorker-ServerHeader', b'SetInTheServer')) - if "ACAOrigin" in request.GET: - for item in request.GET["ACAOrigin"].split(","): - headers.append(("Access-Control-Allow-Origin", item)) + if b"ACAOrigin" in request.GET: + for item in request.GET[b"ACAOrigin"].split(b","): + headers.append((b"Access-Control-Allow-Origin", item)) - for suffix in ["Headers", "Methods", "Credentials"]: - query = "ACA%s" % suffix - header = "Access-Control-Allow-%s" % suffix + for suffix in [b"Headers", b"Methods", b"Credentials"]: + query = b"ACA%s" % suffix + header = b"Access-Control-Allow-%s" % suffix if query in request.GET: headers.append((header, request.GET[query])) - if "ACEHeaders" in request.GET: - headers.append(("Access-Control-Expose-Headers", request.GET["ACEHeaders"])) + if b"ACEHeaders" in request.GET: + headers.append((b"Access-Control-Expose-Headers", request.GET[b"ACEHeaders"])) - if ("Auth" in request.GET and not request.auth.username) or "AuthFail" in request.GET: + if (b"Auth" in request.GET and not request.auth.username) or b"AuthFail" in request.GET: status = 401 - headers.append(('WWW-Authenticate', 'Basic realm="Restricted"')) - body = 'Authentication canceled' + headers.append((b'WWW-Authenticate', b'Basic realm="Restricted"')) + body = b'Authentication canceled' return status, headers, body - if "PNGIMAGE" in request.GET: - headers.append(("Content-Type", "image/png")) - body = base64.decodestring("iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1B" - "AACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAhSURBVDhPY3wro/KfgQLABKXJBqMG" - "jBoAAqMGDLwBDAwAEsoCTFWunmQAAAAASUVORK5CYII=") + if b"PNGIMAGE" in request.GET: + headers.append((b"Content-Type", b"image/png")) + body = base64.decodestring(b"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1B" + b"AACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAhSURBVDhPY3wro/KfgQLABKXJBqMG" + b"jBoAAqMGDLwBDAwAEsoCTFWunmQAAAAASUVORK5CYII=") return headers, body - if "VIDEO" in request.GET: - headers.append(("Content-Type", "video/webm")) - body = open(os.path.join(request.doc_root, "media", "movie_5.ogv"), "rb").read() + if b"VIDEO" in request.GET: + headers.append((b"Content-Type", b"video/webm")) + body = open(os.path.join(request.doc_root, u"media", u"movie_5.ogv"), "rb").read() length = len(body) # If "PartialContent" is specified, the requestor wants to test range # requests. For the initial request, respond with "206 Partial Content" # and don't send the entire content. Then expect subsequent requests to # have a "Range" header with a byte range. Respond with that range. - if "PartialContent" in request.GET: + if b"PartialContent" in request.GET: if length < 1: - return 500, headers, "file is too small for range requests" + return 500, headers, b"file is too small for range requests" start = 0 end = length - 1 - if "Range" in request.headers: - range_header = request.headers["Range"] - prefix = "bytes=" - split_header = range_header[len(prefix):].split("-") + if b"Range" in request.headers: + range_header = request.headers[b"Range"] + prefix = b"bytes=" + split_header = range_header[len(prefix):].split(b"-") # The first request might be "bytes=0-". We want to force a range # request, so just return the first byte. - if split_header[0] == "0" and split_header[1] == "": + if split_header[0] == b"0" and split_header[1] == b"": end = start # Otherwise, it is a range request. Respect the values sent. - if split_header[0] != "": + if split_header[0] != b"": start = int(split_header[0]) - if split_header[1] != "": + if split_header[1] != b"": end = int(split_header[1]) else: # The request doesn't have a range. Force a range request by # returning the first byte. end = start - headers.append(("Accept-Ranges", "bytes")) - headers.append(("Content-Length", str(end -start + 1))) - headers.append(("Content-Range", "bytes %d-%d/%d" % (start, end, length))) + headers.append((b"Accept-Ranges", b"bytes")) + headers.append((b"Content-Length", isomorphic_encode(str(end -start + 1)))) + headers.append((b"Content-Range", b"bytes %d-%d/%d" % (start, end, length))) chunk = body[start:(end + 1)] return 206, headers, chunk return headers, body - username = request.auth.username if request.auth.username else "undefined" - password = request.auth.password if request.auth.username else "undefined" - cookie = request.cookies['cookie'].value if 'cookie' in request.cookies else "undefined" + username = request.auth.username if request.auth.username else b"undefined" + password = request.auth.password if request.auth.username else b"undefined" + cookie = request.cookies[b'cookie'].value if b'cookie' in request.cookies else b"undefined" files = [] - for key, values in request.POST.iteritems(): + for key, values in request.POST.items(): assert len(values) == 1 value = values[0] - if not hasattr(value, "file"): + if not hasattr(value, u"file"): continue data = value.file.read() - files.append({"key": key, - "name": value.file.name, - "type": value.type, - "error": 0, #TODO, - "size": len(data), - "content": data}) + files.append({u"key": isomorphic_decode(key), + u"name": value.file.name, + u"type": value.type, + u"error": 0, #TODO, + u"size": len(data), + u"content": data}) - get_data = {key:request.GET[key] for key,value in request.GET.iteritems()} - post_data = {key:request.POST[key] for key,value in request.POST.iteritems() - if not hasattr(request.POST[key], "file")} - headers_data = {key:request.headers[key] for key,value in request.headers.iteritems()} + get_data = {isomorphic_decode(key):isomorphic_decode(request.GET[key]) for key, value in request.GET.items()} + post_data = {isomorphic_decode(key):isomorphic_decode(request.POST[key]) for key, value in request.POST.items() + if not hasattr(request.POST[key], u"file")} + headers_data = {isomorphic_decode(key):isomorphic_decode(request.headers[key]) for key, value in request.headers.items()} - data = {"jsonpResult": "success", - "method": request.method, - "headers": headers_data, - "body": request.body, - "files": files, - "GET": get_data, - "POST": post_data, - "username": username, - "password": password, - "cookie": cookie} + data = {u"jsonpResult": u"success", + u"method": request.method, + u"headers": headers_data, + u"body": isomorphic_decode(request.body), + u"files": files, + u"GET": get_data, + u"POST": post_data, + u"username": isomorphic_decode(username), + u"password": isomorphic_decode(password), + u"cookie": isomorphic_decode(cookie)} - return headers, "report( %s )" % json.dumps(data) + return headers, u"report( %s )" % json.dumps(data) diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-no-freshness-headers-script.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-no-freshness-headers-script.py index e6a392c863e..bf8df154a88 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-no-freshness-headers-script.py +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-no-freshness-headers-script.py @@ -1,6 +1,6 @@ def main(request, response): headers = [] # Sets an ETag header to check the cache revalidation behavior. - headers.append(("ETag", "abc123")) - headers.append(("Content-Type", "text/javascript")) - return headers, "/* empty script */" + headers.append((b"ETag", b"abc123")) + headers.append((b"Content-Type", b"text/javascript")) + return headers, b"/* empty script */" diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-mime-type-worker.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-mime-type-worker.py index aa885e7a4de..b6e82f31d37 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-mime-type-worker.py +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-mime-type-worker.py @@ -1,10 +1,10 @@ def main(request, response): - if 'mime' in request.GET: + if b'mime' in request.GET: return ( - [('Content-Type', 'application/javascript')], - "importScripts('./mime-type-worker.py?mime={0}');".format(request.GET['mime']) + [(b'Content-Type', b'application/javascript')], + b"importScripts('./mime-type-worker.py?mime=%s');" % request.GET[b'mime'] ) return ( - [('Content-Type', 'application/javascript')], - "importScripts('./mime-type-worker.py');" + [(b'Content-Type', b'application/javascript')], + b"importScripts('./mime-type-worker.py');" ) diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-echo.py b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-echo.py index 7d92794e31b..d38d660e659 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-echo.py +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-echo.py @@ -1,6 +1,6 @@ def main(req, res): return ([ - ('Cache-Control', 'no-cache, must-revalidate'), - ('Pragma', 'no-cache'), - ('Content-Type', 'application/javascript')], - 'echo_output = "%s";\n' % req.GET['msg']) + (b'Cache-Control', b'no-cache, must-revalidate'), + (b'Pragma', b'no-cache'), + (b'Content-Type', b'application/javascript')], + b'echo_output = "%s";\n' % req.GET[b'msg']) diff --git a/tests/wpt/web-platform-tests/streams/readable-streams/async-iterator.any.js b/tests/wpt/web-platform-tests/streams/readable-streams/async-iterator.any.js index a1acaeb6b1f..7c49fe937de 100644 --- a/tests/wpt/web-platform-tests/streams/readable-streams/async-iterator.any.js +++ b/tests/wpt/web-platform-tests/streams/readable-streams/async-iterator.any.js @@ -16,10 +16,6 @@ function assert_iter_result(iterResult, value, done, message) { } test(() => { - assert_equals(ReadableStream.prototype[Symbol.asyncIterator], ReadableStream.prototype.values); -}, '@@asyncIterator() method is === to values() method'); - -test(() => { const s = new ReadableStream(); const it = s.values(); const proto = Object.getPrototypeOf(it); |