aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <servo-ops@mozilla.com>2020-07-03 11:17:27 -0400
committerGitHub <noreply@github.com>2020-07-03 11:17:27 -0400
commit745eb88e32bbae4a85b605706de25a1639ca8902 (patch)
tree3f5a63af8c8ff638276e60465092fef90f422d7d
parent4504eebdc3fb0f033748c9d8665a8ae024bf7c88 (diff)
parentba2986d694c6ec39a8b3fc697fda3d01d08b1cc3 (diff)
downloadservo-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
-rw-r--r--tests/wpt/metadata-layout-2020/FileAPI/url/url-charset.window.js.ini8
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/css-fonts/variations/font-weight-matching.html.ini37
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini12
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/redirect-navigate/preserve-fragment.html.ini361
-rw-r--r--tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-non-utf8-encoded-document.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/media-elements/event_timeupdate.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/webmessaging/with-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/webxr/ar-module/idlharness.https.window.js.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/workers/semantics/run-a-worker/003.html.ini1
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini8
-rw-r--r--tests/wpt/metadata/MANIFEST.json117
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini4
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini4
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini4
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/font-weight-matching.html.ini6
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini12
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/redirect-navigate/preserve-fragment.html.ini361
-rw-r--r--tests/wpt/metadata/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-non-utf8-encoded-document.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini2
-rw-r--r--tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/image-maps/image-map-processing-model/hash-name-reference.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini2
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini3
-rw-r--r--tests/wpt/metadata/webmessaging/with-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata/webmessaging/with-ports/018.html.ini5
-rw-r--r--tests/wpt/metadata/webmessaging/without-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata/webxr/ar-module/idlharness.https.window.js.ini3
-rw-r--r--tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini1
-rw-r--r--tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-browser-manual.html35
-rw-r--r--tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-browser.webmanifest3
-rw-r--r--tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-browser.webmanifest.headers (renamed from tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature.webmanifest.headers)0
-rw-r--r--tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-fullscreen-manual.html35
-rw-r--r--tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-fullscreen.webmanifest3
-rw-r--r--tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-fullscreen.webmanifest.headers1
-rw-r--r--tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-minimal-ui-manual.html35
-rw-r--r--tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-minimal-ui.webmanifest3
-rw-r--r--tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-minimal-ui.webmanifest.headers1
-rw-r--r--tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-standalone-manual.html (renamed from tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-manual.html)7
-rw-r--r--tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-standalone.webmanifest (renamed from tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature.webmanifest)0
-rw-r--r--tests/wpt/web-platform-tests/appmanifest/display-member/display-member-media-feature-standalone.webmanifest.headers1
-rw-r--r--tests/wpt/web-platform-tests/content-security-policy/embedded-enforcement/support/testharness-helper.sub.js2
-rw-r--r--tests/wpt/web-platform-tests/fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html2
-rw-r--r--tests/wpt/web-platform-tests/fetch/range/resources/long-wav.py37
-rw-r--r--tests/wpt/web-platform-tests/fetch/range/resources/partial-script.py23
-rw-r--r--tests/wpt/web-platform-tests/fetch/range/resources/stash-take.py4
-rw-r--r--tests/wpt/web-platform-tests/fetch/redirect-navigate/preserve-fragment.html197
-rw-r--r--tests/wpt/web-platform-tests/fetch/redirect-navigate/resources/destination.html28
-rw-r--r--tests/wpt/web-platform-tests/fetch/stale-while-revalidate/resources/stale-css.py16
-rw-r--r--tests/wpt/web-platform-tests/fetch/stale-while-revalidate/resources/stale-image.py22
-rw-r--r--tests/wpt/web-platform-tests/fetch/stale-while-revalidate/resources/stale-script.py20
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/browsing-the-web/scroll-to-fragid/scroll-frag-non-utf8-encoded-document.html21
-rw-r--r--tests/wpt/web-platform-tests/interfaces/webxr-ar-module.idl4
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-ping-frame.py8
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/about-blank-replacement-popup-frame.py8
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/bytecheck-worker-imported-script.py18
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/bytecheck-worker.py36
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/echo-content.py10
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/echo-cookie-worker.py10
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-access-control.py119
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/fetch-request-no-freshness-headers-script.py6
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-mime-type-worker.py10
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/resources/import-scripts-echo.py8
-rw-r--r--tests/wpt/web-platform-tests/streams/readable-streams/async-iterator.any.js4
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="&#x586f" 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);