aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWPT Sync Bot <josh+wptsync@joshmatthews.net>2018-11-02 21:35:53 -0400
committerWPT Sync Bot <josh+wptsync@joshmatthews.net>2018-11-02 22:59:27 -0400
commitbd791500b2612cab337a31a01535616fc74bbc0b (patch)
treed73a528d666f2743e06552e46a467c36608f0eff
parentba1ed11ced078686febc78b580773e8e93789b4d (diff)
downloadservo-bd791500b2612cab337a31a01535616fc74bbc0b.tar.gz
servo-bd791500b2612cab337a31a01535616fc74bbc0b.zip
Update web-platform-tests to revision c583bcd7eb30f38cb2d673031cde245776f1da5a
-rw-r--r--tests/wpt/metadata/MANIFEST.json625
-rw-r--r--tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini9
-rw-r--r--tests/wpt/metadata/css/css-paint-api/registered-property-invalidation-001.https.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-paint-api/registered-property-invalidation-002.https.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/letter-spacing/letter-spacing-end-of-line-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/letter-spacing/letter-spacing-nesting-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-001.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-002.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-text/word-break/word-break-keep-all-005.html.ini2
-rw-r--r--tests/wpt/metadata/encoding/single-byte-decoder.html.ini88
-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_4.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.js.ini10
-rw-r--r--tests/wpt/metadata/html/dom/elements/the-innertext-idl-attribute/getter.html.ini9
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/media-elements/event_timeupdate_noautoplay.html.ini2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini20
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini10
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini52
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html.ini52
-rw-r--r--tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini7
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini2
-rw-r--r--tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-xml.window.js.ini3
-rw-r--r--tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini3
-rw-r--r--tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini283
-rw-r--r--tests/wpt/metadata/touch-events/idlharness.window.js.ini3
-rw-r--r--tests/wpt/metadata/url/urlencoded-parser.any.js.ini12
-rw-r--r--tests/wpt/metadata/workers/modules/dedicated-worker-options-credentials.html.ini91
-rw-r--r--tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini1
-rw-r--r--tests/wpt/web-platform-tests/.travis.yml2
-rw-r--r--tests/wpt/web-platform-tests/WebIDL/current-realm.html13
-rw-r--r--tests/wpt/web-platform-tests/common/performance-timeline-utils.js7
-rw-r--r--tests/wpt/web-platform-tests/common/worklet-reftest.js17
-rw-r--r--tests/wpt/web-platform-tests/css/css-display/display-contents-shadow-host-whitespace.html11
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-001.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-002.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-003.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-overscroll-behavior/META.yml3
-rw-r--r--tests/wpt/web-platform-tests/css/css-overscroll-behavior/inheritance.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-paint-api/registered-property-invalidation-001.https.html49
-rw-r--r--tests/wpt/web-platform-tests/css/css-paint-api/registered-property-invalidation-002.https.html52
-rw-r--r--tests/wpt/web-platform-tests/css/css-scrollbars/auto-scrollbar-inline-children.html30
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-bidi-001.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-bidi-002.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-end-of-line-001.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-nesting-001.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-nesting-002.html20
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-bidi-001-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-bidi-002-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-end-of-line-001-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-nesting-001-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-nesting-002-ref.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ideographic-space-001-ref.html7
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ideographic-space-003-ref.html11
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ideographic-space-004-ref.html11
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ideographic-space-alt-003-ref.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ideographic-space-001.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ideographic-space-002.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ideographic-space-003.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ideographic-space-004.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/white-space/white-space-empty-text-sibling.html6
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-020-ref.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-keep-all-005-ref.html7
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-020.html33
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-005.html28
-rw-r--r--tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-006.html33
-rw-r--r--tests/wpt/web-platform-tests/css/reference/pass_if_two_words.html (renamed from tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-ref.html)1
-rw-r--r--tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.js113
-rw-r--r--tests/wpt/web-platform-tests/html/dom/elements/the-innertext-idl-attribute/getter-tests.js2
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-destroy-script-execution.html47
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-stop.html50
-rw-r--r--tests/wpt/web-platform-tests/mediacapture-record/support/MediaRecorder-iframe.html28
-rw-r--r--tests/wpt/web-platform-tests/payment-request/payment-request-canmakepayment-method-protection.https.html56
-rw-r--r--tests/wpt/web-platform-tests/payment-request/payment-request-canmakepayment-method.https.html130
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/device.mojom.js340
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/url.mojom.js79
-rw-r--r--tests/wpt/web-platform-tests/resources/idlharness.js10
-rw-r--r--tests/wpt/web-platform-tests/server-timing/cross_origin.https.html4
-rw-r--r--tests/wpt/web-platform-tests/server-timing/navigation_timing_idl.https.html5
-rw-r--r--tests/wpt/web-platform-tests/server-timing/resource_timing_idl.https.html5
-rw-r--r--tests/wpt/web-platform-tests/server-timing/server_timing_header-parsing.https.html4
-rw-r--r--tests/wpt/web-platform-tests/server-timing/service_worker_idl.https.html2
-rw-r--r--tests/wpt/web-platform-tests/server-timing/test_server_timing.https.html4
-rw-r--r--tests/wpt/web-platform-tests/signed-exchange/META.yml5
-rw-r--r--tests/wpt/web-platform-tests/tools/appveyor.yml32
-rw-r--r--tests/wpt/web-platform-tests/tools/flake8.ini6
-rw-r--r--tests/wpt/web-platform-tests/tools/requirements_flake8.txt4
-rw-r--r--tests/wpt/web-platform-tests/tools/tox.ini16
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/browser.py42
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/run.py3
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py32
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/tests/test_run.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/tox.ini13
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/tox.ini13
-rw-r--r--tests/wpt/web-platform-tests/webmessaging/without-ports/008.html11
-rw-r--r--tests/wpt/web-platform-tests/webusb/resources/usb-helpers.js1
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/dedicated-worker-options-credentials.html268
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/dedicated-worker-options-credentials.html.headers2
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/credentials.py1
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-remote-origin-credentials-checker-worker.sub.js2
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-same-origin-credentials-checker-worker.js1
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/static-import-remote-origin-credentials-checker-worker.sub.js2
-rw-r--r--tests/wpt/web-platform-tests/workers/modules/resources/static-import-same-origin-credentials-checker-worker.js1
107 files changed, 2868 insertions, 467 deletions
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 69caf8ed311..a3a26374e74 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -111913,6 +111913,18 @@
{}
]
],
+ "css/css-display/display-contents-shadow-host-whitespace.html": [
+ [
+ "/css/css-display/display-contents-shadow-host-whitespace.html",
+ [
+ [
+ "/css/reference/pass_if_two_words.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-display/display-contents-sharing-001.html": [
[
"/css/css-display/display-contents-sharing-001.html",
@@ -114174,7 +114186,7 @@
"/css/css-flexbox/anonymous-flex-item-001.html",
[
[
- "/css/css-flexbox/anonymous-flex-item-ref.html",
+ "/css/reference/pass_if_two_words.html",
"=="
]
],
@@ -114186,7 +114198,7 @@
"/css/css-flexbox/anonymous-flex-item-002.html",
[
[
- "/css/css-flexbox/anonymous-flex-item-ref.html",
+ "/css/reference/pass_if_two_words.html",
"=="
]
],
@@ -114198,7 +114210,7 @@
"/css/css-flexbox/anonymous-flex-item-003.html",
[
[
- "/css/css-flexbox/anonymous-flex-item-ref.html",
+ "/css/reference/pass_if_two_words.html",
"=="
]
],
@@ -129309,6 +129321,30 @@
{}
]
],
+ "css/css-paint-api/registered-property-invalidation-001.https.html": [
+ [
+ "/css/css-paint-api/registered-property-invalidation-001.https.html",
+ [
+ [
+ "/css/css-paint-api/parse-input-arguments-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-paint-api/registered-property-invalidation-002.https.html": [
+ [
+ "/css/css-paint-api/registered-property-invalidation-002.https.html",
+ [
+ [
+ "/css/css-paint-api/parse-input-arguments-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-paint-api/registered-property-stylemap.https.html": [
[
"/css/css-paint-api/registered-property-stylemap.https.html",
@@ -137569,6 +137605,30 @@
{}
]
],
+ "css/css-text/letter-spacing/letter-spacing-bidi-001.html": [
+ [
+ "/css/css-text/letter-spacing/letter-spacing-bidi-001.html",
+ [
+ [
+ "/css/css-text/letter-spacing/reference/letter-spacing-bidi-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/letter-spacing/letter-spacing-bidi-002.html": [
+ [
+ "/css/css-text/letter-spacing/letter-spacing-bidi-002.html",
+ [
+ [
+ "/css/css-text/letter-spacing/reference/letter-spacing-bidi-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/letter-spacing/letter-spacing-control-chars-001.html": [
[
"/css/css-text/letter-spacing/letter-spacing-control-chars-001.html",
@@ -137581,6 +137641,42 @@
{}
]
],
+ "css/css-text/letter-spacing/letter-spacing-end-of-line-001.html": [
+ [
+ "/css/css-text/letter-spacing/letter-spacing-end-of-line-001.html",
+ [
+ [
+ "/css/css-text/letter-spacing/reference/letter-spacing-end-of-line-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/letter-spacing/letter-spacing-nesting-001.html": [
+ [
+ "/css/css-text/letter-spacing/letter-spacing-nesting-001.html",
+ [
+ [
+ "/css/css-text/letter-spacing/reference/letter-spacing-nesting-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/letter-spacing/letter-spacing-nesting-002.html": [
+ [
+ "/css/css-text/letter-spacing/letter-spacing-nesting-002.html",
+ [
+ [
+ "/css/css-text/letter-spacing/reference/letter-spacing-nesting-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/line-break/line-break-anywhere-001.html": [
[
"/css/css-text/line-break/line-break-anywhere-001.html",
@@ -138073,6 +138169,18 @@
{}
]
],
+ "css/css-text/overflow-wrap/overflow-wrap-break-word-005.html": [
+ [
+ "/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html",
+ [
+ [
+ "/css/css-text/overflow-wrap/reference/overflow-wrap-break-word-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/overflow-wrap/overflow-wrap-break-word-fit-content-001.html": [
[
"/css/css-text/overflow-wrap/overflow-wrap-break-word-fit-content-001.html",
@@ -140893,6 +141001,62 @@
{}
]
],
+ "css/css-text/white-space/trailing-ideographic-space-001.html": [
+ [
+ "/css/css-text/white-space/trailing-ideographic-space-001.html",
+ [
+ [
+ "/css/css-text/white-space/reference/trailing-ideographic-space-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/white-space/trailing-ideographic-space-002.html": [
+ [
+ "/css/css-text/white-space/trailing-ideographic-space-002.html",
+ [
+ [
+ "/css/css-text/white-space/reference/trailing-ideographic-space-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/white-space/trailing-ideographic-space-003.html": [
+ [
+ "/css/css-text/white-space/trailing-ideographic-space-003.html",
+ [
+ [
+ "/css/css-text/white-space/reference/trailing-ideographic-space-003-ref.html",
+ "=="
+ ],
+ [
+ "/css/css-text/white-space/reference/trailing-ideographic-space-alt-003-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/white-space/trailing-ideographic-space-004.html": [
+ [
+ "/css/css-text/white-space/trailing-ideographic-space-004.html",
+ [
+ [
+ "/css/css-text/white-space/reference/trailing-ideographic-space-004-ref.html",
+ "=="
+ ],
+ [
+ "/css/css-text/white-space/reference/trailing-ideographic-space-alt-003-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/white-space/white-space-collapsing-discard-001.xht": [
[
"/css/css-text/white-space/white-space-collapsing-discard-001.xht",
@@ -140934,7 +141098,7 @@
"/css/css-text/white-space/white-space-empty-text-sibling.html",
[
[
- "/css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html",
+ "/css/reference/pass_if_two_words.html",
"=="
]
],
@@ -141121,6 +141285,18 @@
{}
]
],
+ "css/css-text/word-break/word-break-break-all-020.html": [
+ [
+ "/css/css-text/word-break/word-break-break-all-020.html",
+ [
+ [
+ "/css/css-text/word-break/reference/word-break-break-all-020-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/word-break/word-break-keep-all-000.html": [
[
"/css/css-text/word-break/word-break-keep-all-000.html",
@@ -141169,6 +141345,30 @@
{}
]
],
+ "css/css-text/word-break/word-break-keep-all-005.html": [
+ [
+ "/css/css-text/word-break/word-break-keep-all-005.html",
+ [
+ [
+ "/css/css-text/word-break/reference/word-break-keep-all-005-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-text/word-break/word-break-keep-all-006.html": [
+ [
+ "/css/css-text/word-break/word-break-keep-all-006.html",
+ [
+ [
+ "/css/css-text/word-break/reference/word-break-keep-all-005-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-text/word-break/word-break-normal-001.html": [
[
"/css/css-text/word-break/word-break-normal-001.html",
@@ -251299,11 +251499,6 @@
{}
]
],
- "css/css-flexbox/anonymous-flex-item-ref.html": [
- [
- {}
- ]
- ],
"css/css-flexbox/anonymous-flex-item-split-ref.html": [
[
{}
@@ -263029,6 +263224,11 @@
{}
]
],
+ "css/css-overscroll-behavior/META.yml": [
+ [
+ {}
+ ]
+ ],
"css/css-page/META.yml": [
[
{}
@@ -266919,11 +267119,36 @@
{}
]
],
+ "css/css-text/letter-spacing/reference/letter-spacing-bidi-001-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-text/letter-spacing/reference/letter-spacing-bidi-002-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-text/letter-spacing/reference/letter-spacing-control-chars-001.ref.html": [
[
{}
]
],
+ "css/css-text/letter-spacing/reference/letter-spacing-end-of-line-001-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-text/letter-spacing/reference/letter-spacing-nesting-001-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-text/letter-spacing/reference/letter-spacing-nesting-002-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-text/line-break/reference/line-break-anywhere-001-ref.html": [
[
{}
@@ -267944,22 +268169,37 @@
{}
]
],
- "css/css-text/white-space/reference/white-space-collapsing-discard-001-ref.xht": [
+ "css/css-text/white-space/reference/trailing-ideographic-space-001-ref.html": [
[
{}
]
],
- "css/css-text/white-space/reference/white-space-collapsing-preserve-breaks-001-ref.xht": [
+ "css/css-text/white-space/reference/trailing-ideographic-space-003-ref.html": [
[
{}
]
],
- "css/css-text/white-space/reference/white-space-collapsing-trim-inner-001-ref.xht": [
+ "css/css-text/white-space/reference/trailing-ideographic-space-004-ref.html": [
[
{}
]
],
- "css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html": [
+ "css/css-text/white-space/reference/trailing-ideographic-space-alt-003-ref.html": [
+ [
+ {}
+ ]
+ ],
+ "css/css-text/white-space/reference/white-space-collapsing-discard-001-ref.xht": [
+ [
+ {}
+ ]
+ ],
+ "css/css-text/white-space/reference/white-space-collapsing-preserve-breaks-001-ref.xht": [
+ [
+ {}
+ ]
+ ],
+ "css/css-text/white-space/reference/white-space-collapsing-trim-inner-001-ref.xht": [
[
{}
]
@@ -267989,6 +268229,11 @@
{}
]
],
+ "css/css-text/word-break/reference/word-break-break-all-020-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-text/word-break/reference/word-break-break-all-ref-000.html": [
[
{}
@@ -268039,6 +268284,11 @@
{}
]
],
+ "css/css-text/word-break/reference/word-break-keep-all-005-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-text/word-break/reference/word-break-keep-all-ref-000.html": [
[
{}
@@ -275359,6 +275609,11 @@
{}
]
],
+ "css/reference/pass_if_two_words.html": [
+ [
+ {}
+ ]
+ ],
"css/reference/ref-filled-green-100px-square-only.html": [
[
{}
@@ -297414,6 +297669,11 @@
{}
]
],
+ "mediacapture-record/support/MediaRecorder-iframe.html": [
+ [
+ {}
+ ]
+ ],
"mediacapture-streams/META.yml": [
[
{}
@@ -302424,6 +302684,11 @@
{}
]
],
+ "resources/chromium/url.mojom.js": [
+ [
+ {}
+ ]
+ ],
"resources/chromium/uuid.mojom.js": [
[
{}
@@ -306839,6 +307104,11 @@
{}
]
],
+ "signed-exchange/META.yml": [
+ [
+ {}
+ ]
+ ],
"signed-exchange/README.md": [
[
{}
@@ -308134,11 +308404,6 @@
{}
]
],
- "tools/appveyor.yml": [
- [
- {}
- ]
- ],
"tools/certs/README.md": [
[
{}
@@ -309094,6 +309359,11 @@
{}
]
],
+ "tools/requirements_flake8.txt": [
+ [
+ {}
+ ]
+ ],
"tools/runner/css/bootstrap-theme.min.css": [
[
{}
@@ -314194,6 +314464,11 @@
{}
]
],
+ "tools/wpt/tests/test_browser.py": [
+ [
+ {}
+ ]
+ ],
"tools/wpt/tests/test_run.py": [
[
{}
@@ -319994,6 +320269,11 @@
{}
]
],
+ "workers/modules/resources/dynamic-import-remote-origin-credentials-checker-worker.sub.js": [
+ [
+ {}
+ ]
+ ],
"workers/modules/resources/dynamic-import-remote-origin-referrer-checker-worker.sub.js": [
[
{}
@@ -320004,6 +320284,11 @@
{}
]
],
+ "workers/modules/resources/dynamic-import-same-origin-credentials-checker-worker.js": [
+ [
+ {}
+ ]
+ ],
"workers/modules/resources/dynamic-import-same-origin-referrer-checker-worker.js": [
[
{}
@@ -320104,6 +320389,11 @@
{}
]
],
+ "workers/modules/resources/static-import-remote-origin-credentials-checker-worker.sub.js": [
+ [
+ {}
+ ]
+ ],
"workers/modules/resources/static-import-remote-origin-referrer-checker-worker.sub.js": [
[
{}
@@ -320114,6 +320404,11 @@
{}
]
],
+ "workers/modules/resources/static-import-same-origin-credentials-checker-worker.js": [
+ [
+ {}
+ ]
+ ],
"workers/modules/resources/static-import-same-origin-referrer-checker-worker.js": [
[
{}
@@ -338962,6 +339257,12 @@
{}
]
],
+ "css/css-overscroll-behavior/inheritance.html": [
+ [
+ "/css/css-overscroll-behavior/inheritance.html",
+ {}
+ ]
+ ],
"css/css-paint-api/idlharness.html": [
[
"/css/css-paint-api/idlharness.html",
@@ -339520,6 +339821,12 @@
{}
]
],
+ "css/css-scrollbars/auto-scrollbar-inline-children.html": [
+ [
+ "/css/css-scrollbars/auto-scrollbar-inline-children.html",
+ {}
+ ]
+ ],
"css/css-scrollbars/scrollbar-width-keywords.html": [
[
"/css/css-scrollbars/scrollbar-width-keywords.html",
@@ -362788,6 +363095,12 @@
}
]
],
+ "html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.js": [
+ [
+ "/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.html",
+ {}
+ ]
+ ],
"html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html": [
[
"/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html",
@@ -376122,6 +376435,18 @@
{}
]
],
+ "mediacapture-record/MediaRecorder-destroy-script-execution.html": [
+ [
+ "/mediacapture-record/MediaRecorder-destroy-script-execution.html",
+ {}
+ ]
+ ],
+ "mediacapture-record/MediaRecorder-stop.html": [
+ [
+ "/mediacapture-record/MediaRecorder-stop.html",
+ {}
+ ]
+ ],
"mediacapture-record/idlharness.window.js": [
[
"/mediacapture-record/idlharness.window.html",
@@ -389426,6 +389751,14 @@
}
]
],
+ "payment-request/payment-request-canmakepayment-method-protection.https.html": [
+ [
+ "/payment-request/payment-request-canmakepayment-method-protection.https.html",
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"payment-request/payment-request-canmakepayment-method.https.html": [
[
"/payment-request/payment-request-canmakepayment-method.https.html",
@@ -408176,6 +408509,12 @@
{}
]
],
+ "webmessaging/without-ports/008.html": [
+ [
+ "/webmessaging/without-ports/008.html",
+ {}
+ ]
+ ],
"webmessaging/without-ports/009.html": [
[
"/webmessaging/without-ports/009.html",
@@ -436402,7 +436741,7 @@
"support"
],
".travis.yml": [
- "9d3431bc444a2da1dc674ef6673f692742191ad6",
+ "d89fadae77d2e6d2d6b03c640d715da96c0a7226",
"support"
],
".well-known/README.md": [
@@ -442866,7 +443205,7 @@
"support"
],
"WebIDL/current-realm.html": [
- "e015ec53515f87e18ff6ef488a25a4398d9e6e7e",
+ "e094624c679202bd7035ed1593d83b2686360347",
"testharness"
],
"WebIDL/ecmascript-binding/default-iterator-object.html": [
@@ -447690,7 +448029,7 @@
"support"
],
"common/performance-timeline-utils.js": [
- "6845d6cbc689fc5183c2bc07f381299bc51da1dc",
+ "3efce5b5d8b3cbc9ac17171e674d317de8797a55",
"support"
],
"common/performance-timeline-utils.js.headers": [
@@ -447754,7 +448093,7 @@
"support"
],
"common/worklet-reftest.js": [
- "abdda5b05e7f596fb4167903b239aad74fdba8d5",
+ "d92c76cabf3c4a5bd5fa56306382e09a6d13b43f",
"support"
],
"compat/META.yml": [
@@ -537409,6 +537748,10 @@
"82321b9c07edaf471f64829f0f0efa232aeb99c0",
"support"
],
+ "css/css-display/display-contents-shadow-host-whitespace.html": [
+ "84b04dba1013af9091f3d943ca106ab655676842",
+ "reftest"
+ ],
"css/css-display/display-contents-sharing-001-ref.html": [
"a047f326fe216487e0d9c294437de88fb9d51149",
"support"
@@ -538826,15 +539169,15 @@
"reftest"
],
"css/css-flexbox/anonymous-flex-item-001.html": [
- "e1c6ec6d8aecfbd704830ba442e625bae9114971",
+ "3e749d43f76981a5cc0b372c7ba0c364c350b6b2",
"reftest"
],
"css/css-flexbox/anonymous-flex-item-002.html": [
- "4b571fe5fc39529d9b22db5ae6dd85f7c81f0587",
+ "8fdeb27110e15c743e0b84cd4f278f1d8996c994",
"reftest"
],
"css/css-flexbox/anonymous-flex-item-003.html": [
- "1449e1df60e4b1f7157be83c191fd6abf39dd970",
+ "cc896e9410cd1706a61d083494801cda98bd72af",
"reftest"
],
"css/css-flexbox/anonymous-flex-item-004.html": [
@@ -538849,10 +539192,6 @@
"6320b814294cdbf0a91fee0bb5b597a5f70d57d6",
"reftest"
],
- "css/css-flexbox/anonymous-flex-item-ref.html": [
- "4a2285400c9f58cf499c58c36a3fe45f2777f102",
- "support"
- ],
"css/css-flexbox/anonymous-flex-item-split-ref.html": [
"163efd401c4d24ce205dc9c39431b79598a7fb6f",
"support"
@@ -555289,6 +555628,14 @@
"de894fab610b31257d73ef5488c376e50d899fb9",
"support"
],
+ "css/css-overscroll-behavior/META.yml": [
+ "f15c86fd9069b04a23975834215adcc077711789",
+ "support"
+ ],
+ "css/css-overscroll-behavior/inheritance.html": [
+ "e49fa49bc4e26572a68ad947e8e82a63ee46d4e2",
+ "testharness"
+ ],
"css/css-page/META.yml": [
"2f9e29e2787e8c41d0a9ebe1df8342a6c52a01a8",
"support"
@@ -555877,6 +556224,14 @@
"d4d1b038e24d45e5f6941e3f7a7eb1facefe58f0",
"reftest"
],
+ "css/css-paint-api/registered-property-invalidation-001.https.html": [
+ "26da7e2eeffac331266d8c5c8fc1754884b06d72",
+ "reftest"
+ ],
+ "css/css-paint-api/registered-property-invalidation-002.https.html": [
+ "0aab051a4c492cd25b4b96fbee78029c2f12921a",
+ "reftest"
+ ],
"css/css-paint-api/registered-property-stylemap.https.html": [
"2305afb37df44abf4b9807bbe08c1ce0f7a1631c",
"reftest"
@@ -559153,6 +559508,10 @@
"9209d5d1f4174d1e22258c0571db89b51f4f3a59",
"support"
],
+ "css/css-scrollbars/auto-scrollbar-inline-children.html": [
+ "107938ece14d394e42a5b0d8f3d99d63bf61271e",
+ "testharness"
+ ],
"css/css-scrollbars/scrollbar-width-keywords.html": [
"94ccd6ef6d550c83c97ba9525135cc309cc35842",
"testharness"
@@ -563781,14 +564140,54 @@
"ef3270651c3df4ae6112fdfeec0e7fea4b9d6ccf",
"testharness"
],
+ "css/css-text/letter-spacing/letter-spacing-bidi-001.html": [
+ "4720e1d13c399b6009b2bcfed14e8fe59feffc60",
+ "reftest"
+ ],
+ "css/css-text/letter-spacing/letter-spacing-bidi-002.html": [
+ "7cd6e80fc05a09923dfbbd0cc9d93bcfa07d0d8e",
+ "reftest"
+ ],
"css/css-text/letter-spacing/letter-spacing-control-chars-001.html": [
"87d071a1ed3d1f738986271be530460833e495ec",
"reftest"
],
+ "css/css-text/letter-spacing/letter-spacing-end-of-line-001.html": [
+ "645ef10509803cb86b31c7250928c007acb21431",
+ "reftest"
+ ],
+ "css/css-text/letter-spacing/letter-spacing-nesting-001.html": [
+ "a7149e30c1d2b73ae1739f17bd4c2ac2e49bd014",
+ "reftest"
+ ],
+ "css/css-text/letter-spacing/letter-spacing-nesting-002.html": [
+ "67f180affdf0561b216780c06ed6702971c477d6",
+ "reftest"
+ ],
+ "css/css-text/letter-spacing/reference/letter-spacing-bidi-001-ref.html": [
+ "e34dbc313f2bb5f93cbf36d3e9fb42e5b901414b",
+ "support"
+ ],
+ "css/css-text/letter-spacing/reference/letter-spacing-bidi-002-ref.html": [
+ "f197769f3ab2c3039e6b72d776cf14f201c964a6",
+ "support"
+ ],
"css/css-text/letter-spacing/reference/letter-spacing-control-chars-001.ref.html": [
"977d8211457a6e7b4976b596be91068cdf518869",
"support"
],
+ "css/css-text/letter-spacing/reference/letter-spacing-end-of-line-001-ref.html": [
+ "eb474ab8d234d0836c3466e29bfe9b313e10d302",
+ "support"
+ ],
+ "css/css-text/letter-spacing/reference/letter-spacing-nesting-001-ref.html": [
+ "3d003f3621b0cfe1aa46220be7d9a4df489377d4",
+ "support"
+ ],
+ "css/css-text/letter-spacing/reference/letter-spacing-nesting-002-ref.html": [
+ "93eb6b0fcaa54a49efcc210a591914b8a69a35e8",
+ "support"
+ ],
"css/css-text/line-break/line-break-anywhere-001.html": [
"8c8252eb56374c9f8bef59d677ccc195eaddcce8",
"reftest"
@@ -564045,6 +564444,10 @@
"560ef63b2f94c5eeca83ee5ef63cdfc15fbdfe34",
"reftest"
],
+ "css/css-text/overflow-wrap/overflow-wrap-break-word-005.html": [
+ "3ef61bc9eff78b860c0bd2ed5c6bc4c28c168008",
+ "reftest"
+ ],
"css/css-text/overflow-wrap/overflow-wrap-break-word-fit-content-001.html": [
"bce6c68389c32960d79e8fbbf61f9fa28c733165",
"reftest"
@@ -565757,6 +566160,22 @@
"d09873a64634fb1b1cb00cc0bb6f9bea07874651",
"support"
],
+ "css/css-text/white-space/reference/trailing-ideographic-space-001-ref.html": [
+ "d62252f8c54370b540e20271b07772db8c3e06ee",
+ "support"
+ ],
+ "css/css-text/white-space/reference/trailing-ideographic-space-003-ref.html": [
+ "7c59b1f6f2845b82b47805d7f087bb7bba29b81e",
+ "support"
+ ],
+ "css/css-text/white-space/reference/trailing-ideographic-space-004-ref.html": [
+ "a72e050031c5da7aad65eece88da65ace8293f52",
+ "support"
+ ],
+ "css/css-text/white-space/reference/trailing-ideographic-space-alt-003-ref.html": [
+ "9f579f29e0c897c744e1b06d5d2d60e85612f823",
+ "support"
+ ],
"css/css-text/white-space/reference/white-space-collapsing-discard-001-ref.xht": [
"9042b04f3d1fe2fd09693974952e325d0b6a595a",
"support"
@@ -565769,10 +566188,6 @@
"01ce8eae718170c4eb65e9629f6618e9458a1aca",
"support"
],
- "css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html": [
- "3837f7f62f4686226ef4dff3318c2b6961dac85b",
- "support"
- ],
"css/css-text/white-space/reference/white-space-pre-wrap-trailing-spaces-001-ref.html": [
"8db147766bc3fa769df5601b8b32964fb59bcbc1",
"support"
@@ -565901,6 +566316,22 @@
"5c4f33acd1e78cd0404daebc35de410eb6cf669d",
"reftest"
],
+ "css/css-text/white-space/trailing-ideographic-space-001.html": [
+ "241ca11a065727627c4d8e1c0158321e6bae5779",
+ "reftest"
+ ],
+ "css/css-text/white-space/trailing-ideographic-space-002.html": [
+ "8830da9643bf5a9ab8b172119259be407943122e",
+ "reftest"
+ ],
+ "css/css-text/white-space/trailing-ideographic-space-003.html": [
+ "f5ad8cb87171128ea7ad1491cfbd3596386b339d",
+ "reftest"
+ ],
+ "css/css-text/white-space/trailing-ideographic-space-004.html": [
+ "af3187ae8d3d955dcb23a02de7ecc6b0b4db9479",
+ "reftest"
+ ],
"css/css-text/white-space/trailing-space-before-br-001.html": [
"2ecd4d3767acf5b2d54782eff26ae5bd3c97a87f",
"testharness"
@@ -565930,7 +566361,7 @@
"reftest"
],
"css/css-text/white-space/white-space-empty-text-sibling.html": [
- "56a5cad875dbb7f3225e7ae382d9417e5cc6bae4",
+ "50439df433cea8d4191989cb3d5444ff9f8d15c1",
"reftest"
],
"css/css-text/white-space/white-space-pre-wrap-trailing-spaces-001.html": [
@@ -565957,6 +566388,10 @@
"a8720a101c3b2d2616b661e51c60b55b85d2d667",
"support"
],
+ "css/css-text/word-break/reference/word-break-break-all-020-ref.html": [
+ "635bd024bf4cdb4bee1dcb432c794a317dc8442f",
+ "support"
+ ],
"css/css-text/word-break/reference/word-break-break-all-ref-000.html": [
"579c2dc6a06c69bbb7384e51ad4b851e7d7b4410",
"support"
@@ -565997,6 +566432,10 @@
"65ede653fcc21183c8353137873113ee3a05aa2b",
"support"
],
+ "css/css-text/word-break/reference/word-break-keep-all-005-ref.html": [
+ "2a33ce75e23f6c65ec98a2a808633349b1ae465e",
+ "support"
+ ],
"css/css-text/word-break/reference/word-break-keep-all-ref-000.html": [
"d11db046b8d1114482c8fda814f2a1480b053048",
"support"
@@ -566145,6 +566584,10 @@
"6885553ad685700e89d4d83ded7bc65269aa1123",
"reftest"
],
+ "css/css-text/word-break/word-break-break-all-020.html": [
+ "6c86749263a93eb277781377ccde6e89b2a3790e",
+ "reftest"
+ ],
"css/css-text/word-break/word-break-keep-all-000.html": [
"fce7487c33ad47aaeeb20fe5ccb1bc5180192329",
"reftest"
@@ -566165,6 +566608,14 @@
"c66bfe4bae042170581ab087fb90e41f8a1fc122",
"manual"
],
+ "css/css-text/word-break/word-break-keep-all-005.html": [
+ "4bb523ab7ca395b36204148755ee5e6d9243761a",
+ "reftest"
+ ],
+ "css/css-text/word-break/word-break-keep-all-006.html": [
+ "8845ea21edd09bb9a7165643ff8148a4f516bb01",
+ "reftest"
+ ],
"css/css-text/word-break/word-break-normal-001.html": [
"61ccba2465f772c46a771a8868e9036ff4a93b9d",
"reftest"
@@ -585741,6 +586192,10 @@
"7d9cb8910789e378e7406f3b4ec94afa9d77ced4",
"support"
],
+ "css/reference/pass_if_two_words.html": [
+ "e33eea5e6ea237139f9d86da07a09ef2e4874789",
+ "support"
+ ],
"css/reference/ref-filled-green-100px-square-only.html": [
"82fcaa3b2aa4a271db14feb00256d0aedbce2d85",
"support"
@@ -607501,6 +607956,10 @@
"062f61949dc820634999e58045383065b179b49f",
"testharness"
],
+ "html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.js": [
+ "3dff403b9c66e84b8fb0da93e97cdbecabfe1b5c",
+ "testharness"
+ ],
"html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/non_automated/001-1.html": [
"7dd48b41c23b4ff1fdff95edd87af6b03ea0c814",
"support"
@@ -609118,7 +609577,7 @@
"testharness"
],
"html/dom/elements/the-innertext-idl-attribute/getter-tests.js": [
- "4dd2b6be20619cde5f244ca76d239aa9bbc50044",
+ "6e663ba943163244539d0d88eb78c46d2ad78244",
"support"
],
"html/dom/elements/the-innertext-idl-attribute/getter.html": [
@@ -626817,10 +627276,22 @@
"d59e5e30845eaef12bab6419e348a01779313c56",
"support"
],
+ "mediacapture-record/MediaRecorder-destroy-script-execution.html": [
+ "1710d238b6e31d285766f25f4625d206d1d8a1fc",
+ "testharness"
+ ],
+ "mediacapture-record/MediaRecorder-stop.html": [
+ "8e05fc5491d8da7aaddefea20fae36d705c75bce",
+ "testharness"
+ ],
"mediacapture-record/idlharness.window.js": [
"86f5a158822156b54e776639fb9c7504f0ff7498",
"testharness"
],
+ "mediacapture-record/support/MediaRecorder-iframe.html": [
+ "6e70acf4862cc2c0f10d0b2642994bf04f794e44",
+ "support"
+ ],
"mediacapture-streams/GUM-api.https.html": [
"148317017692e935a936eb007ed90fd9ceb29825",
"testharness"
@@ -637117,8 +637588,12 @@
"64886a6b7cc91b3aa05a34e6f8650808d3f1ab0b",
"testharness"
],
+ "payment-request/payment-request-canmakepayment-method-protection.https.html": [
+ "b0582d520d306760d75754779de1ceef1d064a92",
+ "testharness"
+ ],
"payment-request/payment-request-canmakepayment-method.https.html": [
- "2943c2da688fae9257b663395ae3388287549750",
+ "03a9c19fb8fd774ccea9cf2a9740be0971fa4910",
"testharness"
],
"payment-request/payment-request-constructor-crash.https.html": [
@@ -646926,7 +647401,7 @@
"support"
],
"resources/chromium/device.mojom.js": [
- "435fc1fc7addabfddb093e003795512c28360357",
+ "495971c23192ece2b832392baea4f7af97a4d557",
"support"
],
"resources/chromium/device.mojom.js.headers": [
@@ -647009,6 +647484,10 @@
"6805c323df5a975231648b830e33ce183c3cbbd3",
"support"
],
+ "resources/chromium/url.mojom.js": [
+ "abe7d00e7f9ce659c925baeebea94b535ae7a5d3",
+ "support"
+ ],
"resources/chromium/uuid.mojom.js": [
"3b1b616ee3450f5ceb94f3f7e74ce5eea7af1bf9",
"support"
@@ -647058,7 +647537,7 @@
"support"
],
"resources/idlharness.js": [
- "40a5fa59cd209d12e6d42dcdff92c4974ae49cf2",
+ "9e6ed236b0a43f32ffaecbbbb2b8fbe7540b83c5",
"support"
],
"resources/idlharness.js.headers": [
@@ -648582,7 +649061,7 @@
"support"
],
"server-timing/cross_origin.https.html": [
- "1421b38a05eb8c64cc80d69baedce9f2166fdd30",
+ "d31c7b006caf2311563b2c36171422d81d2979b8",
"testharness"
],
"server-timing/idlharness.https.any.js": [
@@ -648590,11 +649069,11 @@
"testharness"
],
"server-timing/navigation_timing_idl.https.html": [
- "290bb889b149335a47b4b7ddcebc318bff32ca0c",
+ "d911d64e47ced02caadfca54b620218ace024f87",
"testharness"
],
"server-timing/resource_timing_idl.https.html": [
- "d2c3c9274eab862e8962019a7cc7c39d27804b16",
+ "b1d8699cc6057407f79dbe83b56a8477a38d7c96",
"testharness"
],
"server-timing/resources/blue.png": [
@@ -649302,11 +649781,11 @@
"support"
],
"server-timing/server_timing_header-parsing.https.html": [
- "156dfcd344f36c36186b088561213ad76d934097",
+ "737cc08045ae94f1dc98417500e5e1400474a584",
"testharness"
],
"server-timing/service_worker_idl.https.html": [
- "1c1be8995b33102926254790f0abfdc972fcf46e",
+ "5c493fdcb0ab581a267a084e7e2383617d99677e",
"testharness"
],
"server-timing/sw.js": [
@@ -649314,7 +649793,7 @@
"support"
],
"server-timing/test_server_timing.https.html": [
- "2d43aa2d43b722ff489db10b2df6f2c218e1f1d7",
+ "4f3554aa4a4572e8dbef83fcea3ce8cdd946a858",
"testharness"
],
"server-timing/test_server_timing.https.html.sub.headers": [
@@ -652361,6 +652840,10 @@
"ea7726891052c54b3afd3e0a7a2399dfb44e7509",
"testharness"
],
+ "signed-exchange/META.yml": [
+ "f56fbab13ecc0256f23133a1086e8925729121f9",
+ "support"
+ ],
"signed-exchange/README.md": [
"f1dbfe6d1adbe7ef7663c5298692872897ce3e0c",
"support"
@@ -657265,10 +657748,6 @@
"8110d5952a700a0da7a7a70d153c1a9faabe468d",
"support"
],
- "tools/appveyor.yml": [
- "b0cedd5c78fbbebe8dc069c2fe51df4d9d599f90",
- "support"
- ],
"tools/certs/README.md": [
"f5ae7413afec3b69be957da24c660abd9693c67e",
"support"
@@ -657390,7 +657869,7 @@
"support"
],
"tools/flake8.ini": [
- "85e2308aabb8256d55257d1f67f1fb83c72f09a3",
+ "a53cbf49d55fe40959891e68fd330bc4610c0eab",
"support"
],
"tools/gitignore/__init__.py": [
@@ -658033,6 +658512,10 @@
"882ef5a10065feb691af5f716b1e4996b397da65",
"support"
],
+ "tools/requirements_flake8.txt": [
+ "6d6ee4d885a480addf06d4df057cd4e4e6a8575f",
+ "support"
+ ],
"tools/runner/css/bootstrap-theme.min.css": [
"61358b13d045694a6963c5334eab2831e53978ac",
"support"
@@ -662038,7 +662521,7 @@
"support"
],
"tools/tox.ini": [
- "3eb12c357ba05a128352125663557d1e2b17f314",
+ "b0099437be9cb3b818509db7bdf0289199ae0634",
"support"
],
"tools/webdriver/.gitignore": [
@@ -662078,7 +662561,7 @@
"support"
],
"tools/wpt/browser.py": [
- "692de7069e8831e32bfd00e671d6de7c7f751583",
+ "46afdfed64b607d09faa092eea746916f27c9d06",
"support"
],
"tools/wpt/commands.json": [
@@ -662102,7 +662585,7 @@
"support"
],
"tools/wpt/run.py": [
- "b977d8a0cd68ccb00b299c7840415f843c16f949",
+ "093bc013c1b3b1009e15afc8546081504ed8ffd6",
"support"
],
"tools/wpt/testfiles.py": [
@@ -662113,8 +662596,12 @@
"7078a36b0c5bd5b4fe6f55f2ecf5fcbc2c535b4f",
"support"
],
+ "tools/wpt/tests/test_browser.py": [
+ "4ce8606949c2e9814a807f94e5bb31cc4917a186",
+ "support"
+ ],
"tools/wpt/tests/test_run.py": [
- "ac860e3f8c0b14e6269b684fd72a869509fb5739",
+ "94b1202736f5de76b189e3a3b2f30346f6d6727c",
"support"
],
"tools/wpt/tests/test_wpt.py": [
@@ -662122,7 +662609,7 @@
"support"
],
"tools/wpt/tox.ini": [
- "cd45a76e179861bb18adb231e86e2a74b2de972c",
+ "0b354e755300c325bdae3b0bc7fe75f9bb99f5d5",
"support"
],
"tools/wpt/update.py": [
@@ -662346,7 +662833,7 @@
"support"
],
"tools/wptrunner/tox.ini": [
- "fa7985ec80d6643c468b3a612e51bee844cb1b12",
+ "4f5dcfb47bec9a0dee6e81bb38234ad43791e3c6",
"support"
],
"tools/wptrunner/wptrunner.default.ini": [
@@ -668497,6 +668984,10 @@
"eb2b5c52e56f3ed1d3aa20c16e5ec099213efac0",
"testharness"
],
+ "webmessaging/without-ports/008.html": [
+ "2676c1f67c7cb7519f936ef1b568b3f3157b7870",
+ "testharness"
+ ],
"webmessaging/without-ports/009.html": [
"779383da203902aa5c34e1e3085e43467dc9c4a0",
"testharness"
@@ -670306,7 +670797,7 @@
"support"
],
"webusb/resources/usb-helpers.js": [
- "a3a4a31ba889f719c68cd2ca4f263bc56d67b7a6",
+ "161a7d270bbad085dc34300b389286dd045123a1",
"support"
],
"webusb/usb-allowed-by-feature-policy-attribute-redirect-on-load.https.sub.html": [
@@ -674258,11 +674749,11 @@
"testharness"
],
"workers/modules/dedicated-worker-options-credentials.html": [
- "6603eb9be9b8f074993abc6a7ff2f1dee453b24f",
+ "34f223981ca9213e85a0c4c05a9b13d6fdc1b095",
"testharness"
],
"workers/modules/dedicated-worker-options-credentials.html.headers": [
- "6f53744a6ae77b6e5bbc5585767984ffe36854a2",
+ "8da851ab7363870014a32121a3cd87979aa2099d",
"support"
],
"workers/modules/dedicated-worker-options-type.html": [
@@ -674270,7 +674761,7 @@
"testharness"
],
"workers/modules/resources/credentials.py": [
- "8f79563fb5ff9c966c4bd188883c460a09381349",
+ "7623d849625db4df7a9a10b8edd6f5e5e3187faf",
"support"
],
"workers/modules/resources/dynamic-import-and-then-static-import-worker.js": [
@@ -674281,6 +674772,10 @@
"2ea88b8071875a431cb4b40225facd1adf6d5644",
"support"
],
+ "workers/modules/resources/dynamic-import-remote-origin-credentials-checker-worker.sub.js": [
+ "fb4f6e067a89f7c97b1cb84de5e8fa23a4590b2c",
+ "support"
+ ],
"workers/modules/resources/dynamic-import-remote-origin-referrer-checker-worker.sub.js": [
"522c5798ba738b5074e5332dbb7d7fb5268ee6a9",
"support"
@@ -674289,6 +674784,10 @@
"0937086d72d011d81a380e31e97b5c6a0746f02d",
"support"
],
+ "workers/modules/resources/dynamic-import-same-origin-credentials-checker-worker.js": [
+ "b267d3441005acb8c4bcc46a39a4b8aa40223ea2",
+ "support"
+ ],
"workers/modules/resources/dynamic-import-same-origin-referrer-checker-worker.js": [
"1d68624c3cb5bc13f489e896d5f41760da85f2e3",
"support"
@@ -674369,6 +674868,10 @@
"16f70e9daf4909605746c6614a509afb3cf71ed1",
"support"
],
+ "workers/modules/resources/static-import-remote-origin-credentials-checker-worker.sub.js": [
+ "41ef6a8de71ea2bbc7bdd8390e128e0281215218",
+ "support"
+ ],
"workers/modules/resources/static-import-remote-origin-referrer-checker-worker.sub.js": [
"1722fc9343ecab4e27bdeae07329d6ce219068e4",
"support"
@@ -674377,6 +674880,10 @@
"00ef44eff580f575621be2be250ea787b19a3200",
"support"
],
+ "workers/modules/resources/static-import-same-origin-credentials-checker-worker.js": [
+ "17755d9099f187d87044787c6da27845bd20bf4a",
+ "support"
+ ],
"workers/modules/resources/static-import-same-origin-referrer-checker-worker.js": [
"7d564f9c434415704e32b96d9d3660eceda91b0e",
"support"
diff --git a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
index 0fc2d8aa005..dfda874e36a 100644
--- a/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
+++ b/tests/wpt/metadata/css/css-fonts/variations/at-font-face-font-matching.html.ini
@@ -326,3 +326,12 @@
[Matching font-style: 'oblique 10deg' should prefer 'oblique 10deg' over 'oblique 5deg']
expected: FAIL
+ [Matching font-weight: '500' should prefer '400' over '350 399']
+ expected: FAIL
+
+ [Matching font-style: 'oblique -21deg' should prefer 'oblique -60deg -40deg' over 'oblique -10deg']
+ expected: FAIL
+
+ [Matching font-style: 'italic' should prefer 'oblique 5deg 10deg' over 'oblique 5deg']
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-paint-api/registered-property-invalidation-001.https.html.ini b/tests/wpt/metadata/css/css-paint-api/registered-property-invalidation-001.https.html.ini
new file mode 100644
index 00000000000..28e3a2598b3
--- /dev/null
+++ b/tests/wpt/metadata/css/css-paint-api/registered-property-invalidation-001.https.html.ini
@@ -0,0 +1,2 @@
+[registered-property-invalidation-001.https.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/css/css-paint-api/registered-property-invalidation-002.https.html.ini b/tests/wpt/metadata/css/css-paint-api/registered-property-invalidation-002.https.html.ini
new file mode 100644
index 00000000000..7640246ac79
--- /dev/null
+++ b/tests/wpt/metadata/css/css-paint-api/registered-property-invalidation-002.https.html.ini
@@ -0,0 +1,2 @@
+[registered-property-invalidation-002.https.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/css/css-text/letter-spacing/letter-spacing-end-of-line-001.html.ini b/tests/wpt/metadata/css/css-text/letter-spacing/letter-spacing-end-of-line-001.html.ini
new file mode 100644
index 00000000000..541dbbd3f09
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/letter-spacing/letter-spacing-end-of-line-001.html.ini
@@ -0,0 +1,2 @@
+[letter-spacing-end-of-line-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/letter-spacing/letter-spacing-nesting-001.html.ini b/tests/wpt/metadata/css/css-text/letter-spacing/letter-spacing-nesting-001.html.ini
new file mode 100644
index 00000000000..c7e79407a88
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/letter-spacing/letter-spacing-nesting-001.html.ini
@@ -0,0 +1,2 @@
+[letter-spacing-nesting-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html.ini b/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html.ini
new file mode 100644
index 00000000000..0e92e0121e1
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html.ini
@@ -0,0 +1,2 @@
+[overflow-wrap-break-word-005.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-001.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-001.html.ini
new file mode 100644
index 00000000000..12265ea1cca
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-001.html.ini
@@ -0,0 +1,2 @@
+[trailing-ideographic-space-001.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-002.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-002.html.ini
new file mode 100644
index 00000000000..05500f1e117
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-002.html.ini
@@ -0,0 +1,2 @@
+[trailing-ideographic-space-002.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini b/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini
new file mode 100644
index 00000000000..240d1283c3a
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/white-space/trailing-ideographic-space-004.html.ini
@@ -0,0 +1,2 @@
+[trailing-ideographic-space-004.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-text/word-break/word-break-keep-all-005.html.ini b/tests/wpt/metadata/css/css-text/word-break/word-break-keep-all-005.html.ini
new file mode 100644
index 00000000000..feddd4f48c1
--- /dev/null
+++ b/tests/wpt/metadata/css/css-text/word-break/word-break-keep-all-005.html.ini
@@ -0,0 +1,2 @@
+[word-break-keep-all-005.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
index 32626f90fad..58ef77eb506 100644
--- a/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
+++ b/tests/wpt/metadata/encoding/single-byte-decoder.html.ini
@@ -509,7 +509,7 @@
[single-byte-decoder.html?XMLHttpRequest]
- expected: CRASH
+ expected: TIMEOUT
[ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)]
expected: FAIL
@@ -535,7 +535,91 @@
expected: FAIL
[windows-1254: iso_8859-9:1989 (XMLHttpRequest)]
- expected: FAIL
+ expected: TIMEOUT
+
+ [windows-1258: cp1258 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1253: x-cp1253 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1256: cp1256 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: iso_8859-9 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: iso88599 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: iso-8859-9 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1258: x-cp1258 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1257: windows-1257 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: windows-1254 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [x-mac-cyrillic: x-mac-ukrainian (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: csisolatin5 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1257: cp1257 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1255: x-cp1255 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1257: x-cp1257 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: cp1254 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: iso8859-9 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1253: windows-1253 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1253: cp1253 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: l5 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: x-cp1254 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: latin5 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1255: cp1255 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1254: iso-ir-148 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1258: windows-1258 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1255: windows-1255 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1256: x-cp1256 (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [x-mac-cyrillic: x-mac-cyrillic (XMLHttpRequest)]
+ expected: TIMEOUT
+
+ [windows-1256: windows-1256 (XMLHttpRequest)]
+ expected: TIMEOUT
[single-byte-decoder.html?TextDecoder]
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
deleted file mode 100644
index 87b07c3e670..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_1.html]
- [Multiple history traversals from the same task]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
new file mode 100644
index 00000000000..385376c7321
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_4.html]
+ [Multiple history traversals, last would be aborted]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.js.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.js.ini
new file mode 100644
index 00000000000..6032067bd63
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.js.ini
@@ -0,0 +1,10 @@
+[no_window_open_when_term_nesting_level_nonzero.window.html]
+ [no popups from synchronously reachable window]
+ expected: FAIL
+
+ [no popups with frame navigation]
+ expected: FAIL
+
+ [no popups from another synchronously reachable window]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/dom/elements/the-innertext-idl-attribute/getter.html.ini b/tests/wpt/metadata/html/dom/elements/the-innertext-idl-attribute/getter.html.ini
index e432b36d6cf..da9f59e58c6 100644
--- a/tests/wpt/metadata/html/dom/elements/the-innertext-idl-attribute/getter.html.ini
+++ b/tests/wpt/metadata/html/dom/elements/the-innertext-idl-attribute/getter.html.ini
@@ -278,3 +278,12 @@
[<br> ("<br>")]
expected: FAIL
+ [text-transform handles Turkish casing ("<div><div lang='tr' style='text-transform:uppercase'>i ı")]
+ expected: FAIL
+
+ [No tab on table-cell itself ("<table><tr><td id=target>abc</td><td>def</td>")]
+ expected: FAIL
+
+ [No newline on table-row itself ("<table><tr id=target><td>abc</td><td>def</td></tr><tr id=target><td>ghi</td><td>jkl</td></tr>")]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/event_timeupdate_noautoplay.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/event_timeupdate_noautoplay.html.ini
index 22d1f1d6900..a6f7ac6f249 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/event_timeupdate_noautoplay.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/event_timeupdate_noautoplay.html.ini
@@ -5,5 +5,5 @@
expected: NOTRUN
[calling play() on a sufficiently long video should trigger timeupdate event]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
index 27d6deb827a..0f1a214d0ee 100644
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/environment-changes/viewport-change.html.ini
@@ -8,8 +8,26 @@
expected: FAIL
[picture: source (max-width:500px) valid image, img broken image, resize to narrow]
- expected: FAIL
+ expected: TIMEOUT
[picture: source (max-width:500px) valid image, img valid image, resize to narrow]
expected: FAIL
+ [picture: source (max-width:500px) broken image, img valid image, resize to narrow]
+ expected: FAIL
+
+ [img (srcset 1 cand) valid image, resize to wide]
+ expected: FAIL
+
+ [picture: same URL in source (max-width:500px) and img, resize to wide]
+ expected: FAIL
+
+ [img (srcset 1 cand) valid image, resize to narrow]
+ expected: FAIL
+
+ [picture: source (max-width:500px) valid image, img broken image, resize to wide]
+ expected: FAIL
+
+ [picture: same URL in source (max-width:500px) and img, resize to narrow]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
new file mode 100644
index 00000000000..8cc42056d34
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini
@@ -0,0 +1,10 @@
+[non-active-document.html]
+ [DOMParser]
+ expected: FAIL
+
+ [createHTMLDocument]
+ expected: FAIL
+
+ [<template>]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini
deleted file mode 100644
index a0e0184eb46..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-quirks-mode.html.ini
+++ /dev/null
@@ -1,52 +0,0 @@
-[parse-a-sizes-attribute-quirks-mode.html]
- [<img srcset="/images/green-1x1.png?e38b 50w, /images/green-16x16.png?e38b 51w" sizes="(min-width:max(-200vw, 0)) 1px"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?f49b 50w, /images/green-16x16.png?f49b 51w" sizes="(min-width:0) max(-200vw, 1px"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?f48a 50w, /images/green-16x16.png?f48a 51w" sizes="min(1px, 200vw"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e36b 50w, /images/green-16x16.png?e36b 51w" sizes="min(-100px, 1px)"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e62 50w, /images/green-16x16.png?e62 51w" sizes="(min-width:0) or unknown-general-enclosed(foo) 1px"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e59 50w, /images/green-16x16.png?e59 51w" sizes="(min-width:0) or (min-width:unknown-mf-value) 1px"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e38 50w, /images/green-16x16.png?e38 51w" sizes="(min-width:calc(0)) 1px"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e60 50w, /images/green-16x16.png?e60 51w" sizes="(min-width:0) or (min-width:-1px) 1px"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?f49a 50w, /images/green-16x16.png?f49a 51w" sizes="(min-width:0) min(1px, 200vw"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e38a 50w, /images/green-16x16.png?e38a 51w" sizes="(min-width:min(0, 200vw)) 1px"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e58 50w, /images/green-16x16.png?e58 51w" sizes="(min-width:0) or (unknown-mf-name) 1px"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e37a 50w, /images/green-16x16.png?e37a 51w" sizes="(min-width:0) min(1px, 100px)"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?f48b 50w, /images/green-16x16.png?f48b 51w" sizes="max(-200vw, 1px"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e106 50w, /images/green-16x16.png?e106 51w" sizes="(min-width:0) or (unknown-general-enclosed !) 1px"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (unknown &quot;general-enclosed&quot;) 1px"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e37b 50w, /images/green-16x16.png?e37b 51w" sizes="(min-width:0) max(-100px, 1px)"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e36a 50w, /images/green-16x16.png?e36a 51w" sizes="min(1px, 100px)"> ref sizes="1px" (quirks mode)]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html.ini
deleted file mode 100644
index c3522eadce0..00000000000
--- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html.ini
+++ /dev/null
@@ -1,52 +0,0 @@
-[parse-a-sizes-attribute-width-1000px.html]
- [<img srcset="/images/green-1x1.png?e37a 50w, /images/green-16x16.png?e37a 51w" sizes="(min-width:0) min(1px, 100px)"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?f49b 50w, /images/green-16x16.png?f49b 51w" sizes="(min-width:0) max(-200vw, 1px"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e38b 50w, /images/green-16x16.png?e38b 51w" sizes="(min-width:max(-200vw, 0)) 1px"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e60 50w, /images/green-16x16.png?e60 51w" sizes="(min-width:0) or (min-width:-1px) 1px"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e37b 50w, /images/green-16x16.png?e37b 51w" sizes="(min-width:0) max(-100px, 1px)"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e38a 50w, /images/green-16x16.png?e38a 51w" sizes="(min-width:min(0, 200vw)) 1px"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e61 50w, /images/green-16x16.png?e61 51w" sizes="(min-width:0) or (unknown &quot;general-enclosed&quot;) 1px"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e36b 50w, /images/green-16x16.png?e36b 51w" sizes="min(-100px, 1px)"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?f48b 50w, /images/green-16x16.png?f48b 51w" sizes="max(-200vw, 1px"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?f48a 50w, /images/green-16x16.png?f48a 51w" sizes="min(1px, 200vw"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e38 50w, /images/green-16x16.png?e38 51w" sizes="(min-width:calc(0)) 1px"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e58 50w, /images/green-16x16.png?e58 51w" sizes="(min-width:0) or (unknown-mf-name) 1px"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e62 50w, /images/green-16x16.png?e62 51w" sizes="(min-width:0) or unknown-general-enclosed(foo) 1px"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e59 50w, /images/green-16x16.png?e59 51w" sizes="(min-width:0) or (min-width:unknown-mf-value) 1px"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e106 50w, /images/green-16x16.png?e106 51w" sizes="(min-width:0) or (unknown-general-enclosed !) 1px"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?e36a 50w, /images/green-16x16.png?e36a 51w" sizes="min(1px, 100px)"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
- [<img srcset="/images/green-1x1.png?f49a 50w, /images/green-16x16.png?f49a 51w" sizes="(min-width:0) min(1px, 200vw"> ref sizes="1px" (width:1000px)]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini b/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
new file mode 100644
index 00000000000..9e522297c94
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
@@ -0,0 +1,7 @@
+[toggleEvent.html]
+ [Calling open twice on 'details' fires only one toggle event]
+ expected: FAIL
+
+ [Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini
new file mode 100644
index 00000000000..178680e5d14
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/script-onerror-insertion-point-2.html.ini
@@ -0,0 +1,2 @@
+[script-onerror-insertion-point-2.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini
index ce482a60da8..c6d49957c4a 100644
--- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini
+++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/aborted-parser.window.js.ini
@@ -2,6 +2,3 @@
[document.open() after parser is aborted]
expected: FAIL
- [async document.open() after parser is aborted]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-xml.window.js.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-xml.window.js.ini
index 2314441517b..25f0d603b3d 100644
--- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-xml.window.js.ini
+++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/bailout-exception-vs-return-xml.window.js.ini
@@ -9,6 +9,3 @@
[document.open should throw an InvalidStateError with XML document even when the ignore-opens-during-unload counter is greater than 0 (during pagehide event)]
expected: FAIL
- [document.open should throw an InvalidStateError with XML document even when there is an active parser executing script]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
index 7725b118e9d..99a24216c88 100644
--- a/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
+++ b/tests/wpt/metadata/performance-timeline/webtiming-resolution.any.js.ini
@@ -12,6 +12,3 @@
[Verifies the resolution of entry.startTime is at least 5 microseconds.]
expected: TIMEOUT
- [Verifies the resolution of performance.now() is at least 5 microseconds.]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini b/tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini
new file mode 100644
index 00000000000..c7e9c7434f5
--- /dev/null
+++ b/tests/wpt/metadata/quirks/unitless-length/limited-quirks.html.ini
@@ -0,0 +1,283 @@
+[limited-quirks.html]
+ [top: -\\31 .5]
+ expected: FAIL
+
+ [bottom: -1A]
+ expected: FAIL
+
+ [bottom: -1a]
+ expected: FAIL
+
+ [top: @1]
+ expected: FAIL
+
+ [top: "1a"]
+ expected: FAIL
+
+ [top: @a]
+ expected: FAIL
+
+ [bottom: "1"]
+ expected: FAIL
+
+ [bottom: -/**/1]
+ expected: FAIL
+
+ [top: +/**/1]
+ expected: FAIL
+
+ [bottom: @1a]
+ expected: FAIL
+
+ [top: 1\\31 ]
+ expected: FAIL
+
+ [top: url('1')]
+ expected: FAIL
+
+ [bottom: -\\31 ]
+ expected: FAIL
+
+ [top: calc(1)]
+ expected: FAIL
+
+ [top: \\31 ]
+ expected: FAIL
+
+ [bottom: +1\\31 ]
+ expected: FAIL
+
+ [bottom: 1\\31 .5]
+ expected: FAIL
+
+ [bottom: #0001]
+ expected: FAIL
+
+ [top: calc(2 * 2px)]
+ expected: FAIL
+
+ [bottom: 1a]
+ expected: FAIL
+
+ [bottom: A]
+ expected: FAIL
+
+ [bottom: #01]
+ expected: FAIL
+
+ [top: +\\31 .5]
+ expected: FAIL
+
+ [bottom: #1]
+ expected: FAIL
+
+ [top: -/**/1]
+ expected: FAIL
+
+ [bottom: +\\31 .5]
+ expected: FAIL
+
+ [bottom: \\31 ]
+ expected: FAIL
+
+ [bottom: calc(1)]
+ expected: FAIL
+
+ [top: #001]
+ expected: FAIL
+
+ [top: +\\31 ]
+ expected: FAIL
+
+ [bottom: +\\31 ]
+ expected: FAIL
+
+ [top: +1.5]
+ expected: FAIL
+
+ [top: +1\\31 ]
+ expected: FAIL
+
+ [bottom: @a]
+ expected: FAIL
+
+ [bottom: @1]
+ expected: FAIL
+
+ [top: #1]
+ expected: FAIL
+
+ [top: 1a]
+ expected: FAIL
+
+ [bottom: +1a]
+ expected: FAIL
+
+ [bottom: +1A]
+ expected: FAIL
+
+ [bottom: "a"]
+ expected: FAIL
+
+ [top: #00001]
+ expected: FAIL
+
+ [bottom: -1\\31 .5]
+ expected: FAIL
+
+ [top: "1"]
+ expected: FAIL
+
+ [bottom: 1.5]
+ expected: FAIL
+
+ [bottom: -\\31 .5]
+ expected: FAIL
+
+ [bottom: url('1')]
+ expected: FAIL
+
+ [bottom: -1.5]
+ expected: FAIL
+
+ [top: \\31 .5]
+ expected: FAIL
+
+ [bottom: "1a"]
+ expected: FAIL
+
+ [bottom: calc(2 * 2px)]
+ expected: FAIL
+
+ [bottom: +1\\31 .5]
+ expected: FAIL
+
+ [bottom: 1\\31 ]
+ expected: FAIL
+
+ [bottom: +/**/1]
+ expected: FAIL
+
+ [bottom: #00001]
+ expected: FAIL
+
+ [top: url(1)]
+ expected: FAIL
+
+ [bottom: #001]
+ expected: FAIL
+
+ [top: +1\\31 .5]
+ expected: FAIL
+
+ [top: -1a]
+ expected: FAIL
+
+ [top: -1A]
+ expected: FAIL
+
+ [bottom: url(1)]
+ expected: FAIL
+
+ [top: a]
+ expected: FAIL
+
+ [top: A]
+ expected: FAIL
+
+ [top: #000001]
+ expected: FAIL
+
+ [top: 1]
+ expected: FAIL
+
+ [top: 1\\31 .5]
+ expected: FAIL
+
+ [bottom: a]
+ expected: FAIL
+
+ [bottom: 1]
+ expected: FAIL
+
+ [bottom: +1]
+ expected: FAIL
+
+ [bottom: #000001]
+ expected: FAIL
+
+ [bottom: +a]
+ expected: FAIL
+
+ [bottom: +A]
+ expected: FAIL
+
+ [top: 1.5]
+ expected: FAIL
+
+ [top: +A]
+ expected: FAIL
+
+ [top: +a]
+ expected: FAIL
+
+ [top: +1]
+ expected: FAIL
+
+ [top: -1.5]
+ expected: FAIL
+
+ [top: -1\\31 .5]
+ expected: FAIL
+
+ [top: +1a]
+ expected: FAIL
+
+ [top: +1A]
+ expected: FAIL
+
+ [top: @1a]
+ expected: FAIL
+
+ [bottom: \\31 .5]
+ expected: FAIL
+
+ [top: "a"]
+ expected: FAIL
+
+ [top: #01]
+ expected: FAIL
+
+ [bottom: +1.5]
+ expected: FAIL
+
+ [bottom: -A]
+ expected: FAIL
+
+ [bottom: -a]
+ expected: FAIL
+
+ [bottom: -1\\31 ]
+ expected: FAIL
+
+ [top: #0001]
+ expected: FAIL
+
+ [bottom: -1]
+ expected: FAIL
+
+ [top: -\\31 ]
+ expected: FAIL
+
+ [top: -A]
+ expected: FAIL
+
+ [top: -a]
+ expected: FAIL
+
+ [top: -1]
+ expected: FAIL
+
+ [top: -1\\31 ]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/touch-events/idlharness.window.js.ini b/tests/wpt/metadata/touch-events/idlharness.window.js.ini
index 83161979656..d47a18855a9 100644
--- a/tests/wpt/metadata/touch-events/idlharness.window.js.ini
+++ b/tests/wpt/metadata/touch-events/idlharness.window.js.ini
@@ -191,3 +191,6 @@
[HTMLElement interface: attribute ontouchcancel]
expected: FAIL
+ [idl_test setup]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/url/urlencoded-parser.any.js.ini b/tests/wpt/metadata/url/urlencoded-parser.any.js.ini
index fb2feee3d45..4b32802a8f8 100644
--- a/tests/wpt/metadata/url/urlencoded-parser.any.js.ini
+++ b/tests/wpt/metadata/url/urlencoded-parser.any.js.ini
@@ -1,7 +1,4 @@
[urlencoded-parser.any.html]
- [request.formData() with input: &&&a=b&&&&c=d&]
- expected: FAIL
-
[request.formData() with input: a&b&c]
expected: FAIL
@@ -11,10 +8,10 @@
[response.formData() with input: a&b&c]
expected: FAIL
- [response.formData() with input: a=b&c=d&]
+ [response.formData() with input: _charset_=windows-1252&test=%C2x]
expected: FAIL
- [response.formData() with input: a=b&c=d]
+ [response.formData() with input: &&&a=b&&&&c=d&]
expected: FAIL
@@ -28,6 +25,9 @@
[request.formData() with input: a=b&c=d]
expected: FAIL
- [response.formData() with input: _charset_=windows-1252&test=%C2x]
+ [request.formData() with input: &&&a=b&&&&c=d&]
+ expected: FAIL
+
+ [response.formData() with input: a=b&c=d]
expected: FAIL
diff --git a/tests/wpt/metadata/workers/modules/dedicated-worker-options-credentials.html.ini b/tests/wpt/metadata/workers/modules/dedicated-worker-options-credentials.html.ini
index 8613872a053..c2ee9826593 100644
--- a/tests/wpt/metadata/workers/modules/dedicated-worker-options-credentials.html.ini
+++ b/tests/wpt/metadata/workers/modules/dedicated-worker-options-credentials.html.ini
@@ -1,6 +1,95 @@
[dedicated-worker-options-credentials.html]
+ expected: ERROR
[DedicatedWorker: WorkerOptions 'credentials']
expected: FAIL
+
[new Worker() with credentials=omit should not send the credentials]
expected: FAIL
-
+
+ [new Worker() with type=classic should always send the credentials regardless of the credentials option (include).]
+ expected: NOTRUN
+
+ [new Worker() with type=classic should always send the credentials regardless of the credentials option (default).]
+ expected: NOTRUN
+
+ [new Worker() with type=classic should always send the credentials regardless of the credentials option (omit).]
+ expected: NOTRUN
+
+ [new Worker() with type=module and credentials=include should send the credentials for same-origin static imports]
+ expected: NOTRUN
+
+ [new Worker() with type=classic should always send the credentials for same-origin dynamic imports regardless of the credentials option (include).]
+ expected: NOTRUN
+
+ [new Worker() with type=classic should never send the credentials for cross-origin dynamic imports regardless of the credentials option (same-origin).]
+ expected: NOTRUN
+
+ [new Worker() with type-module credentials=omit should not send the credentials for cross-origin dynamic imports]
+ expected: NOTRUN
+
+ [new Worker() with type-module credentials=omit should not send the credentials for cross-origin static imports]
+ expected: NOTRUN
+
+ [new Worker() with type=module and credentials=omit should not send the credentials for same-origin dynamic imports]
+ expected: NOTRUN
+
+ [new Worker() with type=module and credentials=omit should not send the credentials for same-origin static imports]
+ expected: NOTRUN
+
+ [new Worker() with type=module and credentials=include should send the credentials for cross-origin dynamic imports]
+ expected: NOTRUN
+
+ [new Worker() with type=module and credentials=same-origin should not send the credentials for cross-origin static imports]
+ expected: NOTRUN
+
+ [new Worker() with type=classic should never send the credentials for cross-origin dynamic imports regardless of the credentials option (include).]
+ expected: NOTRUN
+
+ [new Worker() with type=module and credentials=same-origin should not send the credentials for cross-origin dynamic imports]
+ expected: NOTRUN
+
+ [new Worker() with type=classic should never send the credentials for cross-origin dynamic imports regardless of the credentials option (omit).]
+ expected: NOTRUN
+
+ [new Worker() with type=module and default credentials option should behave as credentials=same-origin and not send the credentials for cross-origin static imports]
+ expected: NOTRUN
+
+ [new Worker() with type=classic should always send the credentials for same-origin dynamic imports regardless of the credentials option (omit).]
+ expected: NOTRUN
+
+ [new Worker() with type=module and credentials=omit should not send the credentials]
+ expected: FAIL
+
+ [new Worker() with type=module and default credentials option should behave as credentials=same-origin and send the credentials for same-origin static imports]
+ expected: TIMEOUT
+
+ [new Worker() with type=classic should always send the credentials regardless of the credentials option (same-origin).]
+ expected: NOTRUN
+
+ [new Worker() with type=classic should never send the credentials for cross-origin dynamic imports regardless of the credentials option (default).]
+ expected: NOTRUN
+
+ [new Worker() with type=classic should always send the credentials for same-origin dynamic imports regardless of the credentials option (default).]
+ expected: NOTRUN
+
+ [new Worker() with type=module and credentials=include should send the credentials for cross-origin static imports]
+ expected: NOTRUN
+
+ [new Worker() with type=classic should always send the credentials for same-origin dynamic imports regardless of the credentials option (same-origin).]
+ expected: NOTRUN
+
+ [new Worker() with type=module and default credentials option should behave as credentials=same-origin and not send the credentials for cross-origin dynamic imports]
+ expected: NOTRUN
+
+ [new Worker() with type=module and credentials=same-origin should send the credentials for same-origin dynamic imports]
+ expected: NOTRUN
+
+ [new Worker() with type=module and credentials=same-origin should send the credentials for same-origin static imports]
+ expected: NOTRUN
+
+ [new Worker() with type=module and default credentials option should behave as credentials=same-origin and send the credentials for same-origin dynamic imports]
+ expected: NOTRUN
+
+ [new Worker() with type=module and credentials=include should send the credentials for same-origin dynamic imports]
+ expected: NOTRUN
+
diff --git a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
index 9d72f08e38e..f806a845a2a 100644
--- a/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
+++ b/tests/wpt/metadata/workers/semantics/multiple-workers/005.html.ini
@@ -1,5 +1,6 @@
[005.html]
type: testharness
+ expected: ERROR
[dedicated worker in shared worker in dedicated worker]
expected: FAIL
diff --git a/tests/wpt/web-platform-tests/.travis.yml b/tests/wpt/web-platform-tests/.travis.yml
index 9d3431bc444..d89fadae77d 100644
--- a/tests/wpt/web-platform-tests/.travis.yml
+++ b/tests/wpt/web-platform-tests/.travis.yml
@@ -82,7 +82,7 @@ matrix:
apt:
packages:
- libnss3-tools
- env: JOB=wpt_integration TOXENV=py27,py27-flake8 SCRIPT=tools/ci/ci_wpt.sh
+ env: JOB=wpt_integration TOXENV=py27 SCRIPT=tools/ci/ci_wpt.sh
- name: "resources/ tests"
if: type = pull_request
os: linux
diff --git a/tests/wpt/web-platform-tests/WebIDL/current-realm.html b/tests/wpt/web-platform-tests/WebIDL/current-realm.html
index e015ec53515..e094624c679 100644
--- a/tests/wpt/web-platform-tests/WebIDL/current-realm.html
+++ b/tests/wpt/web-platform-tests/WebIDL/current-realm.html
@@ -43,6 +43,19 @@
}, val[0])
})
+ ;["Request", "Response"].forEach(val => {
+ test(() => {
+ const obj = new self[0][val]("about:blank");
+ assert_global(obj);
+
+ const cloneObj = obj.clone();
+ assert_global(cloneObj);
+
+ const involvedCloneObj = self[val].prototype["clone"].call(cloneObj);
+ assert_global(cloneObj);
+ }, val)
+ })
+
// Note: these are not [NewObject] and can be cached. But across globals?
;[["getElementsByTagName", "x"],
["getElementsByTagNameNS", null, "x"],
diff --git a/tests/wpt/web-platform-tests/common/performance-timeline-utils.js b/tests/wpt/web-platform-tests/common/performance-timeline-utils.js
index 6845d6cbc68..3efce5b5d8b 100644
--- a/tests/wpt/web-platform-tests/common/performance-timeline-utils.js
+++ b/tests/wpt/web-platform-tests/common/performance-timeline-utils.js
@@ -42,3 +42,10 @@ function test_entries(actualEntries, expectedEntries) {
}
})
}
+
+function delayedLoadListener(callback) {
+ window.addEventListener('load', function() {
+ // TODO(cvazac) Remove this setTimeout when spec enforces sync entries.
+ step_timeout(callback, 0)
+ })
+}
diff --git a/tests/wpt/web-platform-tests/common/worklet-reftest.js b/tests/wpt/web-platform-tests/common/worklet-reftest.js
index abdda5b05e7..d92c76cabf3 100644
--- a/tests/wpt/web-platform-tests/common/worklet-reftest.js
+++ b/tests/wpt/web-platform-tests/common/worklet-reftest.js
@@ -14,6 +14,15 @@ function importWorklet(worklet, code) {
return worklet.addModule(url);
}
+async function animationFrames(frames) {
+ for (let i = 0; i < frames; i++)
+ await new Promise(requestAnimationFrame);
+}
+
+async function workletPainted() {
+ await animationFrames(2);
+}
+
// To make sure that we take the snapshot at the right time, we do double
// requestAnimationFrame. In the second frame, we take a screenshot, that makes
// sure that we already have a full frame.
@@ -24,10 +33,6 @@ async function importWorkletAndTerminateTestAfterAsyncPaint(worklet, code) {
}
await importWorklet(worklet, code);
-
- requestAnimationFrame(function() {
- requestAnimationFrame(function() {
- takeScreenshot();
- });
- });
+ await workletPainted();
+ takeScreenshot();
}
diff --git a/tests/wpt/web-platform-tests/css/css-display/display-contents-shadow-host-whitespace.html b/tests/wpt/web-platform-tests/css/css-display/display-contents-shadow-host-whitespace.html
new file mode 100644
index 00000000000..84b04dba101
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-display/display-contents-shadow-host-whitespace.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Whitespace across display:contents shadow host</title>
+<link rel="help" href="https://drafts.csswg.org/css-display-3/#valdef-display-contents">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-rules">
+<link rel="match" href="../reference/pass_if_two_words.html">
+<p>There should be a space between "two" and "words" below.</p>
+<div id="host" style="display:contents"></div> <span>words</span>
+<script>
+ host.attachShadow({mode:"open"}).innerHTML = "two";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-001.html b/tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-001.html
index e1c6ec6d8ae..3e749d43f76 100644
--- a/tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-001.html
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-001.html
@@ -3,7 +3,7 @@
<title>CSS Flexbox Test: Flex item - contiguous text runs - node removal</title>
<link rel="author" title="Rune Lillesveen" href="mailto:futhark@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-items">
-<link rel="match" href="anonymous-flex-item-ref.html">
+<link rel="match" href="../reference/pass_if_two_words.html">
<p>There should be a space between "two" and "words" below.</p>
<div style="display:flex">two <span id="spanRemove"></span>words</div>
<script>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-002.html b/tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-002.html
index 4b571fe5fc3..8fdeb27110e 100644
--- a/tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-002.html
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-002.html
@@ -3,6 +3,6 @@
<title>CSS Flexbox Test: Flex item - contiguous text runs - display:none</title>
<link rel="author" title="Rune Lillesveen" href="mailto:futhark@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-items">
-<link rel="match" href="anonymous-flex-item-ref.html">
+<link rel="match" href="../reference/pass_if_two_words.html">
<p>There should be a space between "two" and "words" below.</p>
<div style="display:flex">two <span style="display:none"></span>words</div>
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-003.html b/tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-003.html
index 1449e1df60e..cc896e9410c 100644
--- a/tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-003.html
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-003.html
@@ -3,7 +3,7 @@
<title>CSS Flexbox Test: Flex item - contiguous text runs - display:none dynamic</title>
<link rel="author" title="Rune Lillesveen" href="mailto:futhark@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-items">
-<link rel="match" href="anonymous-flex-item-ref.html">
+<link rel="match" href="../reference/pass_if_two_words.html">
<p>There should be a space between "two" and "words" below.</p>
<div style="display:flex">two <span id="noneSpan"></span>words</div>
<script>
diff --git a/tests/wpt/web-platform-tests/css/css-overscroll-behavior/META.yml b/tests/wpt/web-platform-tests/css/css-overscroll-behavior/META.yml
new file mode 100644
index 00000000000..f15c86fd906
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-overscroll-behavior/META.yml
@@ -0,0 +1,3 @@
+spec: https://drafts.csswg.org/css-overscroll-behavior/
+suggested_reviewers:
+ - majido
diff --git a/tests/wpt/web-platform-tests/css/css-overscroll-behavior/inheritance.html b/tests/wpt/web-platform-tests/css/css-overscroll-behavior/inheritance.html
new file mode 100644
index 00000000000..e49fa49bc4e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-overscroll-behavior/inheritance.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Inheritance of CSS Overscroll Behavior properties</title>
+<link rel="help" href="https://drafts.csswg.org/css-overscroll-behavior/#property-index">
+<meta name="assert" content="Properties inherit or not according to the spec.">
+<meta name="assert" content="Properties have initial values according to the spec.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/inheritance-testcommon.js"></script>
+</head>
+<body>
+<div id="container">
+ <div id="target"></div>
+</div>
+<script>
+assert_not_inherited('overscroll-behavior-x', 'auto', 'contain');
+assert_not_inherited('overscroll-behavior-y', 'auto', 'contain');
+</script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/registered-property-invalidation-001.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/registered-property-invalidation-001.https.html
new file mode 100644
index 00000000000..26da7e2eeff
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-paint-api/registered-property-invalidation-001.https.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title>Registering a property causes invalidation for initial value</title>
+<link rel="help" href="https://www.w3.org/TR/css-paint-api-1/#examples">
+<link rel="match" href="parse-input-arguments-ref.html">
+<script src="/common/reftest-wait.js"></script>
+<script src="/common/worklet-reftest.js"></script>
+<body>
+<style>
+#target {
+ background: paint(geometry);
+ width: 100px;
+ height: 100px;
+}
+</style>
+<div id="target"></div>
+<script id="code" type="text/worklet">
+registerPaint('geometry', class {
+ static get inputProperties() { return ['--color']; }
+ paint(ctx, geom, styleMap) {
+ ctx.strokeStyle = styleMap.get('--color').toString();
+ ctx.lineWidth = 4;
+ ctx.strokeRect(0, 0, geom.width, geom.height);
+ }
+});
+</script>
+
+<script>
+ async function test() {
+ getComputedStyle(target);
+ let code = document.getElementById('code').textContent;
+ await importWorklet(CSS.paintWorklet, code);
+ await workletPainted();
+ CSS.registerProperty({
+ name: '--color',
+ syntax: '<color>',
+ initialValue: 'green',
+ inherits: false
+ });
+ await workletPainted();
+ takeScreenshot();
+ }
+
+ test();
+</script>
+</body>
+</html>
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-paint-api/registered-property-invalidation-002.https.html b/tests/wpt/web-platform-tests/css/css-paint-api/registered-property-invalidation-002.https.html
new file mode 100644
index 00000000000..0aab051a4c4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-paint-api/registered-property-invalidation-002.https.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<title>Registering a property causes invalidation for applied value</title>
+<link rel="help" href="https://www.w3.org/TR/css-paint-api-1/#examples">
+<link rel="match" href="parse-input-arguments-ref.html">
+<script src="/common/reftest-wait.js"></script>
+<script src="/common/worklet-reftest.js"></script>
+<body>
+<style>
+#target {
+ background: paint(geometry);
+ width: 100px;
+ height: 100px;
+ --length: 100px;
+}
+</style>
+<div id="target"></div>
+<script id="code" type="text/worklet">
+registerPaint('geometry', class {
+ static get inputProperties() { return ['--length']; }
+ paint(ctx, geom, styleMap) {
+ let value = styleMap.get('--length');
+ let pass = value.value === 100 && value.unit === 'px';
+ ctx.strokeStyle = pass ? 'green' : 'red';
+ ctx.lineWidth = 4;
+ ctx.strokeRect(0, 0, geom.width, geom.height);
+ }
+});
+</script>
+
+<script>
+ async function test() {
+ getComputedStyle(target);
+ let code = document.getElementById('code').textContent;
+ await importWorklet(CSS.paintWorklet, code);
+ await workletPainted();
+ CSS.registerProperty({
+ name: '--length',
+ syntax: '<length>',
+ initialValue: '0px',
+ inherits: false
+ });
+ await workletPainted();
+ takeScreenshot();
+ }
+
+ test();
+</script>
+</body>
+</html>
+
+
diff --git a/tests/wpt/web-platform-tests/css/css-scrollbars/auto-scrollbar-inline-children.html b/tests/wpt/web-platform-tests/css/css-scrollbars/auto-scrollbar-inline-children.html
new file mode 100644
index 00000000000..107938ece14
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scrollbars/auto-scrollbar-inline-children.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/CSS22/visufx.html#propdef-overflow">
+<style>
+ /* Avoid auto scrollbars on the viewport, because that might trigger re-layout
+ (and thus hide bugs). */
+ body { overflow:hidden; }
+
+ .container { width:100px; }
+</style>
+<p>There should be a blue rectangle below, and possibly a scrollbar (depending
+ on OS / browser), that shouldn not obscure any parts of the rectangle. The
+ word "FAIL" should not be seen.</p>
+<div class="container" style="overflow:auto; height:200px;">
+ <div id="child" style="display:inline-block; box-sizing:border-box; width:100%; height:100%; border:10px solid blue;"></div>
+ <br>FAIL
+</div>
+
+<div class="container" style="visibility:hidden; overflow:scroll;">
+ <div id="ref"></div>
+</div>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+ test(()=> {
+ var child = document.getElementById("child");
+ assert_equals(child.offsetWidth, ref.offsetWidth);
+ }, "Auto scrollbar affects size of children");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-bidi-001.html b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-bidi-001.html
new file mode 100644
index 00000000000..4720e1d13c3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-bidi-001.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 3 Test: letter spacing after bidi</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#letter-spacing-property">
+<link rel="match" href="reference/letter-spacing-bidi-001-ref.html">
+<meta name="assert" content="Letter spacing is inserted after RTL reordering, so letter spacing cannot apply to any of the letters in the span below,
+since they get split appart.">
+<style>
+div {
+ font-family: monospace;
+ font-size: 3em;
+}
+span {
+ letter-spacing: 1ch;
+}
+</style>
+
+<p>Test passes if the rightmost character of the line that starts with “a” is under the number 4.
+<div>12345</div>
+<div>a<span>bא</span>ב</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-bidi-002.html b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-bidi-002.html
new file mode 100644
index 00000000000..7cd6e80fc05
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-bidi-002.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 3 Test: letter spacing at bidi fragment boudary</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#letter-spacing-property">
+<link rel="help" href="https://drafts.csswg.org/css-writing-modes-4/#bidi-fragmentation">
+<link rel="match" href="reference/letter-spacing-bidi-002-ref.html">
+<meta name="assert" content="When bidi would cause to pieces of a single inline box to be appart if there was enough room to fit everything in one line,
+the two pieces are separate fragments even if they end up next to eachother due to line breaking.
+Letter spacing at the boundary of such separate fragments comes from their common ancestor,
+not from the letter-spacing property on the fragmented inline box itself.">
+<style>
+div {
+ font-family: monospace;
+ font-size: 3em;
+ width: 0;
+}
+span {
+ letter-spacing: 1ch;
+}
+</style>
+
+<p>Test passes if the rightmost character of the line that starts with “a” is under the number 3.
+<div>12345</div>
+<div>a<span>aב</span> ב</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-end-of-line-001.html b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-end-of-line-001.html
new file mode 100644
index 00000000000..645ef105098
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-end-of-line-001.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 3 Test: letter spacing at end of line</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#letter-spacing-property">
+<link rel="match" href="reference/letter-spacing-end-of-line-001-ref.html">
+<meta name="assert" content="Letter-spacing must not be applied at the beginning or at the end of a line.">
+<style>
+div {
+ font-family: monospace;
+ font-size: 3em;
+}
+span {
+ float:left;
+ letter-spacing: 1ch;
+}
+</style>
+
+<p>Test passes if the rightmost character of the line that starts with “a” is under the number 4.
+<div>12345</div>
+<div><span>aa</span>a</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-nesting-001.html b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-nesting-001.html
new file mode 100644
index 00000000000..a7149e30c1d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-nesting-001.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 3 Test: letter on nested element</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#letter-spacing-property">
+<link rel="match" href="reference/letter-spacing-nesting-001-ref.html">
+<meta name="assert" content="A given value of letter-spacing only affects the spacing between characters completely contained within the element for which it is specified">
+<style>
+div {
+ font-family: monospace;
+ font-size: 3em;
+}
+span {
+ letter-spacing: 1ch;
+}
+</style>
+
+<p>Test passes if the rightmost character of the line that starts with “a” is under the number 5.
+<div>123456</div>
+<div>a<span>aa</span>a</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-nesting-002.html b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-nesting-002.html
new file mode 100644
index 00000000000..67f180affdf
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/letter-spacing-nesting-002.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 3 Test: letter spacing on element with single character</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#letter-spacing-property">
+<link rel="match" href="reference/letter-spacing-nesting-002-ref.html">
+<meta name="assert" content="Applying letter-spacing to an element containing only a single character has no effect on the rendered result">
+<style>
+div {
+ font-family: monospace;
+ font-size: 3em;
+}
+span {
+ letter-spacing: 1ch;
+}
+</style>
+
+<p>Test passes if the rightmost character of the line that starts with “a” is under the number 3.
+<div>12345</div>
+<div>a<span>a</span>a</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-bidi-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-bidi-001-ref.html
new file mode 100644
index 00000000000..e34dbc313f2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-bidi-001-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-family: monospace;
+ font-size: 3em;
+}
+</style>
+
+<p>Test passes if the rightmost character of the line that starts with “a” is under the number 4.
+<div>12345</div>
+<div>abאב</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-bidi-002-ref.html b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-bidi-002-ref.html
new file mode 100644
index 00000000000..f197769f3ab
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-bidi-002-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-family: monospace;
+ font-size: 3em;
+}
+</style>
+
+<p>Test passes if the rightmost character of the line that starts with “a” is under the number 3.
+<div>12345</div>
+<div>aaב<br>ב</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-end-of-line-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-end-of-line-001-ref.html
new file mode 100644
index 00000000000..eb474ab8d23
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-end-of-line-001-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-family: monospace;
+ font-size: 3em;
+}
+</style>
+
+<p>Test passes if the rightmost character of the line that starts with “a” is under the number 4.
+<div>12345</div>
+<div>a aa</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-nesting-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-nesting-001-ref.html
new file mode 100644
index 00000000000..3d003f3621b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-nesting-001-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-family: monospace;
+ font-size: 3em;
+}
+</style>
+
+<p>Test passes if the rightmost character of the line that starts with “a” is under the number 5.
+<div>123456</div>
+<div>aa aa</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-nesting-002-ref.html b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-nesting-002-ref.html
new file mode 100644
index 00000000000..93eb6b0fcaa
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/letter-spacing/reference/letter-spacing-nesting-002-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS test reference</title>
+<link rel="author" title="Florian Rivoal" href="http://florian.rivoal.net/">
+<style>
+div {
+ font-family: monospace;
+ font-size: 3em;
+}
+</style>
+
+<p>Test passes if the rightmost character of the line that starts with “a” is under the number 3.
+<div>12345</div>
+<div>aaa</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html
new file mode 100644
index 00000000000..3ef61bc9eff
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/overflow-wrap/overflow-wrap-break-word-005.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text Test: overflow-wrap: break-word</title>
+<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-overflow-wrap-break-word">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#valdef-white-space-pre-wrap">
+<meta name="flags" content="ahem">
+<link rel="match" href="reference/overflow-wrap-break-word-001-ref.html">
+<meta name="assert" content="A Single leading white-space constitutes a soft breaking opportunity, honoring the 'white-space: pre-wrap' property, that must prevent the word to be broken.">
+<style>
+div {
+ position: relative;
+ font-size: 20px;
+ font-family: Ahem;
+}
+.fail {
+ position: absolute;
+ color: red;
+ z-index: -1;
+}
+span { color: green; }
+.test {
+ color: green;
+ line-height: 1em;
+ width: 5ch;
+
+ white-space: pre-wrap;
+ overflow-wrap: break-word;
+}
+</style>
+<body>
+ <p>Test passes if there is a <strong>filled green square</strong> and <strong>no red</strong>.</p>
+ <div class="fail">XXX<span>XX<br></span><span>XXXXX<br></span>XXXXX<br>XXXX<span>X<br></span><span>XXXXX</span></div>
+ <div class="test">XXX
+ XXXXXXXXX</div>
+</body>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ideographic-space-001-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ideographic-space-001-ref.html
new file mode 100644
index 00000000000..d62252f8c54
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ideographic-space-001-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS test reference</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
+
+<p>Test passes if the characters below are arranged in a square and if there is no red.
+<div>ああ<br>ああ</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ideographic-space-003-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ideographic-space-003-ref.html
new file mode 100644
index 00000000000..7c59b1f6f28
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ideographic-space-003-ref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS test reference</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
+<style>
+div { white-space: pre; }
+span { background: blue; }
+</style>
+
+<p>Test passes if the characters below are arranged in a square and if there is a blue rectangle at the end of the first line.
+<div>ああ<span>&#x3000;</span><br>ああ</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ideographic-space-004-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ideographic-space-004-ref.html
new file mode 100644
index 00000000000..a72e050031c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ideographic-space-004-ref.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS test reference</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
+<style>
+div { white-space: pre; }
+span { background: blue; }
+</style>
+
+<p>Test passes if the characters below are arranged in a square and if there is a blue rectangle at the end of the first line.
+<div>ああ<span>&#x3000;&#x3000; &#x3000; &#x3000;</span><br>ああ</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ideographic-space-alt-003-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ideographic-space-alt-003-ref.html
new file mode 100644
index 00000000000..9f579f29e0c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/trailing-ideographic-space-alt-003-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS test reference</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
+<style>
+div { white-space: pre; }
+span {
+ background: blue;
+
+ /* to make the span go under the right border */
+ z-index:-1;
+ position: relative;
+}
+aside {
+ display: inline-block;
+ width: 0.5em;
+ border-right: 1em white solid;
+}
+</style>
+
+<p>Test passes if the characters below are arranged in a square and if there is a blue rectangle at the end of the first line.
+<div>ああ<aside><span>&#x3000;</span></aside><br>ああ</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html b/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html
deleted file mode 100644
index 3837f7f62f4..00000000000
--- a/tests/wpt/web-platform-tests/css/css-text/white-space/reference/white-space-empty-text-sibling-ref.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<!DOCTYPE html>
-<p>There should be a space between "Two" and "words".</p>
-Two words
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ideographic-space-001.html b/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ideographic-space-001.html
new file mode 100644
index 00000000000..241ca11a065
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ideographic-space-001.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 3 Test: ideographic space at the end of line must be removed</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-2">
+<link rel="match" href="reference/trailing-ideographic-space-001-ref.html">
+<meta name="assert" content="An ideographic space (U+3000) at the end of the line must be removed.">
+<style>
+div { width: 2em; }
+span { background: red; } /* If the space hangs instead of being removed, there will be red */
+</style>
+
+<p>Test passes if the characters below are arranged in a square and if there is no red.
+<div>ああ<span>&#x3000;</span>ああ</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ideographic-space-002.html b/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ideographic-space-002.html
new file mode 100644
index 00000000000..8830da9643b
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ideographic-space-002.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 3 Test: sequence of spaces and ideographic spaces at the end of line must be removed</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-2">
+<link rel="match" href="reference/trailing-ideographic-space-001-ref.html">
+<meta name="assert" content="An sequence ideographic space (U+3000) and regular spaces at the end of the line must be removed.">
+<style>
+div { width: 2em; }
+span { background: red; } /* If the space hangs instead of being removed, there will be red */
+</style>
+
+<p>Test passes if the characters below are arranged in a square and if there is no red.
+<div>ああ<span>&#x3000;&#x3000; &#x3000; &#x3000;</span>ああ</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ideographic-space-003.html b/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ideographic-space-003.html
new file mode 100644
index 00000000000..f5ad8cb8717
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ideographic-space-003.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 3 Test: preserved ideographic space at the end of line must hang</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-2">
+<link rel="match" href="reference/trailing-ideographic-space-003-ref.html">
+<link rel="match" href="reference/trailing-ideographic-space-alt-003-ref.html">
+<meta name="assert" content="An ideographic space (U+3000) at the end of the line must hang if white-space preserves spaces.">
+<style>
+div {
+ width: 2.5em;
+ white-space: pre-wrap;
+}
+span { background: blue; } /* If the space is removed instead of hanging, there will be no blue box*/
+</style>
+
+<p>Test passes if the characters below are arranged in a square and if there is a blue rectangle at the end of the first line.
+<div>ああ<span>&#x3000;</span>ああ</div>
+
+<!--
+We're using a 2.5em width and two references, instead of 2em and just the first one,
+because in addition to requiring the spaces to hang,
+the spec allows, but does not require, browsers to visually collapse the advance widths of characters that overflow.
+In browsers that don't do that, the whole sequence of preserved spaces will be visible, and the first ref will be matched.
+In browsers that do, only the first 0.5em worth of space will be preserved, and the second ref will match.
+-->
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ideographic-space-004.html b/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ideographic-space-004.html
new file mode 100644
index 00000000000..af3187ae8d3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/trailing-ideographic-space-004.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 3 Test: preserved sequences of spaces and ideographic spaces at the end of line must hang</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-2">
+<link rel="match" href="reference/trailing-ideographic-space-004-ref.html">
+<link rel="match" href="reference/trailing-ideographic-space-alt-003-ref.html">
+<meta name="assert" content="An sequence ideographic space (U+3000) and regular spaces at the end of the line must hang if white-space preserves spaces.">
+<style>
+div {
+ width: 2.5em;
+ white-space: pre-wrap;
+}
+span { background: blue; } /* If the spaces are removed instead of hanging, there will be no blue box*/
+</style>
+
+<p>Test passes if the characters below are arranged in a square and if there is a blue rectangle at the end of the first line.
+<div>ああ<span>&#x3000;&#x3000; &#x3000; &#x3000;</span>ああ</div>
+
+<!--
+We're using a 2.5em width and two references, instead of 2em and just the first one,
+because in addition to requiring the spaces to hang,
+the spec allows, but does not require, browsers to visually collapse the advance widths of characters that overflow.
+In browsers that don't do that, the whole space will be visible, and the first ref will be matched.
+In browsers that do, only the first 0.5em worth of space will be preserved, and the second ref will match.
+-->
diff --git a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-empty-text-sibling.html b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-empty-text-sibling.html
index 56a5cad875d..50439df433c 100644
--- a/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-empty-text-sibling.html
+++ b/tests/wpt/web-platform-tests/css/css-text/white-space/white-space-empty-text-sibling.html
@@ -1,11 +1,11 @@
<!DOCTYPE html>
<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-rules">
-<link rel="match" href="reference/white-space-empty-text-sibling-ref.html">
-<p>There should be a space between "Two" and "words".</p>
+<link rel="match" href="../../reference/pass_if_two_words.html">
+<p>There should be a space between "two" and "words" below.</p>
<div id="block"> <span>words</span></div>
<script>
block.insertBefore(document.createTextNode(""), block.firstChild);
block.insertBefore(document.createTextNode(""), block.firstChild);
block.offsetTop;
- block.firstChild.data = "Two";
+ block.firstChild.data = "two";
</script>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-020-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-020-ref.html
new file mode 100644
index 00000000000..635bd024bf4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-break-all-020-ref.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS test reference</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
+<style>
+div {
+ border: 5px solid;
+ width: 2em;
+}
+
+div::nth-of-type(1) { border-color: blue; }
+div::nth-of-type(2) { border-color: green; }
+div::nth-of-type(3) { border-color: orange; }
+
+</style>
+
+<p>Test passes if the text in each of the following 3 boxes is broken into separate lines at the same points.
+
+<div lang=ja>あ<br>い)<br>あ<br>(い</div>
+<div lang=ja>あ<br>い)<br>あ<br>(い</div>
+<div lang=ja>あ<br>い)<br>あ<br>(い</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-keep-all-005-ref.html b/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-keep-all-005-ref.html
new file mode 100644
index 00000000000..2a33ce75e23
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-break/reference/word-break-keep-all-005-ref.html
@@ -0,0 +1,7 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>CSS-Text reference file</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+
+<p>This test passes if the four characters below are arranged in a two-by-two square.
+<div>字字<br>字字</div>
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-020.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-020.html
new file mode 100644
index 00000000000..6c86749263a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-break-all-020.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Text level 3 Test: break-all and punctuation</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net/">
+<link rel="help" href="https://drafts.csswg.org/css-text-3/#word-break-property">
+<link rel="match" href="reference/word-break-break-all-020-ref.html">
+<meta name="assert" content="work-break:break-all does not affect rules governing the soft wrap opportunities created by punctuation.">
+<style>
+div {
+ border: 5px solid;
+ width: 2em;
+}
+
+div::nth-of-type(1) { border-color: blue; }
+div::nth-of-type(2) { border-color: green; }
+div::nth-of-type(3) { border-color: orange; }
+
+div::nth-of-type(3) { word-break: break-word; }
+</style>
+
+<p>Test passes if the text in each of the following 3 boxes is broken into separate lines at the same points.
+<div lang=ja>あい)あ(い</div>
+<div lang=ja>あ<br>い)<br>あ<br>(い</div>
+<div lang=ja>あい)あ(い</div>
+
+<!--
+If the first box (blue) is wrong,
+customary rules for line breaking japanese are not implemented (or not correctly).
+
+If the third box (orange) is wrong,
+customary rules for line breaking japanese are discarded
+when applying 'word-break: break-all', which is a spec violation.
+-->
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-005.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-005.html
new file mode 100644
index 00000000000..4bb523ab7ca
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-005.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>CSS-Text test: word-break keep-all does not affect U+3000</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+<meta name=flags content="">
+<meta name=assert content="U+3000, despite being called Ideographic Space, does not belong to the ID line breaking class, or any other class whose wrapping opportunities are suppressed by word-break:keep-all. A break after it should still be allowed.">
+<link rel="match" href="reference/word-break-keep-all-005-ref.html">
+<link rel=help href="https://drafts.csswg.org/css-text-3/#valdef-word-break-keep-all">
+<style>
+div {
+ width: 4em;
+ word-break: keep-all;
+}
+</style>
+
+<p>This test passes if the four characters below are arranged in a two-by-two square.
+<div lang=ja>字字 字字</div>
+<!--
+If keep-all has no effect at all, breaks are allowed everywhere,
+and the result will be:
+ 字字 字
+ 字
+
+If keep-all correctly suppresses wrapping opportunities between CJK ideographs
+but also incorrectly suppresses the wrapping opportunity after U+3000,
+no wrapping is possible, and the result will be:
+ 字字 字字
+-->
diff --git a/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-006.html b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-006.html
new file mode 100644
index 00000000000..8845ea21edd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-text/word-break/word-break-keep-all-006.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>CSS-Text test: word-break keep-all does not affect punctuation</title>
+<link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net">
+<meta name=flags content="">
+<meta name=assert content="word-break:keep-all does not affect rules governing the soft wrap opportunities created by punctuation">
+<link rel="match" href="reference/word-break-keep-all-005-ref.html">
+<link rel=help href="https://drafts.csswg.org/css-text-3/#propdef-word-break">
+<style>
+div {
+ width: 4em;
+ word-break: keep-all;
+}
+span { color: transparent }
+</style>
+
+<p>This test passes if the four characters below are arranged in a two-by-two square.
+<div lang=ja>字字<span>、</span>字字</div>
+<!--
+U+3001 : IDEOGRAPHIC COMMA is made transparent for visual simplicity,
+the change in color has no effect on layout.
+
+If keep-all has no effect at all, breaks are allowed everywhere
+(except before U+3001, but this has no incidence in this case)
+and the result will be:
+ 字字、字
+ 字
+
+If keep-all correctly suppresses wrapping opportunities between CJK ideographs
+but also incorrectly suppresses the wrapping opportunity after U+3001,
+no wrapping is possible, and the result will be:
+ 字字、字字
+-->
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-ref.html b/tests/wpt/web-platform-tests/css/reference/pass_if_two_words.html
index 4a2285400c9..e33eea5e6ea 100644
--- a/tests/wpt/web-platform-tests/css/css-flexbox/anonymous-flex-item-ref.html
+++ b/tests/wpt/web-platform-tests/css/reference/pass_if_two_words.html
@@ -1,6 +1,5 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Reftest Reference</title>
-<link rel="author" title="Rune Lillesveen" href="mailto:futhark@chromium.org">
<p>There should be a space between "two" and "words" below.</p>
two words
diff --git a/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.js b/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.js
new file mode 100644
index 00000000000..3dff403b9c6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/no_window_open_when_term_nesting_level_nonzero.window.js
@@ -0,0 +1,113 @@
+test(function() {
+ var test_window = window.open('', '', 'height=1,width=1');
+ var test_document = test_window.document;
+
+ var frame = test_document.createElement('iframe');
+ test_document.body.appendChild(frame);
+
+ frame.contentWindow.onpagehide = function(evt) {
+ assert_equals(frame.contentWindow.open('', '', 'height=1,width=1'), null,
+ "expected no popup during pagehide");
+ };
+ frame.contentDocument.onvisibilitychange = function(evt) {
+ assert_equals(frame.contentWindow.open('', '', 'height=1,width=1'), null,
+ "expected no popup during visibilitychange");
+ };
+ frame.contentWindow.onbeforeunload = function(evt) {
+ assert_equals(frame.contentWindow.open('', '', 'height=1,width=1'), null,
+ "expected no popup during beforeunload");
+ };
+ frame.contentWindow.onunload = function(evt) {
+ assert_equals(frame.contentWindow.open('', '', 'height=1,width=1'), null,
+ "expected no popup during unload");
+ };
+
+ frame.remove();
+}, 'no popups with frame removal');
+
+async_test(function(t) {
+ var test_window = window.open('', '', 'height=1,width=1');
+ var test_document = test_window.document;
+
+ var frame = test_document.createElement('iframe');
+ test_document.body.appendChild(frame);
+
+ frame.contentWindow.onpagehide = t.step_func(function(evt) {
+ assert_equals(frame.contentWindow.open('', '', 'height=1,width=1'), null,
+ "expected no popup during pagehide");
+ });
+ frame.contentDocument.onvisibilitychange = t.step_func(function(evt) {
+ assert_equals(frame.contentWindow.open('', '', 'height=1,width=1'), null,
+ "expected no popup during visibilitychange");
+ });
+ frame.contentWindow.onbeforeunload = t.step_func(function(evt) {
+ assert_equals(frame.contentWindow.open('', '', 'height=1,width=1'), null,
+ "expected no popup during beforeunload");
+ });
+ frame.contentWindow.onunload = t.step_func(function(evt) {
+ assert_equals(frame.contentWindow.open('', '', 'height=1,width=1'), null,
+ "expected no popup during unload");
+ });
+
+ frame.onload = t.step_func_done();
+
+ frame.contentWindow.location.href = "about:blank";
+}, 'no popups with frame navigation');
+
+async_test(function(t) {
+ var test_window = window.open('', '', 'height=1,width=1');
+ var test_document = test_window.document;
+
+ var frame = test_document.createElement('iframe');
+ test_document.body.appendChild(frame);
+
+ frame.contentWindow.onpagehide = t.step_func(function(evt) {
+ assert_equals(test_window.open('', '', 'height=1,width=1'), null,
+ "expected no popup during pagehide");
+ });
+ frame.contentDocument.onvisibilitychange = t.step_func(function(evt) {
+ assert_equals(test_window.open('', '', 'height=1,width=1'), null,
+ "expected no popup during visibilitychange");
+ });
+ frame.contentWindow.onbeforeunload = t.step_func(function(evt) {
+ assert_equals(test_window.open('', '', 'height=1,width=1'), null,
+ "expected no popup during beforeunload");
+ });
+ frame.contentWindow.onunload = t.step_func(function(evt) {
+ assert_equals(test_window.open('', '', 'height=1,width=1'), null,
+ "expected no popup during unload");
+ });
+
+ frame.onload = t.step_func_done();
+
+ frame.contentWindow.location.href = "about:blank";
+}, 'no popups from synchronously reachable window');
+
+async_test(function(t) {
+ var test_window = window.open('', '', 'height=1,width=1');
+ var test_document = test_window.document;
+
+ var frame = test_document.createElement('iframe');
+ test_document.body.appendChild(frame);
+
+ frame.contentWindow.onpagehide = t.step_func(function(evt) {
+ assert_equals(window.open('', '', 'height=1,width=1'), null,
+ "expected no popup during pagehide");
+ });
+ frame.contentDocument.onvisibilitychange = t.step_func(function(evt) {
+ assert_equals(window.open('', '', 'height=1,width=1'), null,
+ "expected no popup during visibilitychange");
+ });
+ frame.contentWindow.onbeforeunload = t.step_func(function(evt) {
+ assert_equals(window.open('', '', 'height=1,width=1'), null,
+ "expected no popup during beforeunload");
+ });
+ frame.contentWindow.onunload = t.step_func(function(evt) {
+ assert_equals(window.open('', '', 'height=1,width=1'), null,
+ "expected no popup during unload");
+ });
+
+ frame.onload = t.step_func_done();
+
+ frame.contentWindow.location.href = "about:blank";
+}, 'no popups from another synchronously reachable window');
diff --git a/tests/wpt/web-platform-tests/html/dom/elements/the-innertext-idl-attribute/getter-tests.js b/tests/wpt/web-platform-tests/html/dom/elements/the-innertext-idl-attribute/getter-tests.js
index 4dd2b6be206..6e663ba9431 100644
--- a/tests/wpt/web-platform-tests/html/dom/elements/the-innertext-idl-attribute/getter-tests.js
+++ b/tests/wpt/web-platform-tests/html/dom/elements/the-innertext-idl-attribute/getter-tests.js
@@ -251,6 +251,8 @@ testText("<div><table style='border-collapse:collapse'><tr><td>abc<td>def</table
testText("<div><table><tfoot>x</tfoot><tbody>y</tbody></table>", "xy", "tfoot not reordered");
testText("<table><tfoot><tr><td>footer</tfoot><thead><tr><td style='visibility:collapse'>thead</thead><tbody><tr><td>tbody</tbody></table>",
"footer\n\ntbody", "");
+testText("<table><tr><td id=target>abc</td><td>def</td>", "abc", "No tab on table-cell itself");
+testText("<table><tr id=target><td>abc</td><td>def</td></tr><tr id=target><td>ghi</td><td>jkl</td></tr>", "abc\tdef", "No newline on table-row itself");
/**** Table captions ****/
diff --git a/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-destroy-script-execution.html b/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-destroy-script-execution.html
new file mode 100644
index 00000000000..1710d238b6e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-destroy-script-execution.html
@@ -0,0 +1,47 @@
+<!doctype html>
+<meta charset="utf-8">
+<html>
+<title>MediaRecorder destroy script execution context</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+<iframe src="support/MediaRecorder-iframe.html" id="subFrame-stop" name="subFrameStop"></iframe>
+<iframe src="support/MediaRecorder-iframe.html" id="subFrame-allTrackEnded" name="subFrameAllTrackEnded"></iframe>
+<script>
+ var iframeForCallingStop = document.getElementById('subFrame-stop');
+ var iframeForAllTrackEnded = document.getElementById('subFrame-allTrackEnded');
+
+ var testForCallingStop = async_test('MediaRecorder will not fire the stop event when stop() is called and the script execution context is going away');
+ var testForAllTrackEnded = async_test('MediaRecorder will not fire the stop event when all tracks are ended and the script execution context is going away');
+
+ iframeForCallingStop.onload = function(e) {
+ subFrameStop.window.prepareForTest();
+ const recorder = subFrameStop.window.recorder;
+ recorder.ondataavailable = testForCallingStop.step_func(blobEvent => {
+ iframeForCallingStop.remove();
+ testForCallingStop.step_timeout(testForCallingStop.step_func_done(), 0);
+ });
+ recorder.onstop = testForCallingStop.unreached_func('Unexpected stop event');
+ recorder.start();
+ assert_equals(recorder.state, 'recording', 'MediaRecorder has been started successfully');
+ subFrameStop.window.drawSomethingOnCanvas();
+ recorder.stop();
+ };
+
+ iframeForAllTrackEnded.onload = function(e) {
+ subFrameAllTrackEnded.window.prepareForTest();
+ const recorder = subFrameAllTrackEnded.window.recorder;
+ recorder.ondataavailable = testForAllTrackEnded.step_func(blobEvent => {
+ iframeForAllTrackEnded.remove();
+ testForAllTrackEnded.step_timeout(testForAllTrackEnded.step_func_done(), 0);
+ });
+ recorder.onstop = testForAllTrackEnded.unreached_func('Unexpected stop event');
+ recorder.start();
+ assert_equals(recorder.state, 'recording', 'MediaRecorder has been started successfully');
+ subFrameAllTrackEnded.window.drawSomethingOnCanvas();
+ subFrameAllTrackEnded.window.video.getVideoTracks()[0].stop();
+ };
+
+</script>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-stop.html b/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-stop.html
new file mode 100644
index 00000000000..8e05fc5491d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mediacapture-record/MediaRecorder-stop.html
@@ -0,0 +1,50 @@
+<!doctype html>
+<html>
+<head>
+ <title>MediaRecorder Stop</title>
+ <link rel="help" href="https://w3c.github.io/mediacapture-record/MediaRecorder.html#mediarecorder">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+<canvas id="canvas" width="200" height="200">
+</canvas>
+<script>
+ function createVideoStream() {
+ let canvas = document.getElementById("canvas");
+ canvas.getContext('2d');
+ return canvas.captureStream();
+ }
+
+ async_test(t => {
+ let video = createVideoStream();
+ let recorder = new MediaRecorder(video);
+ recorder.onstop = t.step_func(errorEvent => {
+ assert_equals(errorEvent.type, 'stop', 'the error type should be stop');
+ assert_true(errorEvent.isTrusted, 'isTrusted should be true when the event is created by C++');
+ assert_equals(recorder.state, "inactive", "MediaRecorder has been stopped when all tracks are ended");
+ t.done();
+ });
+ assert_equals(video.getVideoTracks().length, 1, "video mediastream starts with one track");
+ recorder.start();
+ assert_equals(recorder.state, "recording", "MediaRecorder has been started successfully");
+ video.getVideoTracks()[0].stop();
+ }, "MediaRecorder will stop recording and fire a stop event when all tracks are ended");
+
+ async_test(t => {
+ let video = createVideoStream();
+ let recorder = new MediaRecorder(video);
+ recorder.onstop = t.step_func(errorEvent => {
+ assert_equals(errorEvent.type, 'stop', 'the error type should be stop');
+ assert_true(errorEvent.isTrusted, 'isTrusted should be true when the event is created by C++');
+ assert_equals(recorder.state, "inactive", "MediaRecorder has been stopped when stop() is called");
+ t.done();
+ });
+ recorder.start();
+ assert_equals(recorder.state, "recording", "MediaRecorder has been started successfully");
+ recorder.stop();
+ assert_equals(recorder.state, "recording", "State should remain the same until stop event is fired");
+ }, "MediaRecorder will stop recording and fire a stop event when stop() is called");
+</script>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/mediacapture-record/support/MediaRecorder-iframe.html b/tests/wpt/web-platform-tests/mediacapture-record/support/MediaRecorder-iframe.html
new file mode 100644
index 00000000000..6e70acf4862
--- /dev/null
+++ b/tests/wpt/web-platform-tests/mediacapture-record/support/MediaRecorder-iframe.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<title>Start a MediaRecorder</title>
+<html>
+<body>
+<canvas id="canvas" width="200px" height="200px"></canvas>
+<script>
+ var context;
+ var recorder;
+ var video;
+
+ function createVideoStream() {
+ const canvas = document.getElementById("canvas");
+ context = canvas.getContext('2d');
+ return canvas.captureStream();
+ }
+
+ function drawSomethingOnCanvas() {
+ context.fillStyle = "red";
+ context.fillRect(0, 0, 10, 10);
+ }
+
+ function prepareForTest() {
+ video = createVideoStream();
+ recorder = new MediaRecorder(video);
+ }
+</script>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/wpt/web-platform-tests/payment-request/payment-request-canmakepayment-method-protection.https.html b/tests/wpt/web-platform-tests/payment-request/payment-request-canmakepayment-method-protection.https.html
new file mode 100644
index 00000000000..b0582d520d3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/payment-request/payment-request-canmakepayment-method-protection.https.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Tests for PaymentRequest.canMakePayment() method</title>
+<link rel="help" href="https://w3c.github.io/browser-payment-api/#show-method">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src='/resources/testdriver-vendor.js'></script>
+<script src="/resources/testdriver.js"></script>
+<script>
+const basicCard = Object.freeze({ supportedMethods: "basic-card" });
+const applePay = Object.freeze({ supportedMethods: "https://apple.com/apple-pay" });
+const defaultMethods = Object.freeze([basicCard, applePay]);
+const defaultDetails = Object.freeze({
+ total: {
+ label: "Total",
+ amount: {
+ currency: "USD",
+ value: "1.00",
+ },
+ },
+});
+
+promise_test(async t => {
+ // This test might never actually hit its assertion, but that's allowed.
+ const request = new PaymentRequest(defaultMethods, defaultDetails);
+ for (let i = 0; i < 1000; i++) {
+ try {
+ await request.canMakePayment();
+ } catch (err) {
+ assert_equals(
+ err.name,
+ "NotAllowedError",
+ "if it throws, then it must be a NotAllowedError."
+ );
+ break;
+ }
+ }
+ for (let i = 0; i < 1000; i++) {
+ try {
+ await new PaymentRequest(defaultMethods, defaultDetails).canMakePayment();
+ } catch (err) {
+ assert_equals(
+ err.name,
+ "NotAllowedError",
+ "if it throws, then it must be a NotAllowedError."
+ );
+ break;
+ }
+ }
+}, `Optionally, at the user agent's discretion, return a promise rejected with a "NotAllowedError" DOMException.`);
+</script>
+
+<small>
+ If you find a buggy test, please <a href="https://github.com/web-platform-tests/wpt/issues">file a bug</a>
+ and tag one of the <a href="https://github.com/web-platform-tests/wpt/blob/master/payment-request/META.yml">suggested reviewers</a>.
+</small>
diff --git a/tests/wpt/web-platform-tests/payment-request/payment-request-canmakepayment-method.https.html b/tests/wpt/web-platform-tests/payment-request/payment-request-canmakepayment-method.https.html
index 2943c2da688..03a9c19fb8f 100644
--- a/tests/wpt/web-platform-tests/payment-request/payment-request-canmakepayment-method.https.html
+++ b/tests/wpt/web-platform-tests/payment-request/payment-request-canmakepayment-method.https.html
@@ -22,6 +22,56 @@ const defaultDetails = Object.freeze({
promise_test(async t => {
const request = new PaymentRequest(defaultMethods, defaultDetails);
+ assert_true(await request.canMakePayment(), "one of the methods should be supported");
+}, `If payment method identifier and serialized parts are supported, resolve promise with true.`);
+
+promise_test(async t => {
+ const request = new PaymentRequest(defaultMethods, defaultDetails);
+ const acceptPromise = test_driver.bless("show payment request", () => {
+ request.show() // Sets state to "interactive"
+ });
+ const canMakePaymentPromise = request.canMakePayment();
+ try {
+ const result = await canMakePaymentPromise;
+ assert_true(
+ false,
+ `canMakePaymentPromise should have thrown InvalidStateError`
+ );
+ } catch (err) {
+ await promise_rejects(t, "InvalidStateError", canMakePaymentPromise);
+ } finally {
+ await request.abort();
+ await promise_rejects(t, "AbortError", acceptPromise);
+ }
+ // The state should be "closed"
+ await promise_rejects(t, "InvalidStateError", request.canMakePayment());
+}, 'If request.[[state]] is "interactive", then return a promise rejected with an "InvalidStateError" DOMException.');
+
+promise_test(async t => {
+ const request = new PaymentRequest(defaultMethods, defaultDetails);
+ const acceptPromise = test_driver.bless("show payment request", () => {
+ request.show() // Sets state to "interactive"
+ });
+ acceptPromise.catch(() => {}); // no-op, just to silence unhandled rejection in devtools.
+ await request.abort(); // The state is now "closed"
+ await promise_rejects(t, "InvalidStateError", request.canMakePayment());
+ try {
+ const result = await request.canMakePayment();
+ assert_true(
+ false,
+ `should have thrown InvalidStateError, but instead returned "${result}"`
+ );
+ } catch (err) {
+ assert_equals(
+ err.name,
+ "InvalidStateError",
+ "must be an InvalidStateError."
+ );
+ }
+}, 'If request.[[state]] is "closed", then return a promise rejected with an "InvalidStateError" DOMException.');
+
+promise_test(async t => {
+ const request = new PaymentRequest(defaultMethods, defaultDetails);
try {
assert_true(
await request.canMakePayment(),
@@ -41,11 +91,6 @@ promise_test(async t => {
}, `If request.[[state]] is "created", then return a promise that resolves to true for known method.`);
promise_test(async t => {
- const request = new PaymentRequest(defaultMethods, defaultDetails);
- assert_true(await request.canMakePayment(), "one of the methods should be supported");
-}, `If payment method identifier and serialized parts are supported, resolve promise with true.`);
-
-promise_test(async t => {
const unsupportedMethods = [
"this-is-not-supported",
"https://not.supported",
@@ -92,81 +137,6 @@ promise_test(async t => {
}
}
}, `If payment method identifier is unknown, resolve promise with false.`);
-
-promise_test(async t => {
- // This test might never actually hit its assertion, but that's allowed.
- const request = new PaymentRequest(defaultMethods, defaultDetails);
- for (let i = 0; i < 1000; i++) {
- try {
- await request.canMakePayment();
- } catch (err) {
- assert_equals(
- err.name,
- "NotAllowedError",
- "if it throws, then it must be a NotAllowedError."
- );
- break;
- }
- }
- for (let i = 0; i < 1000; i++) {
- try {
- await new PaymentRequest(defaultMethods, defaultDetails).canMakePayment();
- } catch (err) {
- assert_equals(
- err.name,
- "NotAllowedError",
- "if it throws, then it must be a NotAllowedError."
- );
- break;
- }
- }
-}, `Optionally, at the user agent's discretion, return a promise rejected with a "NotAllowedError" DOMException.`);
-
-promise_test(async t => {
- const request = new PaymentRequest(defaultMethods, defaultDetails);
- const acceptPromise = test_driver.bless("show payment request", () => {
- request.show() // Sets state to "interactive"
- });
- const canMakePaymentPromise = request.canMakePayment();
- try {
- const result = await canMakePaymentPromise;
- assert_true(
- false,
- `canMakePaymentPromise should have thrown InvalidStateError`
- );
- } catch (err) {
- await promise_rejects(t, "InvalidStateError", canMakePaymentPromise);
- } finally {
- await request.abort();
- await promise_rejects(t, "AbortError", acceptPromise);
- }
- // The state should be "closed"
- await promise_rejects(t, "InvalidStateError", request.canMakePayment());
-}, 'If request.[[state]] is "interactive", then return a promise rejected with an "InvalidStateError" DOMException.');
-
-promise_test(async t => {
- const request = new PaymentRequest(defaultMethods, defaultDetails);
- const acceptPromise = test_driver.bless("show payment request", () => {
- request.show() // Sets state to "interactive"
- });
- acceptPromise.catch(() => {}); // no-op, just to silence unhandled rejection in devtools.
- await request.abort(); // The state is now "closed"
- await promise_rejects(t, "InvalidStateError", request.canMakePayment());
- try {
- const result = await request.canMakePayment();
- assert_true(
- false,
- `should have thrown InvalidStateError, but instead returned "${result}"`
- );
- } catch (err) {
- assert_equals(
- err.name,
- "InvalidStateError",
- "must be an InvalidStateError."
- );
- }
-}, 'If request.[[state]] is "closed", then return a promise rejected with an "InvalidStateError" DOMException.');
-
</script>
<small>
diff --git a/tests/wpt/web-platform-tests/resources/chromium/device.mojom.js b/tests/wpt/web-platform-tests/resources/chromium/device.mojom.js
index 435fc1fc7ad..495971c2319 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/device.mojom.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/device.mojom.js
@@ -23,6 +23,12 @@
mojo.internal.loadMojomIfNecessary(
'mojo/public/mojom/base/string16.mojom', '../../../../mojo/public/mojom/base/string16.mojom.js');
}
+ var url$ =
+ mojo.internal.exposeNamespace('url.mojom');
+ if (mojo.config.autoLoadMojomDeps) {
+ mojo.internal.loadMojomIfNecessary(
+ 'url/mojom/url.mojom', '../../../../url/mojom/url.mojom.js');
+ }
var UsbOpenDeviceError = {};
@@ -518,6 +524,7 @@
this.manufacturerName = null;
this.productName = null;
this.serialNumber = null;
+ this.webusbLandingPage = null;
this.configurations = null;
};
UsbDeviceInfo.prototype.initFields_ = function(fields) {
@@ -534,7 +541,7 @@
return err;
var kVersionSizes = [
- {version: 0, numBytes: 64}
+ {version: 0, numBytes: 72}
];
err = messageValidator.validateStructVersion(offset, kVersionSizes);
if (err !== validator.validationError.NONE)
@@ -576,16 +583,22 @@
return err;
+ // validate UsbDeviceInfo.webusbLandingPage
+ err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 48, url$.Url, true);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+
// validate UsbDeviceInfo.configurations
- err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 48, 8, new codec.PointerTo(UsbConfigurationInfo), false, [0], 0);
+ err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 56, 8, new codec.PointerTo(UsbConfigurationInfo), false, [0], 0);
if (err !== validator.validationError.NONE)
return err;
return validator.validationError.NONE;
};
- UsbDeviceInfo.encodedSize = codec.kStructHeaderSize + 56;
+ UsbDeviceInfo.encodedSize = codec.kStructHeaderSize + 64;
UsbDeviceInfo.decode = function(decoder) {
var packed;
@@ -610,6 +623,7 @@
val.manufacturerName = decoder.decodeStructPointer(string16$.String16);
val.productName = decoder.decodeStructPointer(string16$.String16);
val.serialNumber = decoder.decodeStructPointer(string16$.String16);
+ val.webusbLandingPage = decoder.decodeStructPointer(url$.Url);
val.configurations = decoder.decodeArrayPointer(new codec.PointerTo(UsbConfigurationInfo));
return val;
};
@@ -636,6 +650,7 @@
encoder.encodeStructPointer(string16$.String16, val.manufacturerName);
encoder.encodeStructPointer(string16$.String16, val.productName);
encoder.encodeStructPointer(string16$.String16, val.serialNumber);
+ encoder.encodeStructPointer(url$.Url, val.webusbLandingPage);
encoder.encodeArrayPointer(new codec.PointerTo(UsbConfigurationInfo), val.configurations);
};
function UsbControlTransferParams(values) {
@@ -2578,6 +2593,98 @@
encoder.writeUint32(0);
encoder.encodeArrayPointer(new codec.PointerTo(UsbIsochronousPacket), val.packets);
};
+ function UsbDeviceClient_OnDeviceOpened_Params(values) {
+ this.initDefaults_();
+ this.initFields_(values);
+ }
+
+
+ UsbDeviceClient_OnDeviceOpened_Params.prototype.initDefaults_ = function() {
+ };
+ UsbDeviceClient_OnDeviceOpened_Params.prototype.initFields_ = function(fields) {
+ for(var field in fields) {
+ if (this.hasOwnProperty(field))
+ this[field] = fields[field];
+ }
+ };
+
+ UsbDeviceClient_OnDeviceOpened_Params.validate = function(messageValidator, offset) {
+ var err;
+ err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+ var kVersionSizes = [
+ {version: 0, numBytes: 8}
+ ];
+ err = messageValidator.validateStructVersion(offset, kVersionSizes);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+ return validator.validationError.NONE;
+ };
+
+ UsbDeviceClient_OnDeviceOpened_Params.encodedSize = codec.kStructHeaderSize + 0;
+
+ UsbDeviceClient_OnDeviceOpened_Params.decode = function(decoder) {
+ var packed;
+ var val = new UsbDeviceClient_OnDeviceOpened_Params();
+ var numberOfBytes = decoder.readUint32();
+ var version = decoder.readUint32();
+ return val;
+ };
+
+ UsbDeviceClient_OnDeviceOpened_Params.encode = function(encoder, val) {
+ var packed;
+ encoder.writeUint32(UsbDeviceClient_OnDeviceOpened_Params.encodedSize);
+ encoder.writeUint32(0);
+ };
+ function UsbDeviceClient_OnDeviceClosed_Params(values) {
+ this.initDefaults_();
+ this.initFields_(values);
+ }
+
+
+ UsbDeviceClient_OnDeviceClosed_Params.prototype.initDefaults_ = function() {
+ };
+ UsbDeviceClient_OnDeviceClosed_Params.prototype.initFields_ = function(fields) {
+ for(var field in fields) {
+ if (this.hasOwnProperty(field))
+ this[field] = fields[field];
+ }
+ };
+
+ UsbDeviceClient_OnDeviceClosed_Params.validate = function(messageValidator, offset) {
+ var err;
+ err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+ var kVersionSizes = [
+ {version: 0, numBytes: 8}
+ ];
+ err = messageValidator.validateStructVersion(offset, kVersionSizes);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+ return validator.validationError.NONE;
+ };
+
+ UsbDeviceClient_OnDeviceClosed_Params.encodedSize = codec.kStructHeaderSize + 0;
+
+ UsbDeviceClient_OnDeviceClosed_Params.decode = function(decoder) {
+ var packed;
+ var val = new UsbDeviceClient_OnDeviceClosed_Params();
+ var numberOfBytes = decoder.readUint32();
+ var version = decoder.readUint32();
+ return val;
+ };
+
+ UsbDeviceClient_OnDeviceClosed_Params.encode = function(encoder, val) {
+ var packed;
+ encoder.writeUint32(UsbDeviceClient_OnDeviceClosed_Params.encodedSize);
+ encoder.writeUint32(0);
+ };
var kUsbDevice_Open_Name = 0;
var kUsbDevice_Close_Name = 1;
var kUsbDevice_SetConfiguration_Name = 2;
@@ -2617,13 +2724,13 @@
};
UsbDeviceProxy.prototype.open = function() {
- var params = new UsbDevice_Open_Params();
+ var params_ = new UsbDevice_Open_Params();
return new Promise(function(resolve, reject) {
var builder = new codec.MessageV1Builder(
kUsbDevice_Open_Name,
codec.align(UsbDevice_Open_Params.encodedSize),
codec.kMessageExpectsResponse, 0);
- builder.encodeStruct(UsbDevice_Open_Params, params);
+ builder.encodeStruct(UsbDevice_Open_Params, params_);
var message = builder.finish();
this.receiver_.acceptAndExpectResponse(message).then(function(message) {
var reader = new codec.MessageReader(message);
@@ -2641,13 +2748,13 @@
};
UsbDeviceProxy.prototype.close = function() {
- var params = new UsbDevice_Close_Params();
+ var params_ = new UsbDevice_Close_Params();
return new Promise(function(resolve, reject) {
var builder = new codec.MessageV1Builder(
kUsbDevice_Close_Name,
codec.align(UsbDevice_Close_Params.encodedSize),
codec.kMessageExpectsResponse, 0);
- builder.encodeStruct(UsbDevice_Close_Params, params);
+ builder.encodeStruct(UsbDevice_Close_Params, params_);
var message = builder.finish();
this.receiver_.acceptAndExpectResponse(message).then(function(message) {
var reader = new codec.MessageReader(message);
@@ -2665,14 +2772,14 @@
};
UsbDeviceProxy.prototype.setConfiguration = function(value) {
- var params = new UsbDevice_SetConfiguration_Params();
- params.value = value;
+ var params_ = new UsbDevice_SetConfiguration_Params();
+ params_.value = value;
return new Promise(function(resolve, reject) {
var builder = new codec.MessageV1Builder(
kUsbDevice_SetConfiguration_Name,
codec.align(UsbDevice_SetConfiguration_Params.encodedSize),
codec.kMessageExpectsResponse, 0);
- builder.encodeStruct(UsbDevice_SetConfiguration_Params, params);
+ builder.encodeStruct(UsbDevice_SetConfiguration_Params, params_);
var message = builder.finish();
this.receiver_.acceptAndExpectResponse(message).then(function(message) {
var reader = new codec.MessageReader(message);
@@ -2690,14 +2797,14 @@
};
UsbDeviceProxy.prototype.claimInterface = function(interfaceNumber) {
- var params = new UsbDevice_ClaimInterface_Params();
- params.interfaceNumber = interfaceNumber;
+ var params_ = new UsbDevice_ClaimInterface_Params();
+ params_.interfaceNumber = interfaceNumber;
return new Promise(function(resolve, reject) {
var builder = new codec.MessageV1Builder(
kUsbDevice_ClaimInterface_Name,
codec.align(UsbDevice_ClaimInterface_Params.encodedSize),
codec.kMessageExpectsResponse, 0);
- builder.encodeStruct(UsbDevice_ClaimInterface_Params, params);
+ builder.encodeStruct(UsbDevice_ClaimInterface_Params, params_);
var message = builder.finish();
this.receiver_.acceptAndExpectResponse(message).then(function(message) {
var reader = new codec.MessageReader(message);
@@ -2715,14 +2822,14 @@
};
UsbDeviceProxy.prototype.releaseInterface = function(interfaceNumber) {
- var params = new UsbDevice_ReleaseInterface_Params();
- params.interfaceNumber = interfaceNumber;
+ var params_ = new UsbDevice_ReleaseInterface_Params();
+ params_.interfaceNumber = interfaceNumber;
return new Promise(function(resolve, reject) {
var builder = new codec.MessageV1Builder(
kUsbDevice_ReleaseInterface_Name,
codec.align(UsbDevice_ReleaseInterface_Params.encodedSize),
codec.kMessageExpectsResponse, 0);
- builder.encodeStruct(UsbDevice_ReleaseInterface_Params, params);
+ builder.encodeStruct(UsbDevice_ReleaseInterface_Params, params_);
var message = builder.finish();
this.receiver_.acceptAndExpectResponse(message).then(function(message) {
var reader = new codec.MessageReader(message);
@@ -2740,15 +2847,15 @@
};
UsbDeviceProxy.prototype.setInterfaceAlternateSetting = function(interfaceNumber, alternateSetting) {
- var params = new UsbDevice_SetInterfaceAlternateSetting_Params();
- params.interfaceNumber = interfaceNumber;
- params.alternateSetting = alternateSetting;
+ var params_ = new UsbDevice_SetInterfaceAlternateSetting_Params();
+ params_.interfaceNumber = interfaceNumber;
+ params_.alternateSetting = alternateSetting;
return new Promise(function(resolve, reject) {
var builder = new codec.MessageV1Builder(
kUsbDevice_SetInterfaceAlternateSetting_Name,
codec.align(UsbDevice_SetInterfaceAlternateSetting_Params.encodedSize),
codec.kMessageExpectsResponse, 0);
- builder.encodeStruct(UsbDevice_SetInterfaceAlternateSetting_Params, params);
+ builder.encodeStruct(UsbDevice_SetInterfaceAlternateSetting_Params, params_);
var message = builder.finish();
this.receiver_.acceptAndExpectResponse(message).then(function(message) {
var reader = new codec.MessageReader(message);
@@ -2766,13 +2873,13 @@
};
UsbDeviceProxy.prototype.reset = function() {
- var params = new UsbDevice_Reset_Params();
+ var params_ = new UsbDevice_Reset_Params();
return new Promise(function(resolve, reject) {
var builder = new codec.MessageV1Builder(
kUsbDevice_Reset_Name,
codec.align(UsbDevice_Reset_Params.encodedSize),
codec.kMessageExpectsResponse, 0);
- builder.encodeStruct(UsbDevice_Reset_Params, params);
+ builder.encodeStruct(UsbDevice_Reset_Params, params_);
var message = builder.finish();
this.receiver_.acceptAndExpectResponse(message).then(function(message) {
var reader = new codec.MessageReader(message);
@@ -2790,14 +2897,14 @@
};
UsbDeviceProxy.prototype.clearHalt = function(endpoint) {
- var params = new UsbDevice_ClearHalt_Params();
- params.endpoint = endpoint;
+ var params_ = new UsbDevice_ClearHalt_Params();
+ params_.endpoint = endpoint;
return new Promise(function(resolve, reject) {
var builder = new codec.MessageV1Builder(
kUsbDevice_ClearHalt_Name,
codec.align(UsbDevice_ClearHalt_Params.encodedSize),
codec.kMessageExpectsResponse, 0);
- builder.encodeStruct(UsbDevice_ClearHalt_Params, params);
+ builder.encodeStruct(UsbDevice_ClearHalt_Params, params_);
var message = builder.finish();
this.receiver_.acceptAndExpectResponse(message).then(function(message) {
var reader = new codec.MessageReader(message);
@@ -2815,16 +2922,16 @@
};
UsbDeviceProxy.prototype.controlTransferIn = function(params, length, timeout) {
- var params = new UsbDevice_ControlTransferIn_Params();
- params.params = params;
- params.length = length;
- params.timeout = timeout;
+ var params_ = new UsbDevice_ControlTransferIn_Params();
+ params_.params = params;
+ params_.length = length;
+ params_.timeout = timeout;
return new Promise(function(resolve, reject) {
var builder = new codec.MessageV1Builder(
kUsbDevice_ControlTransferIn_Name,
codec.align(UsbDevice_ControlTransferIn_Params.encodedSize),
codec.kMessageExpectsResponse, 0);
- builder.encodeStruct(UsbDevice_ControlTransferIn_Params, params);
+ builder.encodeStruct(UsbDevice_ControlTransferIn_Params, params_);
var message = builder.finish();
this.receiver_.acceptAndExpectResponse(message).then(function(message) {
var reader = new codec.MessageReader(message);
@@ -2842,16 +2949,16 @@
};
UsbDeviceProxy.prototype.controlTransferOut = function(params, data, timeout) {
- var params = new UsbDevice_ControlTransferOut_Params();
- params.params = params;
- params.data = data;
- params.timeout = timeout;
+ var params_ = new UsbDevice_ControlTransferOut_Params();
+ params_.params = params;
+ params_.data = data;
+ params_.timeout = timeout;
return new Promise(function(resolve, reject) {
var builder = new codec.MessageV1Builder(
kUsbDevice_ControlTransferOut_Name,
codec.align(UsbDevice_ControlTransferOut_Params.encodedSize),
codec.kMessageExpectsResponse, 0);
- builder.encodeStruct(UsbDevice_ControlTransferOut_Params, params);
+ builder.encodeStruct(UsbDevice_ControlTransferOut_Params, params_);
var message = builder.finish();
this.receiver_.acceptAndExpectResponse(message).then(function(message) {
var reader = new codec.MessageReader(message);
@@ -2869,16 +2976,16 @@
};
UsbDeviceProxy.prototype.genericTransferIn = function(endpointNumber, length, timeout) {
- var params = new UsbDevice_GenericTransferIn_Params();
- params.endpointNumber = endpointNumber;
- params.length = length;
- params.timeout = timeout;
+ var params_ = new UsbDevice_GenericTransferIn_Params();
+ params_.endpointNumber = endpointNumber;
+ params_.length = length;
+ params_.timeout = timeout;
return new Promise(function(resolve, reject) {
var builder = new codec.MessageV1Builder(
kUsbDevice_GenericTransferIn_Name,
codec.align(UsbDevice_GenericTransferIn_Params.encodedSize),
codec.kMessageExpectsResponse, 0);
- builder.encodeStruct(UsbDevice_GenericTransferIn_Params, params);
+ builder.encodeStruct(UsbDevice_GenericTransferIn_Params, params_);
var message = builder.finish();
this.receiver_.acceptAndExpectResponse(message).then(function(message) {
var reader = new codec.MessageReader(message);
@@ -2896,16 +3003,16 @@
};
UsbDeviceProxy.prototype.genericTransferOut = function(endpointNumber, data, timeout) {
- var params = new UsbDevice_GenericTransferOut_Params();
- params.endpointNumber = endpointNumber;
- params.data = data;
- params.timeout = timeout;
+ var params_ = new UsbDevice_GenericTransferOut_Params();
+ params_.endpointNumber = endpointNumber;
+ params_.data = data;
+ params_.timeout = timeout;
return new Promise(function(resolve, reject) {
var builder = new codec.MessageV1Builder(
kUsbDevice_GenericTransferOut_Name,
codec.align(UsbDevice_GenericTransferOut_Params.encodedSize),
codec.kMessageExpectsResponse, 0);
- builder.encodeStruct(UsbDevice_GenericTransferOut_Params, params);
+ builder.encodeStruct(UsbDevice_GenericTransferOut_Params, params_);
var message = builder.finish();
this.receiver_.acceptAndExpectResponse(message).then(function(message) {
var reader = new codec.MessageReader(message);
@@ -2923,16 +3030,16 @@
};
UsbDeviceProxy.prototype.isochronousTransferIn = function(endpointNumber, packetLengths, timeout) {
- var params = new UsbDevice_IsochronousTransferIn_Params();
- params.endpointNumber = endpointNumber;
- params.packetLengths = packetLengths;
- params.timeout = timeout;
+ var params_ = new UsbDevice_IsochronousTransferIn_Params();
+ params_.endpointNumber = endpointNumber;
+ params_.packetLengths = packetLengths;
+ params_.timeout = timeout;
return new Promise(function(resolve, reject) {
var builder = new codec.MessageV1Builder(
kUsbDevice_IsochronousTransferIn_Name,
codec.align(UsbDevice_IsochronousTransferIn_Params.encodedSize),
codec.kMessageExpectsResponse, 0);
- builder.encodeStruct(UsbDevice_IsochronousTransferIn_Params, params);
+ builder.encodeStruct(UsbDevice_IsochronousTransferIn_Params, params_);
var message = builder.finish();
this.receiver_.acceptAndExpectResponse(message).then(function(message) {
var reader = new codec.MessageReader(message);
@@ -2950,17 +3057,17 @@
};
UsbDeviceProxy.prototype.isochronousTransferOut = function(endpointNumber, data, packetLengths, timeout) {
- var params = new UsbDevice_IsochronousTransferOut_Params();
- params.endpointNumber = endpointNumber;
- params.data = data;
- params.packetLengths = packetLengths;
- params.timeout = timeout;
+ var params_ = new UsbDevice_IsochronousTransferOut_Params();
+ params_.endpointNumber = endpointNumber;
+ params_.data = data;
+ params_.packetLengths = packetLengths;
+ params_.timeout = timeout;
return new Promise(function(resolve, reject) {
var builder = new codec.MessageV1Builder(
kUsbDevice_IsochronousTransferOut_Name,
codec.align(UsbDevice_IsochronousTransferOut_Params.encodedSize),
codec.kMessageExpectsResponse, 0);
- builder.encodeStruct(UsbDevice_IsochronousTransferOut_Params, params);
+ builder.encodeStruct(UsbDevice_IsochronousTransferOut_Params, params_);
var message = builder.finish();
this.receiver_.acceptAndExpectResponse(message).then(function(message) {
var reader = new codec.MessageReader(message);
@@ -3405,6 +3512,124 @@
};
UsbDeviceStub.prototype.validator = validateUsbDeviceRequest;
UsbDeviceProxy.prototype.validator = validateUsbDeviceResponse;
+ var kUsbDeviceClient_OnDeviceOpened_Name = 0;
+ var kUsbDeviceClient_OnDeviceClosed_Name = 1;
+
+ function UsbDeviceClientPtr(handleOrPtrInfo) {
+ this.ptr = new bindings.InterfacePtrController(UsbDeviceClient,
+ handleOrPtrInfo);
+ }
+
+ function UsbDeviceClientAssociatedPtr(associatedInterfacePtrInfo) {
+ this.ptr = new associatedBindings.AssociatedInterfacePtrController(
+ UsbDeviceClient, associatedInterfacePtrInfo);
+ }
+
+ UsbDeviceClientAssociatedPtr.prototype =
+ Object.create(UsbDeviceClientPtr.prototype);
+ UsbDeviceClientAssociatedPtr.prototype.constructor =
+ UsbDeviceClientAssociatedPtr;
+
+ function UsbDeviceClientProxy(receiver) {
+ this.receiver_ = receiver;
+ }
+ UsbDeviceClientPtr.prototype.onDeviceOpened = function() {
+ return UsbDeviceClientProxy.prototype.onDeviceOpened
+ .apply(this.ptr.getProxy(), arguments);
+ };
+
+ UsbDeviceClientProxy.prototype.onDeviceOpened = function() {
+ var params_ = new UsbDeviceClient_OnDeviceOpened_Params();
+ var builder = new codec.MessageV0Builder(
+ kUsbDeviceClient_OnDeviceOpened_Name,
+ codec.align(UsbDeviceClient_OnDeviceOpened_Params.encodedSize));
+ builder.encodeStruct(UsbDeviceClient_OnDeviceOpened_Params, params_);
+ var message = builder.finish();
+ this.receiver_.accept(message);
+ };
+ UsbDeviceClientPtr.prototype.onDeviceClosed = function() {
+ return UsbDeviceClientProxy.prototype.onDeviceClosed
+ .apply(this.ptr.getProxy(), arguments);
+ };
+
+ UsbDeviceClientProxy.prototype.onDeviceClosed = function() {
+ var params_ = new UsbDeviceClient_OnDeviceClosed_Params();
+ var builder = new codec.MessageV0Builder(
+ kUsbDeviceClient_OnDeviceClosed_Name,
+ codec.align(UsbDeviceClient_OnDeviceClosed_Params.encodedSize));
+ builder.encodeStruct(UsbDeviceClient_OnDeviceClosed_Params, params_);
+ var message = builder.finish();
+ this.receiver_.accept(message);
+ };
+
+ function UsbDeviceClientStub(delegate) {
+ this.delegate_ = delegate;
+ }
+ UsbDeviceClientStub.prototype.onDeviceOpened = function() {
+ return this.delegate_ && this.delegate_.onDeviceOpened && this.delegate_.onDeviceOpened();
+ }
+ UsbDeviceClientStub.prototype.onDeviceClosed = function() {
+ return this.delegate_ && this.delegate_.onDeviceClosed && this.delegate_.onDeviceClosed();
+ }
+
+ UsbDeviceClientStub.prototype.accept = function(message) {
+ var reader = new codec.MessageReader(message);
+ switch (reader.messageName) {
+ case kUsbDeviceClient_OnDeviceOpened_Name:
+ var params = reader.decodeStruct(UsbDeviceClient_OnDeviceOpened_Params);
+ this.onDeviceOpened();
+ return true;
+ case kUsbDeviceClient_OnDeviceClosed_Name:
+ var params = reader.decodeStruct(UsbDeviceClient_OnDeviceClosed_Params);
+ this.onDeviceClosed();
+ return true;
+ default:
+ return false;
+ }
+ };
+
+ UsbDeviceClientStub.prototype.acceptWithResponder =
+ function(message, responder) {
+ var reader = new codec.MessageReader(message);
+ switch (reader.messageName) {
+ default:
+ return false;
+ }
+ };
+
+ function validateUsbDeviceClientRequest(messageValidator) {
+ var message = messageValidator.message;
+ var paramsClass = null;
+ switch (message.getName()) {
+ case kUsbDeviceClient_OnDeviceOpened_Name:
+ if (!message.expectsResponse() && !message.isResponse())
+ paramsClass = UsbDeviceClient_OnDeviceOpened_Params;
+ break;
+ case kUsbDeviceClient_OnDeviceClosed_Name:
+ if (!message.expectsResponse() && !message.isResponse())
+ paramsClass = UsbDeviceClient_OnDeviceClosed_Params;
+ break;
+ }
+ if (paramsClass === null)
+ return validator.validationError.NONE;
+ return paramsClass.validate(messageValidator, messageValidator.message.getHeaderNumBytes());
+ }
+
+ function validateUsbDeviceClientResponse(messageValidator) {
+ return validator.validationError.NONE;
+ }
+
+ var UsbDeviceClient = {
+ name: 'device.mojom.UsbDeviceClient',
+ kVersion: 0,
+ ptrClass: UsbDeviceClientPtr,
+ proxyClass: UsbDeviceClientProxy,
+ stubClass: UsbDeviceClientStub,
+ validateRequest: validateUsbDeviceClientRequest,
+ validateResponse: null,
+ };
+ UsbDeviceClientStub.prototype.validator = validateUsbDeviceClientRequest;
+ UsbDeviceClientProxy.prototype.validator = null;
exports.UsbOpenDeviceError = UsbOpenDeviceError;
exports.UsbTransferDirection = UsbTransferDirection;
exports.UsbControlTransferType = UsbControlTransferType;
@@ -3421,4 +3646,7 @@
exports.UsbDevice = UsbDevice;
exports.UsbDevicePtr = UsbDevicePtr;
exports.UsbDeviceAssociatedPtr = UsbDeviceAssociatedPtr;
+ exports.UsbDeviceClient = UsbDeviceClient;
+ exports.UsbDeviceClientPtr = UsbDeviceClientPtr;
+ exports.UsbDeviceClientAssociatedPtr = UsbDeviceClientAssociatedPtr;
})();
diff --git a/tests/wpt/web-platform-tests/resources/chromium/url.mojom.js b/tests/wpt/web-platform-tests/resources/chromium/url.mojom.js
new file mode 100644
index 00000000000..abe7d00e7f9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/resources/chromium/url.mojom.js
@@ -0,0 +1,79 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+'use strict';
+
+(function() {
+ var mojomId = 'url/mojom/url.mojom';
+ if (mojo.internal.isMojomLoaded(mojomId)) {
+ console.warn('The following mojom is loaded multiple times: ' + mojomId);
+ return;
+ }
+ mojo.internal.markMojomLoaded(mojomId);
+ var bindings = mojo;
+ var associatedBindings = mojo;
+ var codec = mojo.internal;
+ var validator = mojo.internal;
+
+ var exports = mojo.internal.exposeNamespace('url.mojom');
+
+
+
+ function Url(values) {
+ this.initDefaults_();
+ this.initFields_(values);
+ }
+
+
+ Url.prototype.initDefaults_ = function() {
+ this.url = null;
+ };
+ Url.prototype.initFields_ = function(fields) {
+ for(var field in fields) {
+ if (this.hasOwnProperty(field))
+ this[field] = fields[field];
+ }
+ };
+
+ Url.validate = function(messageValidator, offset) {
+ var err;
+ err = messageValidator.validateStructHeader(offset, codec.kStructHeaderSize);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+ var kVersionSizes = [
+ {version: 0, numBytes: 16}
+ ];
+ err = messageValidator.validateStructVersion(offset, kVersionSizes);
+ if (err !== validator.validationError.NONE)
+ return err;
+
+
+ // validate Url.url
+ err = messageValidator.validateStringPointer(offset + codec.kStructHeaderSize + 0, false)
+ if (err !== validator.validationError.NONE)
+ return err;
+
+ return validator.validationError.NONE;
+ };
+
+ Url.encodedSize = codec.kStructHeaderSize + 8;
+
+ Url.decode = function(decoder) {
+ var packed;
+ var val = new Url();
+ var numberOfBytes = decoder.readUint32();
+ var version = decoder.readUint32();
+ val.url = decoder.decodeStruct(codec.String);
+ return val;
+ };
+
+ Url.encode = function(encoder, val) {
+ var packed;
+ encoder.writeUint32(Url.encodedSize);
+ encoder.writeUint32(0);
+ encoder.encodeStruct(codec.String, val.url);
+ };
+ exports.Url = Url;
+})();
diff --git a/tests/wpt/web-platform-tests/resources/idlharness.js b/tests/wpt/web-platform-tests/resources/idlharness.js
index 40a5fa59cd2..9e6ed236b0a 100644
--- a/tests/wpt/web-platform-tests/resources/idlharness.js
+++ b/tests/wpt/web-platform-tests/resources/idlharness.js
@@ -305,13 +305,7 @@ IdlArray.prototype.add_dependency_idls = function(raw_idls, options)
if (parsed[dep_type]) {
const inheriting = parsed[dep_type];
const inheritor = parsed.name || parsed.target;
- const deps = [inheriting];
- // For A includes B, we can ignore A unless B is being tested.
- if (dep_type !== "includes"
- || (inheriting in this.members && !this.members[inheriting].untested)) {
- deps.push(inheritor);
- }
- for (const dep of deps) {
+ for (const dep of [inheriting, inheritor]) {
new_options.only.push(dep);
all_deps.add(dep);
follow_up.add(dep);
@@ -326,7 +320,7 @@ IdlArray.prototype.add_dependency_idls = function(raw_idls, options)
next.forEach(process);
}
}
- }.bind(this));
+ });
}.bind(this);
for (let parsed of parsed_idls) {
diff --git a/tests/wpt/web-platform-tests/server-timing/cross_origin.https.html b/tests/wpt/web-platform-tests/server-timing/cross_origin.https.html
index 1421b38a05e..d31c7b006ca 100644
--- a/tests/wpt/web-platform-tests/server-timing/cross_origin.https.html
+++ b/tests/wpt/web-platform-tests/server-timing/cross_origin.https.html
@@ -2,7 +2,7 @@
<head>
<meta charset='utf-8' />
<script src="/resources/testharness.js"></script>
- <script src='/resources/testharnessreport.js'></script>
+ <script src="/resources/testharnessreport.js"></script>
<script src="/common/performance-timeline-utils.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script>
@@ -20,7 +20,7 @@
document.getElementsByTagName('script')[0].parentNode.appendChild(img)
})
- window.addEventListener('load', function() {
+ delayedLoadListener(function() {
function assertServerTimingEntries(url, expectedEntryCount) {
test_equals(performance.getEntriesByName(url)[0].serverTiming.length,
expectedEntryCount,
diff --git a/tests/wpt/web-platform-tests/server-timing/navigation_timing_idl.https.html b/tests/wpt/web-platform-tests/server-timing/navigation_timing_idl.https.html
index 290bb889b14..d911d64e47c 100644
--- a/tests/wpt/web-platform-tests/server-timing/navigation_timing_idl.https.html
+++ b/tests/wpt/web-platform-tests/server-timing/navigation_timing_idl.https.html
@@ -2,10 +2,11 @@
<head>
<meta charset='utf-8' />
<script src="/resources/testharness.js"></script>
- <script src='/resources/testharnessreport.js'></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/common/performance-timeline-utils.js"></script>
<script>
setup({explicit_done: true})
- window.addEventListener('load', function(){
+ delayedLoadListener(function(){
assert_not_equals(typeof performance.getEntriesByType('navigation')[0].serverTiming, 'undefined',
'An instance of `PerformanceNavigationTiming` should have a `serverTiming` attribute.')
done()
diff --git a/tests/wpt/web-platform-tests/server-timing/resource_timing_idl.https.html b/tests/wpt/web-platform-tests/server-timing/resource_timing_idl.https.html
index d2c3c9274ea..b1d8699cc60 100644
--- a/tests/wpt/web-platform-tests/server-timing/resource_timing_idl.https.html
+++ b/tests/wpt/web-platform-tests/server-timing/resource_timing_idl.https.html
@@ -2,10 +2,11 @@
<head>
<meta charset='utf-8' />
<script src="/resources/testharness.js"></script>
- <script src='/resources/testharnessreport.js'></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/common/performance-timeline-utils.js"></script>
<script>
setup({explicit_done: true})
- window.addEventListener('load', function(){
+ delayedLoadListener(function(){
assert_not_equals(typeof performance.getEntriesByType('resource')[0].serverTiming, 'undefined',
'An instance of `PerformanceResourceTiming` should have a `serverTiming` attribute.')
done()
diff --git a/tests/wpt/web-platform-tests/server-timing/server_timing_header-parsing.https.html b/tests/wpt/web-platform-tests/server-timing/server_timing_header-parsing.https.html
index 156dfcd344f..737cc08045a 100644
--- a/tests/wpt/web-platform-tests/server-timing/server_timing_header-parsing.https.html
+++ b/tests/wpt/web-platform-tests/server-timing/server_timing_header-parsing.https.html
@@ -7,7 +7,7 @@ tests generated by:
<head>
<meta charset='utf-8' />
<script src="/resources/testharness.js"></script>
- <script src='/resources/testharnessreport.js'></script>
+ <script src="/resources/testharnessreport.js"></script>
<script src="/common/performance-timeline-utils.js"></script>
<script>
setup({explicit_done: true})
@@ -49,6 +49,6 @@ tests generated by:
document.getElementsByTagName('head')[0].appendChild(script)
urlToIndex[script.src] = i
}
- window.addEventListener('load', runTests)
+ delayedLoadListener(runTests)
</script>
</head>
diff --git a/tests/wpt/web-platform-tests/server-timing/service_worker_idl.https.html b/tests/wpt/web-platform-tests/server-timing/service_worker_idl.https.html
index 1c1be8995b3..5c493fdcb0a 100644
--- a/tests/wpt/web-platform-tests/server-timing/service_worker_idl.https.html
+++ b/tests/wpt/web-platform-tests/server-timing/service_worker_idl.https.html
@@ -2,7 +2,7 @@
<head>
<meta charset='utf-8' />
<script src="/resources/testharness.js"></script>
- <script src='/resources/testharnessreport.js'></script>
+ <script src="/resources/testharnessreport.js"></script>
<script>
(async () => {
const scope = 'does/not/exist'
diff --git a/tests/wpt/web-platform-tests/server-timing/test_server_timing.https.html b/tests/wpt/web-platform-tests/server-timing/test_server_timing.https.html
index 2d43aa2d43b..4f3554aa4a4 100644
--- a/tests/wpt/web-platform-tests/server-timing/test_server_timing.https.html
+++ b/tests/wpt/web-platform-tests/server-timing/test_server_timing.https.html
@@ -2,12 +2,12 @@
<head>
<meta charset='utf-8' />
<script src="/resources/testharness.js"></script>
- <script src='/resources/testharnessreport.js'></script>
+ <script src="/resources/testharnessreport.js"></script>
<script src="/common/performance-timeline-utils.js"></script>
<script>
setup({explicit_done: true})
- window.addEventListener('load', function() {
+ delayedLoadListener(function() {
// there should be exactly three server-timing entries, 2 for document, 1 for img#one
test_entries(performance.getEntriesByType('navigation')[0].serverTiming, [{
duration: 1.1,
diff --git a/tests/wpt/web-platform-tests/signed-exchange/META.yml b/tests/wpt/web-platform-tests/signed-exchange/META.yml
new file mode 100644
index 00000000000..f56fbab13ec
--- /dev/null
+++ b/tests/wpt/web-platform-tests/signed-exchange/META.yml
@@ -0,0 +1,5 @@
+spec: https://wicg.github.io/webpackage/draft-yasskin-http-origin-signed-responses.html
+suggested_reviewers:
+ - irori
+ - jyasskin
+ - nyaxt
diff --git a/tests/wpt/web-platform-tests/tools/appveyor.yml b/tests/wpt/web-platform-tests/tools/appveyor.yml
deleted file mode 100644
index b0cedd5c78f..00000000000
--- a/tests/wpt/web-platform-tests/tools/appveyor.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-environment:
- global:
- HYPOTHESIS_PROFILE: ci
- matrix:
- - PYTHON: 'C:\\Python27'
- - PYTHON: 'C:\\Python35'
- - PYTHON: 'C:\\Python36'
-
-# Needed to make py.test believe our top level can be imported (we
-# otherwise end up in a wpt-tools directory, and of course you cannot
-# import a name including a hyphen in Python, so it ignores the fact
-# we have a __init__.py at the top level).
-clone_folder: 'C:\projects\wpttools'
-
-init:
- - 'git config --global core.autocrlf true'
-
-install:
- - 'rm .git\index'
- - 'git reset --hard'
- - 'SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%'
- - 'git submodule update --init --recursive'
- - 'python.exe -m pip install tox codecov'
-
-build: off
-
-test_script:
- - 'tox -e py'
-
-on_success:
- - 'coverage combine'
- - 'codecov'
diff --git a/tests/wpt/web-platform-tests/tools/flake8.ini b/tests/wpt/web-platform-tests/tools/flake8.ini
index 85e2308aabb..a53cbf49d55 100644
--- a/tests/wpt/web-platform-tests/tools/flake8.ini
+++ b/tests/wpt/web-platform-tests/tools/flake8.ini
@@ -18,4 +18,10 @@ select = E,W,F,N
# N801: class names should use CapWords convention
# N802: function name should be lowercase
ignore = E128,E129,E221,E226,E231,E251,E265,E302,E303,E305,E402,E731,E901,W601,N801,N802
+exclude =
+ .tox,
+ pywebsocket,
+ third_party,
+ wptserve/docs/conf.py,
+ wptserve/tests/functional/docroot/invalid.py
max-line-length = 141
diff --git a/tests/wpt/web-platform-tests/tools/requirements_flake8.txt b/tests/wpt/web-platform-tests/tools/requirements_flake8.txt
new file mode 100644
index 00000000000..6d6ee4d885a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/requirements_flake8.txt
@@ -0,0 +1,4 @@
+flake8==3.5.0
+pycodestyle==2.3.1
+pyflakes==1.6.0
+pep8-naming==0.4.1
diff --git a/tests/wpt/web-platform-tests/tools/tox.ini b/tests/wpt/web-platform-tests/tools/tox.ini
index 3eb12c357ba..b0099437be9 100644
--- a/tests/wpt/web-platform-tests/tools/tox.ini
+++ b/tests/wpt/web-platform-tests/tools/tox.ini
@@ -1,26 +1,20 @@
[tox]
-envlist = py27,py36,pypy
+envlist = py27,py36,pypy,py27-flake8
skipsdist=True
[testenv]
-# flake8 versions should be kept in sync across tools/tox.ini, tools/wpt/tox.ini, and tools/wptrunner/tox.ini
deps =
- flake8==3.5.0
- pycodestyle==2.3.1
- pyflakes==1.6.0
- pep8-naming==0.4.1
pytest
pytest-cov
mock
hypothesis
pytest-catchlog
-commands =
- pytest --cov {posargs}
- flake8 --append-config=flake8.ini
+commands = pytest --cov {posargs}
passenv =
HYPOTHESIS_PROFILE
-[flake8]
-exclude = .tox,html5lib,third_party,pywebsocket,six,_venv,webencodings,wptserve/docs,wptserve/tests/functional/docroot/,wpt,wptrunner
+[testenv:py27-flake8]
+deps = -r{toxinidir}/requirements_flake8.txt
+commands = flake8 --append-config={toxinidir}/flake8.ini {posargs}
diff --git a/tests/wpt/web-platform-tests/tools/wpt/browser.py b/tests/wpt/web-platform-tests/tools/wpt/browser.py
index 692de7069e8..46afdfed64b 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/browser.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/browser.py
@@ -46,7 +46,7 @@ class Browser(object):
return NotImplemented
@abstractmethod
- def version(self, binary=None):
+ def version(self, binary=None, webdriver_binary=None):
"""Retrieve the release version of the installed browser."""
return NotImplemented
@@ -367,7 +367,7 @@ class Firefox(Browser):
return path
- def version(self, binary=None):
+ def version(self, binary=None, webdriver_binary=None):
"""Retrieve the release version of the installed browser."""
version_string = call(binary, "--version").strip()
m = re.match(r"Mozilla Firefox (.*)", version_string)
@@ -394,7 +394,7 @@ class Fennec(Browser):
def install_webdriver(self, dest=None, channel=None):
raise NotImplementedError
- def version(self, binary=None):
+ def version(self, binary=None, webdriver_binary=None):
return None
@@ -458,7 +458,7 @@ class Chrome(Browser):
os.chmod(path, st.st_mode | stat.S_IEXEC)
return path
- def version(self, binary=None):
+ def version(self, binary=None, webdriver_binary=None):
binary = binary or self.binary
if uname[0] != "Windows":
try:
@@ -497,7 +497,7 @@ class ChromeAndroid(Browser):
chrome = Chrome()
return chrome.install_webdriver(dest, channel)
- def version(self, binary):
+ def version(self, binary=None, webdriver_binary=None):
return None
class Opera(Browser):
@@ -562,7 +562,7 @@ class Opera(Browser):
os.chmod(path, st.st_mode | stat.S_IEXEC)
return path
- def version(self, binary):
+ def version(self, binary=None, webdriver_binary=None):
"""Retrieve the release version of the installed browser."""
binary = binary or self.binary
try:
@@ -593,7 +593,7 @@ class Edge(Browser):
def install_webdriver(self, dest=None, channel=None):
raise NotImplementedError
- def version(self, binary):
+ def version(self, binary=None, webdriver_binary=None):
return None
@@ -619,7 +619,7 @@ class InternetExplorer(Browser):
def install_webdriver(self, dest=None, channel=None):
raise NotImplementedError
- def version(self, binary):
+ def version(self, binary=None, webdriver_binary=None):
return None
@@ -647,8 +647,24 @@ class Safari(Browser):
def install_webdriver(self, dest=None, channel=None):
raise NotImplementedError
- def version(self, binary):
- return None
+ def version(self, binary=None, webdriver_binary=None):
+ if webdriver_binary is None:
+ logger.warn("Cannot find Safari version without safaridriver")
+ return None
+ # Use `safaridriver --version` to get the version. Example output:
+ # "Included with Safari 12.1 (14607.1.11)"
+ # "Included with Safari Technology Preview (Release 67, 13607.1.9.0.1)"
+ # The `--version` flag was added in STP 67, so allow the call to fail.
+ try:
+ version_string = call(webdriver_binary, "--version").strip()
+ except subprocess.CalledProcessError:
+ logger.warn("Failed to call %s --version", webdriver_binary)
+ return None
+ m = re.match(r"Included with Safari (.*)", version_string)
+ if not m:
+ logger.warn("Failed to extract version from: s%", version_string)
+ return None
+ return m.group(1)
class SafariWebDriver(Safari):
@@ -707,7 +723,7 @@ class Servo(Browser):
def install_webdriver(self, dest=None, channel=None):
raise NotImplementedError
- def version(self, binary):
+ def version(self, binary=None, webdriver_binary=None):
"""Retrieve the release version of the installed browser."""
output = call(binary, "--version")
m = re.search(r"Servo ([0-9\.]+-[a-f0-9]+)?(-dirty)?$", output.strip())
@@ -737,7 +753,7 @@ class Sauce(Browser):
def install_webdriver(self, dest=None, channel=None):
raise NotImplementedError
- def version(self, binary):
+ def version(self, binary=None, webdriver_binary=None):
return None
@@ -759,5 +775,5 @@ class WebKit(Browser):
def install_webdriver(self, dest=None, channel=None):
raise NotImplementedError
- def version(self, binary):
+ def version(self, binary=None, webdriver_binary=None):
return None
diff --git a/tests/wpt/web-platform-tests/tools/wpt/run.py b/tests/wpt/web-platform-tests/tools/wpt/run.py
index b977d8a0cd6..093bc013c1b 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/run.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/run.py
@@ -509,7 +509,8 @@ def setup_wptrunner(venv, prompt=True, install_browser=False, **kwargs):
venv.install_requirements(os.path.join(wptrunner_path, "requirements.txt"))
- kwargs['browser_version'] = setup_cls.browser.version(kwargs.get("binary"))
+ kwargs['browser_version'] = setup_cls.browser.version(binary=kwargs.get("binary"),
+ webdriver_binary=kwargs.get("webdriver_binary"))
return kwargs
diff --git a/tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py b/tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py
new file mode 100644
index 00000000000..4ce8606949c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/tools/wpt/tests/test_browser.py
@@ -0,0 +1,32 @@
+import mock
+import subprocess
+
+from tools.wpt import browser
+
+@mock.patch('subprocess.check_output')
+def test_safari_version(mocked_check_output):
+ safari = browser.Safari()
+
+ # Safari
+ mocked_check_output.return_value = 'Included with Safari 12.1 (14607.1.11)'
+ assert safari.version(webdriver_binary="safaridriver") == '12.1 (14607.1.11)'
+
+ # Safari Technology Preview
+ mocked_check_output.return_value = 'Included with Safari Technology Preview (Release 67, 13607.1.9.0.1)'
+ assert safari.version(webdriver_binary="safaridriver") == 'Technology Preview (Release 67, 13607.1.9.0.1)'
+
+@mock.patch('subprocess.check_output')
+def test_safari_version_errors(mocked_check_output):
+ safari = browser.Safari()
+
+ # No webdriver_binary
+ assert safari.version() is None
+
+ # `safaridriver --version` return gibberish
+ mocked_check_output.return_value = 'gibberish'
+ assert safari.version(webdriver_binary="safaridriver") is None
+
+ # `safaridriver --version` fails (as it does for Safari <=12.0)
+ mocked_check_output.return_value = 'dummy'
+ mocked_check_output.side_effect = subprocess.CalledProcessError(1, 'cmd')
+ assert safari.version(webdriver_binary="safaridriver") is None
diff --git a/tests/wpt/web-platform-tests/tools/wpt/tests/test_run.py b/tests/wpt/web-platform-tests/tools/wpt/tests/test_run.py
index ac860e3f8c0..94b1202736f 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/tests/test_run.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/tests/test_run.py
@@ -57,9 +57,9 @@ def test_setup_wptrunner(venv, product):
parser = run.create_parser()
kwargs = vars(parser.parse_args(["--channel=nightly", product]))
kwargs["prompt"] = False
- kwargs["webdriver_binary"] = "fake"
# Hack to get a real existing path
kwargs["binary"] = sys.argv[0]
+ kwargs["webdriver_binary"] = sys.argv[0]
if kwargs["product"] == "sauce":
kwargs["product"] = "sauce:firefox:63"
run.setup_wptrunner(venv, **kwargs)
diff --git a/tests/wpt/web-platform-tests/tools/wpt/tox.ini b/tests/wpt/web-platform-tests/tools/wpt/tox.ini
index cd45a76e179..0b354e75530 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/tox.ini
+++ b/tests/wpt/web-platform-tests/tools/wpt/tox.ini
@@ -1,5 +1,5 @@
[tox]
-envlist = py27,py27-flake8
+envlist = py27
skipsdist=True
[testenv]
@@ -14,14 +14,3 @@ deps =
commands =
pytest --cov {posargs}
-
-[testenv:py27-flake8]
-# flake8 versions should be kept in sync across tools/tox.ini, tools/wpt/tox.ini, and tools/wptrunner/tox.ini
-deps =
- flake8==3.5.0
- pycodestyle==2.3.1
- pyflakes==1.6.0
- pep8-naming==0.4.1
-
-commands =
- flake8 --append-config=../flake8.ini {posargs}
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini b/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini
index fa7985ec80d..4f5dcfb47be 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/tox.ini
@@ -2,7 +2,7 @@
xfail_strict=true
[tox]
-envlist = {py27}-{base,chrome,edge,firefox,ie,opera,safari,sauce,servo},py27-flake8
+envlist = py27-{base,chrome,edge,firefox,ie,opera,safari,sauce,servo}
[testenv]
deps =
@@ -23,14 +23,3 @@ deps =
commands = pytest {posargs:--cov}
setenv = CURRENT_TOX_ENV = {envname}
-
-[testenv:py27-flake8]
-# flake8 versions should be kept in sync across tools/tox.ini, tools/wpt/tox.ini, and tools/wptrunner/tox.ini
-deps =
- flake8==3.5.0
- pycodestyle==2.3.1
- pyflakes==1.6.0
- pep8-naming==0.4.1
-
-commands =
- flake8 --append-config=../flake8.ini
diff --git a/tests/wpt/web-platform-tests/webmessaging/without-ports/008.html b/tests/wpt/web-platform-tests/webmessaging/without-ports/008.html
new file mode 100644
index 00000000000..2676c1f67c7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webmessaging/without-ports/008.html
@@ -0,0 +1,11 @@
+<!doctype html>
+<title>just one argument</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+test(function() {
+ postMessage('');
+ this.done();
+ });
+ </script>
diff --git a/tests/wpt/web-platform-tests/webusb/resources/usb-helpers.js b/tests/wpt/web-platform-tests/webusb/resources/usb-helpers.js
index a3a4a31ba88..161a7d270bb 100644
--- a/tests/wpt/web-platform-tests/webusb/resources/usb-helpers.js
+++ b/tests/wpt/web-platform-tests/webusb/resources/usb-helpers.js
@@ -42,6 +42,7 @@ let loadChromiumResources = Promise.resolve().then(() => {
[
'/resources/chromium/mojo_bindings.js',
'/resources/chromium/string16.mojom.js',
+ '/resources/chromium/url.mojom.js',
'/resources/chromium/device.mojom.js',
'/resources/chromium/device_manager.mojom.js',
'/resources/chromium/web_usb_service.mojom.js',
diff --git a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-options-credentials.html b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-options-credentials.html
index 6603eb9be9b..34f223981ca 100644
--- a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-options-credentials.html
+++ b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-options-credentials.html
@@ -2,84 +2,302 @@
<title>DedicatedWorker: WorkerOptions 'credentials'</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
<script>
+host_info = get_host_info();
// Determines the expected cookie value to be reported by a dedicated worker
// based on the given option. The worker reports an empty string as the actual
// cookie value if the cookie wasn't sent to the server. Otherwise, it's the
// value set by the headers file:
// "dedicated-worker-options-credentials.html.headers"
-function DetermineExpectedCookieValue(options) {
- // Classic script loading should always send credentials regardless of the
- // 'credentials' option because the spec says the option takes effect only
- // for module script loading.
- if (options.type == 'classic')
- return 'COOKIE_VALUE';
- assert_equals(options.type, 'module');
-
- if (!options.credentials ||
- options.credentials == 'same-origin' ||
- options.credentials == 'include') {
- return 'COOKIE_VALUE';
+function DetermineExpectedCookieValue(options, config) {
+ // Valid WorkerOptions and test config checking.
+ if (config.origin !== 'same' && config.origin !== 'remote')
+ assert_unreached('Invalid config.origin was specified: ' + config.origin);
+ if (options.credentials && options.credentials !== 'omit' &&
+ options.credentials !== 'same-origin' &&
+ options.credentials !== 'include') {
+ assert_unreached('Invalid credentials option was specified: ' +
+ options.credentials);
}
- if (options.credentials == 'omit')
+ if (options.type !== 'classic' && options.type !== 'module')
+ assert_unreached('Invalid type option was specified: ' + options.type);
+
+ if (options.type === 'classic')
+ return (config.origin === 'same') ? '1' : '';
+
+ if (options.credentials === 'omit')
return '';
- assert_unreached('Invalid credentials option was specified: ' +
- options.credentials);
+ else if (options.credentials === 'include')
+ return '1';
+ else
+ return (config.origin === 'same') ? '1' : '';
}
// Runs a credentials test with the given WorkerOptions.
-function credentials_test(options, description) {
+//
+// |options| is a WorkerOptions dict.
+// |config| has options as follows:
+//
+// config = {
+// fetchType: 'top-level' or 'descendant-static' or 'descendant-dynamic'
+// origin: 'remote' or 'same'
+// };
+//
+// - |config.fetchType| indicates the type of script to load for the test.
+// - |config.origin| indicates same-origin-ness of the script to load.
+function credentials_test(options, config, description) {
promise_test(async () => {
- const worker = new Worker('resources/credentials.py', options);
+ let workerURL, origin = config.origin;
+ if (config.fetchType === 'top-level') {
+ workerURL = 'resources/credentials.py';
+ } else if (config.fetchType === 'descendant-static') {
+ workerURL =
+ `resources/static-import-${origin}-origin-credentials-checker-worker.${origin === 'same' ? '' : 'sub.'}js`;
+ } else if (config.fetchType === 'descendant-dynamic') {
+ workerURL =
+ `resources/dynamic-import-${origin}-origin-credentials-checker-worker.${origin === 'same' ? '' : 'sub.'}js`;
+ } else {
+ assert_unreached('Invalid config.fetchType: ' + config.fetchType);
+ }
+
+ const worker = new Worker(workerURL, options);
// Wait until the worker sends the actual cookie value.
const msg_event = await new Promise(resolve => worker.onmessage = resolve);
- const expectedCookieValue = DetermineExpectedCookieValue(options);
+ const expectedCookieValue = DetermineExpectedCookieValue(options, config);
assert_equals(msg_event.data, expectedCookieValue);
}, description);
}
-// Tests for module scripts.
+function init() {
+ // Same-origin cookie is set up in the .headers file in this directory.
+ promise_test(async () => {
+ return fetch(
+ `${host_info.HTTP_REMOTE_ORIGIN}/cookies/resources/set-cookie.py?name=COOKIE_NAME&path=/workers/modules/`,
+ {
+ mode: 'no-cors',
+ credentials: 'include'
+ });
+ }, 'Test initialization: setting up cross-origin cookie');
+}
+
+init();
+
+// Tests for module workers.
+
+credentials_test(
+ { type: 'module' },
+ { fetchType: 'top-level', origin: 'same' },
+ 'new Worker() with type=module and default credentials option should ' +
+ 'behave as credentials=same-origin and send the credentials');
+
+credentials_test(
+ { credentials: 'omit', type: 'module' },
+ { fetchType: 'top-level', origin: 'same' },
+ 'new Worker() with type=module and credentials=omit should not send the ' +
+ 'credentials');
+
+credentials_test(
+ { credentials: 'same-origin', type: 'module' },
+ { fetchType: 'top-level', origin: 'same' },
+ 'new Worker() with type=module and credentials=same-origin should send ' +
+ 'the credentials');
+
+credentials_test(
+ { credentials: 'include', type: 'module' },
+ { fetchType: 'top-level', origin: 'same' },
+ 'new Worker() with type=module and credentials=include should send the ' +
+ 'credentials');
+
+// Tests for module worker static imports.
+
+credentials_test(
+ { type: 'module' },
+ { fetchType: 'descendant-static', origin: 'same' },
+ 'new Worker() with type=module and default credentials option should ' +
+ 'behave as credentials=same-origin and send the credentials for ' +
+ 'same-origin static imports');
+
+credentials_test(
+ { credentials: 'omit', type: 'module' },
+ { fetchType: 'descendant-static', origin: 'same' },
+ 'new Worker() with type=module and credentials=omit should not send the ' +
+ 'credentials for same-origin static imports');
+
+credentials_test(
+ { credentials: 'same-origin', type: 'module' },
+ { fetchType: 'descendant-static', origin: 'same' },
+ 'new Worker() with type=module and credentials=same-origin should send ' +
+ 'the credentials for same-origin static imports');
+
+credentials_test(
+ { credentials: 'include', type: 'module' },
+ { fetchType: 'descendant-static', origin: 'same' },
+ 'new Worker() with type=module and credentials=include should send the ' +
+ 'credentials for same-origin static imports');
+
+credentials_test(
+ { type: 'module' },
+ { fetchType: 'descendant-static', origin: 'remote' },
+ 'new Worker() with type=module and default credentials option should ' +
+ 'behave as credentials=same-origin and not send the credentials for ' +
+ 'cross-origin static imports');
+
+credentials_test(
+ { credentials: 'omit', type: 'module' },
+ { fetchType: 'descendant-static', origin: 'remote' },
+ 'new Worker() with type-module credentials=omit should not send the ' +
+ 'credentials for cross-origin static imports');
+
+credentials_test(
+ { credentials: 'same-origin', type: 'module' },
+ { fetchType: 'descendant-static', origin: 'remote' },
+ 'new Worker() with type=module and credentials=same-origin should not ' +
+ 'send the credentials for cross-origin static imports');
+
+credentials_test(
+ { credentials: 'include', type: 'module' },
+ { fetchType: 'descendant-static', origin: 'remote' },
+ 'new Worker() with type=module and credentials=include should send the ' +
+ 'credentials for cross-origin static imports');
+
+// Tests for module worker dynamic imports.
+
+credentials_test(
+ { type: 'module' },
+ { fetchType: 'descendant-dynamic', origin: 'same' },
+ 'new Worker() with type=module and default credentials option should ' +
+ 'behave as credentials=same-origin and send the credentials for ' +
+ 'same-origin dynamic imports');
+
+credentials_test(
+ { credentials: 'omit', type: 'module' },
+ { fetchType: 'descendant-dynamic', origin: 'same' },
+ 'new Worker() with type=module and credentials=omit should not send the ' +
+ 'credentials for same-origin dynamic imports');
+
+credentials_test(
+ { credentials: 'same-origin', type: 'module' },
+ { fetchType: 'descendant-dynamic', origin: 'same' },
+ 'new Worker() with type=module and credentials=same-origin should send ' +
+ 'the credentials for same-origin dynamic imports');
+
+credentials_test(
+ { credentials: 'include', type: 'module' },
+ { fetchType: 'descendant-dynamic', origin: 'same' },
+ 'new Worker() with type=module and credentials=include should send the ' +
+ 'credentials for same-origin dynamic imports');
credentials_test(
{ type: 'module'},
- 'new Worker() with the default credentials option should behave as ' +
- 'credentials=same-origin and send the credentials');
+ { fetchType: 'descendant-dynamic', origin: 'remote' },
+ 'new Worker() with type=module and default credentials option should ' +
+ 'behave as credentials=same-origin and not send the credentials for ' +
+ 'cross-origin dynamic imports');
credentials_test(
{ credentials: 'omit', type: 'module' },
- 'new Worker() with credentials=omit should not send the credentials');
+ { fetchType: 'descendant-dynamic', origin: 'remote' },
+ 'new Worker() with type-module credentials=omit should not send the ' +
+ 'credentials for cross-origin dynamic imports');
credentials_test(
{ credentials: 'same-origin', type: 'module' },
- 'new Worker() with credentials=same-origin should send the credentials');
+ { fetchType: 'descendant-dynamic', origin: 'remote' },
+ 'new Worker() with type=module and credentials=same-origin should not ' +
+ 'send the credentials for cross-origin dynamic imports');
credentials_test(
{ credentials: 'include', type: 'module' },
- 'new Worker() with credentials=include should send the credentials');
+ { fetchType: 'descendant-dynamic', origin: 'remote' },
+ 'new Worker() with type=module and credentials=include should send the ' +
+ 'credentials for cross-origin dynamic imports');
-// Tests for classic scripts.
+// Tests for classic workers.
+// TODO(domfarolino): Maybe move classic worker tests up a directory?
credentials_test(
{ type: 'classic' },
+ { fetchType: 'top-level', origin: 'same' },
'new Worker() with type=classic should always send the credentials ' +
'regardless of the credentials option (default).');
credentials_test(
{ credentials: 'omit', type: 'classic' },
+ { fetchType: 'top-level', origin: 'same' },
'new Worker() with type=classic should always send the credentials ' +
'regardless of the credentials option (omit).');
credentials_test(
{ credentials: 'same-origin', type: 'classic' },
+ { fetchType: 'top-level', origin: 'same' },
'new Worker() with type=classic should always send the credentials ' +
'regardless of the credentials option (same-origin).');
credentials_test(
{ credentials: 'include', type: 'classic' },
+ { fetchType: 'top-level', origin: 'same' },
'new Worker() with type=classic should always send the credentials ' +
'regardless of the credentials option (include).');
+// Tests for classic worker dynamic imports.
+
+credentials_test(
+ { type: 'classic' },
+ { fetchType: 'descendant-dynamic', origin: 'same' },
+ 'new Worker() with type=classic should always send the credentials for ' +
+ 'same-origin dynamic imports regardless of the credentials option ' +
+ '(default).');
+
+credentials_test(
+ { credentials: 'omit', type: 'classic' },
+ { fetchType: 'descendant-dynamic', origin: 'same' },
+ 'new Worker() with type=classic should always send the credentials for ' +
+ 'same-origin dynamic imports regardless of the credentials option (omit).');
+
+credentials_test(
+ { credentials: 'same-origin', type: 'classic' },
+ { fetchType: 'descendant-dynamic', origin: 'same' },
+ 'new Worker() with type=classic should always send the credentials for ' +
+ 'same-origin dynamic imports regardless of the credentials option ' +
+ '(same-origin).');
+
+credentials_test(
+ { credentials: 'include', type: 'classic' },
+ { fetchType: 'descendant-dynamic', origin: 'same' },
+ 'new Worker() with type=classic should always send the credentials for ' +
+ 'same-origin dynamic imports regardless of the credentials option ' +
+ '(include).');
+
+credentials_test(
+ { type: 'classic' },
+ { fetchType: 'descendant-dynamic', origin: 'remote' },
+ 'new Worker() with type=classic should never send the credentials for ' +
+ 'cross-origin dynamic imports regardless of the credentials option ' +
+ '(default).');
+
+credentials_test(
+ { credentials: 'omit', type: 'classic' },
+ { fetchType: 'descendant-dynamic', origin: 'remote' },
+ 'new Worker() with type=classic should never send the credentials for ' +
+ 'cross-origin dynamic imports regardless of the credentials option ' +
+ '(omit).');
+
+credentials_test(
+ { credentials: 'same-origin', type: 'classic' },
+ { fetchType: 'descendant-dynamic', origin: 'remote' },
+ 'new Worker() with type=classic should never send the credentials for ' +
+ 'cross-origin dynamic imports regardless of the credentials option ' +
+ '(same-origin).');
+
+credentials_test(
+ { credentials: 'include', type: 'classic' },
+ { fetchType: 'descendant-dynamic', origin: 'remote' },
+ 'new Worker() with type=classic should never send the credentials for ' +
+ 'cross-origin dynamic imports regardless of the credentials option ' +
+ '(include).');
+
</script>
diff --git a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-options-credentials.html.headers b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-options-credentials.html.headers
index 6f53744a6ae..8da851ab736 100644
--- a/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-options-credentials.html.headers
+++ b/tests/wpt/web-platform-tests/workers/modules/dedicated-worker-options-credentials.html.headers
@@ -1,2 +1,2 @@
-Set-Cookie: COOKIE_NAME=COOKIE_VALUE
+Set-Cookie: COOKIE_NAME=1
Access-Control-Allow-Credentials: true
diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/credentials.py b/tests/wpt/web-platform-tests/workers/modules/resources/credentials.py
index 8f79563fb5f..7623d849625 100644
--- a/tests/wpt/web-platform-tests/workers/modules/resources/credentials.py
+++ b/tests/wpt/web-platform-tests/workers/modules/resources/credentials.py
@@ -2,6 +2,7 @@ def main(request, response):
cookie = request.cookies.first("COOKIE_NAME", None)
response_headers = [("Content-Type", "text/javascript"),
+ ("Access-Control-Allow-Origin", request.headers.get("Origin")),
("Access-Control-Allow-Credentials", "true")]
cookie_value = '';
diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-remote-origin-credentials-checker-worker.sub.js b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-remote-origin-credentials-checker-worker.sub.js
new file mode 100644
index 00000000000..fb4f6e067a8
--- /dev/null
+++ b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-remote-origin-credentials-checker-worker.sub.js
@@ -0,0 +1,2 @@
+// Import a remote origin script.
+import('http://{{domains[www1]}}:{{ports[http][0]}}/workers/modules/resources/credentials.py');
diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-same-origin-credentials-checker-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-same-origin-credentials-checker-worker.js
new file mode 100644
index 00000000000..b267d344100
--- /dev/null
+++ b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-same-origin-credentials-checker-worker.js
@@ -0,0 +1 @@
+import('./credentials.py');
diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/static-import-remote-origin-credentials-checker-worker.sub.js b/tests/wpt/web-platform-tests/workers/modules/resources/static-import-remote-origin-credentials-checker-worker.sub.js
new file mode 100644
index 00000000000..41ef6a8de71
--- /dev/null
+++ b/tests/wpt/web-platform-tests/workers/modules/resources/static-import-remote-origin-credentials-checker-worker.sub.js
@@ -0,0 +1,2 @@
+// Import a remote origin script.
+import 'http://{{domains[www1]}}:{{ports[http][0]}}/workers/modules/resources/credentials.py';
diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/static-import-same-origin-credentials-checker-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/static-import-same-origin-credentials-checker-worker.js
new file mode 100644
index 00000000000..17755d9099f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/workers/modules/resources/static-import-same-origin-credentials-checker-worker.js
@@ -0,0 +1 @@
+import './credentials.py';