aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-000.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-001.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-002.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-003.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-balancing-000.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-balancing-001.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-balancing-002.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-balancing-003.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-table.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/fetch/content-type/response.window.js.ini16
-rw-r--r--tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini2
-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_2.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/windows/embedded-opener-remove-frame.html.ini4
-rw-r--r--tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini4
-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/the-select-element/inserted-or-removed.html.ini10
-rw-r--r--tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini2
-rw-r--r--tests/wpt/metadata-layout-2020/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini3
-rw-r--r--tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata-layout-2020/workers/semantics/run-a-worker/003.html.ini1
-rw-r--r--tests/wpt/metadata-layout-2020/workers/shared-worker-in-data-url-context.window.js.ini5
-rw-r--r--tests/wpt/metadata/MANIFEST.json230
-rw-r--r--tests/wpt/metadata/css/CSS2/floats-clear/floats-clear-multicol-000.html.ini2
-rw-r--r--tests/wpt/metadata/css/CSS2/floats-clear/floats-clear-multicol-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/CSS2/floats-clear/floats-clear-multicol-balancing-000.html.ini2
-rw-r--r--tests/wpt/metadata/css/CSS2/floats-clear/floats-clear-multicol-balancing-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini4
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini4
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-008.html.ini2
-rw-r--r--tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.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/fetch/content-type/response.window.js.ini16
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini2
-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_2.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/windows/embedded-opener-remove-frame.html.ini4
-rw-r--r--tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini3
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini4
-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/the-select-element/inserted-or-removed.html.ini10
-rw-r--r--tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini2
-rw-r--r--tests/wpt/metadata/html/webappapis/scripting/events/compile-event-handler-settings-objects.html.ini3
-rw-r--r--tests/wpt/metadata/webmessaging/without-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini1
-rw-r--r--tests/wpt/metadata/workers/shared-worker-in-data-url-context.window.js.ini5
-rw-r--r--tests/wpt/web-platform-tests/FileAPI/url/url-charset.window.js27
-rw-r--r--tests/wpt/web-platform-tests/compat/webkit-box-fixed-position-child.html17
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-000-ref.html37
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-000.html51
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-001.html51
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-002.html51
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-003.html60
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-000-ref.html36
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-000.html50
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-001.html50
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-002.html50
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-003.html59
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/always-balancing-before-column-span.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-multicol/no-balancing-after-column-span.html33
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/elementFromPoint-float-in-table.html60
-rw-r--r--tests/wpt/web-platform-tests/eventsource/resources/cors-cookie.py39
-rw-r--r--tests/wpt/web-platform-tests/eventsource/resources/cors.py38
-rw-r--r--tests/wpt/web-platform-tests/eventsource/resources/last-event-id.py12
-rw-r--r--tests/wpt/web-platform-tests/eventsource/resources/message.py12
-rw-r--r--tests/wpt/web-platform-tests/eventsource/resources/message2.py36
-rw-r--r--tests/wpt/web-platform-tests/eventsource/resources/reconnect-fail.py24
-rw-r--r--tests/wpt/web-platform-tests/eventsource/resources/status-error.py10
-rw-r--r--tests/wpt/web-platform-tests/eventsource/resources/status-reconnect.py20
-rw-r--r--tests/wpt/web-platform-tests/html/canvas/resources/canvas-tests.js3
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/inserted-or-removed.html71
-rw-r--r--tests/wpt/web-platform-tests/interfaces/picture-in-picture.idl6
-rw-r--r--tests/wpt/web-platform-tests/picture-in-picture/leave-picture-in-picture.html13
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-cssom.tentative.html184
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/requirements.txt2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/requirements_sauce.txt2
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCRtpSender-replaceTrack.https.html1
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html11
-rw-r--r--tests/wpt/web-platform-tests/webrtc/simulcast/simulcast.js2
-rw-r--r--tests/wpt/web-platform-tests/window-segments/getWindowSegments-iframes.tentative.sub.html39
-rw-r--r--tests/wpt/web-platform-tests/window-segments/getWindowSegments.https.tentative.html21
-rw-r--r--tests/wpt/web-platform-tests/window-segments/post-window-segments-sub-frame.html12
97 files changed, 1484 insertions, 193 deletions
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-000.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-000.html.ini
new file mode 100644
index 00000000000..d91ccfb5690
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-000.html.ini
@@ -0,0 +1,2 @@
+[floats-clear-multicol-000.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-001.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-001.html.ini
new file mode 100644
index 00000000000..4c9969190bb
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-001.html.ini
@@ -0,0 +1,2 @@
+[floats-clear-multicol-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-002.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-002.html.ini
new file mode 100644
index 00000000000..e2c2ea977c9
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-002.html.ini
@@ -0,0 +1,2 @@
+[floats-clear-multicol-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-003.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-003.html.ini
new file mode 100644
index 00000000000..35dfeadcc27
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-003.html.ini
@@ -0,0 +1,2 @@
+[floats-clear-multicol-003.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-balancing-000.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-balancing-000.html.ini
new file mode 100644
index 00000000000..b748a3798b7
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-balancing-000.html.ini
@@ -0,0 +1,2 @@
+[floats-clear-multicol-balancing-000.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-balancing-001.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-balancing-001.html.ini
new file mode 100644
index 00000000000..c0c1e8a7cbe
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-balancing-001.html.ini
@@ -0,0 +1,2 @@
+[floats-clear-multicol-balancing-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-balancing-002.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-balancing-002.html.ini
new file mode 100644
index 00000000000..2cf5b77669a
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-balancing-002.html.ini
@@ -0,0 +1,2 @@
+[floats-clear-multicol-balancing-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-balancing-003.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-balancing-003.html.ini
new file mode 100644
index 00000000000..f9262541fde
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats-clear/floats-clear-multicol-balancing-003.html.ini
@@ -0,0 +1,2 @@
+[floats-clear-multicol-balancing-003.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini
new file mode 100644
index 00000000000..f64b45fea6b
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini
@@ -0,0 +1,4 @@
+[hit-test-floats-002.html]
+ [Hit test float]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini
new file mode 100644
index 00000000000..4bfb0c2053a
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini
@@ -0,0 +1,4 @@
+[hit-test-floats-004.html]
+ [Miss float below something else]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini
deleted file mode 100644
index baa9f1a7541..00000000000
--- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[hit-test-floats-005.html]
- [Miss clipped float]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini
index d080f72a962..a6c39d50087 100644
--- a/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini
+++ b/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini
@@ -8,6 +8,3 @@
[throws if handleEvent is thruthy and not callable]
expected: FAIL
- [doesn't look up handleEvent method on callable event listeners]
- expected: FAIL
-
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-table.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-table.html.ini
new file mode 100644
index 00000000000..87ccfe19bb4
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-table.html.ini
@@ -0,0 +1,4 @@
+[elementFromPoint-float-in-table.html]
+ [float-in-div]
+ 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/fetch/content-type/response.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini
index 13bea363fb6..9dbce8f31d4 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
@@ -312,27 +312,27 @@
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: NOTRUN
- [<iframe>: separate response Content-Type: text/plain */*]
+ [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;x=" text/plain]
+ [<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;charset=gbk text/plain text/html]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;" text/plain]
+ [<iframe>: separate response Content-Type: text/html */*]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
+ [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;x=" text/plain]
+ [<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html */*]
+ [<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
+ [<iframe>: separate response Content-Type: text/html */*;charset=gbk]
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 61682d248e2..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,6 +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%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
+ [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
new file mode 100644
index 00000000000..87b07c3e670
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
@@ -0,0 +1,4 @@
+[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_2.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
new file mode 100644
index 00000000000..75d75b4cda2
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_2.html]
+ [Multiple history traversals, last would be aborted]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
new file mode 100644
index 00000000000..dc2e45516de
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_5.html]
+ [Multiple history traversals, last would be aborted]
+ expected: FAIL
+
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 8e2a63e3b7f..8e2b6af33d8 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,8 +1,8 @@
[embedded-opener-remove-frame.html]
- expected: CRASH
+ expected: TIMEOUT
[opener of discarded nested browsing context]
expected: FAIL
[opener of discarded auxiliary browsing context]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
index f45aaafe1c5..3538891dae8 100644
--- a/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
@@ -1,4 +1,5 @@
[supported-elements.html]
+ expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
@@ -9,7 +10,7 @@
expected: FAIL
[Area element should support autofocus]
- expected: FAIL
+ expected: TIMEOUT
[Host element with delegatesFocus should support autofocus]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
index c6f45be1eb2..e63fe7c263e 100644
--- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
+++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
@@ -1,5 +1,5 @@
[iframe_sandbox_popups_escaping-2.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 0c89d5253df..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: FAIL
+ 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 f4f994c5d6f..7a36937927c 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,5 +1,4 @@
[iframe_sandbox_popups_nonescaping-3.html]
- expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/html/semantics/forms/the-select-element/inserted-or-removed.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/forms/the-select-element/inserted-or-removed.html.ini
new file mode 100644
index 00000000000..961c1cc5f66
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/html/semantics/forms/the-select-element/inserted-or-removed.html.ini
@@ -0,0 +1,10 @@
+[inserted-or-removed.html]
+ [The last selected OPTION should win; Inserted by parser]
+ expected: FAIL
+
+ [The last selected OPTION should win; Inserted by DOM API]
+ expected: FAIL
+
+ [The last selected OPTION should win; Inserted by innerHTML]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini b/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini
index 58c9d7f8c0c..57744023f73 100644
--- a/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini
+++ b/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini
@@ -1,5 +1,5 @@
[ignore-opens-during-unload.window.html]
- expected: TIMEOUT
+ expected: CRASH
[document.open should bail out when ignore-opens-during-unload is greater than 0 during visibilitychange event (open(parent) while unloading parent and child)]
expected: TIMEOUT
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 dbec6f2c2ff..450c88bd32b 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,3 +3,6 @@
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT
+ [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini b/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini
deleted file mode 100644
index 064cf47545b..00000000000
--- a/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[017.html]
- expected: TIMEOUT
- [origin of the script that invoked the method, about:blank]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata-layout-2020/workers/semantics/run-a-worker/003.html.ini b/tests/wpt/metadata-layout-2020/workers/semantics/run-a-worker/003.html.ini
index dd49aa8e457..c2c57aec558 100644
--- a/tests/wpt/metadata-layout-2020/workers/semantics/run-a-worker/003.html.ini
+++ b/tests/wpt/metadata-layout-2020/workers/semantics/run-a-worker/003.html.ini
@@ -1,5 +1,4 @@
[003.html]
- expected: ERROR
[shared]
expected: FAIL
diff --git a/tests/wpt/metadata-layout-2020/workers/shared-worker-in-data-url-context.window.js.ini b/tests/wpt/metadata-layout-2020/workers/shared-worker-in-data-url-context.window.js.ini
index 6d92f8835c6..10dda3a6659 100644
--- a/tests/wpt/metadata-layout-2020/workers/shared-worker-in-data-url-context.window.js.ini
+++ b/tests/wpt/metadata-layout-2020/workers/shared-worker-in-data-url-context.window.js.ini
@@ -1,8 +1,7 @@
[shared-worker-in-data-url-context.window.html]
- expected: TIMEOUT
[Create a shared worker in a data url frame]
- expected: TIMEOUT
+ expected: FAIL
[Create a data url shared worker in a data url frame]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index c6b99982361..a1ad272cab0 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -56084,6 +56084,110 @@
{}
]
],
+ "floats-clear-multicol-000.html": [
+ "3598a2f7aba955b5ba3e6ee1739bfd468d2b28ea",
+ [
+ null,
+ [
+ [
+ "/css/CSS2/floats-clear/floats-clear-multicol-000-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "floats-clear-multicol-001.html": [
+ "dbcb3b557b918b6b63a9005cd8ff0de6f7c4f8c1",
+ [
+ null,
+ [
+ [
+ "/css/CSS2/floats-clear/floats-clear-multicol-000-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "floats-clear-multicol-002.html": [
+ "877ffed2c2f37f2bc3d7808cfdbe3ebed313d91c",
+ [
+ null,
+ [
+ [
+ "/css/CSS2/floats-clear/floats-clear-multicol-000-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "floats-clear-multicol-003.html": [
+ "3f951b67f9fcf3c6384ff29c058ee249b36a047c",
+ [
+ null,
+ [
+ [
+ "/css/CSS2/floats-clear/floats-clear-multicol-000-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "floats-clear-multicol-balancing-000.html": [
+ "a4f3379eca002adbe13b960198967425f7c13787",
+ [
+ null,
+ [
+ [
+ "/css/CSS2/floats-clear/floats-clear-multicol-balancing-000-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "floats-clear-multicol-balancing-001.html": [
+ "9c8f8148d06727ebf1c166811ef4e2c373339a32",
+ [
+ null,
+ [
+ [
+ "/css/CSS2/floats-clear/floats-clear-multicol-balancing-000-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "floats-clear-multicol-balancing-002.html": [
+ "e0343b0ce7a0f7030e2c3b1d9ae3d1056a9bebb3",
+ [
+ null,
+ [
+ [
+ "/css/CSS2/floats-clear/floats-clear-multicol-balancing-000-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "floats-clear-multicol-balancing-003.html": [
+ "8b68f3ad4ebbf98a67875f4823e8c7a348a80421",
+ [
+ null,
+ [
+ [
+ "/css/CSS2/floats-clear/floats-clear-multicol-balancing-000-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"margin-collapse-018.xht": [
"f509ad1ac4f8d7c7af8b4cc86e0089fbb001762b",
[
@@ -154038,6 +154142,19 @@
]
},
"css-multicol": {
+ "always-balancing-before-column-span.html": [
+ "a80617b96ef8c4e1061640ac0347c5a5cd96af71",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"as-column-flex-item.html": [
"21ff8d8d50cf97ecb22cd05cf1ae774d4aa81cdd",
[
@@ -156989,6 +157106,19 @@
{}
]
],
+ "no-balancing-after-column-span.html": [
+ "8c05ffdd27fd774ff5b9061af8c471bd2bcfa1bf",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"orthogonal-writing-mode-shrink-to-fit.html": [
"b087f56ac6e06d7e11d719976ae66459c97722d7",
[
@@ -249023,6 +249153,10 @@
"b5d7176150d0403a87dfd2b9e59af219ddb6b9bb",
[]
],
+ "webkit-box-fixed-position-child.html": [
+ "bb61b63133b402e92d0444e7afb3f4c4b9f311c6",
+ []
+ ],
"webkit-box-horizontal-reverse-variants-ref.html": [
"72d0b2c6f6851764453f79cf71fc19be73bcb0e8",
[]
@@ -276021,6 +276155,14 @@
"979298deabb4297507e001085411e55e47fff23c",
[]
],
+ "floats-clear-multicol-000-ref.html": [
+ "90c2d6abcbf3d3caa8fce8e2412011037b288a12",
+ []
+ ],
+ "floats-clear-multicol-balancing-000-ref.html": [
+ "78b7ffaf2d1a6db9064d1968a47c65b1540e57b0",
+ []
+ ],
"margin-collapse-024-ref.xht": [
"25ad3800bebc8b82976612632456aff51192bc5f",
[]
@@ -321885,11 +322027,11 @@
[]
],
"cors-cookie.py": [
- "c35824ff437feed72364181b57d7732c170722ab",
+ "9eaab9b95a0b7d44bf57431891a59006676ddb90",
[]
],
"cors.py": [
- "42a0a0bb5843389674453fc56d8a87c67cd48dcd",
+ "bc0c1089fe374958383aecd70d5da5a91a5b8037",
[]
],
"eventsource-onmessage-realm.htm": [
@@ -321901,7 +322043,7 @@
[]
],
"last-event-id.py": [
- "2b74bf66a286ff65b386662412018002c762dee2",
+ "a2cb72644570d95c365e5153f3cd2126576affb6",
[]
],
"last-event-id2.py": [
@@ -321909,23 +322051,23 @@
[]
],
"message.py": [
- "6d04b1fbe40dfbdf16faf2171ef5527a85f3b951",
+ "468564f4df083fca0e4835c2b95cf1fc9201760b",
[]
],
"message2.py": [
- "ce339d927e3133339123711e5c9cef8c4e75b353",
+ "cfe908406fc1c64bfee94f285d6335f80b5ec722",
[]
],
"reconnect-fail.py": [
- "80a247d5974bf9351318073ad017fcaed4af3e8a",
+ "12b07700cd0d29ac5988ba0b3bd77db276e2289f",
[]
],
"status-error.py": [
- "f0a1504bdd363c46259cd744c065039632ca02a8",
+ "ed5687b6c2b93cd1b11c07d4a5e9caf5e154890d",
[]
],
"status-reconnect.py": [
- "16c6502e3666365c0558cd6db9074acf3e895fa5",
+ "a59f751fc36846725fe7bcbcb2c3f91ea8437d3e",
[]
]
},
@@ -326532,7 +326674,7 @@
[]
],
"canvas-tests.js": [
- "76313bc8fbac27672128b56cb3327feaf95164e4",
+ "0ccb475b763d1e9d7d6733ff27d93dce56828f3a",
[]
],
"canvas-tests.js.headers": [
@@ -336842,7 +336984,7 @@
[]
],
"picture-in-picture.idl": [
- "3d3bad08219af2e422f2cb0d4cabeffa1f8a2b80",
+ "195977335603240eeb9f4b1391a5b2e6aa3c2441",
[]
],
"pointerevents.idl": [
@@ -353227,7 +353369,7 @@
[]
],
"requirements.txt": [
- "3baefa50ea981974be66b6e226e050e59e034c22",
+ "90d0cb6cdc8795c9b39e7644fd330283653b48e4",
[]
],
"revlist.py": [
@@ -353329,7 +353471,7 @@
]
},
"requirements.txt": [
- "5310721bbb90fa94b90b4c10d202fc5a13c04d58",
+ "d1d733b86b21cc17978a08b1715d6917e3d3b747",
[]
],
"requirements_android_webview.txt": [
@@ -353377,7 +353519,7 @@
[]
],
"requirements_sauce.txt": [
- "e9e97647796e7f940f2eef98c72b19871d323c72",
+ "5f70629d81b73302bf0b6ab48a172f761199807d",
[]
],
"requirements_servo.txt": [
@@ -356727,7 +356869,7 @@
},
"simulcast": {
"simulcast.js": [
- "af804c03e865ae1be94cdc1045f359b30034590a",
+ "018ebf63abf7b213218561b0ae00ff8ba57b800f",
[]
]
},
@@ -359164,6 +359306,12 @@
[]
]
},
+ "window-segments": {
+ "post-window-segments-sub-frame.html": [
+ "f4d1b405305fae75497732add6ad42063d5daaca",
+ []
+ ]
+ },
"workers": {
"META.yml": [
"a7297d3844728b8bb2f7c82a2c4f32d65040a919",
@@ -361312,6 +361460,13 @@
{}
]
],
+ "url-charset.window.js": [
+ "4eb103db35d27af9bef1954ce71f6c9f54c48e20",
+ [
+ "FileAPI/url/url-charset.window.html",
+ {}
+ ]
+ ],
"url-format.any.js": [
"33732fa61fc3ddd0f52b23fe83ea824cc6abae06",
[
@@ -407734,6 +407889,13 @@
{}
]
],
+ "elementFromPoint-float-in-table.html": [
+ "73713382eacfeba0d46a39165793f5906f15a2eb",
+ [
+ null,
+ {}
+ ]
+ ],
"elementFromPoint-list-001.html": [
"b31453d6c32c2c7ed8192dc1e4b5037476645bcd",
[
@@ -462339,6 +462501,13 @@
{}
]
],
+ "inserted-or-removed.html": [
+ "1b3f8631a57c1bd3babcc20d66f6fa08c6be8973",
+ [
+ null,
+ {}
+ ]
+ ],
"select-add.html": [
"910be348ae765df079970f4fc7f38cbbf955454d",
[
@@ -481031,7 +481200,7 @@
]
],
"leave-picture-in-picture.html": [
- "22445c216ef165de88deca5df1e590b5397f6b99",
+ "a0fbcb23e57e1402e51f7f5cbd52da611c0ea691",
[
null,
{
@@ -494305,6 +494474,13 @@
null,
{}
]
+ ],
+ "scroll-timeline-cssom.tentative.html": [
+ "36fcbf704bd9ef50e6449135abaed9b97f3e727a",
+ [
+ null,
+ {}
+ ]
]
},
"current-time-nan.html": [
@@ -518748,10 +518924,12 @@
]
],
"RTCRtpSender-replaceTrack.https.html": [
- "77b0fc9594c221d5f8f9fe68950940e992982e99",
+ "a370b6c059a52479cdb62a52adf1e4ab5a5f6b77",
[
null,
- {}
+ {
+ "timeout": "long"
+ }
]
],
"RTCRtpSender-setParameters.html": [
@@ -518806,7 +518984,7 @@
]
],
"RTCRtpTransceiver.https.html": [
- "9767417bf376db74903448b703fb3894a82078ff",
+ "487774982298376b7ce27a2cbfaea7ad3c716e28",
[
null,
{
@@ -525509,6 +525687,22 @@
]
]
},
+ "window-segments": {
+ "getWindowSegments-iframes.tentative.sub.html": [
+ "188a1180c0248a7ee236614efda91d669fd30fec",
+ [
+ null,
+ {}
+ ]
+ ],
+ "getWindowSegments.https.tentative.html": [
+ "e3821bda40d3ab10c8e7ebf00d47934abca4b168",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
"workers": {
"SharedWorker-MessageEvent-source.any.js": [
"faf48cf9386bfd64030c94041f35f0823aaef79c",
diff --git a/tests/wpt/metadata/css/CSS2/floats-clear/floats-clear-multicol-000.html.ini b/tests/wpt/metadata/css/CSS2/floats-clear/floats-clear-multicol-000.html.ini
new file mode 100644
index 00000000000..d91ccfb5690
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats-clear/floats-clear-multicol-000.html.ini
@@ -0,0 +1,2 @@
+[floats-clear-multicol-000.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/floats-clear/floats-clear-multicol-001.html.ini b/tests/wpt/metadata/css/CSS2/floats-clear/floats-clear-multicol-001.html.ini
new file mode 100644
index 00000000000..4c9969190bb
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats-clear/floats-clear-multicol-001.html.ini
@@ -0,0 +1,2 @@
+[floats-clear-multicol-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/floats-clear/floats-clear-multicol-balancing-000.html.ini b/tests/wpt/metadata/css/CSS2/floats-clear/floats-clear-multicol-balancing-000.html.ini
new file mode 100644
index 00000000000..b748a3798b7
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats-clear/floats-clear-multicol-balancing-000.html.ini
@@ -0,0 +1,2 @@
+[floats-clear-multicol-balancing-000.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/floats-clear/floats-clear-multicol-balancing-001.html.ini b/tests/wpt/metadata/css/CSS2/floats-clear/floats-clear-multicol-balancing-001.html.ini
new file mode 100644
index 00000000000..c0c1e8a7cbe
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats-clear/floats-clear-multicol-balancing-001.html.ini
@@ -0,0 +1,2 @@
+[floats-clear-multicol-balancing-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini
new file mode 100644
index 00000000000..f64b45fea6b
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini
@@ -0,0 +1,4 @@
+[hit-test-floats-002.html]
+ [Hit test float]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini
new file mode 100644
index 00000000000..4bfb0c2053a
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini
@@ -0,0 +1,4 @@
+[hit-test-floats-004.html]
+ [Miss float below something else]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini
deleted file mode 100644
index baa9f1a7541..00000000000
--- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[hit-test-floats-005.html]
- [Miss clipped float]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-008.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-008.html.ini
deleted file mode 100644
index f6bf6aa789e..00000000000
--- a/tests/wpt/metadata/css/css-text/white-space/trailing-other-space-separators-break-spaces-008.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[trailing-other-space-separators-break-spaces-008.html]
- expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini
index d080f72a962..a6c39d50087 100644
--- a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini
@@ -8,6 +8,3 @@
[throws if handleEvent is thruthy and not callable]
expected: FAIL
- [doesn't look up handleEvent method on callable event listeners]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini
new file mode 100644
index 00000000000..87ccfe19bb4
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-table.html.ini
@@ -0,0 +1,4 @@
+[elementFromPoint-float-in-table.html]
+ [float-in-div]
+ 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/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index 46cc294317d..165c0887ea4 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -312,27 +312,27 @@
[fetch(): separate response Content-Type: text/plain ]
expected: NOTRUN
- [<iframe>: separate response Content-Type: text/plain */*]
+ [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;x=" text/plain]
+ [<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;charset=gbk text/plain text/html]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;" text/plain]
+ [<iframe>: separate response Content-Type: text/html */*]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
+ [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;x=" text/plain]
+ [<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html */*]
+ [<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
+ [<iframe>: separate response Content-Type: text/html */*;charset=gbk]
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 61682d248e2..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,6 +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%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
+ [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
new file mode 100644
index 00000000000..87b07c3e670
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
@@ -0,0 +1,4 @@
+[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_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
new file mode 100644
index 00000000000..75d75b4cda2
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_2.html]
+ [Multiple history traversals, last would be aborted]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
new file mode 100644
index 00000000000..dc2e45516de
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_5.html]
+ [Multiple history traversals, last would be aborted]
+ expected: FAIL
+
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 2532dceabac..fd369192a02 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,5 +1,5 @@
[embedded-opener-remove-frame.html]
- expected: CRASH
+ expected: TIMEOUT
[opener and "removed" embedded documents]
expected: FAIL
@@ -7,5 +7,5 @@
expected: FAIL
[opener of discarded auxiliary browsing context]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
index 6b68e9094e4..d1ca01ebc5f 100644
--- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
+++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
@@ -1,4 +1,5 @@
[supported-elements.html]
+ expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
@@ -9,7 +10,7 @@
expected: FAIL
[Area element should support autofocus]
- expected: FAIL
+ expected: TIMEOUT
[Host element with delegatesFocus should support autofocus]
expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
index c6f45be1eb2..e63fe7c263e 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
@@ -1,5 +1,5 @@
[iframe_sandbox_popups_escaping-2.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/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 4bc0524f105..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: FAIL
+ 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 e440b1e38c6..dc856a3d5a3 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,6 +1,5 @@
[iframe_sandbox_popups_nonescaping-3.html]
type: testharness
- expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/forms/the-select-element/inserted-or-removed.html.ini b/tests/wpt/metadata/html/semantics/forms/the-select-element/inserted-or-removed.html.ini
new file mode 100644
index 00000000000..961c1cc5f66
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/forms/the-select-element/inserted-or-removed.html.ini
@@ -0,0 +1,10 @@
+[inserted-or-removed.html]
+ [The last selected OPTION should win; Inserted by parser]
+ expected: FAIL
+
+ [The last selected OPTION should win; Inserted by DOM API]
+ expected: FAIL
+
+ [The last selected OPTION should win; Inserted by innerHTML]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini
index 69bd952d756..910c88d3e81 100644
--- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini
+++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini
@@ -1,5 +1,5 @@
[ignore-opens-during-unload.window.html]
- expected: TIMEOUT
+ expected: CRASH
[ignore-opens-during-unload]
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 0cef5158fae..01f7b72cbe7 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,3 +4,6 @@
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT
+ [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webmessaging/without-ports/017.html.ini b/tests/wpt/metadata/webmessaging/without-ports/017.html.ini
deleted file mode 100644
index 064cf47545b..00000000000
--- a/tests/wpt/metadata/webmessaging/without-ports/017.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[017.html]
- expected: TIMEOUT
- [origin of the script that invoked the method, about:blank]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini b/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini
index 49f489d2a1c..d6e39444229 100644
--- a/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini
+++ b/tests/wpt/metadata/workers/semantics/run-a-worker/003.html.ini
@@ -1,6 +1,5 @@
[003.html]
type: testharness
- expected: ERROR
[shared]
expected: FAIL
diff --git a/tests/wpt/metadata/workers/shared-worker-in-data-url-context.window.js.ini b/tests/wpt/metadata/workers/shared-worker-in-data-url-context.window.js.ini
index 6d92f8835c6..10dda3a6659 100644
--- a/tests/wpt/metadata/workers/shared-worker-in-data-url-context.window.js.ini
+++ b/tests/wpt/metadata/workers/shared-worker-in-data-url-context.window.js.ini
@@ -1,8 +1,7 @@
[shared-worker-in-data-url-context.window.html]
- expected: TIMEOUT
[Create a shared worker in a data url frame]
- expected: TIMEOUT
+ expected: FAIL
[Create a data url shared worker in a data url frame]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/web-platform-tests/FileAPI/url/url-charset.window.js b/tests/wpt/web-platform-tests/FileAPI/url/url-charset.window.js
new file mode 100644
index 00000000000..4eb103db35d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/FileAPI/url/url-charset.window.js
@@ -0,0 +1,27 @@
+async_test(t => {
+ const blob = new Blob(
+ [
+ `aaa\u001B$@<textarea>\u001B(B<script>/* xss */<\/script></textarea>bbb`
+ ],
+ {type: 'text/html;charset=utf-8'});
+ const url = URL.createObjectURL(blob);
+ const win = window.open(url);
+ t.add_cleanup(() => win.close());
+
+ win.onload = t.step_func_done(() => {
+ assert_equals(win.document.charset, 'UTF-8');
+ });
+}, 'Blob charset should override any auto-detected charset.');
+
+async_test(t => {
+ const blob = new Blob(
+ [`<!doctype html>\n<meta charset="ISO-8859-1">`],
+ {type: 'text/html;charset=utf-8'});
+ const url = URL.createObjectURL(blob);
+ const win = window.open(url);
+ t.add_cleanup(() => win.close());
+
+ win.onload = t.step_func_done(() => {
+ assert_equals(win.document.charset, 'UTF-8');
+ });
+}, 'Blob charset should override <meta charset>.');
diff --git a/tests/wpt/web-platform-tests/compat/webkit-box-fixed-position-child.html b/tests/wpt/web-platform-tests/compat/webkit-box-fixed-position-child.html
new file mode 100644
index 00000000000..bb61b63133b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/compat/webkit-box-fixed-position-child.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<title>Verifies changing 'display' with a fixed position webkit-box that
+ has a fixed position child</title>
+<body>
+ <div id="outer" style="position:fixed;">
+ <div style="display:-webkit-box; float:left; padding-left:100%;">
+ <div style="position:fixed; width:100px; height:100px;"></div>
+ </div>
+ <div style="display:inline-block; width:100px; height:20px;"></div>
+</div>
+<div id="elm"></div>
+A
+</body>
+<script>
+ document.body.offsetTop;
+ elm.style.display = 'none';
+</script>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-000-ref.html b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-000-ref.html
new file mode 100644
index 00000000000..90c2d6abcbf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-000-ref.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<title>CSS Float Test Reference: Test the clear position after the floating elements breaking across multi-columns</title>
+<link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact"/>
+<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+
+<style type="text/css">
+.multicol {
+ margin: 1em;
+ border: solid silver;
+ width: 300px;
+ column-width: 100px;
+ column-gap: 0;
+ column-fill: auto;
+ height: 100px;
+}
+
+.container {
+ border: 15px aqua;
+ border-style: none solid;
+ height: 250px;
+}
+.clear {
+ border-bottom: solid orange;
+ background: red;
+}
+</style>
+
+<p>The orange line should be halfway down the third column
+(immediately after the end of the aqua lines).
+
+<div class="multicol">
+ <div class="container">
+ </div>
+ <div class="clear">
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-000.html b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-000.html
new file mode 100644
index 00000000000..3598a2f7aba
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-000.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<title>CSS Float Test: Test the clear position after the floating elements breaking across multi-columns</title>
+<link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact"/>
+<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+<link rel="help" href="https://drafts.csswg.org/css2/visuren.html#flow-control">
+<link rel="match" href="floats-clear-multicol-000-ref.html">
+
+<style type="text/css">
+.multicol {
+ margin: 1em;
+ border: solid silver;
+ width: 300px;
+ column-width: 100px;
+ column-gap: 0;
+ column-fill: auto;
+ height: 100px;
+}
+
+.float {
+ float: right;
+ width: 15px;
+ background: aqua;
+ height: 250px;
+}
+.L {
+ float: left;
+}
+
+.container {
+ width: 100%;
+ background: red;
+}
+
+.clear {
+ border-bottom: solid orange;
+}
+</style>
+
+<p>The orange line should be halfway down the third column
+(immediately after the end of the aqua lines).
+
+<div class="multicol">
+ <div class="container">
+ <div class="float L"></div>
+ <div class="float R"></div>
+ </div>
+ <div class="clear">
+ <br clear="all">
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-001.html b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-001.html
new file mode 100644
index 00000000000..dbcb3b557b9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-001.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<title>CSS Float Test: Test the clear position after the floating elements breaking across multi-columns</title>
+<link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact"/>
+<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+<link rel="help" href="https://drafts.csswg.org/css2/visuren.html#flow-control">
+<link rel="match" href="floats-clear-multicol-000-ref.html">
+
+<style type="text/css">
+.multicol {
+ margin: 1em;
+ border: solid silver;
+ width: 300px;
+ column-width: 100px;
+ column-gap: 0;
+ column-fill: auto;
+ height: 100px;
+}
+
+.float {
+ float: right;
+ width: 15px;
+ background: aqua;
+ height: 250px;
+}
+.L {
+ float: left;
+}
+
+.container {
+ width: 100%;
+}
+
+.clear {
+ border-bottom: solid orange;
+ background: red;
+}
+</style>
+
+<p>The orange line should be halfway down the third column
+(immediately after the end of the aqua lines).
+
+<div class="multicol">
+ <div class="container">
+ <div class="float L"></div>
+ <div class="float R"></div>
+ <br clear="all">
+ </div>
+ <div class="clear">
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-002.html b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-002.html
new file mode 100644
index 00000000000..877ffed2c2f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-002.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<title>CSS Float Test: Test the clear position after the floating elements breaking across multi-columns</title>
+<link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact"/>
+<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+<link rel="help" href="https://drafts.csswg.org/css2/visuren.html#flow-control">
+<link rel="match" href="floats-clear-multicol-000-ref.html">
+
+<style type="text/css">
+.multicol {
+ margin: 1em;
+ border: solid silver;
+ width: 300px;
+ column-width: 100px;
+ column-gap: 0;
+ column-fill: auto;
+ height: 100px;
+}
+
+.float {
+ float: right;
+ width: 15px;
+ background: aqua;
+ height: 250px;
+}
+.L {
+ float: left;
+}
+
+.container {
+ width: 100%;
+ background: red;
+}
+
+.clear {
+ clear: left;
+ border-bottom: solid orange;
+ background: red;
+}
+</style>
+
+<p>The orange line should be halfway down the third column
+(immediately after the end of the aqua lines).
+
+<div class="multicol">
+ <div class="container">
+ <div class="float L"></div>
+ <div class="float R"></div>
+ </div>
+ <div class="clear"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-003.html b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-003.html
new file mode 100644
index 00000000000..3f951b67f9f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-003.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<title>CSS Float Test: Test the clear position after the floating elements breaking across multi-columns</title>
+<link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact"/>
+<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+<link rel="help" href="https://drafts.csswg.org/css2/visuren.html#flow-control">
+<link rel="match" href="floats-clear-multicol-000-ref.html">
+
+<style type="text/css">
+.multicol {
+ margin: 1em;
+ border: solid silver;
+ width: 300px;
+ column-width: 100px;
+ column-gap: 0;
+ column-fill: auto;
+ height: 100px;
+}
+
+.step {
+ height: 10px;
+ border: 15px aqua;
+ border-style: none solid;
+}
+.float {
+ float: right;
+ width: 15px;
+ background: aqua;
+ height: 240px;
+}
+.L {
+ float: left;
+}
+
+.container {
+ width: 100%;
+ background: red;
+}
+
+.clear {
+ clear: left;
+ height: 0;
+ background: red;
+}
+.bar {
+ border-bottom: orange solid;
+}
+</style>
+
+<p>The orange line should be halfway down the third column
+(immediately after the end of the aqua lines).
+
+<div class="multicol">
+ <div class="step"></div>
+ <div class="container">
+ <div class="float L"></div>
+ <div class="float R"></div>
+ </div>
+ <div class="clear"><div class="bar"></div></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-000-ref.html b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-000-ref.html
new file mode 100644
index 00000000000..78b7ffaf2d1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-000-ref.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<title>CSS Float Test Reference: Test the clear position after the floating elements breaking across multi-columns</title>
+<link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact"/>
+<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+
+<style type="text/css">
+.multicol {
+ margin: 1em;
+ border: solid silver;
+ width: 300px;
+ column-width: 100px;
+ column-gap: 0;
+ height: 100px;
+}
+
+.container {
+ border: 15px aqua;
+ border-style: none solid;
+ height: 250px;
+}
+.clear {
+ border-bottom: solid orange;
+ background: red;
+}
+</style>
+
+<p>The orange line should be in the third column
+(immediately after the end of the aqua lines).
+
+<div class="multicol">
+ <div class="container">
+ </div>
+ <div class="clear">
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-000.html b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-000.html
new file mode 100644
index 00000000000..a4f3379eca0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-000.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<title>CSS Float Test: Test the clear position after the floating elements breaking across multi-columns</title>
+<link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact"/>
+<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+<link rel="help" href="https://drafts.csswg.org/css2/visuren.html#flow-control">
+<link rel="match" href="floats-clear-multicol-balancing-000-ref.html">
+
+<style type="text/css">
+.multicol {
+ margin: 1em;
+ border: solid silver;
+ width: 300px;
+ column-width: 100px;
+ column-gap: 0;
+ height: 100px;
+}
+
+.float {
+ float: right;
+ width: 15px;
+ background: aqua;
+ height: 250px;
+}
+.L {
+ float: left;
+}
+
+.container {
+ width: 100%;
+ background: red;
+}
+
+.clear {
+ border-bottom: solid orange;
+}
+</style>
+
+<p>The orange line should be in the third column
+(immediately after the end of the aqua lines).
+
+<div class="multicol">
+ <div class="container">
+ <div class="float L"></div>
+ <div class="float R"></div>
+ </div>
+ <div class="clear">
+ <br clear="all">
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-001.html b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-001.html
new file mode 100644
index 00000000000..9c8f8148d06
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-001.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<title>CSS Float Test: Test the clear position after the floating elements breaking across multi-columns</title>
+<link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact"/>
+<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+<link rel="help" href="https://drafts.csswg.org/css2/visuren.html#flow-control">
+<link rel="match" href="floats-clear-multicol-balancing-000-ref.html">
+
+<style type="text/css">
+.multicol {
+ margin: 1em;
+ border: solid silver;
+ width: 300px;
+ column-width: 100px;
+ column-gap: 0;
+ height: 100px;
+}
+
+.float {
+ float: right;
+ width: 15px;
+ background: aqua;
+ height: 250px;
+}
+.L {
+ float: left;
+}
+
+.container {
+ width: 100%;
+}
+
+.clear {
+ border-bottom: solid orange;
+ background: red;
+}
+</style>
+
+<p>The orange line should be in the third column
+(immediately after the end of the aqua lines).
+
+<div class="multicol">
+ <div class="container">
+ <div class="float L"></div>
+ <div class="float R"></div>
+ <br clear="all">
+ </div>
+ <div class="clear">
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-002.html b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-002.html
new file mode 100644
index 00000000000..e0343b0ce7a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-002.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<title>CSS Float Test: Test the clear position after the floating elements breaking across multi-columns</title>
+<link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact"/>
+<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+<link rel="help" href="https://drafts.csswg.org/css2/visuren.html#flow-control">
+<link rel="match" href="floats-clear-multicol-balancing-000-ref.html">
+
+<style type="text/css">
+.multicol {
+ margin: 1em;
+ border: solid silver;
+ width: 300px;
+ column-width: 100px;
+ column-gap: 0;
+ height: 100px;
+}
+
+.float {
+ float: right;
+ width: 15px;
+ background: aqua;
+ height: 250px;
+}
+.L {
+ float: left;
+}
+
+.container {
+ width: 100%;
+ background: red;
+}
+
+.clear {
+ clear: left;
+ border-bottom: solid orange;
+ background: red;
+}
+</style>
+
+<p>The orange line should be in the third column
+(immediately after the end of the aqua lines).
+
+<div class="multicol">
+ <div class="container">
+ <div class="float L"></div>
+ <div class="float R"></div>
+ </div>
+ <div class="clear"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-003.html b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-003.html
new file mode 100644
index 00000000000..8b68f3ad4eb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats-clear/floats-clear-multicol-balancing-003.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<title>CSS Float Test: Test the clear position after the floating elements breaking across multi-columns</title>
+<link rel="author" title="Elika J. Etemad" href="http://fantasai.inkedblade.net/contact"/>
+<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+<link rel="help" href="https://drafts.csswg.org/css2/visuren.html#flow-control">
+<link rel="match" href="floats-clear-multicol-balancing-000-ref.html">
+
+<style type="text/css">
+.multicol {
+ margin: 1em;
+ border: solid silver;
+ width: 300px;
+ column-width: 100px;
+ column-gap: 0;
+ height: 100px;
+}
+
+.step {
+ height: 10px;
+ border: 15px aqua;
+ border-style: none solid;
+}
+.float {
+ float: right;
+ width: 15px;
+ background: aqua;
+ height: 240px;
+}
+.L {
+ float: left;
+}
+
+.container {
+ width: 100%;
+ background: red;
+}
+
+.clear {
+ clear: left;
+ height: 0;
+ background: red;
+}
+.bar {
+ border-bottom: orange solid;
+}
+</style>
+
+<p>The orange line should be in the third column
+(immediately after the end of the aqua lines).
+
+<div class="multicol">
+ <div class="step"></div>
+ <div class="container">
+ <div class="float L"></div>
+ <div class="float R"></div>
+ </div>
+ <div class="clear"><div class="bar"></div></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/always-balancing-before-column-span.html b/tests/wpt/web-platform-tests/css/css-multicol/always-balancing-before-column-span.html
new file mode 100644
index 00000000000..a80617b96ef
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-multicol/always-balancing-before-column-span.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+ <meta charset="utf-8">
+ <link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+ <link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+ <link rel="help" href="https://drafts.csswg.org/css-multicol-1/#column-span">
+ <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/4689">
+ <link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+ <meta name="assert" content="This test verifies columns are always balancing before column-spanning element in an unconstrained height and column-fill:auto column container.">
+
+ <style>
+ .columns {
+ column-fill: auto;
+ column-count: 2;
+ column-gap: 0;
+ width: 100px;
+ background: red;
+ }
+ .colspan {
+ column-span: all;
+ }
+ .content {
+ height: 200px;
+ background: green;
+ }
+ </style>
+
+ <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+ <div class="columns">
+ <div class="content"></div>
+ <div class="colspan"></div>
+ </div>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-multicol/no-balancing-after-column-span.html b/tests/wpt/web-platform-tests/css/css-multicol/no-balancing-after-column-span.html
new file mode 100644
index 00000000000..8c05ffdd27f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-multicol/no-balancing-after-column-span.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+ <meta charset="utf-8">
+ <link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
+ <link rel="author" title="Mozilla" href="http://www.mozilla.org/">
+ <link rel="help" href="https://drafts.csswg.org/css-multicol-1/#column-span">
+ <link rel="help" href="https://github.com/w3c/csswg-drafts/issues/4689">
+ <link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+ <meta name="assert" content="This test verifies columns are not balancing after a column-spanning element in a fixed height and column-fill:auto column container.">
+
+ <style>
+ .columns {
+ column-fill: auto;
+ column-count: 2;
+ column-gap: 0;
+ width: 200px;
+ height: 100px;
+ }
+ .colspan {
+ column-span: all;
+ }
+ .content {
+ height: 100px;
+ background: green;
+ }
+ </style>
+
+ <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+ <div class="columns">
+ <div class="colspan"></div>
+ <div class="content"></div>
+ </div>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/elementFromPoint-float-in-table.html b/tests/wpt/web-platform-tests/css/cssom-view/elementFromPoint-float-in-table.html
new file mode 100644
index 00000000000..73713382eac
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/elementFromPoint-float-in-table.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#floats" />
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-document-elementfrompoint" />
+<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+.outer {
+ width: 100px;
+ height: 100px;
+ background: green;
+}
+.inner {
+ float: left;
+ width: 50px;
+ height: 50px;
+ background: blue;
+}
+</style>
+<body>
+<div id="log"></div>
+
+<div class="outer" onclick="clicked('outer')">
+ <div id="float-in-div" class="inner" onclick="clicked('inner')">
+ </div>
+</div>
+
+<table>
+ <tr>
+ <td>
+ <div class="outer" onclick="clicked('outer')">
+ <div id='float-in-table' class="inner" onclick="clicked('inner')">
+ </div>
+ </div>
+ </td>
+ </tr>
+</table>
+
+<pre id="output"></pre>
+<script>
+function clicked(p) {
+ output.textContent += 'clicked ' + p + '\n';
+}
+
+function testElementFromPoint(element) {
+ let bounds = element.getBoundingClientRect();
+ let result = document.elementFromPoint(bounds.x + 1, bounds.y + 1);
+ assert_equals(result, element);
+}
+
+let targets = [
+ 'float-in-div',
+ 'float-in-table',
+];
+for (let target of targets) {
+ let element = document.getElementById(target);
+ test(() => { testElementFromPoint(element); }, target);
+}
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/eventsource/resources/cors-cookie.py b/tests/wpt/web-platform-tests/eventsource/resources/cors-cookie.py
index c35824ff437..9eaab9b95a0 100644
--- a/tests/wpt/web-platform-tests/eventsource/resources/cors-cookie.py
+++ b/tests/wpt/web-platform-tests/eventsource/resources/cors-cookie.py
@@ -1,32 +1,31 @@
from datetime import datetime
-from six import ensure_str
def main(request, response):
- last_event_id = ensure_str(request.headers.get("Last-Event-Id", ""))
- ident = request.GET.first('ident', "test")
- cookie = "COOKIE" if ident in request.cookies else "NO_COOKIE"
- origin = request.GET.first('origin', request.headers["origin"])
- credentials = request.GET.first('credentials', 'true')
+ last_event_id = request.headers.get(b"Last-Event-Id", b"")
+ ident = request.GET.first(b'ident', b"test")
+ cookie = b"COOKIE" if ident in request.cookies else b"NO_COOKIE"
+ origin = request.GET.first(b'origin', request.headers[b"origin"])
+ credentials = request.GET.first(b'credentials', b'true')
headers = []
- if origin != 'none':
- headers.append(("Access-Control-Allow-Origin", origin));
+ if origin != b'none':
+ headers.append((b"Access-Control-Allow-Origin", origin));
- if credentials != 'none':
- headers.append(("Access-Control-Allow-Credentials", credentials));
+ if credentials != b'none':
+ headers.append((b"Access-Control-Allow-Credentials", credentials));
- if last_event_id == '':
- headers.append(("Content-Type", "text/event-stream"))
- response.set_cookie(ident, "COOKIE")
- data = "id: 1\nretry: 200\ndata: first %s\n\n" % cookie
- elif last_event_id == '1':
- headers.append(("Content-Type", "text/event-stream"))
+ if last_event_id == b'':
+ headers.append((b"Content-Type", b"text/event-stream"))
+ response.set_cookie(ident, b"COOKIE")
+ data = b"id: 1\nretry: 200\ndata: first %s\n\n" % cookie
+ elif last_event_id == b'1':
+ headers.append((b"Content-Type", b"text/event-stream"))
long_long_time_ago = datetime.now().replace(year=2001, month=7, day=27)
- response.set_cookie(ident, "COOKIE", expires=long_long_time_ago)
- data = "id: 2\ndata: second %s\n\n" % cookie
+ response.set_cookie(ident, b"COOKIE", expires=long_long_time_ago)
+ data = b"id: 2\ndata: second %s\n\n" % cookie
else:
- headers.append(("Content-Type", "stop"))
- data = "data: " + last_event_id + cookie + "\n\n";
+ headers.append((b"Content-Type", b"stop"))
+ data = b"data: " + last_event_id + cookie + b"\n\n";
return headers, data
diff --git a/tests/wpt/web-platform-tests/eventsource/resources/cors.py b/tests/wpt/web-platform-tests/eventsource/resources/cors.py
index 42a0a0bb584..bc0c1089fe3 100644
--- a/tests/wpt/web-platform-tests/eventsource/resources/cors.py
+++ b/tests/wpt/web-platform-tests/eventsource/resources/cors.py
@@ -1,34 +1,36 @@
import os
from wptserve import pipes
+from wptserve.utils import isomorphic_decode
+
def run_other(request, response, path):
#This is a terrible hack
- environ = {"__file__": path}
- exec(compile(open(path, "r").read(), path, 'exec'), environ, environ)
- rv = environ["main"](request, response)
+ environ = {u"__file__": path}
+ exec(compile(open(path, u"r").read(), path, u'exec'), environ, environ)
+ rv = environ[u"main"](request, response)
return rv
def main(request, response):
- origin = request.GET.first("origin", request.headers["origin"])
- credentials = request.GET.first("credentials", "true")
+ origin = request.GET.first(b"origin", request.headers[b"origin"])
+ credentials = request.GET.first(b"credentials", b"true")
- response.headers.update([("Access-Control-Allow-Origin", origin),
- ("Access-Control-Allow-Credentials", credentials)])
+ response.headers.update([(b"Access-Control-Allow-Origin", origin),
+ (b"Access-Control-Allow-Credentials", credentials)])
- handler = request.GET.first('run')
- if handler in ["status-reconnect",
- "message",
- "redirect",
- "cache-control"]:
- if handler == "cache-control":
- response.headers.set("Content-Type", "text/event-stream")
- rv = open(os.path.join(request.doc_root, "eventsource", "resources", "cache-control.event_stream"), "r").read()
+ handler = request.GET.first(b'run')
+ if handler in [b"status-reconnect",
+ b"message",
+ b"redirect",
+ b"cache-control"]:
+ if handler == b"cache-control":
+ response.headers.set(b"Content-Type", b"text/event-stream")
+ rv = open(os.path.join(request.doc_root, u"eventsource", u"resources", u"cache-control.event_stream"), u"r").read()
response.content = rv
pipes.sub(request, response)
return
- elif handler == "redirect":
- return run_other(request, response, os.path.join(request.doc_root, "common", "redirect.py"))
+ elif handler == b"redirect":
+ return run_other(request, response, os.path.join(request.doc_root, u"common", u"redirect.py"))
else:
- return run_other(request, response, os.path.join(os.path.split(__file__)[0], handler + ".py"))
+ return run_other(request, response, os.path.join(os.path.split(isomorphic_decode(__file__))[0], isomorphic_decode(handler) + u".py"))
else:
return
diff --git a/tests/wpt/web-platform-tests/eventsource/resources/last-event-id.py b/tests/wpt/web-platform-tests/eventsource/resources/last-event-id.py
index 2b74bf66a28..a2cb7264457 100644
--- a/tests/wpt/web-platform-tests/eventsource/resources/last-event-id.py
+++ b/tests/wpt/web-platform-tests/eventsource/resources/last-event-id.py
@@ -1,11 +1,9 @@
-from six import ensure_str
-
def main(request, response):
- response.headers.set("Content-Type", "text/event-stream")
+ response.headers.set(b"Content-Type", b"text/event-stream")
- last_event_id = ensure_str(request.headers.get("Last-Event-ID", ""))
+ last_event_id = request.headers.get(b"Last-Event-ID", b"")
if last_event_id:
- return "data: " + last_event_id + "\n\n"
+ return b"data: " + last_event_id + b"\n\n"
else:
- idvalue = request.GET.first("idvalue", u"\u2026")
- return "id: " + idvalue + "\nretry: 200\ndata: hello\n\n"
+ idvalue = request.GET.first(b"idvalue", u"\u2026".encode("utf-8"))
+ return b"id: " + idvalue + b"\nretry: 200\ndata: hello\n\n"
diff --git a/tests/wpt/web-platform-tests/eventsource/resources/message.py b/tests/wpt/web-platform-tests/eventsource/resources/message.py
index 6d04b1fbe40..468564f4df0 100644
--- a/tests/wpt/web-platform-tests/eventsource/resources/message.py
+++ b/tests/wpt/web-platform-tests/eventsource/resources/message.py
@@ -1,13 +1,13 @@
import time
def main(request, response):
- mime = request.GET.first("mime", "text/event-stream")
- message = request.GET.first("message", "data: data");
- newline = "" if request.GET.first("newline", None) == "none" else "\n\n";
- sleep = int(request.GET.first("sleep", "0"))
+ mime = request.GET.first(b"mime", b"text/event-stream")
+ message = request.GET.first(b"message", b"data: data");
+ newline = b"" if request.GET.first(b"newline", None) == b"none" else b"\n\n";
+ sleep = int(request.GET.first(b"sleep", b"0"))
- headers = [("Content-Type", mime)]
- body = message + newline + "\n"
+ headers = [(b"Content-Type", mime)]
+ body = message + newline + b"\n"
if sleep != 0:
time.sleep(sleep/1000)
diff --git a/tests/wpt/web-platform-tests/eventsource/resources/message2.py b/tests/wpt/web-platform-tests/eventsource/resources/message2.py
index ce339d927e3..cfe908406fc 100644
--- a/tests/wpt/web-platform-tests/eventsource/resources/message2.py
+++ b/tests/wpt/web-platform-tests/eventsource/resources/message2.py
@@ -1,35 +1,35 @@
import time
def main(request, response):
- response.headers.set('Content-Type', 'text/event-stream')
- response.headers.set('Cache-Control', 'no-cache')
+ response.headers.set(b'Content-Type', b'text/event-stream')
+ response.headers.set(b'Cache-Control', b'no-cache')
response.explicit_flush = True
response.write_status_headers()
while True:
- response.writer.write("data:msg")
- response.writer.write("\n")
- response.writer.write("data: msg")
- response.writer.write("\n\n")
+ response.writer.write(u"data:msg")
+ response.writer.write(u"\n")
+ response.writer.write(u"data: msg")
+ response.writer.write(u"\n\n")
- response.writer.write(":")
- response.writer.write("\n")
+ response.writer.write(u":")
+ response.writer.write(u"\n")
- response.writer.write("falsefield:msg")
- response.writer.write("\n\n")
+ response.writer.write(u"falsefield:msg")
+ response.writer.write(u"\n\n")
- response.writer.write("falsefield:msg")
- response.writer.write("\n")
+ response.writer.write(u"falsefield:msg")
+ response.writer.write(u"\n")
- response.writer.write("Data:data")
- response.writer.write("\n\n")
+ response.writer.write(u"Data:data")
+ response.writer.write(u"\n\n")
- response.writer.write("data")
- response.writer.write("\n\n")
+ response.writer.write(u"data")
+ response.writer.write(u"\n\n")
- response.writer.write("data:end")
- response.writer.write("\n\n")
+ response.writer.write(u"data:end")
+ response.writer.write(u"\n\n")
response.writer.flush()
time.sleep(2)
diff --git a/tests/wpt/web-platform-tests/eventsource/resources/reconnect-fail.py b/tests/wpt/web-platform-tests/eventsource/resources/reconnect-fail.py
index 80a247d5974..12b07700cd0 100644
--- a/tests/wpt/web-platform-tests/eventsource/resources/reconnect-fail.py
+++ b/tests/wpt/web-platform-tests/eventsource/resources/reconnect-fail.py
@@ -1,24 +1,24 @@
def main(request, response):
- name = "recon_fail_" + request.GET.first("id")
+ name = b"recon_fail_" + request.GET.first(b"id")
- headers = [("Content-Type", "text/event-stream")]
+ headers = [(b"Content-Type", b"text/event-stream")]
cookie = request.cookies.first(name, None)
state = cookie.value if cookie is not None else None
- if state == 'opened':
- status = (200, "RECONNECT")
- response.set_cookie(name, "reconnected");
- body = "data: reconnected\n\n";
+ if state == b'opened':
+ status = (200, b"RECONNECT")
+ response.set_cookie(name, b"reconnected");
+ body = b"data: reconnected\n\n";
- elif state == 'reconnected':
- status = (204, "NO CONTENT (CLOSE)")
+ elif state == b'reconnected':
+ status = (204, b"NO CONTENT (CLOSE)")
response.delete_cookie(name);
- body = "data: closed\n\n" # Will never get through
+ body = b"data: closed\n\n" # Will never get through
else:
- status = (200, "OPEN");
- response.set_cookie(name, "opened");
- body = "retry: 2\ndata: opened\n\n";
+ status = (200, b"OPEN");
+ response.set_cookie(name, b"opened");
+ body = b"retry: 2\ndata: opened\n\n";
return status, headers, body
diff --git a/tests/wpt/web-platform-tests/eventsource/resources/status-error.py b/tests/wpt/web-platform-tests/eventsource/resources/status-error.py
index f0a1504bdd3..ed5687b6c2b 100644
--- a/tests/wpt/web-platform-tests/eventsource/resources/status-error.py
+++ b/tests/wpt/web-platform-tests/eventsource/resources/status-error.py
@@ -1,15 +1,15 @@
def main(request, response):
- status = (request.GET.first("status", "404"), "HAHAHAHA")
- headers = [("Content-Type", "text/event-stream")]
+ status = (request.GET.first(b"status", b"404"), b"HAHAHAHA")
+ headers = [(b"Content-Type", b"text/event-stream")]
# According to RFC7231, HTTP responses bearing status code 204 or 205 must
# not specify a body. The expected browser behavior for this condition is not
# currently defined--see the following for further discussion:
#
# https://github.com/web-platform-tests/wpt/pull/5227
- if status[0] in ["204", "205"]:
- body = ""
+ if status[0] in [b"204", b"205"]:
+ body = b""
else:
- body = "data: data\n\n"
+ body = b"data: data\n\n"
return status, headers, body
diff --git a/tests/wpt/web-platform-tests/eventsource/resources/status-reconnect.py b/tests/wpt/web-platform-tests/eventsource/resources/status-reconnect.py
index 16c6502e366..a59f751fc36 100644
--- a/tests/wpt/web-platform-tests/eventsource/resources/status-reconnect.py
+++ b/tests/wpt/web-platform-tests/eventsource/resources/status-reconnect.py
@@ -1,21 +1,21 @@
def main(request, response):
- status_code = request.GET.first("status", "204")
- name = request.GET.first("id", status_code)
+ status_code = request.GET.first(b"status", b"204")
+ name = request.GET.first(b"id", status_code)
- headers = [("Content-Type", "text/event-stream")]
+ headers = [(b"Content-Type", b"text/event-stream")]
- cookie_name = "request" + name
+ cookie_name = b"request" + name
- if request.cookies.first(cookie_name, "") == status_code:
+ if request.cookies.first(cookie_name, b"") == status_code:
status = 200
response.delete_cookie(cookie_name)
- body = "data: data\n\n"
+ body = b"data: data\n\n"
else:
response.set_cookie(cookie_name, status_code);
- status = (int(status_code), "TEST")
- body = "retry: 2\n"
- if "ok_first" in request.GET:
- body += "data: ok\n\n"
+ status = (int(status_code), b"TEST")
+ body = b"retry: 2\n"
+ if b"ok_first" in request.GET:
+ body += b"data: ok\n\n"
return status, headers, body
diff --git a/tests/wpt/web-platform-tests/html/canvas/resources/canvas-tests.js b/tests/wpt/web-platform-tests/html/canvas/resources/canvas-tests.js
index 76313bc8fba..0ccb475b763 100644
--- a/tests/wpt/web-platform-tests/html/canvas/resources/canvas-tests.js
+++ b/tests/wpt/web-platform-tests/html/canvas/resources/canvas-tests.js
@@ -144,6 +144,7 @@ function forEachCanvasSource(crossOriginUrl, sameOriginUrl, callback) {
return new Promise((resolve, reject) => {
const video = document.createElement("video");
video.oncanplaythrough = () => resolve(video);
+ video.preload = "auto";
video.onerror = reject;
video.src = getVideoURI(crossOriginUrl + "/media/movie_300");
});
@@ -156,6 +157,7 @@ function forEachCanvasSource(crossOriginUrl, sameOriginUrl, callback) {
return new Promise((resolve, reject) => {
const video = document.createElement("video");
video.oncanplaythrough = () => resolve(video);
+ video.preload = "auto";
video.onerror = reject;
video.src = "/common/redirect.py?location=" + getVideoURI(crossOriginUrl + "/media/movie_300");
});
@@ -168,6 +170,7 @@ function forEachCanvasSource(crossOriginUrl, sameOriginUrl, callback) {
return new Promise((resolve, reject) => {
const video = document.createElement("video");
video.oncanplaythrough = () => resolve(video);
+ video.preload = "auto";
video.onerror = reject;
video.src = crossOriginUrl + "/common/redirect.py?location=" + getVideoURI(sameOriginUrl + "/media/movie_300");
});
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/inserted-or-removed.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/inserted-or-removed.html
new file mode 100644
index 00000000000..1b3f8631a57
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-select-element/inserted-or-removed.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<link rel="help" href="https://html.spec.whatwg.org/C/#the-select-element:nodes-are-inserted">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+
+<select id="by-parser">
+<option selected>First</option>
+<option selected>Second</option>
+</select>
+
+<select id="by-parser-optgroup">
+<optgroup>
+<option selected>First</option>
+<option selected>Second</option>
+</optgroup>
+</select>
+
+<select id="by-dom"></select>
+
+<select id="by-innerHTML"></select>
+
+<script>
+test(() => {
+ const target = document.querySelector("#by-parser");
+ assert_equals(target.selectedOptions[0].textContent, 'Second');
+
+ const target2 = document.querySelector("#by-parser-optgroup");
+ assert_equals(target2.selectedOptions[0].textContent, 'Second');
+}, 'The last selected OPTION should win; Inserted by parser');
+
+test(() => {
+ const target = document.querySelector("#by-dom");
+ const option1 = document.createElement('option');
+ option1.defaultSelected = true;
+ option1.textContent = 'First';
+ const option2 = document.createElement('option');
+ option2.defaultSelected = true;
+ option2.textContent = 'Second';
+ target.appendChild(option1);
+ target.appendChild(option2);
+ assert_equals(target.selectedOptions[0].textContent, 'Second');
+
+ target.innerHTML = '';
+ const optgroup = document.createElement('optgroup');
+ const option3 = document.createElement('option');
+ option3.defaultSelected = true;
+ option3.textContent = 'First';
+ const option4 = document.createElement('option');
+ option4.defaultSelected = true;
+ option4.textContent = 'Second';
+ optgroup.appendChild(option3);
+ optgroup.appendChild(option4);
+ target.appendChild(optgroup);
+ assert_equals(target.selectedOptions[0].textContent, 'Second');
+}, 'The last selected OPTION should win; Inserted by DOM API');
+
+test(() => {
+ const target = document.querySelector("#by-innerHTML");
+ target.innerHTML = '<option selected>First</option>' +
+ '<option selected>Second</option>';
+ assert_equals(target.selectedOptions[0].textContent, 'Second');
+
+ target.innerHTML = '<option selected>First</option>' +
+ '<optgroup><option selected>Second</option>' +
+ '<option selected>Third</option></optgroup>' +
+ '<option selected>Fourth</option>';
+ assert_equals(target.selectedOptions[0].textContent, 'Fourth');
+}, 'The last selected OPTION should win; Inserted by innerHTML');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/interfaces/picture-in-picture.idl b/tests/wpt/web-platform-tests/interfaces/picture-in-picture.idl
index 3d3bad08219..19597733560 100644
--- a/tests/wpt/web-platform-tests/interfaces/picture-in-picture.idl
+++ b/tests/wpt/web-platform-tests/interfaces/picture-in-picture.idl
@@ -32,11 +32,11 @@ interface PictureInPictureWindow : EventTarget {
};
[Exposed=Window]
-interface EnterPictureInPictureEvent : Event {
- constructor(DOMString type, EnterPictureInPictureEventInit eventInitDict);
+interface PictureInPictureEvent : Event {
+ constructor(DOMString type, PictureInPictureEventInit eventInitDict);
[SameObject] readonly attribute PictureInPictureWindow pictureInPictureWindow;
};
-dictionary EnterPictureInPictureEventInit : EventInit {
+dictionary PictureInPictureEventInit : EventInit {
required PictureInPictureWindow pictureInPictureWindow;
};
diff --git a/tests/wpt/web-platform-tests/picture-in-picture/leave-picture-in-picture.html b/tests/wpt/web-platform-tests/picture-in-picture/leave-picture-in-picture.html
index 22445c216ef..a0fbcb23e57 100644
--- a/tests/wpt/web-platform-tests/picture-in-picture/leave-picture-in-picture.html
+++ b/tests/wpt/web-platform-tests/picture-in-picture/leave-picture-in-picture.html
@@ -10,9 +10,16 @@
<body></body>
<script>
promise_test(async t => {
+ let pictureInPictureWindow;
const video = await loadVideo();
+ video.addEventListener('enterpictureinpicture', t.step_func_done(event => {
+ pictureInPictureWindow = event.pictureInPictureWindow;
+ }));
+
video.addEventListener('leavepictureinpicture', t.step_func_done(event => {
+ assert_equals(pictureInPictureWindow, event.pictureInPictureWindow);
+
assert_equals(event.target, video);
assert_equals(event.bubbles, true);
assert_equals(event.cancelable, false);
@@ -25,9 +32,15 @@ promise_test(async t => {
}, 'leavepictureinpicture event is fired if document.exitPictureInPicture');
promise_test(async t => {
+ let pictureInPictureWindow;
const video = await loadVideo();
+ video.addEventListener('enterpictureinpicture', t.step_func_done(event => {
+ pictureInPictureWindow = event.pictureInPictureWindow;
+ }));
+
video.addEventListener('leavepictureinpicture', t.step_func_done(event => {
+ assert_equals(pictureInPictureWindow, event.pictureInPictureWindow);
assert_equals(event.target, video);
assert_equals(event.bubbles, true);
assert_equals(event.cancelable, false);
diff --git a/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-cssom.tentative.html b/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-cssom.tentative.html
new file mode 100644
index 00000000000..36fcbf704bd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/scroll-animations/css/scroll-timeline-cssom.tentative.html
@@ -0,0 +1,184 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+<div id="target"></div>
+<script>
+
+// Runs a function while a stylesheet is temporarily inserted into the
+// document.
+function with_stylesheet(text, func) {
+ let s = document.createElement('style');
+ try {
+ s.textContent = text;
+ document.documentElement.append(s);
+ func(s.sheet.rules);
+ } finally {
+ s.remove();
+ }
+}
+
+// Runs a test while a stylesheet is temporarily inserted into the
+// document.
+function test_stylesheet(text, func, description) {
+ test(() => {
+ with_stylesheet(text, func);
+ }, description);
+}
+
+function test_valid_rule(text, description) {
+ test_stylesheet(text, (rules) => {
+ assert_equals(rules.length, 1);
+ assert_equals(rules[0].constructor.name, 'CSSScrollTimelineRule');
+ }, description);
+}
+
+function test_invalid_rule(text, description) {
+ test_stylesheet(text, (rules) => {
+ assert_equals(rules.length, 0);
+ }, description);
+}
+
+// Verify that for the _specifed_ value for a given _descriptor_, the _expected_
+// string can be observed via the equivalent attribute on CSSScrollTimelineRule.
+function test_descriptor(descriptor, specified, expected) {
+ if (typeof(expected) == 'undefined')
+ expected = specified;
+ let attribute = descriptor.replaceAll(/\-./g, x => x[1].toUpperCase());
+ test_stylesheet(`@scroll-timeline test { ${descriptor}:${specified}; }`, (rules) => {
+ assert_equals(rules.length, 1);
+ assert_equals(rules[0].constructor.name, 'CSSScrollTimelineRule');
+ assert_equals(rules[0][attribute], expected);
+ }, `CSSScrollTimelineRule.${attribute} ${specified}`);
+}
+
+test_valid_rule('@scroll-timeline foo {}', 'Empty block');
+test_valid_rule('@scroll-timeline foo {', 'EOF ends block');
+test_valid_rule('@scroll-timeline "foo" {}', 'Timeline name can be a <string>');
+
+test_invalid_rule('@scroll-timeline', 'Missing prelude');
+test_invalid_rule('@scroll-timeline foo', 'Missing block');
+test_invalid_rule('@scroll-timeline {}', 'Missing timeline name');
+test_invalid_rule('@scroll-timeline 123 {}', 'Timeline name must be an identifier');
+test_invalid_rule('@scroll-timeline none {}', 'Timeline name must match <custom-ident>');
+test_invalid_rule('@scroll-timeline NONE {}', 'Timeline name must match <custom-ident> (caps)');
+test_invalid_rule('@scroll-timeline NoNe {}', 'Timeline name must match <custom-ident> (mixed)');
+test_invalid_rule('@scroll-timeline initial {}', 'Timeline name may not be initial');
+test_invalid_rule('@scroll-timeline inherit {}', 'Timeline name may not be inherit');
+test_invalid_rule('@scroll-timeline unset {}', 'Timeline name may not be unset');
+test_invalid_rule('@scroll-timeline revert {}', 'Timeline name may not be revert');
+test_invalid_rule('@scroll-timeline default {}', 'Timeline name may not be default');
+test_invalid_rule('@scroll-timeline foo bar {}', 'Extra timeline name');
+
+// CSSRule.type
+
+test(() => {
+ with_stylesheet(`@scroll-timeline valid { }`, (rules) => {
+ assert_equals(rules.length, 1);
+ let rule = rules[0];
+ assert_equals(rule.constructor.name, 'CSSScrollTimelineRule');
+ assert_equals(rule.type, 0);
+ });
+}, 'CSSRule.type returns 0');
+
+// CSSScrollTimelineRule.name
+
+function test_name(specified, expected) {
+ if (typeof(expected) == 'undefined')
+ expected = specified;
+ test_stylesheet(`@scroll-timeline ${specified} { }`, (rules) => {
+ assert_equals(rules.length, 1);
+ assert_equals(rules[0].constructor.name, 'CSSScrollTimelineRule');
+ assert_equals(rules[0].name, expected);
+ }, `CSSScrollTimelineRule.name ${specified}`);
+}
+
+test_name('foo');
+test_name('Foo');
+test_name('f___123');
+test_name('a\\9 b', 'a\tb'); // U+0009 CHARACTER TABULATION
+test_name('"foo"', 'foo');
+test_name('"none"', 'none');
+
+// CSSScrollTimelineRule.source
+
+function test_source(specified, expected) {
+ test_descriptor('source', specified, expected);
+}
+
+test_source('selector(#foo)');
+test_source('selector( #foo )', 'selector(#foo)');
+test_source(' selector(#foo) ', 'selector(#foo)');
+test_source('none');
+test_source(' none ', 'none');
+test_source('selector(#a\\9 b)');
+
+test_source('#foo', 'none');
+test_source('', 'none');
+test_source('element(#foo)', 'none');
+test_source('selector(#foo more)', 'none');
+test_source('selector(html)', 'none');
+test_source('selector(foo)', 'none');
+test_source('selector(:before)', 'none');
+test_source('selector(*)', 'none');
+test_source('selector(.a)', 'none');
+test_source('selector(.a, .b)', 'none');
+
+// CSSScrollTimelineRule.orientation
+
+function test_orientation(specified, expected) {
+ test_descriptor('orientation', specified, expected);
+}
+
+test_orientation('auto');
+test_orientation('block');
+test_orientation('inline');
+test_orientation('horizontal');
+test_orientation('vertical');
+test_orientation(' vertical ', 'vertical');
+
+test_orientation('', 'auto');
+test_orientation('foo', 'auto');
+test_orientation('10px', 'auto');
+test_orientation('red', 'auto');
+
+// CSSScrollTimelineRule.start
+// CSSScrollTimelineRule.end
+
+function test_offsets(specified, expected) {
+ test_descriptor('start', specified, expected);
+ test_descriptor('end', specified, expected);
+}
+
+test_offsets('auto');
+test_offsets(' auto ', 'auto');
+test_offsets('10px',);
+test_offsets(' 10px ', '10px');
+test_offsets('10em');
+test_offsets('10%');
+test_offsets('calc(1px + 1%)');
+
+test_offsets('', 'auto');
+test_offsets('red', 'auto');
+test_offsets('#fff', 'auto');
+test_offsets('unset', 'auto');
+test_offsets('selector(#foo)', 'auto');
+
+// CSSScrollTimelineRule.timeRange
+
+function test_scroll_time_range(specified, expected) {
+ test_descriptor('time-range', specified, expected);
+}
+
+test_scroll_time_range('auto');
+test_scroll_time_range(' auto ', 'auto');
+test_scroll_time_range('1s');
+test_scroll_time_range(' 1s ', '1s');
+test_scroll_time_range('1000ms');
+
+test_scroll_time_range('', 'auto');
+test_scroll_time_range('red', 'auto');
+test_scroll_time_range('#fff', 'auto');
+test_scroll_time_range('unset', 'auto');
+
+</script>
diff --git a/tests/wpt/web-platform-tests/tools/wpt/requirements.txt b/tests/wpt/web-platform-tests/tools/wpt/requirements.txt
index 3baefa50ea9..90d0cb6cdc8 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/requirements.txt
+++ b/tests/wpt/web-platform-tests/tools/wpt/requirements.txt
@@ -1,2 +1,2 @@
-requests==2.23.0
+requests==2.24.0
mozinfo==1.2.1 # https://bugzilla.mozilla.org/show_bug.cgi?id=1621226
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
index 5310721bbb9..d1d733b86b2 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
@@ -5,5 +5,5 @@ mozdebug==0.2
# Pillow 7 requires Python 3
pillow==6.2.2 # pyup: <7.0
urllib3[secure]==1.25.9
-requests==2.23.0
+requests==2.24.0
six==1.15.0
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_sauce.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_sauce.txt
index e9e97647796..5f70629d81b 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_sauce.txt
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_sauce.txt
@@ -1,3 +1,3 @@
mozprocess==1.0.0
selenium==3.141.0
-requests==2.23.0
+requests==2.24.0
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-replaceTrack.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-replaceTrack.https.html
index 77b0fc9594c..a370b6c059a 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-replaceTrack.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpSender-replaceTrack.https.html
@@ -1,5 +1,6 @@
<!doctype html>
<meta charset=utf-8>
+<meta name="timeout" content="long">
<title>RTCRtpSender.prototype.replaceTrack</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html
index 9767417bf37..48777498229 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html
+++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html
@@ -400,8 +400,9 @@
const offer = await pc1.createOffer();
await pc1.setLocalDescription(offer);
// Remove track-id from msid
- offer.sdp = offer.sdp.replace(/(a=msid:[^ \t]+).*\r\n/g, "$1\r\n");
- assert_true(offer.sdp.includes(`a=msid:${stream.id}\r\n`));
+ // Fixate stream-id so that error message is consistent.
+ offer.sdp = offer.sdp.replace(/(a=msid:[^ \t]+).*\r\n/g,
+ "a=msid:fake-stream-id\r\n");
await pc2.setRemoteDescription(offer);
const answer = await pc2.createAnswer();
await pc1.setRemoteDescription(answer);
@@ -1146,10 +1147,16 @@
let gotUnmuteAudio2 = gotUnmuteEvent(pc2.getTransceivers()[0].receiver.track);
let gotUnmuteVideo2 = gotUnmuteEvent(pc2.getTransceivers()[1].receiver.track);
+ // Jump out before waiting if a track is unmuted before RTP starts flowing.
+ assert_true(pc1.getTransceivers()[0].receiver.track.muted);
+ assert_true(pc1.getTransceivers()[1].receiver.track.muted);
+ assert_true(pc2.getTransceivers()[0].receiver.track.muted);
+ assert_true(pc2.getTransceivers()[1].receiver.track.muted);
await iceConnected(pc1);
await iceConnected(pc2);
+
// Check that receive tracks are unmuted when RTP starts flowing
await gotUnmuteAudio1;
await gotUnmuteVideo1;
diff --git a/tests/wpt/web-platform-tests/webrtc/simulcast/simulcast.js b/tests/wpt/web-platform-tests/webrtc/simulcast/simulcast.js
index af804c03e86..018ebf63abf 100644
--- a/tests/wpt/web-platform-tests/webrtc/simulcast/simulcast.js
+++ b/tests/wpt/web-platform-tests/webrtc/simulcast/simulcast.js
@@ -98,7 +98,7 @@ async function negotiateSimulcastAndWaitForVideo(t, rids, pc1, pc2, codec) {
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const transceiver = pc1.addTransceiver(stream.getVideoTracks()[0], {
streams: [stream],
- sendEncodings: rids.map(rid => {rid}),
+ sendEncodings: rids.map(rid => ({rid})),
});
if (codec) {
preferCodec(transceiver, codec.mimeType, codec.sdpFmtpLine);
diff --git a/tests/wpt/web-platform-tests/window-segments/getWindowSegments-iframes.tentative.sub.html b/tests/wpt/web-platform-tests/window-segments/getWindowSegments-iframes.tentative.sub.html
new file mode 100644
index 00000000000..188a1180c02
--- /dev/null
+++ b/tests/wpt/web-platform-tests/window-segments/getWindowSegments-iframes.tentative.sub.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Window Segments: getWindowSegments() tentative</title>
+<!-- TODO: update link to W3C whenever specifications are ready -->
+<link rel="help" href="https://github.com/webscreens/window-segments/"/>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+iframe { zoom: 2; }
+</style>
+<script>
+"use strict";
+
+async_test((t) => {
+ let segments = window.getWindowSegments();
+ let responses = 0;
+ window.addEventListener("message", t.step_func((evt) => {
+ let desc = "Window segments of child frame for: " + evt.data.domain;
+ assert_equals(evt.data.length, segments.length,
+ desc + " must match in length.");
+ assert_equals(evt.data.x, segments[0].x, desc + " must match for x.");
+ assert_equals(evt.data.y, segments[0].y, desc + " must match for x.");
+ assert_equals(evt.data.width, segments[0].width,
+ desc + " must match for x.");
+ assert_equals(evt.data.height, segments[0].height,
+ desc + " must match for x.");
+
+ responses++;
+ if (responses == 2) {
+ t.done();
+ }
+ }));
+}, "Window segments of child frames (same or different domain) must match those of the main frame.");
+</script>
+
+
+<iframe src="http://{{domains[www1]}}:{{ports[http][0]}}/window-segments/post-window-segments-sub-frame.html"></iframe>
+<iframe src="post-window-segments-sub-frame.html"></iframe>
+
diff --git a/tests/wpt/web-platform-tests/window-segments/getWindowSegments.https.tentative.html b/tests/wpt/web-platform-tests/window-segments/getWindowSegments.https.tentative.html
new file mode 100644
index 00000000000..e3821bda40d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/window-segments/getWindowSegments.https.tentative.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Window Segments: getWindowSegments() tentative</title>
+<!-- TODO: update link to W3C whenever specifications are ready -->
+<link rel="help" href="https://github.com/webscreens/window-segments/"/>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+"use strict";
+
+test(() => {
+ let segments = window.getWindowSegments();
+ assert_equals(segments.length, 1, "For a viewport not segmented, there must be a single window segment");
+ let segment = segments[0];
+ assert_equals(segment.x, 0, "A viewport with a single segment must have 0, 0 origin");
+ assert_equals(segment.y, 0, "A viewport with a single segment must have 0, 0 origin");
+ assert_equals(segment.width, window.innerWidth, "A viewport with a single segment must have a width in CSS pixels, matching window.innerWidth");
+ assert_equals(segment.height, window.innerHeight, "A viewport with a single segment must have a height in CSS pixels, matching window.innerHeight");
+}, "getWindowSegments() returns a single segment, equal to the layout viewport dimesions");
+</script>
+
diff --git a/tests/wpt/web-platform-tests/window-segments/post-window-segments-sub-frame.html b/tests/wpt/web-platform-tests/window-segments/post-window-segments-sub-frame.html
new file mode 100644
index 00000000000..f4d1b405305
--- /dev/null
+++ b/tests/wpt/web-platform-tests/window-segments/post-window-segments-sub-frame.html
@@ -0,0 +1,12 @@
+<script>
+let segments = getWindowSegments();
+
+parent.postMessage({
+ length: segments.length,
+ x: segments[0].x,
+ y: segments[0].y,
+ width: segments[0].width,
+ height: segments[0].height,
+ domain: document.domain,
+ }, "*");
+</script>