aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWPT Sync Bot <josh+wptsync@joshmatthews.net>2020-12-05 08:22:48 +0000
committerWPT Sync Bot <josh+wptsync@joshmatthews.net>2020-12-05 11:00:15 +0000
commitb5059916956f689cd810eba1736883ed01ced12f (patch)
tree663bec3252890259c13c38d70cdab77dfaba594c
parent93c31df551a595b96a5b231ae43f140b2f2904be (diff)
downloadservo-b5059916956f689cd810eba1736883ed01ced12f.tar.gz
servo-b5059916956f689cd810eba1736883ed01ced12f.zip
Update web-platform-tests to revision b464d69274950c7707855c0b29729d58b9a8d492
-rw-r--r--tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini2
-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/css-transforms/transform-scale-hittest.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-iframes.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-auto.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-change-001.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-change-002.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-change-003.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-change-004.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-querySelector.html.ini10
-rw-r--r--tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-white-space-001.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini13
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.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/browsers/windows/embedded-opener-remove-frame.html.ini1
-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-1.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/newline-normalization.html.ini12
-rw-r--r--tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini4
-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/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini6
-rw-r--r--tests/wpt/metadata-layout-2020/webmessaging/with-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini2
-rw-r--r--tests/wpt/metadata/MANIFEST.json291
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini4
-rw-r--r--tests/wpt/metadata/css/selectors/selectors-dir-selector-auto.html.ini2
-rw-r--r--tests/wpt/metadata/css/selectors/selectors-dir-selector-change-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/selectors/selectors-dir-selector-change-002.html.ini2
-rw-r--r--tests/wpt/metadata/css/selectors/selectors-dir-selector-change-003.html.ini2
-rw-r--r--tests/wpt/metadata/css/selectors/selectors-dir-selector-change-004.html.ini2
-rw-r--r--tests/wpt/metadata/css/selectors/selectors-dir-selector-querySelector.html.ini10
-rw-r--r--tests/wpt/metadata/css/selectors/selectors-dir-selector-white-space-001.html.ini2
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini13
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.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/browsers/windows/embedded-opener-remove-frame.html.ini1
-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-1.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini4
-rw-r--r--tests/wpt/metadata/html/semantics/forms/form-submission-0/newline-normalization.html.ini12
-rw-r--r--tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini4
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini3
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini6
-rw-r--r--tests/wpt/metadata/webmessaging/with-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata/webmessaging/without-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/compression/compression-with-detach.tentative.any.js55
-rw-r--r--tests/wpt/web-platform-tests/compression/decompression-with-detach.tentative.any.js41
-rw-r--r--tests/wpt/web-platform-tests/compression/resources/concatenate-stream.js25
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-004-ref.html198
-rw-r--r--tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-004.html104
-rw-r--r--tests/wpt/web-platform-tests/css/css-tables/tentative/column-widths.html18
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-auto.html93
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-001-ref.html16
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-001.html25
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-002.html28
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-003-ref.html16
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-003.html24
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-004-ref.html17
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-004.html25
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-ltr-002.html26
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-ltr-003.html26
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-querySelector.html71
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-white-space-001-ref.html18
-rw-r--r--tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-white-space-001.html27
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/newline-normalization.html44
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-clone.https.html362
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/showPicker-errors.https.window.js40
-rw-r--r--tests/wpt/web-platform-tests/streams/readable-byte-streams/bad-buffers-and-views.any.js3
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/setup.py2
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/ctor-audiobuffer.html14
92 files changed, 1748 insertions, 117 deletions
diff --git a/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini
index 76b44d9e9cf..3605e8f3fc9 100644
--- a/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -4,7 +4,7 @@
expected: TIMEOUT
[Opening a blob URL in a new window immediately before revoking it works.]
- expected: FAIL
+ expected: TIMEOUT
[Fetching a blob URL immediately before revoking it works in an iframe.]
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
deleted file mode 100644
index 4bfb0c2053a..00000000000
--- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[hit-test-floats-004.html]
- [Miss float below something else]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini
index 4a1e8110f6f..f8e7e539aae 100644
--- a/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini
+++ b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini
@@ -2,3 +2,6 @@
[Hit test intersecting scaled box]
expected: FAIL
+ [Hit test within unscaled box]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini
deleted file mode 100644
index e38782d8c85..00000000000
--- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[elementFromPoint-001.html]
- [CSSOM View - 5 - extensions to the Document interface]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-iframes.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-iframes.html.ini
index 171592fc08f..6ef8bb1049f 100644
--- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-iframes.html.ini
+++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-iframes.html.ini
@@ -2,3 +2,6 @@
[elementsFromPoint on the root document for points in iframe elements]
expected: FAIL
+ [elementsFromPoint on inner documents]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
new file mode 100644
index 00000000000..e181af5397f
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
@@ -0,0 +1,4 @@
+[elementsFromPoint-invalid-cases.html]
+ [The root element is the last element returned for otherwise empty queries within the viewport]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-auto.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-auto.html.ini
new file mode 100644
index 00000000000..f533b7df909
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-auto.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-auto.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-change-001.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-change-001.html.ini
new file mode 100644
index 00000000000..50e0e6623b2
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-change-001.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-change-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-change-002.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-change-002.html.ini
new file mode 100644
index 00000000000..25232bb1f27
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-change-002.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-change-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-change-003.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-change-003.html.ini
new file mode 100644
index 00000000000..e6a4e5e8af7
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-change-003.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-change-003.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-change-004.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-change-004.html.ini
new file mode 100644
index 00000000000..c72af09bf92
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-change-004.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-change-004.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-querySelector.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-querySelector.html.ini
new file mode 100644
index 00000000000..1b47c19cf14
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-querySelector.html.ini
@@ -0,0 +1,10 @@
+[selectors-dir-selector-querySelector.html]
+ [:dir() works in compound selectors]
+ expected: FAIL
+
+ [:dir() works in complex selectors]
+ expected: FAIL
+
+ [:dir() allows any ident value but strings other than ltr/rtl don't match]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-white-space-001.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-white-space-001.html.ini
new file mode 100644
index 00000000000..566cd31c34f
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/selectors/selectors-dir-selector-white-space-001.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-white-space-001.html]
+ 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 30d40e8adee..f0c92506849 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
@@ -309,21 +309,18 @@
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: NOTRUN
- [<iframe>: combined response Content-Type: text/html;" text/plain]
- expected: FAIL
-
- [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
+ [<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: combined response Content-Type: */* text/html]
+ [<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*]
+ [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;x=" text/plain]
+ [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
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 5c001592859..d2df9b78483 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,6 +56,3 @@
[separate text/javascript x/x]
expected: FAIL
- [separate text/javascript;charset=windows-1252 error text/javascript]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini
index 30e1b851fd4..aa6eb8f6085 100644
--- a/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,3 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL
+ [X-Content-Type-Options%3A%20'NosniFF']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
deleted file mode 100644
index 87b07c3e670..00000000000
--- a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_1.html]
- [Multiple history traversals from the same task]
- 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/browsers/windows/embedded-opener-remove-frame.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/windows/embedded-opener-remove-frame.html.ini
index 9a85a905394..8e2a63e3b7f 100644
--- a/tests/wpt/metadata-layout-2020/html/browsers/windows/embedded-opener-remove-frame.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/browsers/windows/embedded-opener-remove-frame.html.ini
@@ -1,4 +1,5 @@
[embedded-opener-remove-frame.html]
+ expected: CRASH
[opener of discarded nested browsing context]
expected: FAIL
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 42ebcc9d57e..88f4ddd0e9a 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: TIMEOUT
+ expected: CRASH
[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-1.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
index 3080be9afc0..d913fcbb129 100644
--- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
@@ -1,5 +1,5 @@
[iframe_sandbox_popups_nonescaping-1.html]
- expected: CRASH
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
index 7a36937927c..f4f994c5d6f 100644
--- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
@@ -1,4 +1,5 @@
[iframe_sandbox_popups_nonescaping-3.html]
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: FAIL
+ expected: NOTRUN
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini
deleted file mode 100644
index 633a99517d3..00000000000
--- a/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[form-double-submit-2.html]
- [preventDefault should allow onclick submit() to succeed]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
new file mode 100644
index 00000000000..9f416703229
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
@@ -0,0 +1,4 @@
+[form-double-submit-3.html]
+ [<button> should have the same double-submit protection as <input type=submit>]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit.html.ini
deleted file mode 100644
index b193c33c2b6..00000000000
--- a/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[form-double-submit.html]
- [default submit action should supersede onclick submit()]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/newline-normalization.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/newline-normalization.html.ini
index ff5e9edab6a..e3f768f1c8e 100644
--- a/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/newline-normalization.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/newline-normalization.html.ini
@@ -11,3 +11,15 @@
[Form newline normalization: \\r in the name becomes \\r\\n]
expected: FAIL
+ [Form newline normalization: \\r\\n in the filename stays unchanged]
+ expected: FAIL
+
+ [Form newline normalization: \\n in the filename stays unchanged]
+ expected: FAIL
+
+ [Form newline normalization: \\r in the filename stays unchanged]
+ expected: FAIL
+
+ [Form newline normalization: \\n\\r in the filename stays unchanged]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini b/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini
deleted file mode 100644
index 6cf9d13975c..00000000000
--- a/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[iframe_005.html]
- [document.write external script into iframe write back into parent]
- expected: FAIL
-
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/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
index ea08eda3f8e..6fc6a274b98 100644
--- a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
+++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
@@ -359,3 +359,9 @@
[X SNR (-47.5135609418513 dB) is not greater than or equal to 65.737. Got -47.5135609418513.]
expected: FAIL
+ [X SNR (-47.70129108083442 dB) is not greater than or equal to 65.737. Got -47.70129108083442.]
+ expected: FAIL
+
+ [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t3.6039609375000000e+4\t9.3139332532882690e-1\t3.6038677981674671e+4\t3.8693296378252737e+4\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 3.6038677981674671e+4 at index of 28696.\n\tMax RelError of 3.8693296378252737e+4 at index of 28696.\n]
+ 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
new file mode 100644
index 00000000000..064cf47545b
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/webmessaging/with-ports/017.html.ini
@@ -0,0 +1,5 @@
+[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/without-ports/017.html.ini b/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini
new file mode 100644
index 00000000000..064cf47545b
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini
@@ -0,0 +1,5 @@
+[017.html]
+ expected: TIMEOUT
+ [origin of the script that invoked the method, about:blank]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini
deleted file mode 100644
index 80f9a4f15b8..00000000000
--- a/tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[Worker-constructor.html]
- expected: ERROR
diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
index d4f62ed7113..faa00f45ecf 100644
--- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini
@@ -7,7 +7,7 @@
expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.]
- expected: FAIL
+ expected: TIMEOUT
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 9962c4f4452..97e92e8de46 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -153416,6 +153416,19 @@
{}
]
],
+ "abs-pos-004.html": [
+ "b66143c36c135e2dc535cdf7efee3bbed8952f17",
+ [
+ null,
+ [
+ [
+ "/css/css-grid/subgrid/abs-pos-004-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"auto-track-sizing-001.html": [
"0fdb9b0b7e2ed8855b02dcfb9baceeb61b7d05d3",
[
@@ -225183,6 +225196,58 @@
{}
]
],
+ "selectors-dir-selector-change-001.html": [
+ "f952389643834f4a67062bf722d5ce4422253094",
+ [
+ null,
+ [
+ [
+ "/css/selectors/selectors-dir-selector-change-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "selectors-dir-selector-change-002.html": [
+ "bc032b59541335d49f7ffe56919cfad9b7cd2fee",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "selectors-dir-selector-change-003.html": [
+ "f4000155a8d5004b401ce5964f535979cc4ec256",
+ [
+ null,
+ [
+ [
+ "/css/selectors/selectors-dir-selector-change-003-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "selectors-dir-selector-change-004.html": [
+ "4c76b291bad7ffde21d624a3abc03c7b3cc99ac9",
+ [
+ null,
+ [
+ [
+ "/css/selectors/selectors-dir-selector-change-004-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"selectors-dir-selector-ltr-001.html": [
"9b90832a218debcf98a8a23bed7b0e679bd472ac",
[
@@ -225196,6 +225261,32 @@
{}
]
],
+ "selectors-dir-selector-ltr-002.html": [
+ "bbb3f26a780b13d434d99ca858b44f7db635047b",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "selectors-dir-selector-ltr-003.html": [
+ "821a33616fca6940618d3e27c07963eba4c0f748",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"selectors-dir-selector-rtl-001.html": [
"9b7bfd090a3c6736c3a30329912558c3c31f32fc",
[
@@ -225209,6 +225300,19 @@
{}
]
],
+ "selectors-dir-selector-white-space-001.html": [
+ "d3128a03734dc9806e3136ef6657b6087d9d76fa",
+ [
+ null,
+ [
+ [
+ "/css/selectors/selectors-dir-selector-white-space-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"selectors-empty-001.xml": [
"3b882debcc717c3e85de8695476eca3fd5238e8a",
[
@@ -260813,6 +260917,12 @@
"19a0bfaed3f0aa1b498c275ac43100dbcb23010b",
[]
],
+ "resources": {
+ "concatenate-stream.js": [
+ "a35bb1416e754893e331c0089d97720ae3b5af8e",
+ []
+ ]
+ },
"third_party": {
"pako": {
"LICENSE": [
@@ -312587,6 +312697,10 @@
"19180106e548c8a183ba903b7b9c6f3e443d79a9",
[]
],
+ "abs-pos-004-ref.html": [
+ "ac47309df22993903294406748b4152b27ff0a33",
+ []
+ ],
"auto-track-sizing-001-ref.html": [
"800f87e5d00a767f1cb5e5816ffd46110fbd4e80",
[]
@@ -328592,6 +328706,22 @@
"3b768b36a50cd46c3fae0de91c63f8231fde7811",
[]
],
+ "selectors-dir-selector-change-001-ref.html": [
+ "8c79c8328f0b2bf88b320956efdd689a97130550",
+ []
+ ],
+ "selectors-dir-selector-change-003-ref.html": [
+ "8c79c8328f0b2bf88b320956efdd689a97130550",
+ []
+ ],
+ "selectors-dir-selector-change-004-ref.html": [
+ "9a130cb2e5c71b9948e68022ad6ef89cc0ecda05",
+ []
+ ],
+ "selectors-dir-selector-white-space-001-ref.html": [
+ "955a2dd603d625975934e1ed6a42b4ea077093b7",
+ []
+ ],
"selectors-empty-001-ref.xml": [
"3f1b3f42a89399fec3ca03c4f69aa1e75527a0a3",
[]
@@ -369193,7 +369323,7 @@
]
},
"setup.py": [
- "759cb48d1f65f52f6500ed2b871c7ef430518ab6",
+ "a9cc95f4c1a532b5682de4db367899ad9c5de284",
[]
],
"tests": {
@@ -393845,6 +393975,69 @@
}
]
],
+ "compression-with-detach.tentative.any.js": [
+ "786bba21c800ca9f067a6d033f0345a52bfbb218",
+ [
+ "compression/compression-with-detach.tentative.any.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "script",
+ "resources/concatenate-stream.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "compression/compression-with-detach.tentative.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "script",
+ "resources/concatenate-stream.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "compression/compression-with-detach.tentative.any.sharedworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "script",
+ "resources/concatenate-stream.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "compression/compression-with-detach.tentative.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "script",
+ "resources/concatenate-stream.js"
+ ]
+ ]
+ }
+ ]
+ ],
"decompression-bad-chunks.tentative.any.js": [
"ba609a5625b959362222f85371628827f44d8768",
[
@@ -394205,6 +394398,69 @@
}
]
],
+ "decompression-with-detach.tentative.any.js": [
+ "a2f8bda09148f0d323022b1f93be78d83c4aa654",
+ [
+ "compression/decompression-with-detach.tentative.any.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "script",
+ "resources/concatenate-stream.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "compression/decompression-with-detach.tentative.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "script",
+ "resources/concatenate-stream.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "compression/decompression-with-detach.tentative.any.sharedworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "script",
+ "resources/concatenate-stream.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "compression/decompression-with-detach.tentative.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "script",
+ "resources/concatenate-stream.js"
+ ]
+ ]
+ }
+ ]
+ ],
"idlharness.https.any.js": [
"8d96cf523c495389ec5bfdea921a65d4dd0cd1e3",
[
@@ -415507,7 +415763,7 @@
]
],
"column-widths.html": [
- "52cb5b6fb0502cd63e2404168cfd413d86d60b6e",
+ "b151c2263bb625c0ec4bd2e2159b7bf15602fc63",
[
null,
{}
@@ -426621,6 +426877,20 @@
{}
]
],
+ "selectors-dir-selector-auto.html": [
+ "d53e989f69e172ea8cb0eb0a11863c767f4f5bf2",
+ [
+ null,
+ {}
+ ]
+ ],
+ "selectors-dir-selector-querySelector.html": [
+ "a05e3fea78f378e37c1b73f7f9e2e3559db12f16",
+ [
+ null,
+ {}
+ ]
+ ],
"user-invalid.html": [
"05cf2b679039c61732054217cf562bfeb7c3d23a",
[
@@ -485253,7 +485523,7 @@
]
],
"newline-normalization.html": [
- "d3de7699662da75fc37fba31cf994f02a13de191",
+ "b49468e19991e9309282e3068efff859d1c66751",
[
null,
{}
@@ -499961,6 +500231,15 @@
}
]
],
+ "MediaStreamTrack-clone.https.html": [
+ "c2b3e2bf8ab1b8c32cdc207181240c695e202656",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"MediaStreamTrack-getCapabilities-fast.html": [
"55272d1499517a6fda0b7e06068928b4e1127b27",
[
@@ -503092,7 +503371,7 @@
]
],
"showPicker-errors.https.window.js": [
- "e8f0d3f540485120cd15d642b1b0d33110797098",
+ "d1dabf37da8305094bf7e0bd0fea4e0200d8dd2e",
[
"native-file-system/showPicker-errors.https.window.html",
{
@@ -530263,7 +530542,7 @@
],
"readable-byte-streams": {
"bad-buffers-and-views.any.js": [
- "0777208da44b29b822bf9345dbe20e33bb5708b9",
+ "d4ad483d9c39566b8bc5b4d09676d05eac8879e5",
[
null,
{
@@ -545686,7 +545965,7 @@
]
],
"ctor-audiobuffer.html": [
- "9845d5eaba384cced3c63ddbf4df1400b31f4994",
+ "fbe6e42e3178f84d108bfd1c62518a4d13eb2dff",
[
null,
{}
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
deleted file mode 100644
index 4bfb0c2053a..00000000000
--- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[hit-test-floats-004.html]
- [Miss float below something else]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini b/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini
index 4a1e8110f6f..f8e7e539aae 100644
--- a/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini
+++ b/tests/wpt/metadata/css/css-transforms/transform-scale-hittest.html.ini
@@ -2,3 +2,6 @@
[Hit test intersecting scaled box]
expected: FAIL
+ [Hit test within unscaled box]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini
deleted file mode 100644
index e38782d8c85..00000000000
--- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[elementFromPoint-001.html]
- [CSSOM View - 5 - extensions to the Document interface]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini
index 171592fc08f..6ef8bb1049f 100644
--- a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini
@@ -2,3 +2,6 @@
[elementsFromPoint on the root document for points in iframe elements]
expected: FAIL
+ [elementsFromPoint on inner documents]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
new file mode 100644
index 00000000000..e181af5397f
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini
@@ -0,0 +1,4 @@
+[elementsFromPoint-invalid-cases.html]
+ [The root element is the last element returned for otherwise empty queries within the viewport]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/selectors/selectors-dir-selector-auto.html.ini b/tests/wpt/metadata/css/selectors/selectors-dir-selector-auto.html.ini
new file mode 100644
index 00000000000..f533b7df909
--- /dev/null
+++ b/tests/wpt/metadata/css/selectors/selectors-dir-selector-auto.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-auto.html]
+ expected: ERROR
diff --git a/tests/wpt/metadata/css/selectors/selectors-dir-selector-change-001.html.ini b/tests/wpt/metadata/css/selectors/selectors-dir-selector-change-001.html.ini
new file mode 100644
index 00000000000..50e0e6623b2
--- /dev/null
+++ b/tests/wpt/metadata/css/selectors/selectors-dir-selector-change-001.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-change-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/selectors/selectors-dir-selector-change-002.html.ini b/tests/wpt/metadata/css/selectors/selectors-dir-selector-change-002.html.ini
new file mode 100644
index 00000000000..25232bb1f27
--- /dev/null
+++ b/tests/wpt/metadata/css/selectors/selectors-dir-selector-change-002.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-change-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/selectors/selectors-dir-selector-change-003.html.ini b/tests/wpt/metadata/css/selectors/selectors-dir-selector-change-003.html.ini
new file mode 100644
index 00000000000..e6a4e5e8af7
--- /dev/null
+++ b/tests/wpt/metadata/css/selectors/selectors-dir-selector-change-003.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-change-003.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/selectors/selectors-dir-selector-change-004.html.ini b/tests/wpt/metadata/css/selectors/selectors-dir-selector-change-004.html.ini
new file mode 100644
index 00000000000..c72af09bf92
--- /dev/null
+++ b/tests/wpt/metadata/css/selectors/selectors-dir-selector-change-004.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-change-004.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/selectors/selectors-dir-selector-querySelector.html.ini b/tests/wpt/metadata/css/selectors/selectors-dir-selector-querySelector.html.ini
new file mode 100644
index 00000000000..1b47c19cf14
--- /dev/null
+++ b/tests/wpt/metadata/css/selectors/selectors-dir-selector-querySelector.html.ini
@@ -0,0 +1,10 @@
+[selectors-dir-selector-querySelector.html]
+ [:dir() works in compound selectors]
+ expected: FAIL
+
+ [:dir() works in complex selectors]
+ expected: FAIL
+
+ [:dir() allows any ident value but strings other than ltr/rtl don't match]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/selectors/selectors-dir-selector-white-space-001.html.ini b/tests/wpt/metadata/css/selectors/selectors-dir-selector-white-space-001.html.ini
new file mode 100644
index 00000000000..566cd31c34f
--- /dev/null
+++ b/tests/wpt/metadata/css/selectors/selectors-dir-selector-white-space-001.html.ini
@@ -0,0 +1,2 @@
+[selectors-dir-selector-white-space-001.html]
+ 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 83022fa66bc..3a7bd78fb30 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -309,21 +309,18 @@
[fetch(): separate response Content-Type: text/plain ]
expected: NOTRUN
- [<iframe>: combined response Content-Type: text/html;" text/plain]
- expected: FAIL
-
- [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
+ [<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: combined response Content-Type: */* text/html]
+ [<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
- [<iframe>: separate response Content-Type: text/plain */*]
+ [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;x=" text/plain]
+ [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
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 5c001592859..d2df9b78483 100644
--- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
@@ -56,6 +56,3 @@
[separate text/javascript x/x]
expected: FAIL
- [separate text/javascript;charset=windows-1252 error text/javascript]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
index 30e1b851fd4..aa6eb8f6085 100644
--- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
+++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini
@@ -11,3 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL
+ [X-Content-Type-Options%3A%20'NosniFF']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
deleted file mode 100644
index 87b07c3e670..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_1.html]
- [Multiple history traversals from the same task]
- 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/browsers/windows/embedded-opener-remove-frame.html.ini b/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini
index 442db3cb549..2532dceabac 100644
--- a/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini
+++ b/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini
@@ -1,4 +1,5 @@
[embedded-opener-remove-frame.html]
+ expected: CRASH
[opener and "removed" embedded documents]
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 fc37df7e3fa..2a166bb97b7 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: TIMEOUT
+ expected: CRASH
[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-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
index 963d4cd20ef..9df1ac56f2a 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
@@ -1,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-1.html]
type: testharness
- expected: CRASH
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
index 7a36937927c..f4f994c5d6f 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini
@@ -1,4 +1,5 @@
[iframe_sandbox_popups_nonescaping-3.html]
+ expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: FAIL
+ expected: NOTRUN
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini
deleted file mode 100644
index 633a99517d3..00000000000
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[form-double-submit-2.html]
- [preventDefault should allow onclick submit() to succeed]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
new file mode 100644
index 00000000000..9f416703229
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini
@@ -0,0 +1,4 @@
+[form-double-submit-3.html]
+ [<button> should have the same double-submit protection as <input type=submit>]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini
deleted file mode 100644
index b193c33c2b6..00000000000
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[form-double-submit.html]
- [default submit action should supersede onclick submit()]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/forms/form-submission-0/newline-normalization.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/newline-normalization.html.ini
index ff5e9edab6a..e3f768f1c8e 100644
--- a/tests/wpt/metadata/html/semantics/forms/form-submission-0/newline-normalization.html.ini
+++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/newline-normalization.html.ini
@@ -11,3 +11,15 @@
[Form newline normalization: \\r in the name becomes \\r\\n]
expected: FAIL
+ [Form newline normalization: \\r\\n in the filename stays unchanged]
+ expected: FAIL
+
+ [Form newline normalization: \\n in the filename stays unchanged]
+ expected: FAIL
+
+ [Form newline normalization: \\r in the filename stays unchanged]
+ expected: FAIL
+
+ [Form newline normalization: \\n\\r in the filename stays unchanged]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini
deleted file mode 100644
index 6cf9d13975c..00000000000
--- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/iframe_005.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[iframe_005.html]
- [document.write external script into iframe write back into parent]
- expected: FAIL
-
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/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
index 901bbf74c6b..3197832cf98 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
@@ -587,3 +587,9 @@
[X SNR (-47.5135609418513 dB) is not greater than or equal to 65.737. Got -47.5135609418513.]
expected: FAIL
+ [X SNR (-47.70129108083442 dB) is not greater than or equal to 65.737. Got -47.70129108083442.]
+ expected: FAIL
+
+ [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t3.6039609375000000e+4\t9.3139332532882690e-1\t3.6038677981674671e+4\t3.8693296378252737e+4\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 3.6038677981674671e+4 at index of 28696.\n\tMax RelError of 3.8693296378252737e+4 at index of 28696.\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini
new file mode 100644
index 00000000000..064cf47545b
--- /dev/null
+++ b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini
@@ -0,0 +1,5 @@
+[017.html]
+ expected: TIMEOUT
+ [origin of the script that invoked the method, about:blank]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/webmessaging/without-ports/017.html.ini b/tests/wpt/metadata/webmessaging/without-ports/017.html.ini
new file mode 100644
index 00000000000..064cf47545b
--- /dev/null
+++ b/tests/wpt/metadata/webmessaging/without-ports/017.html.ini
@@ -0,0 +1,5 @@
+[017.html]
+ expected: TIMEOUT
+ [origin of the script that invoked the method, about:blank]
+ expected: TIMEOUT
+
diff --git a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
deleted file mode 100644
index 80f9a4f15b8..00000000000
--- a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[Worker-constructor.html]
- expected: ERROR
diff --git a/tests/wpt/web-platform-tests/compression/compression-with-detach.tentative.any.js b/tests/wpt/web-platform-tests/compression/compression-with-detach.tentative.any.js
new file mode 100644
index 00000000000..786bba21c80
--- /dev/null
+++ b/tests/wpt/web-platform-tests/compression/compression-with-detach.tentative.any.js
@@ -0,0 +1,55 @@
+// META: global=window,worker
+// META: script=resources/concatenate-stream.js
+
+'use strict';
+
+const kInputLength = 500000;
+
+function createLargeRandomInput() {
+ const buffer = new ArrayBuffer(kInputLength);
+ // The getRandomValues API will only let us get 65536 bytes at a time, so call
+ // it multiple times.
+ const kChunkSize = 65536;
+ for (let offset = 0; offset < kInputLength; offset += kChunkSize) {
+ const length =
+ offset + kChunkSize > kInputLength ? kInputLength - offset : kChunkSize;
+ const view = new Uint8Array(buffer, offset, length);
+ crypto.getRandomValues(view);
+ }
+ return new Uint8Array(buffer);
+}
+
+function decompress(view) {
+ const ds = new DecompressionStream('deflate');
+ const writer = ds.writable.getWriter();
+ writer.write(view);
+ writer.close();
+ return concatenateStream(ds.readable);
+}
+
+promise_test(async () => {
+ const input = createLargeRandomInput();
+ const inputCopy = input.slice(0, input.byteLength);
+ const cs = new CompressionStream('deflate');
+ const writer = cs.writable.getWriter();
+ writer.write(input);
+ writer.close();
+ // Object.prototype.then will be looked up synchronously when the promise
+ // returned by read() is resolved.
+ Object.defineProperty(Object.prototype, 'then', {
+ get() {
+ // Cause input to become detached and unreferenced.
+ try {
+ postMessage(undefined, 'nowhere', [input.buffer]);
+ } catch (e) {
+ // It's already detached.
+ }
+ }
+ });
+ const output = await concatenateStream(cs.readable);
+ // Perform the comparison as strings since this is reasonably fast even when
+ // JITted JavaScript is running under an emulator.
+ assert_equals(
+ inputCopy.toString(), (await decompress(output)).toString(),
+ 'decompressing the output should return the input');
+}, 'data should be correctly compressed even if input is detached partway');
diff --git a/tests/wpt/web-platform-tests/compression/decompression-with-detach.tentative.any.js b/tests/wpt/web-platform-tests/compression/decompression-with-detach.tentative.any.js
new file mode 100644
index 00000000000..a2f8bda0914
--- /dev/null
+++ b/tests/wpt/web-platform-tests/compression/decompression-with-detach.tentative.any.js
@@ -0,0 +1,41 @@
+// META: global=window,worker
+// META: script=resources/concatenate-stream.js
+
+'use strict';
+
+const kInputLength = 1000000;
+
+async function createLargeCompressedInput() {
+ const cs = new CompressionStream('deflate');
+ // The input has to be large enough that it won't fit in a single chunk when
+ // decompressed.
+ const writer = cs.writable.getWriter();
+ writer.write(new Uint8Array(kInputLength));
+ writer.close();
+ return concatenateStream(cs.readable);
+}
+
+promise_test(async () => {
+ const input = await createLargeCompressedInput();
+ const ds = new DecompressionStream('deflate');
+ const writer = ds.writable.getWriter();
+ writer.write(input);
+ writer.close();
+ // Object.prototype.then will be looked up synchronously when the promise
+ // returned by read() is resolved.
+ Object.defineProperty(Object.prototype, 'then', {
+ get() {
+ // Cause input to become detached and unreferenced.
+ try {
+ postMessage(undefined, 'nowhere', [input.buffer]);
+ } catch (e) {
+ // It's already detached.
+ }
+ }
+ });
+ const output = await concatenateStream(ds.readable);
+ // If output successfully decompressed and gave the right length, we can be
+ // reasonably confident that no data corruption happened.
+ assert_equals(
+ output.byteLength, kInputLength, 'output should be the right length');
+}, 'data should be correctly decompressed even if input is detached partway');
diff --git a/tests/wpt/web-platform-tests/compression/resources/concatenate-stream.js b/tests/wpt/web-platform-tests/compression/resources/concatenate-stream.js
new file mode 100644
index 00000000000..a35bb1416e7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/compression/resources/concatenate-stream.js
@@ -0,0 +1,25 @@
+'use strict';
+
+// Read all the chunks from a stream that returns BufferSource objects and
+// concatenate them into a single Uint8Array.
+async function concatenateStream(readableStream) {
+ const reader = readableStream.getReader();
+ let totalSize = 0;
+ const buffers = [];
+ while (true) {
+ const { value, done } = await reader.read();
+ if (done) {
+ break;
+ }
+ buffers.push(value);
+ totalSize += value.byteLength;
+ }
+ reader.releaseLock();
+ const concatenated = new Uint8Array(totalSize);
+ let offset = 0;
+ for (const buffer of buffers) {
+ concatenated.set(buffer, offset);
+ offset += buffer.byteLength;
+ }
+ return concatenated;
+}
diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-004-ref.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-004-ref.html
new file mode 100644
index 00000000000..ac47309df22
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-004-ref.html
@@ -0,0 +1,198 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+ <title>Reference: abs.pos. subgrid edge cases</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+<style>
+html,body {
+ color:black; background-color:white; font:15px/1 monospace;
+}
+
+body > div {
+ display: inline-block;
+ height: 20px;
+ border: 1px solid;
+ margin: 1px;
+ vertical-align: top;
+}
+body > div > div { height: 20px; background: lightgrey; }
+body > div > div > div { height: 20px; }
+</style>
+</head>
+<body>
+
+<script>
+let results = [
+ [ "10px", "0", "10px", "0", "10px", "lime" ],
+ [ "10px", "0", "10px", "0", "10px", "lime" ],
+ [ "10px", "0", "10px", "0", "10px", "lime" ],
+ [ "10px", "0", "10px", "0", "10px", "lime" ],
+ [ "10px", "0", "10px", "0", "10px", "lime" ],
+ [ "10px", "0", "10px", "0", "10px", "lime" ],
+ [ "10px", "0", "10px", "0", "10px", "lime" ],
+ [ "10px", "0", "10px", "0", "10px", "lime" ],
+ [ "10px", "0", "10px", "0", "10px", "lime" ],
+ [ "10px", "0", "10px", "0", "10px", "lime" ],
+ [ "10px", "0", "10px", "0", "10px", "lime" ],
+ [ "10px", "0", "10px", "0", "10px", "lime" ],
+ [ "50px", "0", "50px", "0", "10px", "lime" ],
+ [ "50px", "0", "50px", "0", "10px", "lime" ],
+ [ "50px", "0", "50px", "0", "50px", "lime" ],
+ [ "50px", "0", "50px", "0", "10px", "lime" ],
+ [ "50px", "0", "50px", "0", "10px", "lime" ],
+ [ "50px", "0", "50px", "0", "50px", "lime" ],
+ [ "50px", "0", "40px", "0", "40px", "lime" ],
+ [ "50px", "0", "40px", "0", "40px", "lime" ],
+ [ "50px", "0", "40px", "0", "40px", "lime" ],
+ [ "50px", "0", "40px", "0", "40px", "lime" ],
+ [ "50px", "0", "40px", "0", "40px", "lime" ],
+ [ "50px", "0", "40px", "0", "40px", "lime" ],
+
+ [ "10px", "0", "10px", "0", "10px", "blue" ],
+ [ "10px", "0", "10px", "0", "10px", "blue" ],
+ [ "10px", "0", "10px", "0", "10px", "blue" ],
+ [ "10px", "0", "10px", "0", "10px", "blue" ],
+ [ "10px", "0", "10px", "0", "10px", "blue" ],
+ [ "10px", "0", "10px", "0", "10px", "blue" ],
+ [ "10px", "0", "10px", "0", "10px", "blue" ],
+ [ "10px", "0", "10px", "0", "10px", "blue" ],
+ [ "10px", "0", "10px", "0", "10px", "blue" ],
+ [ "10px", "0", "10px", "0", "10px", "blue" ],
+ [ "10px", "0", "10px", "0", "10px", "blue" ],
+ [ "10px", "0", "10px", "0", "10px", "blue" ],
+ [ "50px", "0", "50px", "0", "10px", "blue" ],
+ [ "50px", "0", "50px", "0", "10px", "blue" ],
+ [ "50px", "0", "50px", "0", "50px", "blue" ],
+ [ "50px", "0", "50px", "0", "10px", "blue" ],
+ [ "50px", "0", "50px", "0", "10px", "blue" ],
+ [ "50px", "0", "50px", "0", "50px", "blue" ],
+ [ "50px", "0", "40px", "0", "40px", "blue" ],
+ [ "50px", "0", "40px", "0", "40px", "blue" ],
+ [ "50px", "0", "40px", "0", "40px", "blue" ],
+ [ "50px", "0", "40px", "0", "40px", "blue" ],
+ [ "50px", "0", "40px", "0", "40px", "blue" ],
+ [ "50px", "0", "40px", "0", "40px", "blue" ],
+
+ [ "20px", "0", "20px", "0", "20px", "lime" ],
+ [ "20px", "0", "20px", "0", "20px", "lime" ],
+ [ "20px", "0", "20px", "0", "20px", "lime" ],
+ [ "20px", "0", "20px", "0", "20px", "lime" ],
+ [ "20px", "0", "20px", "0", "20px", "lime" ],
+ [ "20px", "0", "20px", "0", "20px", "lime" ],
+ [ "20px", "0", "20px", "0", "20px", "lime" ],
+ [ "20px", "0", "20px", "0", "20px", "lime" ],
+ [ "20px", "0", "20px", "0", "20px", "lime" ],
+ [ "20px", "0", "20px", "0", "20px", "lime" ],
+ [ "20px", "0", "20px", "0", "20px", "lime" ],
+ [ "20px", "0", "20px", "0", "20px", "lime" ],
+ [ "50px", "0", "0", "20px", "30px", "lime" ],
+ [ "50px", "0", "0", "20px", "30px", "lime" ],
+ [ "50px", "0", "0", "20px", "30px", "lime" ],
+ [ "50px", "0", "0", "20px", "30px", "lime" ],
+ [ "50px", "0", "0", "20px", "30px", "lime" ],
+ [ "50px", "0", "0", "20px", "30px", "lime" ],
+ [ "50px", "0", "0", "0", "30px", "lime" ],
+ [ "50px", "0", "0", "0", "30px", "lime" ],
+ [ "50px", "0", "0", "0", "30px", "lime" ],
+ [ "50px", "0", "0", "0", "30px", "lime" ],
+ [ "50px", "0", "0", "0", "30px", "lime" ],
+ [ "50px", "0", "0", "0", "30px", "lime" ],
+
+ [ "20px", "0", "20px", "0", "20px", "blue" ],
+ [ "20px", "0", "20px", "0", "20px", "blue" ],
+ [ "20px", "0", "20px", "0", "20px", "blue" ],
+ [ "20px", "0", "20px", "0", "20px", "blue" ],
+ [ "20px", "0", "20px", "0", "20px", "blue" ],
+ [ "20px", "0", "20px", "0", "20px", "blue" ],
+ [ "20px", "0", "20px", "0", "20px", "blue" ],
+ [ "20px", "0", "20px", "0", "20px", "blue" ],
+ [ "20px", "0", "20px", "0", "20px", "blue" ],
+ [ "20px", "0", "20px", "0", "20px", "blue" ],
+ [ "20px", "0", "20px", "0", "20px", "blue" ],
+ [ "20px", "0", "20px", "0", "20px", "blue" ],
+ [ "50px", "0", "0", "20px", "30px", "blue" ],
+ [ "50px", "0", "0", "20px", "30px", "blue" ],
+ [ "50px", "0", "0", "20px", "30px", "blue" ],
+ [ "50px", "0", "0", "20px", "30px", "blue" ],
+ [ "50px", "0", "0", "20px", "30px", "blue" ],
+ [ "50px", "0", "0", "20px", "30px", "blue" ],
+ [ "50px", "0", "0", "0", "30px", "blue" ],
+ [ "50px", "0", "0", "0", "30px", "blue" ],
+ [ "50px", "0", "0", "0", "30px", "blue" ],
+ [ "50px", "0", "0", "0", "30px", "blue" ],
+ [ "50px", "0", "0", "0", "30px", "blue" ],
+ [ "50px", "0", "0", "0", "30px", "blue" ],
+
+ [ "30px", "0", "30px", "0", "30px", "lime" ],
+ [ "30px", "0", "30px", "0", "30px", "lime" ],
+ [ "30px", "0", "30px", "0", "30px", "lime" ],
+ [ "30px", "0", "30px", "0", "30px", "lime" ],
+ [ "30px", "0", "30px", "0", "30px", "lime" ],
+ [ "30px", "0", "30px", "0", "30px", "lime" ],
+ [ "30px", "0", "30px", "0", "30px", "lime" ],
+ [ "30px", "0", "30px", "0", "30px", "lime" ],
+ [ "30px", "0", "30px", "0", "30px", "lime" ],
+ [ "30px", "0", "30px", "0", "30px", "lime" ],
+ [ "30px", "0", "30px", "0", "30px", "lime" ],
+ [ "30px", "0", "30px", "0", "30px", "lime" ],
+ [ "50px", "20px", "30px", "0", "10px", "lime" ],
+ [ "50px", "20px", "30px", "0", "10px", "lime" ],
+ [ "50px", "0", "0", "20px", "30px", "lime" ],
+ [ "50px", "20px", "30px", "0", "10px", "lime" ],
+ [ "50px", "20px", "30px", "0", "10px", "lime" ],
+ [ "50px", "0", "0", "20px", "30px", "lime" ],
+ [ "50px", "0", "0", "0", "20px", "lime" ],
+ [ "50px", "0", "0", "0", "20px", "lime" ],
+ [ "50px", "0", "0", "0", "20px", "lime" ],
+ [ "50px", "0", "0", "0", "20px", "lime" ],
+ [ "50px", "0", "0", "0", "20px", "lime" ],
+ [ "50px", "0", "0", "0", "20px", "lime" ],
+
+ [ "30px", "0", "30px", "0", "30px", "blue" ],
+ [ "30px", "0", "30px", "0", "30px", "blue" ],
+ [ "30px", "0", "30px", "0", "30px", "blue" ],
+ [ "30px", "0", "30px", "0", "30px", "blue" ],
+ [ "30px", "0", "30px", "0", "30px", "blue" ],
+ [ "30px", "0", "30px", "0", "30px", "blue" ],
+ [ "30px", "0", "30px", "0", "30px", "blue" ],
+ [ "30px", "0", "30px", "0", "30px", "blue" ],
+ [ "30px", "0", "30px", "0", "30px", "blue" ],
+ [ "30px", "0", "30px", "0", "30px", "blue" ],
+ [ "30px", "0", "30px", "0", "30px", "blue" ],
+ [ "30px", "0", "30px", "0", "30px", "blue" ],
+ [ "50px", "20px", "30px", "0", "10px", "blue" ],
+ [ "50px", "20px", "30px", "0", "10px", "blue" ],
+ [ "50px", "0", "0", "20px", "30px", "blue" ],
+ [ "50px", "20px", "30px", "0", "10px", "blue" ],
+ [ "50px", "20px", "30px", "0", "10px", "blue" ],
+ [ "50px", "0", "0", "20px", "30px", "blue" ],
+ [ "50px", "0", "0", "0", "20px", "blue" ],
+ [ "50px", "0", "0", "0", "20px", "blue" ],
+ [ "50px", "0", "0", "0", "20px", "blue" ],
+ [ "50px", "0", "0", "0", "20px", "blue" ],
+ [ "50px", "0", "0", "0", "20px", "blue" ],
+ [ "50px", "0", "0", "0", "20px", "blue" ],
+];
+results.forEach(function(arr) {
+ let grid_width, subgrid_width, subgrid_pos, item_pos, item_width, item_bg;
+ [grid_width, subgrid_pos, subgrid_width, item_pos, item_width, item_bg] = arr;
+ let grid = document.createElement('div');
+ grid.style.width = grid_width;
+ let subgrid = document.createElement('div');
+ subgrid.style.width = subgrid_width;
+ subgrid.style.marginLeft = subgrid_pos;
+ let subgridItem = document.createElement('div');
+ subgridItem.style.width = item_width;
+ subgridItem.style.marginLeft = item_pos;
+ subgridItem.style.backgroundColor = item_bg;
+ subgrid.appendChild(subgridItem);
+ grid.appendChild(subgrid);
+ document.body.appendChild(grid);
+});
+</script>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-004.html b/tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-004.html
new file mode 100644
index 00000000000..b66143c36c1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-grid/subgrid/abs-pos-004.html
@@ -0,0 +1,104 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html><head>
+ <title>CSS Grid Test: abs.pos. subgrid edge cases</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <link rel="help" href="https://drafts.csswg.org/css-grid-2">
+ <link rel="match" href="abs-pos-004-ref.html">
+<style>
+html,body {
+ color:black; background-color:white; font:15px/1 monospace;
+}
+
+.grid {
+ position: relative;
+ display: inline-grid;
+ grid-auto-columns: 10px;
+ grid-auto-rows: 20px;
+ grid-auto-flow: column;
+ border: 1px solid;
+ margin: 1px;
+ vertical-align: top;
+}
+
+.subgrid {
+ position: absolute;
+ inset: 0;
+ display: grid;
+ background: lightgrey;
+}
+.t1 { grid: subgrid / subgrid; }
+.t2 { grid: none / subgrid; }
+.t3 { grid: subgrid / none; }
+
+x {
+ background: lime;
+ grid-area: 1/1/-1/-1;
+}
+fail {
+ background: red;
+}
+
+.a {
+ position: absolute;
+ grid-area: 1/1/-1/-1;
+ inset: 0;
+ background: blue;
+}
+
+.o { overflow: hidden; }
+
+.start .subgrid {
+ grid-column-start: 3;
+}
+.end .subgrid {
+ grid-column-end: 1;
+}
+.start, .end {
+ width: 50px;
+}
+.end {
+ justify-content: end;
+}
+.start > fail, .end > fail {
+ background: initial;
+}
+</style>
+</head>
+<body>
+
+<script>
+function make_grids(items, abspos) {
+ ["", "o", "start", "end"].forEach(function(grid1) {
+ ["", "o"].forEach(function(subgrid1) {
+ ["t1", "t2", "t3"].forEach(function(subgrid2) {
+ let grid = document.createElement('div');
+ for (let i = 0; i < items; ++i) {
+ grid.appendChild(document.createElement('fail'));
+ }
+ grid.className = "grid " + grid1;
+ document.body.appendChild(grid);
+ document.body.offsetHeight;
+ let subgrid = document.createElement('div');
+ subgrid.className = "subgrid " + subgrid1 + " " + subgrid2;
+ let subgridItem = document.createElement('x');
+ if (abspos) {
+ subgridItem.className = "a";
+ }
+ subgrid.appendChild(subgridItem);
+ grid.appendChild(subgrid);
+ })
+ })
+ });
+}
+for (let i = 1; i <= 3; ++i) {
+ make_grids(i, false);
+ make_grids(i, true);
+}
+</script>
+
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-tables/tentative/column-widths.html b/tests/wpt/web-platform-tests/css/css-tables/tentative/column-widths.html
index 52cb5b6fb05..b151c2263bb 100644
--- a/tests/wpt/web-platform-tests/css/css-tables/tentative/column-widths.html
+++ b/tests/wpt/web-platform-tests/css/css-tables/tentative/column-widths.html
@@ -276,7 +276,23 @@ column.max = max(td.max, col.max)</p>
<table style="width:1px" data-expected-width=234>
<col style="width:50%">
<td style="width:100px" data-expected-width=10><div style="width:10px">10</div></td>
- <td><div style="width:200px">200</div>
+ <td><div style="width:200px">200</div></td>
+</table>
+
+<p class="testdesc">col fixed td fixed inside table-layout:fixed
+constrained columns take precedence in fixed layout.
+<table style="width:324px;table-layout:fixed" data-expected-width=324>
+ <col style="width:100px">
+ <td style="width:200px" data-expected-width=100>100</td>
+ <td data-expected-width=200><div style="width:400px" >200</div></td>
+</table>
+
+<p class="testdesc">col percent td fixed inside table-layout:fixed
+constrained columns take precedence in fixed layout.
+<table style="width:324px;table-layout:fixed" data-expected-width=324>
+ <col style="width:50%">
+ <td style="width:200px" data-expected-width=150>150</td>
+ <td><div style="width:400px">150</div></td>
</table>
</main>
<script>
diff --git a/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-auto.html b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-auto.html
new file mode 100644
index 00000000000..d53e989f69e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-auto.html
@@ -0,0 +1,93 @@
+<!doctype html>
+<html>
+<head>
+ <link rel="help" href="http://www.w3.org/TR/selectors4/#dir-pseudo">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <style>
+ #div4_1 {
+ direction: rtl;
+ }
+ </style>
+</head>
+
+<!-- &#1514; is the Hebrew letter tav, i.e. RTL -->
+<body>
+ <div id=testDivs>
+ <div id=div1 dir=auto>
+ <div id=div1_1>a</div>
+ </div>
+ <div id=div2 dir=auto>
+ <div id=div2_1>&#1514;</div>
+ </div>
+ <div id=div3 dir=auto>
+ <div id=div3_1 dir=rtl>&#1514;</div>
+ <div id=div3_2>a</div>
+ </div>
+ <div id=div4 dir=auto>
+ <div id=div4_1>
+ <div id=div4_1_1>a</div>
+ </div>
+ </div>
+ </div>
+</body>
+
+<script>
+function test_directionality(message, element, expected) {
+ test(() => {
+ var isLTR = document.querySelector("#" + element.id + ":dir(ltr)") == element;
+ var isRTL = document.querySelector("#" + element.id + ":dir(rtl)") == element;
+ if (expected == "ltr") {
+ assert_true(isLTR);
+ assert_false(isRTL);
+ } else {
+ assert_false(isLTR);
+ assert_true(isRTL);
+ }
+ }, message + " directionality of element " + element.id + " is " + expected);
+}
+
+test_directionality("Initial ", div1, "ltr");
+test_directionality("Initial ", div1_1, "ltr");
+test_directionality("Initial ", div2, "rtl");
+test_directionality("Initial ", div2_1, "rtl");
+test_directionality("Initial ", div3, "ltr");
+test_directionality("Initial ", div3_1, "rtl");
+test_directionality("Initial ", div3_2, "ltr");
+test_directionality("Initial ", div4, "ltr");
+test_directionality("Initial ", div4_1, "ltr");
+test_directionality("Initial ", div4_1_1, "ltr");
+
+div1_1.innerText = "\u05EA";
+div1_1.offsetTop;
+test_directionality("Updated ", div1, "rtl");
+test_directionality("Updated ", div1_1, "rtl");
+
+div1_1.dir = "ltr";
+div1_1.offsetTop;
+test_directionality("Updated ", div1, "ltr");
+test_directionality("Updated ", div1_1, "ltr");
+
+div1_1.innerText = "a";
+div1_1.offsetTop;
+test_directionality("Reupdated ", div1, "ltr");
+test_directionality("Reupdated ", div1_1, "ltr");
+
+div2_1.remove();
+div2.offsetTop;
+test_directionality("Updated ", div2, "ltr");
+
+div3_1.dir = "";
+div3_1.offsetTop;
+test_directionality("Updated ", div3, "rtl");
+div3.appendChild(div3_1);
+div3.offsetTop;
+test_directionality("Updated ", div3, "ltr");
+
+div4_1_1.innerText = "\u05EA";
+div4_1_1.offsetTop;
+test_directionality("Updated ", div4, "rtl");
+test_directionality("Updated ", div4_1, "rtl");
+test_directionality("Updated ", div4_1_1, "rtl");
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-001-ref.html b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-001-ref.html
new file mode 100644
index 00000000000..8c79c8328f0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-001-ref.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style type="text/css">
+ span { background-color: lime }
+ </style>
+</head>
+<body>
+ <div>
+ <div>
+ <div></div>
+ <span>The background color should be lime</span>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-001.html b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-001.html
new file mode 100644
index 00000000000..f9523896438
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-001.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>CSS Selectors Level 4 Test: Check for correctly updating :dir matching on dir attribute change from default(ltr) to rtl</title>
+ <link rel="author" title="Miyoung Shin" href="mailto:myid.shin@igalia.com">
+ <link rel="help" href="http://www.w3.org/TR/selectors4/#dir-pseudo">
+ <link rel="match" href="selectors-dir-selector-change-001-ref.html">
+ <style type="text/css">
+ #x:dir(rtl) + span { background-color: lime }
+ #outer { direction:ltr }
+ </style>
+</head>
+<body>
+ <div id="outer" style="-webkit-locale: 'en'">
+ <div>
+ <div id="x"></div>
+ <span>The background color should be lime</span>
+ </div>
+ </div>
+ <script>
+ outer.offsetTop;
+ outer.setAttribute("dir", "rtl");
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-002.html b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-002.html
new file mode 100644
index 00000000000..bc032b59541
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-002.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>CSS Selectors Level 4 Test: Check for correctly updating :dir matching on dir attribute change from default(ltr) to rtl</title>
+ <link rel="author" title="Miyoung Shin" href="mailto:myid.shin@igalia.com">
+ <link rel="help" href="http://www.w3.org/TR/selectors4/#dir-pseudo">
+ <link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+ <style type="text/css">
+ div {
+ width: 100px;
+ height: 100px;
+ background-color: red;
+ }
+
+ div:dir(rtl) {
+ background-color: green;
+ }
+ </style>
+</head>
+<body>
+ <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+ <div id="inner"></div>
+ <script>
+ inner.offsetTop;
+ inner.setAttribute("dir", "rtl");
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-003-ref.html b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-003-ref.html
new file mode 100644
index 00000000000..8c79c8328f0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-003-ref.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style type="text/css">
+ span { background-color: lime }
+ </style>
+</head>
+<body>
+ <div>
+ <div>
+ <div></div>
+ <span>The background color should be lime</span>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-003.html b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-003.html
new file mode 100644
index 00000000000..f4000155a8d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-003.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>CSS Selectors Level 4 Test: Check for correctly updating :dir matching on dir attribute change from rtl to auto</title>
+ <link rel="author" title="Miyoung Shin" href="mailto:myid.shin@igalia.com">
+ <link rel="help" href="http://www.w3.org/TR/selectors4/#dir-pseudo">
+ <link rel="match" href="selectors-dir-selector-change-003-ref.html">
+ <style type="text/css">
+ #x:dir(ltr) + span { background-color: lime }
+ </style>
+</head>
+<body>
+ <div id="outer" dir="rtl">
+ <div>
+ <div id="x"></div>
+ <span>The background color should be lime</span>
+ </div>
+ </div>
+ <script>
+ outer.offsetTop;
+ outer.setAttribute("dir", "auto");
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-004-ref.html b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-004-ref.html
new file mode 100644
index 00000000000..9a130cb2e5c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-004-ref.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <style type="text/css">
+ span { background-color: lime }
+ </style>
+</head>
+<body>
+ <div>
+ <div dir="rtl">
+ <div></div>
+ <span>מקור השם עברית</span>
+ </div>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-004.html b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-004.html
new file mode 100644
index 00000000000..4c76b291bad
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-change-004.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>CSS Selectors Level 4 Test: Check for correctly updating :dir matching on directionality change from ltr to rtl</title>
+ <link rel="author" title="Miyoung Shin" href="mailto:myid.shin@igalia.com">
+ <link rel="help" href="http://www.w3.org/TR/selectors4/#dir-pseudo">
+ <link rel="match" href="selectors-dir-selector-change-004-ref.html">
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <style type="text/css">
+ #x:dir(rtl) + span { background-color: lime }
+ </style>
+</head>
+<body>
+ <div dir="auto">
+ <div>
+ <div id="x"></div>
+ <span id="inner">The background color should be lime</span>
+ </div>
+ </div>
+ <script>
+ inner.offsetTop;
+ inner.innerHTML = "מקור השם עברית";
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-ltr-002.html b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-ltr-002.html
new file mode 100644
index 00000000000..bbb3f26a780
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-ltr-002.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>CSS Selectors Level 4 Test: exception handling for an invalid identifier of dir()</title>
+ <link rel="author" title="Miyoung Shin" href="mailto:myid.shin@igalia.com">
+ <link rel="help" href="http://www.w3.org/TR/selectors4/#dir-pseudo">
+ <link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+ <meta name="flags" content="">
+ <meta name="assert" content="The invalid identifier of :dir(ltrr) pseudo-class doesn't match an element that has a directionality of (ltr). Even if the div element has dir=ltr, the selector should not match.">
+ <style type="text/css">
+ div {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+ }
+
+ div:dir(ltrr) {
+ background-color: red;
+ }
+ </style>
+</head>
+<body>
+ <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+ <div dir="ltr"></div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-ltr-003.html b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-ltr-003.html
new file mode 100644
index 00000000000..821a33616fc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-ltr-003.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>CSS Selectors Level 4 Test: exception handling for multiple identifiers of dir() </title>
+ <link rel="author" title="Miyoung Shin" href="mailto:myid.shin@igalia.com">
+ <link rel="help" href="http://www.w3.org/TR/selectors4/#dir-pseudo">
+ <link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+ <meta name="flags" content="">
+ <meta name="assert" content="The multiple identifiers of :dir(ltr, rtl) pseudo-class don't match an element that has a directionality of (ltr). Even if the div element has dir=ltr, the selector should not match.">
+ <style type="text/css">
+ div {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+ }
+
+ div:dir(ltr, rtl) {
+ background-color: red;
+ }
+ </style>
+</head>
+<body>
+ <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+ <div dir="ltr"></div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-querySelector.html b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-querySelector.html
new file mode 100644
index 00000000000..a05e3fea78f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-querySelector.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+<head>
+ <link rel="help" href="http://www.w3.org/TR/selectors4/#dir-pseudo">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+
+<body>
+ <div id=outer>
+ <div id=div1></div>
+ <div id=div2 dir=ltr>
+ <div id=div2_1></div>
+ <div id=div2_2 dir=ltr></div>
+ <div id=div2_3 dir=rtl></div>
+ </div>
+ <div id=div3 dir=rtl>
+ <div id=div3_1>
+ <div id=div3_1_1></div>
+ </div>
+ <div id=div3_2 dir=ltr></div>
+ <div id=div3_3 dir=rtl></div>
+ </div>
+ <div id=div4 dir=lol></div>
+ <div id=div5 dir=auto></div>
+ </div>
+</body>
+
+<script>
+test(() => {
+ assert_equals(document.querySelector(":dir(lol)"), null);
+ assert_equals(document.querySelector(":dir(lol )"), null);
+ assert_equals(document.querySelector(":dir( auto)"), null);
+ assert_equals(document.querySelector(":dir(\nauto\t)"), null);
+}, ":dir() allows any ident value but strings other than ltr/rtl don't match");
+
+test(() => {
+ assert_throws_dom("SYNTAX_ERR", () => { document.querySelector(":dir()"); });
+ assert_throws_dom("SYNTAX_ERR", () => { document.querySelector(":dir(ltr, rtl)"); });
+ assert_throws_dom("SYNTAX_ERR", () => { document.querySelector(":dir('ltr')"); });
+}, ":dir() requires exactly an ident argument");
+
+test(() => {
+ assert_equals(document.querySelector(":dir(rtl)"), div2_3);
+ assert_equals(document.querySelector("*:dir(rtl)"), div2_3);
+ assert_equals(document.querySelector("div:dir(ltr)"), outer);
+ assert_equals(document.querySelector("div:dir(ltr):dir(ltr)"), outer);
+ assert_equals(document.querySelector(":dir(rtl)#div3_3"), div3_3);
+ assert_equals(document.querySelector(":nth-child(2):dir(rtl)"), null);
+ assert_equals(document.querySelector(":nth-child(3):dir(rtl)"), div2_3);
+ assert_equals(document.querySelector(":nth-child(4):dir(ltr)"), div4);
+ assert_equals(document.querySelector(":nth-last-child(3):dir(rtl)"), div3);
+}, ":dir() works in compound selectors");
+
+test(() => {
+ assert_equals(document.querySelector("#div2 :dir(ltr)"), div2_1);
+ assert_equals(document.querySelector(":dir(rtl) div"), div3_1);
+ assert_equals(document.querySelector("div + :dir(ltr)"), div2);
+ assert_equals(document.querySelector(":dir(ltr) + :dir(rtl)"), div2_3);
+ assert_equals(document.querySelector(":dir(rtl) :dir(rtl)"), div3_1);
+ assert_equals(document.querySelector(":dir(rtl) + :dir(ltr)"), div3_2);
+ assert_equals(document.querySelector(":dir(rtl) ~ :dir(rtl)"), div3_3);
+ assert_equals(document.querySelector(":dir(rtl) :dir(ltr)"), div3_2);
+ assert_equals(document.querySelector("* :dir(rtl) *"), div3_1);
+ assert_equals(document.querySelector("div :dir(rtl) div"), div3_1);
+ assert_equals(document.querySelector(":dir(ltr) :dir(rtl) + :dir(ltr)"), div3_2);
+ assert_equals(document.querySelector(":dir(ltr) + :dir(rtl) + * + *"), div5);
+ assert_equals(document.querySelector(":dir(rtl) > * > :dir(rtl)"), div3_1_1);
+}, ":dir() works in complex selectors");
+</script>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-white-space-001-ref.html b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-white-space-001-ref.html
new file mode 100644
index 00000000000..955a2dd603d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-white-space-001-ref.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style type="text/css">
+ div {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+ }
+ </style>
+</head>
+<body>
+ <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+ <div></div>
+ <div></div>
+ <div></div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-white-space-001.html b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-white-space-001.html
new file mode 100644
index 00000000000..d3128a03734
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/selectors/selectors-dir-selector-white-space-001.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>CSS Selectors Level 4 Test: Verify for an identifier with leading and tailing whitespace of dir() </title>
+ <link rel="author" title="Miyoung Shin" href="mailto:myid.shin@igalia.com">
+ <link rel="help" href="http://www.w3.org/TR/selectors4/#dir-pseudo">
+ <link rel="match" href="selectors-dir-selector-white-space-001-ref.html">
+ <meta name="assert" content="The :dir(ltr) pseudo-class matches an element that has a directionality of (ltr). Since the div element has dir=ltr, the selector matches.">
+ <style type="text/css">
+ div {
+ width: 100px;
+ height: 100px;
+ background-color: red;
+ }
+
+ #a:dir( ltr) { background-color: green; }
+ #b:dir(ltr ) { background-color: green; }
+ #c:dir( ltr ) { background-color: green; }
+ </style>
+</head>
+<body>
+ <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+ <div id="a" dir="ltr"></div>
+ <div id="b" dir="ltr"></div>
+ <div id="c" dir="ltr"></div>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/newline-normalization.html b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/newline-normalization.html
index d3de7699662..b49468e1999 100644
--- a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/newline-normalization.html
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/newline-normalization.html
@@ -22,6 +22,22 @@
return form;
}
+ function createFormWithFile(testCase, name, filename) {
+ const form = document.createElement("form");
+ const input = document.createElement("input");
+ input.type = "file";
+ input.name = name;
+ const dataTransfer = new DataTransfer();
+ dataTransfer.items.add(new File([], filename, { type: "text/plain" }));
+ input.files = dataTransfer.files;
+ form.appendChild(input);
+ document.body.appendChild(form);
+ testCase.add_cleanup(() => {
+ document.body.removeChild(form);
+ });
+ return form;
+ }
+
test((testCase) => {
const formData = new FormData(createForm(testCase, "a", "b\nc"));
assert_equals(formData.get("a"), "b\r\nc");
@@ -61,6 +77,34 @@
const formData = new FormData(createForm(testCase, "a\n\rb", "c"));
assert_equals([...formData][0][0], "a\r\n\r\nb");
}, document.title + ": \\n\\r in the name becomes \\r\\n\\r\\n");
+
+ test((testCase) => {
+ const formData = new FormData(
+ createFormWithFile(testCase, "a", "b\nc")
+ );
+ assert_equals(formData.get("a").name, "b\nc");
+ }, document.title + ": \\n in the filename stays unchanged");
+
+ test((testCase) => {
+ const formData = new FormData(
+ createFormWithFile(testCase, "a", "b\rc")
+ );
+ assert_equals(formData.get("a").name, "b\rc");
+ }, document.title + ": \\r in the filename stays unchanged");
+
+ test((testCase) => {
+ const formData = new FormData(
+ createFormWithFile(testCase, "a", "b\r\nc")
+ );
+ assert_equals(formData.get("a").name, "b\r\nc");
+ }, document.title + ": \\r\\n in the filename stays unchanged");
+
+ test((testCase) => {
+ const formData = new FormData(
+ createFormWithFile(testCase, "a", "b\n\rc")
+ );
+ assert_equals(formData.get("a").name, "b\n\rc");
+ }, document.title + ": \\n\\r in the filename stays unchanged");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-clone.https.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-clone.https.html
new file mode 100644
index 00000000000..c2b3e2bf8ab
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-clone.https.html
@@ -0,0 +1,362 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="/mediacapture-image/resources/imagecapture-helpers.js"></script>
+<script>
+
+// This test verifies that we can set some nondefault constraints, then clone a
+// MediaStreamTrack and check that the cloned constraints are the same as the
+// original, with a mock Mojo service implementation.
+image_capture_test(async (t, imageCaptureTest) => {
+ await test_driver.set_permission({name: 'camera', panTiltZoom: true},
+ 'granted', false);
+
+ const constraints = { advanced : [{ whiteBalanceMode : 'single-shot',
+ exposureMode : 'manual',
+ focusMode : 'single-shot',
+
+ pointsOfInterest : [{x : 0.1, y : 0.2},
+ {x : 0.3, y : 0.4}],
+
+ exposureCompensation : 133.77,
+ exposureTime : 10000,
+ colorTemperature : 6000,
+ iso : 120.0,
+
+ brightness : 3,
+ contrast : 4,
+ saturation : 5,
+ sharpness : 6,
+ focusDistance : 7,
+
+ pan : 8,
+ tilt : 9,
+ zoom : 3.141592,
+
+ torch : true
+ }]};
+
+ let stream = await navigator.mediaDevices.getUserMedia({video: true});
+ let originalVideoTrack = stream.getVideoTracks()[0];
+
+ await originalVideoTrack.applyConstraints(constraints);
+
+ let appliedConstraints = originalVideoTrack.getConstraints();
+
+ let clonedVideoTrack = originalVideoTrack.clone();
+ let appliedClonedConstraints = clonedVideoTrack.getConstraints();
+ assert_true('advanced' in appliedClonedConstraints);
+ assert_equals(appliedClonedConstraints.advanced.length, 1);
+ const appliedClonedAdvancedConstraints = appliedClonedConstraints.advanced[0];
+
+ // Check that |appliedClonedAdvancedConstraints| and |appliedAdvancedConstraints| are equal.
+ const appliedAdvancedConstraints = appliedConstraints.advanced[0];
+ assert_equals(appliedAdvancedConstraints.length, appliedClonedAdvancedConstraints.length);
+ Object.keys(appliedClonedAdvancedConstraints).forEach((key, value) => {
+ assert_not_equals(appliedAdvancedConstraints[key], undefined, 'key ' + key);
+ if (key != 'pointsOfInterest') {
+ assert_equals(appliedAdvancedConstraints[key], appliedClonedAdvancedConstraints[key], key);
+ } else {
+ assert_point2d_array_approx_equals(appliedAdvancedConstraints[key],
+ appliedClonedAdvancedConstraints[key], 0.01);
+ }
+ });
+
+ assert_equals(appliedAdvancedConstraints.whiteBalanceMode,
+ appliedClonedAdvancedConstraints.whiteBalanceMode,
+ 'whiteBalanceMode');
+ assert_equals(appliedAdvancedConstraints.exposureMode,
+ appliedClonedAdvancedConstraints.exposureMode,
+ 'exposureMode');
+ assert_equals(appliedAdvancedConstraints.focusMode,
+ appliedClonedAdvancedConstraints.focusMode,
+ 'focusMode');
+
+ assert_point2d_array_approx_equals(
+ appliedAdvancedConstraints.pointsOfInterest,
+ appliedClonedAdvancedConstraints.pointsOfInterest,
+ 0.01);
+
+ assert_equals(appliedAdvancedConstraints.exposureCompensation,
+ appliedClonedAdvancedConstraints.exposureCompensation,
+ 'exposureCompensation');
+ assert_equals(appliedAdvancedConstraints.exposureTime,
+ appliedClonedAdvancedConstraints.exposureTime,
+ 'exposureTime');
+ assert_equals(appliedAdvancedConstraints.colorTemperature,
+ appliedClonedAdvancedConstraints.colorTemperature,
+ 'colorTemperature');
+ assert_equals(appliedAdvancedConstraints.iso,
+ appliedClonedAdvancedConstraints.iso,
+ 'iso');
+ assert_equals(appliedAdvancedConstraints.brightness,
+ appliedClonedAdvancedConstraints.brightness,
+ 'brightness');
+ assert_equals(appliedAdvancedConstraints.contrast,
+ appliedClonedAdvancedConstraints.contrast,
+ 'constrast');
+ assert_equals(appliedAdvancedConstraints.saturation,
+ appliedClonedAdvancedConstraints.saturation,
+ 'saturation');
+ assert_equals(appliedAdvancedConstraints.sharpness,
+ appliedClonedAdvancedConstraints.sharpness,
+ 'sharpness');
+ assert_equals(appliedAdvancedConstraints.focusDistance,
+ appliedClonedAdvancedConstraints.focusDistance,
+ 'focusDistance');
+
+ assert_equals(appliedAdvancedConstraints.pan,
+ appliedClonedAdvancedConstraints.pan,
+ 'pan');
+ assert_equals(appliedAdvancedConstraints.tilt,
+ appliedClonedAdvancedConstraints.tilt,
+ 'tilt');
+ assert_equals(appliedAdvancedConstraints.zoom,
+ appliedClonedAdvancedConstraints.zoom,
+ 'zoom');
+
+ assert_equals(appliedAdvancedConstraints.torch,
+ appliedClonedAdvancedConstraints.torch,
+ 'torch');
+}, 'checks MediaStreamTrack.clone() gets same applied constraints');
+
+// This test verifies that MediaStreamTrack ImageCapture settings are copied
+// when cloning a MediaStreamTrack.
+image_capture_test(async (t, imageCaptureTest) => {
+ await test_driver.set_permission({name: 'camera', panTiltZoom: true},
+ 'granted', false);
+
+ let stream = await navigator.mediaDevices.getUserMedia({video: true});
+ let originalVideoTrack = stream.getVideoTracks()[0];
+ let clonedVideoTrack = originalVideoTrack.clone();
+
+ let settings = originalVideoTrack.getSettings();
+ let clonedSettings = clonedVideoTrack.getSettings();
+
+ assert_equals(settings.whiteBalanceMode,
+ clonedSettings.whiteBalanceMode,
+ 'whiteBalanceMode');
+ assert_equals(settings.exposureMode,
+ clonedSettings.exposureMode,
+ 'exposureMode;');
+ assert_equals(settings.focusMode,
+ clonedSettings.focusMode,
+ 'focusMode');
+
+ assert_point2d_array_approx_equals(
+ settings.pointsOfInterest,
+ clonedSettings.pointsOfInterest,
+ 0.01);
+
+ assert_equals(settings.exposureCompensation,
+ clonedSettings.exposureCompensation,
+ 'exposureCompensation');
+ assert_equals(settings.exposureTime,
+ clonedSettings.exposureTime,
+ 'exposureTime');
+ assert_equals(settings.colorTemperature,
+ clonedSettings.colorTemperature,
+ 'colorTemperature');
+ assert_equals(settings.iso,
+ clonedSettings.iso,
+ 'iso');
+
+ assert_equals(settings.brightness,
+ clonedSettings.brightness,
+ 'brightness');
+ assert_equals(settings.contrast,
+ clonedSettings.contrast,
+ 'contrast');
+ assert_equals(settings.saturation,
+ clonedSettings.saturation,
+ 'saturation');
+ assert_equals(settings.sharpness,
+ clonedSettings.sharpness,
+ 'sharpness');
+
+ assert_equals(settings.focusDistance,
+ clonedSettings.focusDistance,
+ 'focusDistance');
+
+ assert_equals(settings.pan,
+ clonedSettings.pan,
+ 'pan');
+ assert_equals(settings.tilt,
+ clonedSettings.tilt,
+ 'tilt');
+ assert_equals(settings.zoom,
+ clonedSettings.zoom,
+ 'zoom');
+
+ assert_equals(settings.torch,
+ clonedSettings.torch,
+ 'torch');
+}, 'checks MediaStreamTrack.clone() gets same settings');
+
+// This test verifies that MediaStreamTrack ImageCapture capabilities are copied
+// when cloning a MediaStreamTrack.
+image_capture_test(async (t, imageCaptureTest) => {
+ await test_driver.set_permission({name: 'camera', panTiltZoom: true},
+ 'granted', false);
+
+ let stream = await navigator.mediaDevices.getUserMedia({video: true});
+ let originalVideoTrack = stream.getVideoTracks()[0];
+ let clonedVideoTrack = originalVideoTrack.clone();
+
+ let capabilities = originalVideoTrack.getCapabilities();
+ let clonedCapabilities = clonedVideoTrack.getCapabilities();
+
+ assert_equals(capabilities.whiteBalanceMode.length,
+ clonedCapabilities.whiteBalanceMode.length,
+ 'whiteBalanceMode length');
+ for (i = 0; i < capabilities.whiteBalanceMode.length; ++i) {
+ assert_equals(capabilities.whiteBalanceMode[i],
+ clonedCapabilities.whiteBalanceMode[i],
+ 'whiteBalanceMode');
+ }
+
+ assert_equals(capabilities.exposureMode.length,
+ clonedCapabilities.exposureMode.length,
+ 'exposureMode length');
+ for (i = 0; i < capabilities.exposureMode.length; ++i) {
+ assert_equals(capabilities.exposureMode[i],
+ clonedCapabilities.exposureMode[i],
+ 'exposureMode');
+ }
+
+ assert_equals(capabilities.focusMode.length,
+ clonedCapabilities.focusMode.length,
+ 'focusMode length');
+ for (i = 0; i < capabilities.focusMode.length; ++i) {
+ assert_equals(capabilities.focusMode[i],
+ clonedCapabilities.focusMode[i],
+ 'focusMode');
+ }
+
+ assert_equals(capabilities.exposureCompensation.max,
+ clonedCapabilities.exposureCompensation.max,
+ 'exposureCompensation max');
+ assert_equals(capabilities.exposureCompensation.min,
+ clonedCapabilities.exposureCompensation.min,
+ 'exposureCompensation min');
+ assert_equals(capabilities.exposureCompensation.step,
+ clonedCapabilities.exposureCompensation.step,
+ 'exposureCompensation step');
+
+ assert_equals(capabilities.exposureTime.max,
+ clonedCapabilities.exposureTime.max,
+ 'exposureTime max');
+ assert_equals(capabilities.exposureTime.min,
+ clonedCapabilities.exposureTime.min,
+ 'exposureTime min');
+ assert_equals(capabilities.exposureTime.step,
+ clonedCapabilities.exposureTime.step,
+ 'exposureTime step');
+
+ assert_equals(capabilities.colorTemperature.max,
+ clonedCapabilities.colorTemperature.max,
+ 'colorTemperature max');
+ assert_equals(capabilities.colorTemperature.min,
+ clonedCapabilities.colorTemperature.min,
+ 'colorTemperature min');
+ assert_equals(capabilities.colorTemperature.step,
+ clonedCapabilities.colorTemperature.step,
+ 'colorTemperature step');
+
+ assert_equals(capabilities.iso.max,
+ clonedCapabilities.iso.max,
+ 'iso max');
+ assert_equals(capabilities.iso.min,
+ clonedCapabilities.iso.min,
+ 'iso min');
+ assert_equals(capabilities.iso.step,
+ clonedCapabilities.iso.step,
+ 'iso step');
+
+ assert_equals(capabilities.brightness.max,
+ clonedCapabilities.brightness.max,
+ 'brightness max');
+ assert_equals(capabilities.brightness.min,
+ clonedCapabilities.brightness.min,
+ 'brightness min');
+ assert_equals(capabilities.brightness.step,
+ clonedCapabilities.brightness.step,
+ 'brightness step');
+
+ assert_equals(capabilities.contrast.max,
+ clonedCapabilities.contrast.max,
+ 'contrast max');
+ assert_equals(capabilities.contrast.min,
+ clonedCapabilities.contrast.min,
+ 'contrast min');
+ assert_equals(capabilities.contrast.step,
+ clonedCapabilities.contrast.step,
+ 'contrast step');
+
+ assert_equals(capabilities.saturation.max,
+ clonedCapabilities.saturation.max,
+ 'saturation max');
+ assert_equals(capabilities.saturation.min,
+ clonedCapabilities.saturation.min,
+ 'saturation min');
+ assert_equals(capabilities.saturation.step,
+ clonedCapabilities.saturation.step,
+ 'saturation step');
+
+ assert_equals(capabilities.sharpness.max,
+ clonedCapabilities.sharpness.max,
+ 'sharpness max');
+ assert_equals(capabilities.sharpness.min,
+ clonedCapabilities.sharpness.min,
+ 'sharpness min');
+ assert_equals(capabilities.sharpness.step,
+ clonedCapabilities.sharpness.step,
+ 'sharpness step');
+
+ assert_equals(capabilities.focusDistance.max,
+ clonedCapabilities.focusDistance.max,
+ 'focusDistance max');
+ assert_equals(capabilities.focusDistance.min,
+ clonedCapabilities.focusDistance.min,
+ 'focusDistance min');
+ assert_equals(capabilities.focusDistance.step,
+ clonedCapabilities.focusDistance.step,
+ 'focusDistance step');
+
+ assert_equals(capabilities.pan.max,
+ clonedCapabilities.pan.max,
+ 'pan max');
+ assert_equals(capabilities.pan.min,
+ clonedCapabilities.pan.min,
+ 'pan min');
+ assert_equals(capabilities.pan.step,
+ clonedCapabilities.pan.step,
+ 'pan step');
+
+ assert_equals(capabilities.tilt.max,
+ clonedCapabilities.tilt.max,
+ 'tilt max');
+ assert_equals(capabilities.tilt.min,
+ clonedCapabilities.tilt.min,
+ 'tilt min');
+ assert_equals(capabilities.tilt.step,
+ clonedCapabilities.tilt.step,
+ 'tilt step');
+
+ assert_equals(capabilities.zoom.max,
+ clonedCapabilities.zoom.max,
+ 'zoom max');
+ assert_equals(capabilities.zoom.min,
+ clonedCapabilities.zoom.min,
+ 'zoom min');
+ assert_equals(capabilities.zoom.step,
+ clonedCapabilities.zoom.step,
+ 'zoom step');
+
+ assert_equals(capabilities.torch,
+ clonedCapabilities.torch,
+ 'torch');
+}, 'checks MediaStreamTrack.clone() gets same capabilities');
+</script>
diff --git a/tests/wpt/web-platform-tests/native-file-system/showPicker-errors.https.window.js b/tests/wpt/web-platform-tests/native-file-system/showPicker-errors.https.window.js
index e8f0d3f5404..d1dabf37da8 100644
--- a/tests/wpt/web-platform-tests/native-file-system/showPicker-errors.https.window.js
+++ b/tests/wpt/web-platform-tests/native-file-system/showPicker-errors.https.window.js
@@ -80,9 +80,39 @@ function define_file_picker_error_tests(showPickerMethod) {
showPickerMethod +
': MIME type can\'t have invalid characters in subtype.');
- promise_test(async t => {
- await promise_rejects_js(t, TypeError, self[showPickerMethod]({
- types: [{accept: {'text/plain': ['.txt', 'txt']}}]
- }));
- }, showPickerMethod + ': extension has to start with ".".');
+ const invalid_extensions = {
+ '.extensiontoolong': 'extension length more than 16.',
+ '.txt.': 'extenstion ends with "."',
+ 'txt': 'extenstion does not start with "."',
+ '.$txt' : 'illegal character "$"',
+ '.t<xt': 'illegal character "<"',
+ '.t/xt': 'illegal character "\"',
+ '.\txt': 'illegal character "/"',
+ '.txt\\': 'illegal characters "\\"',
+ '.txt?': 'illegal character "?"',
+ '.txt*': 'illegal character "*"',
+ '.{txt': 'illegal character "{"',
+ '.}txt': 'illegal character "}"',
+ ' .txt': 'illegal whitespace at front of extension',
+ '. txt': 'illegal whitespace in extension',
+ '.txt ': 'illegal whitespace at end of extension',
+ '.\u202etxt\u202e' : 'illegal RTL character',
+ '.t\u00E6xt': 'non-ASCII character "æ"',
+ '.קום': 'non-ASCII character "קום"',
+ '.txt🙂': 'non-ASCII character "🙂"',
+ '.{txt}': 'illegal characters "{" and "}"',
+ }
+
+ for (const [extension, description] of Object.entries(invalid_extensions)) {
+ define_file_picker_extension_error_test(showPickerMethod, extension, description)
+ }
}
+
+function define_file_picker_extension_error_test(showPickerMethod, extension, description) {
+ promise_test(async t => {
+ await promise_rejects_js(
+ t, TypeError,
+ self[showPickerMethod](
+ { types: [{ accept: { 'text/plain': ['.txt', extension] } }] }));
+ }, showPickerMethod + ': invalid extension "' + extension + '". ' + description + ".");
+} \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/streams/readable-byte-streams/bad-buffers-and-views.any.js b/tests/wpt/web-platform-tests/streams/readable-byte-streams/bad-buffers-and-views.any.js
index 0777208da44..d4ad483d9c3 100644
--- a/tests/wpt/web-platform-tests/streams/readable-byte-streams/bad-buffers-and-views.any.js
+++ b/tests/wpt/web-platform-tests/streams/readable-byte-streams/bad-buffers-and-views.any.js
@@ -212,8 +212,7 @@ async_test(t => {
c.close();
- const zeroLengthView = new Uint8Array(view.buffer, 0, 0);
- assert_throws_js(TypeError, () => c.byobRequest.respondWithNewView(zeroLengthView));
+ assert_throws_js(TypeError, () => c.byobRequest.respondWithNewView(view));
}),
type: 'bytes'
});
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/setup.py b/tests/wpt/web-platform-tests/tools/wptserve/setup.py
index 759cb48d1f6..a9cc95f4c1a 100644
--- a/tests/wpt/web-platform-tests/tools/wptserve/setup.py
+++ b/tests/wpt/web-platform-tests/tools/wptserve/setup.py
@@ -1,7 +1,7 @@
from setuptools import setup
PACKAGE_VERSION = '3.0'
-deps = ["six>=1.8", "h2==3.0.1"]
+deps = ["six>=1.13.0", "h2==3.0.1"]
setup(name='wptserve',
version=PACKAGE_VERSION,
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/ctor-audiobuffer.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/ctor-audiobuffer.html
index 9845d5eaba3..fbe6e42e317 100644
--- a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/ctor-audiobuffer.html
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-audiobuffer-interface/ctor-audiobuffer.html
@@ -211,17 +211,19 @@
Promise
.all([
c1.startRendering().then(function(resultBuffer) {
- return should(resultBuffer.getChannelData(0), 'c1 result')
- .beEqualToArray(data);
+ return resultBuffer;
}),
c2.startRendering().then(function(resultBuffer) {
- return should(resultBuffer.getChannelData(0), 'c2 result')
- .beEqualToArray(data);
+ return resultBuffer;
}),
])
- .then(returnValues => {
+ .then(resultBuffers => {
+ let c1ResultValue = should(resultBuffers[0].getChannelData(0), 'c1 result')
+ .beEqualToArray(data);
+ let c2ResultValue = should(resultBuffers[1].getChannelData(0), 'c2 result')
+ .beEqualToArray(data);
should(
- returnValues[0] && returnValues[1],
+ c1ResultValue && c2ResultValue,
'AudioBuffer shared between two different contexts')
.message('correctly', 'incorrectly');
task.done();