aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini3
-rw-r--r--tests/wpt/metadata/MANIFEST.json243
-rw-r--r--tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini16
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini (renamed from tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini)2
-rw-r--r--tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini10
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-scriptprocessornode-interface/simple-input-output.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/break-before-with-no-fragmentation-crash.html17
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/contain-layout-baseline-005.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/contain-layout-button-001.html8
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/reference/contain-layout-baseline-005-ref.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-contain/reference/contain-layout-button-001-ref.html8
-rw-r--r--tests/wpt/web-platform-tests/css/css-flexbox/flexbox_stf-fixpos.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-lists/nested-marker-dynamic.html36
-rw-r--r--tests/wpt/web-platform-tests/css/css-lists/nested-marker-ref.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-lists/nested-marker.html26
-rw-r--r--tests/wpt/web-platform-tests/css/css-scoping/slotted-matches.html16
-rw-r--r--tests/wpt/web-platform-tests/css/motion/inheritance.html3
-rw-r--r--tests/wpt/web-platform-tests/css/motion/offset-rotate-003.html25
-rw-r--r--tests/wpt/web-platform-tests/css/motion/offset-rotate-004.html37
-rw-r--r--tests/wpt/web-platform-tests/css/motion/offset-rotate-005.html37
-rw-r--r--tests/wpt/web-platform-tests/css/motion/parsing/offset-rotate-computed.html3
-rw-r--r--tests/wpt/web-platform-tests/css/motion/parsing/offset-rotate-parsing-valid.html6
-rw-r--r--tests/wpt/web-platform-tests/css/support/computed-testcommon.js28
-rw-r--r--tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js32
-rw-r--r--tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-wakelock.html27
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/block-object-with-ruby-crash.html11
-rw-r--r--tests/wpt/web-platform-tests/payment-handler/app-change-payment-method.js2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt2
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/idlharness.https.any.js2
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/resources/page1.html1
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/resources/page2.html1
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-abortsignal-set.https.html31
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-active-document.https.window.js81
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-applicability-manual.https.html59
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-disabled-by-feature-policy.https.sub.html8
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-document-hidden-manual.https.html38
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-document-hidden.https.html31
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute-redirect-on-load.https.sub.html4
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute.https.sub.html4
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy.https.sub.html15
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html15
-rw-r--r--tests/wpt/web-platform-tests/wake-lock/wakelock-onactivechange.https.html31
-rw-r--r--tests/wpt/web-platform-tests/webaudio/the-audio-api/the-scriptprocessornode-interface/simple-input-output.html98
-rw-r--r--tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js15
-rw-r--r--tests/wpt/web-platform-tests/webrtc/protocol/dtls-fingerprint-validation.html37
47 files changed, 857 insertions, 243 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
index 6a3af4e2ece..3a3d15b8406 100644
--- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
+++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini
@@ -37,3 +37,6 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
+ [Revoke blob URL after calling fetch, fetch should succeed]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index 6f952a5e080..c5acdb9ee11 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -19609,9 +19609,9 @@
{}
]
],
- "wake-lock/wakelock-applicability-manual.https.html": [
+ "wake-lock/wakelock-document-hidden-manual.https.html": [
[
- "wake-lock/wakelock-applicability-manual.https.html",
+ "wake-lock/wakelock-document-hidden-manual.https.html",
{}
]
],
@@ -120560,7 +120560,7 @@
"css/css-flexbox/flexbox_stf-fixpos.html",
[
[
- "about:blank",
+ "/css/reference/blank.html",
"=="
]
],
@@ -127873,6 +127873,30 @@
{}
]
],
+ "css/css-lists/nested-marker-dynamic.html": [
+ [
+ "css/css-lists/nested-marker-dynamic.html",
+ [
+ [
+ "/css/css-lists/nested-marker-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/css-lists/nested-marker.html": [
+ [
+ "css/css-lists/nested-marker.html",
+ [
+ [
+ "/css/css-lists/nested-marker-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-logical/cascading-001.html": [
[
"css/css-logical/cascading-001.html",
@@ -178123,6 +178147,42 @@
{}
]
],
+ "css/motion/offset-rotate-003.html": [
+ [
+ "css/motion/offset-rotate-003.html",
+ [
+ [
+ "/css/motion/offset-rotate-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/motion/offset-rotate-004.html": [
+ [
+ "css/motion/offset-rotate-004.html",
+ [
+ [
+ "/css/motion/offset-rotate-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "css/motion/offset-rotate-005.html": [
+ [
+ "css/motion/offset-rotate-005.html",
+ [
+ [
+ "/css/motion/offset-rotate-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/selectors/any-link-dynamic-001.html": [
[
"css/selectors/any-link-dynamic-001.html",
@@ -274009,6 +274069,11 @@
{}
]
],
+ "css/css-lists/nested-marker-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-lists/resources/white.gif": [
[
{}
@@ -331404,6 +331469,16 @@
{}
]
],
+ "wake-lock/resources/page1.html": [
+ [
+ {}
+ ]
+ ],
+ "wake-lock/resources/page2.html": [
+ [
+ {}
+ ]
+ ],
"wake-lock/wakelock-disabled-by-feature-policy.https.sub.html.headers": [
[
{}
@@ -358733,6 +358808,12 @@
{}
]
],
+ "css/css-break/break-before-with-no-fragmentation-crash.html": [
+ [
+ "css/css-break/break-before-with-no-fragmentation-crash.html",
+ {}
+ ]
+ ],
"css/css-break/hit-test-inline-fragmentation-with-border-radius.html": [
[
"css/css-break/hit-test-inline-fragmentation-with-border-radius.html",
@@ -363611,6 +363692,12 @@
{}
]
],
+ "css/css-scoping/slotted-matches.html": [
+ [
+ "css/css-scoping/slotted-matches.html",
+ {}
+ ]
+ ],
"css/css-scoping/slotted-nested.html": [
[
"css/css-scoping/slotted-nested.html",
@@ -398293,6 +398380,12 @@
{}
]
],
+ "html/semantics/embedded-content/the-object-element/block-object-with-ruby-crash.html": [
+ [
+ "html/semantics/embedded-content/the-object-element/block-object-with-ruby-crash.html",
+ {}
+ ]
+ ],
"html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin.html": [
[
"html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin.html",
@@ -445072,15 +445165,21 @@
}
]
],
- "wake-lock/wakelock-disabled-by-feature-policy.https.sub.html": [
+ "wake-lock/wakelock-abortsignal-set.https.html": [
[
- "wake-lock/wakelock-disabled-by-feature-policy.https.sub.html",
+ "wake-lock/wakelock-abortsignal-set.https.html",
+ {}
+ ]
+ ],
+ "wake-lock/wakelock-active-document.https.window.js": [
+ [
+ "wake-lock/wakelock-active-document.https.window.html",
{}
]
],
- "wake-lock/wakelock-document-hidden.https.html": [
+ "wake-lock/wakelock-disabled-by-feature-policy.https.sub.html": [
[
- "wake-lock/wakelock-document-hidden.https.html",
+ "wake-lock/wakelock-disabled-by-feature-policy.https.sub.html",
{}
]
],
@@ -445114,12 +445213,6 @@
{}
]
],
- "wake-lock/wakelock-onactivechange.https.html": [
- [
- "wake-lock/wakelock-onactivechange.https.html",
- {}
- ]
- ],
"wake-lock/wakelock-state-is-global.https.html": [
[
"wake-lock/wakelock-state-is-global.https.html",
@@ -449955,6 +450048,12 @@
{}
]
],
+ "webaudio/the-audio-api/the-scriptprocessornode-interface/simple-input-output.html": [
+ [
+ "webaudio/the-audio-api/the-scriptprocessornode-interface/simple-input-output.html",
+ {}
+ ]
+ ],
"webaudio/the-audio-api/the-stereopanner-interface/ctor-stereopanner.html": [
[
"webaudio/the-audio-api/the-stereopanner-interface/ctor-stereopanner.html",
@@ -451668,6 +451767,12 @@
{}
]
],
+ "webrtc/protocol/dtls-fingerprint-validation.html": [
+ [
+ "webrtc/protocol/dtls-fingerprint-validation.html",
+ {}
+ ]
+ ],
"webrtc/protocol/ice-state.https.html": [
[
"webrtc/protocol/ice-state.https.html",
@@ -581135,6 +581240,10 @@
"e2e7297d1532fba60d2074aa2701600dc7441742",
"visual"
],
+ "css/css-break/break-before-with-no-fragmentation-crash.html": [
+ "fb80ec45bceec093481fa54513c606c5952628b1",
+ "testharness"
+ ],
"css/css-break/form-control.html": [
"8ef6eedae252f36de3bfeef8c3a6db23bf6f3d89",
"reftest"
@@ -582480,7 +582589,7 @@
"reftest"
],
"css/css-contain/contain-layout-baseline-005.html": [
- "a447744bd7c63d7c36e4dece1654885c6cc8f7a7",
+ "0971402e6b9f3afcf3224cd3e95d195606e0c698",
"reftest"
],
"css/css-contain/contain-layout-breaks-001.html": [
@@ -582492,7 +582601,7 @@
"reftest"
],
"css/css-contain/contain-layout-button-001.html": [
- "e8beef7c0edfa20258b9600376d3ab245ca63f32",
+ "b53b28879e2ce884b61f741032afbf486afb3bf5",
"reftest"
],
"css/css-contain/contain-layout-cell-001.html": [
@@ -583052,7 +583161,7 @@
"support"
],
"css/css-contain/reference/contain-layout-baseline-005-ref.html": [
- "40a34f9ff156cb1d876b4f538b59c57e560403c4",
+ "360652c9397ee8b69a4bf07c763148eafcc64be0",
"support"
],
"css/css-contain/reference/contain-layout-breaks-002-ref.html": [
@@ -583060,7 +583169,7 @@
"support"
],
"css/css-contain/reference/contain-layout-button-001-ref.html": [
- "11a784b213cbc05d10cdcc199a11055fe0c0fdfa",
+ "da83204dce641b37a820cf47d2201d94a0fd60cb",
"support"
],
"css/css-contain/reference/contain-layout-cell-001-ref.html": [
@@ -587708,7 +587817,7 @@
"reftest"
],
"css/css-flexbox/flexbox_stf-fixpos.html": [
- "48537524586a91286f76e0de2cfbf8579d8f8b6f",
+ "f211201efdea7b552f8ee7ee8cfc850a71fbad3c",
"reftest"
],
"css/css-flexbox/flexbox_stf-float.html": [
@@ -600491,6 +600600,18 @@
"d4b3e300f8ea5011249e433b925a9a8f32e8c935",
"reftest"
],
+ "css/css-lists/nested-marker-dynamic.html": [
+ "fdfb93dc6149055be4611d85fb9705bcafe5c3a5",
+ "reftest"
+ ],
+ "css/css-lists/nested-marker-ref.html": [
+ "c4233918ab5dbad77129e2c473d527feb022c3f7",
+ "support"
+ ],
+ "css/css-lists/nested-marker.html": [
+ "9627ce936ae570325b430a1ac673cd66ae7d4252",
+ "reftest"
+ ],
"css/css-lists/resources/white.gif": [
"3aa2098dc8817f5360d13440f3d6245a030dc31d",
"support"
@@ -608095,6 +608216,10 @@
"c06c96143ba0d478940fb54208d241adb4f6ee8b",
"testharness"
],
+ "css/css-scoping/slotted-matches.html": [
+ "1a582fe98d3d6bbd13a66869af151d614cdb1165",
+ "testharness"
+ ],
"css/css-scoping/slotted-nested.html": [
"c7139fea4c280585197db5bd432931bcf53c2e53",
"testharness"
@@ -638584,7 +638709,7 @@
"support"
],
"css/motion/inheritance.html": [
- "8af4f9b91a83506d6f20c320e229cf890e0fdf4f",
+ "4a82f32cd58694f43314b6f52fc5e828ddfd8f01",
"testharness"
],
"css/motion/offset-anchor-transform-box-fill-box-ref.html": [
@@ -638667,6 +638792,18 @@
"fb301be24efc2aa2e50da0aabe6009553b92b655",
"reftest"
],
+ "css/motion/offset-rotate-003.html": [
+ "8f52024a6fc6e5883b80a1292b6d644f58eb93f7",
+ "reftest"
+ ],
+ "css/motion/offset-rotate-004.html": [
+ "33783d423b50585c3da0cd37f13df4763774bd38",
+ "reftest"
+ ],
+ "css/motion/offset-rotate-005.html": [
+ "9b1c40ed112c9f95bacfa70810d18de97fd3bcd7",
+ "reftest"
+ ],
"css/motion/offset-rotate-ref.html": [
"ec22768e96a1cd1efab206781b985cec8f006686",
"support"
@@ -638716,7 +638853,7 @@
"testharness"
],
"css/motion/parsing/offset-rotate-computed.html": [
- "a29d25ccdf2551503399b0a36089d463e481c0ed",
+ "56705769fb7bb752402788337d66bef0b5a705d3",
"testharness"
],
"css/motion/parsing/offset-rotate-parsing-invalid.html": [
@@ -638724,7 +638861,7 @@
"testharness"
],
"css/motion/parsing/offset-rotate-parsing-valid.html": [
- "71978d33b120f4ed353820f3f08ff4290c070eb7",
+ "048c246f16b6cdcd286c9fa4ac6d1ac8dbdfbcbf",
"testharness"
],
"css/reference/META.yml": [
@@ -640764,7 +640901,7 @@
"support"
],
"css/support/computed-testcommon.js": [
- "6c0c9aef72ba0f0e6cfd45e703f2a9bb654eded1",
+ "c6719784522136093480178197375bef75159d05",
"support"
],
"css/support/green.ico": [
@@ -640784,7 +640921,7 @@
"support"
],
"css/support/inheritance-testcommon.js": [
- "0e4651be8aa9e0d45949a9d1ae85a19cf85ab467",
+ "8d1645f9b110137408837418423a2ed42a588072",
"support"
],
"css/support/parsing-testcommon.js": [
@@ -656776,7 +656913,7 @@
"support"
],
"feature-policy/resources/feature-policy-wakelock.html": [
- "292e8a1c036b872cc75fa02cba96009a2f6385a5",
+ "24fe7a526cbae846727391f7527a3165c865ca0a",
"support"
],
"feature-policy/resources/feature-policy-webvr.html": [
@@ -672631,6 +672768,10 @@
"c28f667ff3ae310ecd45b3be9c8cf0cb972a2722",
"testharness"
],
+ "html/semantics/embedded-content/the-object-element/block-object-with-ruby-crash.html": [
+ "481a7408e4a4fa91613556b39c9ddc95d568c50c",
+ "testharness"
+ ],
"html/semantics/embedded-content/the-object-element/document-getters-return-null-for-cross-origin.html": [
"3d1077538e2468dd3a6a3020e1badfd2dcd759a3",
"testharness"
@@ -692624,7 +692765,7 @@
"support"
],
"payment-handler/app-change-payment-method.js": [
- "7a9f7a7fa7538fd234c5930cb96b2e6fdf970a77",
+ "0e5a4768e7626f666077e794e0731c9a1e3e9d35",
"support"
],
"payment-handler/basic-card.js": [
@@ -719888,7 +720029,7 @@
"support"
],
"tools/wptrunner/requirements.txt": [
- "ff0adf17ac8cf60ee4878b99801b60605e6046c3",
+ "50560fa82255dd8c56f0b58e7d15539b75ede005",
"support"
],
"tools/wptrunner/requirements_chrome.txt": [
@@ -722876,35 +723017,47 @@
"support"
],
"wake-lock/idlharness.https.any.js": [
- "fa47bd9b1e007518fb4c91328bf305e3afead449",
+ "2ad9980dae53727ea328e942dead029a936875cc",
"testharness"
],
- "wake-lock/wakelock-applicability-manual.https.html": [
- "2bd5c9dba4d7c7cbaab692f8f87f64d2708313d5",
- "manual"
+ "wake-lock/resources/page1.html": [
+ "7fc080d380c4bd46dfb011910e570ee412561b92",
+ "support"
+ ],
+ "wake-lock/resources/page2.html": [
+ "7fc080d380c4bd46dfb011910e570ee412561b92",
+ "support"
+ ],
+ "wake-lock/wakelock-abortsignal-set.https.html": [
+ "cc534d13d6ca81763627291680c8740d6bd5aff2",
+ "testharness"
+ ],
+ "wake-lock/wakelock-active-document.https.window.js": [
+ "f0f1e38ddf9defaf4a484ee5db39ec37e561ade5",
+ "testharness"
],
"wake-lock/wakelock-disabled-by-feature-policy.https.sub.html": [
- "008424ac3c8720a1b0a0691827a1c6f1ddb34ccd",
+ "0d451c98debb3b8ec258c949f9e0989bcb7ed23c",
"testharness"
],
"wake-lock/wakelock-disabled-by-feature-policy.https.sub.html.headers": [
"1d3769ec794b353e8c614e64ce2c1b0b1010e528",
"support"
],
- "wake-lock/wakelock-document-hidden.https.html": [
- "1edafee45fc11ba5ae3ebcc83d1e8a5c22da9f24",
- "testharness"
+ "wake-lock/wakelock-document-hidden-manual.https.html": [
+ "d7c12485e16a811fe680fde07048fd2a4294660f",
+ "manual"
],
"wake-lock/wakelock-enabled-by-feature-policy-attribute-redirect-on-load.https.sub.html": [
- "d93eaa8bdc58861a922cb8cdb7cb3716d1ed8d97",
+ "b27fbefa4ecabae1445a830af41f71f59564453f",
"testharness"
],
"wake-lock/wakelock-enabled-by-feature-policy-attribute.https.sub.html": [
- "c0066e7f1f84d642554a31a4fa592dc08edbfc00",
+ "3897df6288e7d7178dc7dfb24d680ca9ce3531e1",
"testharness"
],
"wake-lock/wakelock-enabled-by-feature-policy.https.sub.html": [
- "39a2af4960fd8011d2b502f0d7986992ac92b7b2",
+ "f4aaa73e0efa09edd592bf1e147b1356c749e790",
"testharness"
],
"wake-lock/wakelock-enabled-by-feature-policy.https.sub.html.headers": [
@@ -722912,7 +723065,7 @@
"support"
],
"wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html": [
- "ab81d4068b11d1aa534be0897f6dca684483158e",
+ "19bf59d368828c82c766d4841244c42e3b94baca",
"testharness"
],
"wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html.headers": [
@@ -722923,10 +723076,6 @@
"2c61f41311db3f9edf0502ea752ca27970eed3fb",
"testharness"
],
- "wake-lock/wakelock-onactivechange.https.html": [
- "381e1e40f1cfb676e33d5c0374924164f4f6e2de",
- "testharness"
- ],
"wake-lock/wakelock-state-is-global.https.html": [
"2eee31982498caab44b5160237c7ce7f8ce9a569",
"testharness"
@@ -724903,6 +725052,10 @@
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
"support"
],
+ "webaudio/the-audio-api/the-scriptprocessornode-interface/simple-input-output.html": [
+ "7fd20e67a7079ab3c02d490e458cb762006e0ca0",
+ "testharness"
+ ],
"webaudio/the-audio-api/the-stereopanner-interface/ctor-stereopanner.html": [
"9409f1ffce2110c177332388988d7ddb559d3ae2",
"testharness"
@@ -726740,7 +726893,7 @@
"testharness"
],
"webrtc/RTCPeerConnection-helper.js": [
- "986204df8b78d58af4fd4b171751931fb35ee563",
+ "fde1c6f0374a02c0998fdfe3a1ba5e7046d314f4",
"support"
],
"webrtc/RTCPeerConnection-iceConnectionState-disconnected.https.html": [
@@ -727031,6 +727184,10 @@
"2603a02cddf3f026b09b8a233d17ff3f92bd43a1",
"testharness"
],
+ "webrtc/protocol/dtls-fingerprint-validation.html": [
+ "9a397785eec1972a3f6833853f386eeeb61de318",
+ "testharness"
+ ],
"webrtc/protocol/ice-state.https.html": [
"4a6b4333e16a179e6fffadde0a7018eb91895104",
"testharness"
diff --git a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini
index f7a7bb33d42..8850ec200da 100644
--- a/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/transitions-animatable-properties-01.html.ini
@@ -74,6 +74,3 @@
[opacity end]
expected: FAIL
- [border-left-width end]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
index a236ee7eb01..8ee00ab8dc0 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -312,27 +312,27 @@
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
- [<iframe>: separate response Content-Type: */* text/html]
+ [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: separate response Content-Type: text/html */*]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" text/plain]
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html */*]
+ [<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;x=" text/plain]
+ [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
+ [<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
- [<iframe>: separate response Content-Type: text/html;charset=gbk text/plain text/html]
+ [<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
deleted file mode 100644
index 87b07c3e670..00000000000
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[traverse_the_history_1.html]
- [Multiple history traversals from the same task]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
index 75d75b4cda2..dc2e45516de 100644
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
@@ -1,4 +1,4 @@
-[traverse_the_history_2.html]
+[traverse_the_history_5.html]
[Multiple history traversals, last would be aborted]
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/webaudio/the-audio-api/the-scriptprocessornode-interface/simple-input-output.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-scriptprocessornode-interface/simple-input-output.html.ini
new file mode 100644
index 00000000000..eb3dae12ffc
--- /dev/null
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-scriptprocessornode-interface/simple-input-output.html.ini
@@ -0,0 +1,2 @@
+[simple-input-output.html]
+ expected: ERROR
diff --git a/tests/wpt/web-platform-tests/css/css-break/break-before-with-no-fragmentation-crash.html b/tests/wpt/web-platform-tests/css/css-break/break-before-with-no-fragmentation-crash.html
new file mode 100644
index 00000000000..fb80ec45bce
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/break-before-with-no-fragmentation-crash.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-break/">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=966369">
+<div id="container" style="height:100px";>
+ <div style="height:100%;">
+ <div style="break-before:page;"></div>
+ </div>
+</div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+ test(()=> {
+ document.body.offsetTop;
+ container.style.height = "101px";
+ }, "no crash");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-baseline-005.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-baseline-005.html
index a447744bd7c..0971402e6b9 100644
--- a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-baseline-005.html
+++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-baseline-005.html
@@ -13,6 +13,7 @@
contain: layout;
background: cyan;
font-size: 20px;
+ vertical-align: baseline;
}
.wrapper > :nth-child(1) {
background: magenta;
@@ -49,7 +50,7 @@ fieldset, details {
</div>
<div class="wrapper">
<canvas></canvas>
- <input value="foo"></input>
+ <input value="foo" size="3"></input>
<input type="file"></input>
</div>
<div class="wrapper">
diff --git a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-button-001.html b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-button-001.html
index e8beef7c0ed..b53b28879e2 100644
--- a/tests/wpt/web-platform-tests/css/css-contain/contain-layout-button-001.html
+++ b/tests/wpt/web-platform-tests/css/css-contain/contain-layout-button-001.html
@@ -3,12 +3,16 @@
<title>CSS Containment Test: Layout containment on button</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-layout">
+<link rel="help" href="https://drafts.csswg.org/css2/visudet.html#propdef-vertical-align">
<link rel="match" href="reference/contain-layout-button-001-ref.html">
-<meta name=assert content="Layout containment does apply to buttons, thus their baseline is the same than if they don't have contents.">
+<meta name=assert content="Layout containment does apply to buttons, thus their baseline is their margin-bottom edge.">
<style>
button {
border: 5px solid green;
padding: 0;
+ /* We use a nonzero margin-bottom to be sure we're synthesizing a baseline
+ from the margin-box rather than from the border-box: */
+ margin-bottom: 2px;
contain: layout;
color: transparent;
width: 0;
@@ -16,5 +20,5 @@ button {
}
</style>
-<p>This test passes if it has the same output as the reference. You see the word "before", a 10px green square at the bottom, and then the word "after".</p>
+<p>This test passes if it has the same output as the reference. You see the word "before", a 10px green square aligned 2px above the text's baseline, and then the word "after".</p>
before<button>b</button>after
diff --git a/tests/wpt/web-platform-tests/css/css-contain/reference/contain-layout-baseline-005-ref.html b/tests/wpt/web-platform-tests/css/css-contain/reference/contain-layout-baseline-005-ref.html
index 40a34f9ff15..360652c9397 100644
--- a/tests/wpt/web-platform-tests/css/css-contain/reference/contain-layout-baseline-005-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-contain/reference/contain-layout-baseline-005-ref.html
@@ -46,7 +46,7 @@ fieldset, details {
</div>
<div class="wrapper">
<canvas></canvas>
- <input value="foo"></input>
+ <input value="foo" size="3"></input>
<input type="file"></input>
</div>
<div class="wrapper">
diff --git a/tests/wpt/web-platform-tests/css/css-contain/reference/contain-layout-button-001-ref.html b/tests/wpt/web-platform-tests/css/css-contain/reference/contain-layout-button-001-ref.html
index 11a784b213c..da83204dce6 100644
--- a/tests/wpt/web-platform-tests/css/css-contain/reference/contain-layout-button-001-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-contain/reference/contain-layout-button-001-ref.html
@@ -3,9 +3,11 @@
<title>CSS Containment Test: Reference file</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<style>
-button {
+div.fakeButton {
+ display: inline-block;
border: 5px solid green;
padding: 0;
+ margin-bottom: 2px;
color: transparent;
width: 0;
height: 0px;
@@ -15,5 +17,5 @@ button {
}
</style>
-<p>This test passes if it has the same output as the reference. You see the word "before", a 10px green square at the bottom, and then the word "after".</p>
-before<button></button>after
+<p>This test passes if it has the same output as the reference. You see the word "before", a 10px green square aligned 2px above the text's baseline, and then the word "after".</p>
+before<div class="fakeButton"></div>after
diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_stf-fixpos.html b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_stf-fixpos.html
index 48537524586..f211201efde 100644
--- a/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_stf-fixpos.html
+++ b/tests/wpt/web-platform-tests/css/css-flexbox/flexbox_stf-fixpos.html
@@ -2,7 +2,7 @@
<title>flexbox | flexcontainer versus stf :: fixed</title>
<link rel="author" href="http://opera.com" title="Opera Software">
<link rel="help" href="http://www.w3.org/TR/css-flexbox-1/#flex-items">
-<link rel="match" href="about:blank">
+<link rel="match" href="../reference/blank.html">
<style>
#test {
background: red;
diff --git a/tests/wpt/web-platform-tests/css/css-lists/nested-marker-dynamic.html b/tests/wpt/web-platform-tests/css/css-lists/nested-marker-dynamic.html
new file mode 100644
index 00000000000..fdfb93dc614
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-lists/nested-marker-dynamic.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<title>::marker pseudo-elements generated by ::before and ::after are not addressable by selectors</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists/#list-item">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1539171">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1543758">
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="author" href="https://mozilla.org" title="Mozilla">
+<link rel="match" href="nested-marker-ref.html">
+<style>
+ li, ::marker {
+ color: red;
+ }
+ li::before, li::after {
+ display: list-item;
+ content: "Before";
+ }
+ li::after {
+ content: "After";
+ }
+ .tweak::marker {
+ color: blue;
+ }
+ .tweak, .tweak::before, .tweak::after {
+ color: initial;
+ }
+</style>
+<ol>
+ <li>Foo
+ <li>Bar
+<script>
+ window.onload = function() {
+ document.body.offsetTop;
+ for (let li of document.querySelectorAll("li"))
+ li.classList.add("tweak");
+ }
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-lists/nested-marker-ref.html b/tests/wpt/web-platform-tests/css/css-lists/nested-marker-ref.html
new file mode 100644
index 00000000000..c4233918ab5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-lists/nested-marker-ref.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>CSS test reference</title>
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="author" href="https://mozilla.org" title="Mozilla">
+<style>
+ li::marker {
+ color: blue;
+ }
+ div {
+ display: list-item;
+ }
+</style>
+<ol>
+ <li><div>Before</div>Foo<div>After</div>
+ <li><div>Before</div>Bar<div>After</div>
diff --git a/tests/wpt/web-platform-tests/css/css-lists/nested-marker.html b/tests/wpt/web-platform-tests/css/css-lists/nested-marker.html
new file mode 100644
index 00000000000..9627ce936ae
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-lists/nested-marker.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<title>::marker pseudo-elements generated by ::before and ::after are not addressable by global selectors</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists/#list-item">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1539171">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1543758">
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="author" href="https://mozilla.org" title="Mozilla">
+<link rel="match" href="nested-marker-ref.html">
+<style>
+ ::marker {
+ color: red;
+ }
+ li::marker {
+ color: blue;
+ }
+ li::before, li::after {
+ display: list-item;
+ content: "Before";
+ }
+ li::after {
+ content: "After";
+ }
+</style>
+<ol>
+ <li>Foo
+ <li>Bar
diff --git a/tests/wpt/web-platform-tests/css/css-scoping/slotted-matches.html b/tests/wpt/web-platform-tests/css/css-scoping/slotted-matches.html
new file mode 100644
index 00000000000..1a582fe98d3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-scoping/slotted-matches.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<title>CSS Test: ::slotted() should not match via the matches() API, since it's in the wrong scope</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
+<link rel="help" href="https://drafts.csswg.org/css-scoping/#slotted-pseudo">
+<link rel="help" href="https://dom.spec.whatwg.org/#dom-element-matches">
+<link rel="help" href="https://bugzil.la/1544242">
+<div id="host"><div id="slotted"></div></div>
+<script>
+test(function() {
+ let slotted = document.getElementById("slotted");
+ host.attachShadow({ mode: "open" }).innerHTML = `<slot></slot>`;
+ assert_false(slotted.matches("::slotted(div)"), "Shouldn't match ::slotted from the outer tree")
+}, "::slotted() doesn't reveal the presence of shadow DOM via matches()");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/motion/inheritance.html b/tests/wpt/web-platform-tests/css/motion/inheritance.html
index 8af4f9b91a8..4a82f32cd58 100644
--- a/tests/wpt/web-platform-tests/css/motion/inheritance.html
+++ b/tests/wpt/web-platform-tests/css/motion/inheritance.html
@@ -19,7 +19,8 @@ assert_not_inherited('offset-anchor', 'auto', '2px 3px');
assert_not_inherited('offset-distance', '0px', '4px');
assert_not_inherited('offset-path', 'none', 'path("M 5 6 H 7")');
assert_not_inherited('offset-position', 'auto', '8px 9px');
-assert_not_inherited('offset-rotate', 'auto 0deg', '90deg');
+// https://github.com/w3c/fxtf-drafts/issues/340
+assert_not_inherited('offset-rotate', ['auto 0deg', 'auto'], '90deg');
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/motion/offset-rotate-003.html b/tests/wpt/web-platform-tests/css/motion/offset-rotate-003.html
new file mode 100644
index 00000000000..8f52024a6fc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/motion/offset-rotate-003.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Motion Path: offset-rotate</title>
+ <link rel="help" href="https://drafts.fxtf.org/motion-1/#offset-rotate-property">
+ <link rel="match" href="offset-rotate-ref.html">
+ <meta name="assert" content="This tests offset-rotate <angle>">
+ <style>
+ #target {
+ position: absolute;
+ left: 300px;
+ top: 100px;
+ width: 300px;
+ height: 200px;
+ background-color: lime;
+ transform-origin: 0px 0px;
+ offset-path: path('m 0 0 v -200 -200') ;
+ offset-rotate: 30deg;
+ }
+ </style>
+ </head>
+ <body>
+ <div id="target"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/motion/offset-rotate-004.html b/tests/wpt/web-platform-tests/css/motion/offset-rotate-004.html
new file mode 100644
index 00000000000..33783d423b5
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/motion/offset-rotate-004.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+ <head>
+ <title>CSS Motion Path: offset-rotate</title>
+ <link rel="help" href="https://drafts.fxtf.org/motion-1/#offset-rotate-property">
+ <link rel="match" href="offset-rotate-ref.html">
+ <meta name="assert" content="This tests offset-rotate auto with path()">
+ <style>
+ #target {
+ position: absolute;
+ left: 300px;
+ top: 100px;
+ width: 300px;
+ height: 200px;
+ background-color: lime;
+ transform-origin: 0px 0px;
+ offset-rotate: auto;
+ }
+ </style>
+ <script>
+ function test() {
+ let target = document.getElementById('target');
+ // Get a path which has the same direction as "ray(120deg ...)"
+ let verticalMove = 100 * Math.tan(30 * Math.PI / 180);
+ target.style.offsetPath = `path("m 0 0 l 100 ${verticalMove}")`;
+ window.getComputedStyle(target).offsetPath;
+
+ window.requestAnimationFrame(function() {
+ document.documentElement.removeAttribute('class');
+ });
+ }
+ </script>
+ </head>
+ <body onload='test()'>
+ <div id="target"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/motion/offset-rotate-005.html b/tests/wpt/web-platform-tests/css/motion/offset-rotate-005.html
new file mode 100644
index 00000000000..9b1c40ed112
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/motion/offset-rotate-005.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+ <head>
+ <title>CSS Motion Path: offset-rotate</title>
+ <link rel="help" href="https://drafts.fxtf.org/motion-1/#offset-rotate-property">
+ <link rel="match" href="offset-rotate-ref.html">
+ <meta name="assert" content="This tests offset-rotate reverse <angle> with path()">
+ <style>
+ #target {
+ position: absolute;
+ left: 300px;
+ top: 100px;
+ width: 300px;
+ height: 200px;
+ background-color: lime;
+ transform-origin: 0px 0px;
+ offset-rotate: reverse 60deg;
+ }
+ </style>
+ <script>
+ function test() {
+ let target = document.getElementById('target');
+ // Get a path which has the same direction as "ray(-120deg ...)"
+ let verticalMove = 100 * Math.tan(30 * Math.PI / 180);
+ target.style.offsetPath = `path("m 0 0 l -100 ${verticalMove}")`;
+ window.getComputedStyle(target).offsetPath;
+
+ window.requestAnimationFrame(function() {
+ document.documentElement.removeAttribute('class');
+ });
+ }
+ </script>
+ </head>
+ <body onload='test()'>
+ <div id="target"></div>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/motion/parsing/offset-rotate-computed.html b/tests/wpt/web-platform-tests/css/motion/parsing/offset-rotate-computed.html
index a29d25ccdf2..56705769fb7 100644
--- a/tests/wpt/web-platform-tests/css/motion/parsing/offset-rotate-computed.html
+++ b/tests/wpt/web-platform-tests/css/motion/parsing/offset-rotate-computed.html
@@ -13,7 +13,8 @@
<body>
<div id="target"></div>
<script>
-test_computed_value("offset-rotate", "auto", "auto 0deg");
+// https://github.com/w3c/fxtf-drafts/issues/340
+test_computed_value("offset-rotate", "auto", ["auto 0deg", "auto"]);
test_computed_value("offset-rotate", "reverse", "auto 180deg");
test_computed_value("offset-rotate", "calc(90deg - 0.5turn - 300grad + 0rad)", "-360deg");
test_computed_value("offset-rotate", "auto 5turn", "auto 1800deg");
diff --git a/tests/wpt/web-platform-tests/css/motion/parsing/offset-rotate-parsing-valid.html b/tests/wpt/web-platform-tests/css/motion/parsing/offset-rotate-parsing-valid.html
index 71978d33b12..048c246f16b 100644
--- a/tests/wpt/web-platform-tests/css/motion/parsing/offset-rotate-parsing-valid.html
+++ b/tests/wpt/web-platform-tests/css/motion/parsing/offset-rotate-parsing-valid.html
@@ -16,9 +16,11 @@ test_valid_value("offset-rotate", "auto");
test_valid_value("offset-rotate", "reverse");
test_valid_value("offset-rotate", "-400deg");
test_valid_value("offset-rotate", "auto 5turn");
-test_valid_value("offset-rotate", "reverse 0rad");
+// https://github.com/w3c/fxtf-drafts/issues/340
+test_valid_value("offset-rotate", "reverse 0rad", ["reverse 0rad", "reverse"]);
test_valid_value("offset-rotate", "5turn auto", "auto 5turn");
-test_valid_value("offset-rotate", "0rad reverse", "reverse 0rad");
+// https://github.com/w3c/fxtf-drafts/issues/340
+test_valid_value("offset-rotate", "0rad reverse", ["reverse 0rad", "reverse"]);
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/support/computed-testcommon.js b/tests/wpt/web-platform-tests/css/support/computed-testcommon.js
index 6c0c9aef72b..c6719784522 100644
--- a/tests/wpt/web-platform-tests/css/support/computed-testcommon.js
+++ b/tests/wpt/web-platform-tests/css/support/computed-testcommon.js
@@ -6,22 +6,36 @@
*
* @param {string} property The name of the CSS property being tested.
* @param {string} specified A specified value for the property.
- * @param {string} computed The expected computed value. If omitted,
- defaults to specified.
+ * @param {string|array} computed The expected computed value,
+ * or an array of permitted computed value.
+ * If omitted, defaults to specified.
*/
function test_computed_value(property, specified, computed) {
if (!computed)
computed = specified;
+
+ let computedDesc = "'" + computed + "'";
+ if (Array.isArray(computed))
+ computedDesc = '[' + computed.map(e => "'" + e + "'").join(' or ') + ']';
+
test(() => {
const target = document.getElementById('target');
assert_true(property in getComputedStyle(target), property + " doesn't seem to be supported in the computed style");
target.style[property] = '';
target.style[property] = specified;
- assert_equals(getComputedStyle(target)[property], computed);
- if (computed !== specified) {
+
+ let readValue = getComputedStyle(target)[property];
+ if (Array.isArray(computed)) {
+ assert_in_array(readValue, computed);
+ } else {
+ assert_equals(readValue, computed);
+ }
+ if (readValue !== specified) {
target.style[property] = '';
- target.style[property] = computed;
- assert_equals(getComputedStyle(target)[property], computed, 'computed value should round-trip');
+ target.style[property] = readValue;
+ assert_equals(getComputedStyle(target)[property], readValue,
+ 'computed value should round-trip');
}
- }, "Property " + property + " value '" + specified + "' computes to '" + computed + "'");
+ }, "Property " + property + " value '" + specified + "' computes to " +
+ computedDesc);
}
diff --git a/tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js b/tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js
index 0e4651be8aa..8d1645f9b11 100644
--- a/tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js
+++ b/tests/wpt/web-platform-tests/css/support/inheritance-testcommon.js
@@ -3,13 +3,21 @@
(function() {
function assert_initial(property, initial) {
+ let initialDesc = initial;
+ if (Array.isArray(initial))
+ initialDesc = '[' + initial.map(e => "'" + e + "'").join(' or ') + ']';
+
test(() => {
const target = document.getElementById('target');
assert_true(property in getComputedStyle(target), property + " doesn't seem to be supported in the computed style");
target.style[property] = 'initial';
- assert_equals(getComputedStyle(target)[property], initial);
+ if (Array.isArray(initial)) {
+ assert_in_array(getComputedStyle(target)[property], initial);
+ } else {
+ assert_equals(getComputedStyle(target)[property], initial);
+ }
target.style[property] = '';
- }, 'Property ' + property + ' has initial value ' + initial);
+ }, 'Property ' + property + ' has initial value ' + initialDesc);
}
/**
@@ -17,10 +25,12 @@ function assert_initial(property, initial) {
*
* The current document must have an element #target within element #container.
*
- * @param {string} property The name of the CSS property being tested.
- * @param {string} initial The computed value for 'initial'.
- * @param {string} other An arbitrary value for the property that round
- * trips and is distinct from the initial value.
+ * @param {string} property The name of the CSS property being tested.
+ * @param {string|array} initial The computed value for 'initial' or a list
+ * of acceptable computed value serializations.
+ * @param {string} other An arbitrary value for the property that
+ * round trips and is distinct from the initial
+ * value.
*/
function assert_inherited(property, initial, other) {
assert_initial(property, initial);
@@ -52,10 +62,12 @@ function assert_inherited(property, initial, other) {
*
* The current document must have an element #target within element #container.
*
- * @param {string} property The name of the CSS property being tested.
- * @param {string} initial The computed value for 'initial'.
- * @param {string} other An arbitrary value for the property that round
- * trips and is distinct from the initial value.
+ * @param {string} property The name of the CSS property being tested.
+ * @param {string|array} initial The computed value for 'initial' or a list
+ * of acceptable computed value serializations.
+ * @param {string} other An arbitrary value for the property that
+ * round trips and is distinct from the initial
+ * value.
*/
function assert_not_inherited(property, initial, other) {
assert_initial(property, initial);
diff --git a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-wakelock.html b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-wakelock.html
index 292e8a1c036..24fe7a526cb 100644
--- a/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-wakelock.html
+++ b/tests/wpt/web-platform-tests/feature-policy/resources/feature-policy-wakelock.html
@@ -1,12 +1,25 @@
<script>
"use strict";
-Promise.resolve().then(() => {
- try {
- const wakeLock = new WakeLock("screen");
- window.parent.postMessage({ enabled: true }, "*");
- } catch (e) {
- window.parent.postMessage({ enabled: false }, "*");
- }
+Promise.resolve().then(async () => {
+ // On success, WakeLock.request() returns a promise that never resolves. To
+ // prevent a timeout, abort it with an AbortController and use the different
+ // DOMExceptions we get to determine if this worked or not.
+ const controller = new AbortController();
+ const wakeLock = WakeLock.request("screen", { signal: controller.signal });
+ wakeLock.catch(e => {
+ if (e.name == "AbortError") {
+ // We stopped due to the call to AbortController.abort(), so we did manage
+ // to get the lock.
+ window.parent.postMessage({ enabled: true }, "*");
+ } else if (e.name == "NotAllowedError") {
+ // This means requesting the lock failed.
+ window.parent.postMessage({ enabled: false }, "*");
+ } else {
+ // We should not really hit this branch.
+ window.parent.postMessage({ enabled: false }, "*");
+ }
+ });
+ controller.abort();
});
</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/block-object-with-ruby-crash.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/block-object-with-ruby-crash.html
new file mode 100644
index 00000000000..481a7408e4a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-object-element/block-object-with-ruby-crash.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=966363">
+<object style="display:block;">
+ <ruby></ruby>
+</object>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+ test(()=> {}, "no crash");
+</script>
diff --git a/tests/wpt/web-platform-tests/payment-handler/app-change-payment-method.js b/tests/wpt/web-platform-tests/payment-handler/app-change-payment-method.js
index 7a9f7a7fa75..0e5a4768e76 100644
--- a/tests/wpt/web-platform-tests/payment-handler/app-change-payment-method.js
+++ b/tests/wpt/web-platform-tests/payment-handler/app-change-payment-method.js
@@ -20,7 +20,7 @@ async function responder(event) {
});
changePaymentMethodReturned = response;
} catch (err) {
- changePaymentMethodReturned = error.message;
+ changePaymentMethodReturned = err.message;
}
return {methodName, details: {changePaymentMethodReturned}};
}
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
index ff0adf17ac8..50560fa8225 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt
@@ -1,6 +1,6 @@
html5lib==1.0.1
mozinfo==1.1.0
-mozlog==4.0
+mozlog==4.1
mozdebug==0.1.1
pillow==6.0.0
urllib3[secure]==1.25.2
diff --git a/tests/wpt/web-platform-tests/wake-lock/idlharness.https.any.js b/tests/wpt/web-platform-tests/wake-lock/idlharness.https.any.js
index fa47bd9b1e0..2ad9980dae5 100644
--- a/tests/wpt/web-platform-tests/wake-lock/idlharness.https.any.js
+++ b/tests/wpt/web-platform-tests/wake-lock/idlharness.https.any.js
@@ -10,7 +10,7 @@ idl_test(
['dom', 'html', 'permissions'],
idl_array => {
idl_array.add_objects({
- WakeLock: ['new WakeLock("screen")']
+ WakeLock: []
});
}
);
diff --git a/tests/wpt/web-platform-tests/wake-lock/resources/page1.html b/tests/wpt/web-platform-tests/wake-lock/resources/page1.html
new file mode 100644
index 00000000000..7fc080d380c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/wake-lock/resources/page1.html
@@ -0,0 +1 @@
+<meta charset="utf-8">
diff --git a/tests/wpt/web-platform-tests/wake-lock/resources/page2.html b/tests/wpt/web-platform-tests/wake-lock/resources/page2.html
new file mode 100644
index 00000000000..7fc080d380c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/wake-lock/resources/page2.html
@@ -0,0 +1 @@
+<meta charset="utf-8">
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-abortsignal-set.https.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-abortsignal-set.https.html
new file mode 100644
index 00000000000..cc534d13d6c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-abortsignal-set.https.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>WakeLock: passing an AbortSignal already set aborts</title>
+<link rel="help" href="https://w3c.github.io/wake-lock/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+promise_test(t => {
+ const abortController = new AbortController();
+ const abortSignal = abortController.signal;
+ abortController.abort();
+ assert_true(abortSignal.aborted);
+
+ return promise_rejects(t, "AbortError", WakeLock.request('screen', { signal: abortSignal }));
+}, "A WakeLock request with an AbortSignal whose abort flag is set always aborts");
+
+promise_test(async t => {
+ const abortController = new AbortController();
+ const abortSignal = abortController.signal;
+ abortController.abort();
+ assert_true(abortSignal.aborted);
+
+ const lock1 = WakeLock.request('screen', { signal: abortSignal });
+ const lock2 = WakeLock.request('screen', { signal: abortSignal });
+ const lock3 = WakeLock.request('system', { signal: abortSignal });
+
+ await promise_rejects(t, "AbortError", lock1);
+ await promise_rejects(t, "AbortError", lock2);
+ await promise_rejects(t, "AbortError", lock3);
+}, "The same AbortSignal can be used to cause multiple wake locks to abort");
+</script>
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-active-document.https.window.js b/tests/wpt/web-platform-tests/wake-lock/wakelock-active-document.https.window.js
new file mode 100644
index 00000000000..f0f1e38ddf9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-active-document.https.window.js
@@ -0,0 +1,81 @@
+function getWakeLockObject(iframe, url) {
+ return new Promise(resolve => {
+ iframe.addEventListener(
+ "load",
+ () => {
+ const { WakeLock } = iframe.contentWindow;
+ resolve(WakeLock);
+ },
+ { once: true }
+ );
+ iframe.src = url;
+ });
+}
+
+promise_test(async t => {
+ const iframe = document.createElement("iframe");
+ document.body.appendChild(iframe);
+ // We first got to page1.html, grab a WakeLock object.
+ const wakeLock1 = await getWakeLockObject(
+ iframe,
+ "/wake-lock/resources/page1.html"
+ );
+ // We navigate the iframe again, putting wakeLock1's document into an inactive state.
+ const wakeLock2 = await getWakeLockObject(
+ iframe,
+ "/wake-lock/resources/page2.html"
+ );
+ // Now, wakeLock1's relevant global object's document is no longer active.
+ // So, call .request(), and make sure it rejects appropriately.
+ await promise_rejects(
+ t,
+ "NotAllowedError",
+ wakeLock1.request('screen'),
+ "Inactive document, so must throw NotAllowedError"
+ );
+ // We are done, so clean up.
+ iframe.remove();
+}, "WakeLock.request() aborts if the document is not active.");
+
+promise_test(async t => {
+ // We nest two iframes and wait for them to load.
+ const outerIframe = document.createElement("iframe");
+ document.body.appendChild(outerIframe);
+ // Load the outer iframe (we don't care about the awaited request)
+ await getWakeLockObject(
+ outerIframe,
+ "/wake-lock/resources/page1.html"
+ );
+
+ // Now we create the inner iframe
+ const innerIframe = outerIframe.contentDocument.createElement("iframe");
+
+ // nest them
+ outerIframe.contentDocument.body.appendChild(innerIframe);
+
+ // load innerIframe, and get the WakeLock instance
+ const wakeLock = await getWakeLockObject(
+ innerIframe,
+ "/wake-lock/resources/page2.html"
+ );
+
+ // Navigate the outer iframe to a new location.
+ // Wait for the load event to fire.
+ await new Promise(resolve => {
+ outerIframe.addEventListener("load", resolve);
+ outerIframe.src = "/wake-lock/resources/page2.html";
+ });
+
+ // Now, request's relevant global object's document is still active
+ // (it is the active document of the inner iframe), but is not fully active
+ // (since the parent of the inner iframe is itself no longer active).
+ // So, call request.show() and make sure it rejects appropriately.
+ await promise_rejects(
+ t,
+ "NotAllowedError",
+ wakeLock.request('screen'),
+ "Active, but not fully active, so must throw NotAllowedError"
+ );
+ // We are done, so clean up.
+ outerIframe.remove();
+}, "WakeLock.request() aborts if the document is active, but not fully active.");
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-applicability-manual.https.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-applicability-manual.https.html
deleted file mode 100644
index 2bd5c9dba4d..00000000000
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-applicability-manual.https.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>wake lock applicability test</title>
-<link rel="help" href="https://w3c.github.io/wake-lock/#dfn-applicable-wake-lock">
-<meta name="flags" content="interact">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<p>
- Lock and turn off the screen, then turn on and unlock the screen.
-</p>
-<p>
- Note: All the actions need to be done in 60 seconds, otherwise it will get TIMEOUT.
-</p>
-<script>
-
-setup({ explicit_timeout: true });
-
-promise_test(async t => {
- const wakeLock = new WakeLock("screen");
-
- const controller = new AbortController();
- const signal = controller.signal;
-
- await wakeLock.request({ signal });
- assert_true(wakeLock.active, "the active is true when wake lock is acquired");
- const eventWatcher = new EventWatcher(t, document, "visibilitychange");
-
- //lock screen to fire 'visibilitychange'
- await eventWatcher.wait_for("visibilitychange");
- assert_true(document.hidden, "document is hidden when screen is locked");
- assert_false(wakeLock.active, "the screen wake lock is not active when screen is switched off");
-
- //unlock screen to fire 'visibilitychange'
- await eventWatcher.wait_for("visibilitychange");
- assert_false(document.hidden, "document is visiable when screen is unlocked");
- assert_true(wakeLock.active, "the screen wake lock is active when screen is switched on again");
- controller.abort();
-}, "The screen wake lock isn't applicable after the screen is manually swiched off"
- + " by the user until it is switched on again.");
-
-
-promise_test(async t => {
- const wakeLock = new WakeLock("system");
-
- const controller = new AbortController();
- const signal = controller.signal;
-
- await wakeLock.request({ signal });
- assert_true(wakeLock.active, "the active is true when wake lock is acquired");
- const eventWatcher = new EventWatcher(t, document, "visibilitychange");
-
- //lock screen to fire 'visibilitychange'
- await eventWatcher.wait_for("visibilitychange");
- assert_true(document.hidden, "document is hidden when screen is locked");
- assert_true(wakeLock.active, "the system wake lock is still active when screen is switched off");
- controller.abort();
-}, "Manually switching off the screen will not affect the applicability of the system wake lock.");
-
-</script>
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-disabled-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-disabled-by-feature-policy.https.sub.html
index 008424ac3c8..0d451c98deb 100644
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-disabled-by-feature-policy.https.sub.html
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-disabled-by-feature-policy.https.sub.html
@@ -11,13 +11,13 @@
const cross_origin_src =
"https://{{domains[www]}}:{{ports[https][0]}}" + same_origin_src;
- test(() => {
- assert_throws("NotAllowedError", () => new WakeLock("screen"));
+ promise_test(t => {
+ return promise_rejects(t, "NotAllowedError", WakeLock.request("screen"));
}, 'Feature-Policy header {"wake-lock" : []} disallows the top-level document.');
async_test(t => {
test_feature_availability(
- 'new WakeLock("screen")',
+ 'WakeLock.request("screen")',
t,
same_origin_src,
expect_feature_unavailable_default
@@ -26,7 +26,7 @@
async_test(t => {
test_feature_availability(
- 'new WakeLock("screen")',
+ 'WakeLock.request("screen")',
t,
cross_origin_src,
expect_feature_unavailable_default
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-document-hidden-manual.https.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-document-hidden-manual.https.html
new file mode 100644
index 00000000000..d7c12485e16
--- /dev/null
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-document-hidden-manual.https.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<meta name="timeout" content="long">
+<title>Screen wake locks respect page visibility changes</title>
+<link rel="help" href="https://w3c.github.io/wake-lock/#dfn-requesting-the-wake-lock">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+
+promise_test(async t => {
+ const controller = new AbortController();
+ const screenWakeLock = WakeLock.request('screen', { signal: controller.signal });
+ const systemWakeLock = WakeLock.request('system', { signal: controller.signal });
+ const systemWakeLockPromise = new Promise((resolve, reject) => {
+ systemWakeLock.catch(error => {
+ assert_equals("AbortError", error.name, "systemWakeLock must have been aborted");
+ assert_false(document.hidden, "systemWakeLock must have been aborted after the page is visible again");
+ resolve();
+ });
+ });
+
+ const eventWatcher = new EventWatcher(t, document, "visibilitychange");
+ await eventWatcher.wait_for("visibilitychange");
+ assert_true(document.hidden, "document is hidden after the visibilitychange event");
+ await promise_rejects(t, "AbortError", screenWakeLock, "existing screen locks are aborted");
+ await promise_rejects(t, "NotAllowedError", WakeLock.request('screen'),
+ "new screen locks are not allowed when the page is not visible");
+
+ await eventWatcher.wait_for("visibilitychange");
+ assert_false(document.hidden, "document is no longer hidden after the visibilitychange event");
+ controller.abort();
+
+ return systemWakeLockPromise;
+}, "Test screen locks respect page visibility changes and system locks are unchanged");
+
+</script>
+
+<p>Switch the page to the background, then switch back to it.</p>
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-document-hidden.https.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-document-hidden.https.html
deleted file mode 100644
index 1edafee45fc..00000000000
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-document-hidden.https.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>screen wake lock will not be actived in hidden document</title>
-<link rel="help" href="https://w3c.github.io/wake-lock/#dfn-requesting-the-wake-lock">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script>
-
-promise_test(async t => {
- const wakeLock = new WakeLock("screen");
-
- const controller = new AbortController();
- const signal = controller.signal;
-
- await wakeLock.request({ signal });
- assert_true(wakeLock.active, "the active is true when wake lock is acquired");
- const eventWatcher = new EventWatcher(t, document, "visibilitychange");
- const win = window.open("about:blank", "_blank");
-
- await eventWatcher.wait_for("visibilitychange");
- assert_true(document.hidden, "document is hidden when new window is opened");
- assert_false(wakeLock.active, "the active is false when document is hidden");
- win.close();
-
- await eventWatcher.wait_for("visibilitychange");
- assert_false(document.hidden, "document is visiable when new window is closed");
- assert_true(wakeLock.active, "the active is true when document regains visibility");
- controller.abort();
-}, "Test that screen wake lock will not be actived in hidden document");
-
-</script>
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute-redirect-on-load.https.sub.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute-redirect-on-load.https.sub.html
index d93eaa8bdc5..b27fbefa4ec 100644
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute-redirect-on-load.https.sub.html
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute-redirect-on-load.https.sub.html
@@ -14,7 +14,7 @@
async_test(t => {
test_feature_availability(
- 'new WakeLock("screen")',
+ 'WakeLock.request("screen")',
t,
same_origin_src,
expect_feature_available_default,
@@ -24,7 +24,7 @@
async_test(t => {
test_feature_availability(
- 'new WakeLock("screen")',
+ 'WakeLock.request("screen")',
t,
cross_origin_src,
expect_feature_unavailable_default,
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute.https.sub.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute.https.sub.html
index c0066e7f1f8..3897df6288e 100644
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute.https.sub.html
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy-attribute.https.sub.html
@@ -13,7 +13,7 @@
async_test(t => {
test_feature_availability(
- 'new WakeLock("screen")',
+ 'WakeLock.request("screen")',
t,
same_origin_src,
expect_feature_available_default,
@@ -23,7 +23,7 @@
async_test(t => {
test_feature_availability(
- 'new WakeLock("screen")',
+ 'WakeLock.request("screen")',
t,
cross_origin_src,
expect_feature_available_default,
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy.https.sub.html
index 39a2af4960f..f4aaa73e0ef 100644
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy.https.sub.html
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-by-feature-policy.https.sub.html
@@ -11,17 +11,16 @@
const cross_origin_src =
"https://{{domains[www]}}:{{ports[https][0]}}" + same_origin_src;
- test(() => {
- try {
- new WakeLock("screen");
- } catch (e) {
- assert_unreached(e);
- }
+ promise_test(t => {
+ const controller = new AbortController();
+ const lock = WakeLock.request("screen", { signal: controller.signal });
+ controller.abort();
+ return promise_rejects(t, "AbortError", lock);
}, 'Feature-Policy header {"wake-lock" : ["*"]} allows the top-level document.');
async_test(t => {
test_feature_availability(
- 'new WakeLock("screen")',
+ 'WakeLock.request("screen")',
t,
same_origin_src,
expect_feature_available_default
@@ -30,7 +29,7 @@
async_test(t => {
test_feature_availability(
- 'new WakeLock("screen")',
+ 'WakeLock.request("screen")',
t,
cross_origin_src,
expect_feature_available_default
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html
index ab81d4068b1..19bf59d3688 100644
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html
+++ b/tests/wpt/web-platform-tests/wake-lock/wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html
@@ -12,17 +12,16 @@
const cross_origin_src =
"https://{{domains[www]}}:{{ports[https][0]}}" + same_origin_src;
- test(t => {
- try {
- new WakeLock("screen");
- } catch (e) {
- assert_unreached(e);
- }
+ promise_test(t => {
+ const controller = new AbortController();
+ const lock = WakeLock.request("screen", { signal: controller.signal });
+ controller.abort();
+ return promise_rejects(t, "AbortError", lock);
}, 'Feature-Policy header wake-lock "self" allows the top-level document.');
async_test(t => {
test_feature_availability(
- 'new WakeLock("screen")',
+ 'WakeLock.request("screen")',
t,
same_origin_src,
expect_feature_available_default
@@ -31,7 +30,7 @@
async_test(t => {
test_feature_availability(
- 'new WakeLock("screen")',
+ 'WakeLock.request("screen")',
t,
cross_origin_src,
expect_feature_unavailable_default
diff --git a/tests/wpt/web-platform-tests/wake-lock/wakelock-onactivechange.https.html b/tests/wpt/web-platform-tests/wake-lock/wakelock-onactivechange.https.html
deleted file mode 100644
index 381e1e40f1c..00000000000
--- a/tests/wpt/web-platform-tests/wake-lock/wakelock-onactivechange.https.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>Wake Lock 'onactivechange' Test</title>
-<link rel="help" href="https://w3c.github.io/wake-lock/">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<script>
-
-promise_test(async t => {
- const wakeLock = new WakeLock("screen");
- const eventWatcher = new EventWatcher(t, wakeLock, "activechange");
- assert_false(wakeLock.active, "the active is false before wake lock is acquired");
-
- const controller = new AbortController();
- const signal = controller.signal;
-
- await wakeLock.request({ signal });
- let evt1 = await eventWatcher.wait_for("activechange");
- assert_true(evt1.isTrusted && !evt1.bubbles && !evt1.cancelable && evt1 instanceof Event, "a simple event is fired");
- assert_equals(evt1.type, "activechange", "the event name is 'activechange'");
- assert_equals(evt1.target, wakeLock, "event.target is WakeLock.");
- assert_true(wakeLock.active, "the active is true when wake lock is acquired");
-
- controller.abort();
- let evt2 = await eventWatcher.wait_for("activechange");
- assert_true(evt2.isTrusted && !evt2.bubbles && !evt2.cancelable && evt2 instanceof Event, "a simple event is fired");
- assert_false(wakeLock.active, "the active is false when wake lock is released");
-}, "Test that 'activechange' event is fire and wakeLock.active is valid");
-
-</script>
diff --git a/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-scriptprocessornode-interface/simple-input-output.html b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-scriptprocessornode-interface/simple-input-output.html
new file mode 100644
index 00000000000..7fd20e67a70
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webaudio/the-audio-api/the-scriptprocessornode-interface/simple-input-output.html
@@ -0,0 +1,98 @@
+<!doctype html>
+<html>
+ <head>
+ <title>Test ScriptProcessorNode</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/webaudio/resources/audit-util.js"></script>
+ <script src="/webaudio/resources/audit.js"></script>
+ </head>
+
+ <body>
+ <script>
+ // Arbitrary sample rate
+ const sampleRate = 48000;
+ let audit = Audit.createTaskRunner();
+
+ audit.define(
+ {
+ label: 'test',
+ description: 'ScriptProcessor with stopped input source'
+ },
+ (task, should) => {
+ // Two channels for testing. Channel 0 is the output of the
+ // scriptProcessor. Channel 1 is the oscillator so we can compare
+ // the outputs.
+ let context = new OfflineAudioContext({
+ numberOfChannels: 2,
+ length: sampleRate,
+ sampleRate: sampleRate
+ });
+
+ let merger = new ChannelMergerNode(
+ context, {numberOfChannels: context.destination.channelCount});
+ merger.connect(context.destination);
+
+ let src = new OscillatorNode(context);
+
+ // Arbitrary buffer size for the ScriptProcessorNode. Don't use 0;
+ // we need to know the actual size to know the latency of the node
+ // (easily).
+ const spnSize = 512;
+ let spn = context.createScriptProcessor(spnSize, 1, 1);
+
+ // Arrange for the ScriptProcessor to add |offset| to the input.
+ const offset = 1;
+ spn.onaudioprocess = (event) => {
+ let input = event.inputBuffer.getChannelData(0);
+ let output = event.outputBuffer.getChannelData(0);
+ for (let k = 0; k < output.length; ++k) {
+ output[k] = input[k] + offset;
+ }
+ };
+
+ src.connect(spn).connect(merger, 0, 0);
+ src.connect(merger, 0, 1);
+
+ // Start and stop the source. The stop time is fairly arbitrary,
+ // but use a render quantum boundary for simplicity.
+ const stopFrame = RENDER_QUANTUM_FRAMES;
+ src.start(0);
+ src.stop(stopFrame / context.sampleRate);
+
+ context.startRendering()
+ .then(buffer => {
+ let ch0 = buffer.getChannelData(0);
+ let ch1 = buffer.getChannelData(1);
+
+ let shifted = ch1.slice(0, stopFrame).map(x => x + offset);
+
+ // SPN has a basic latency of 2*|spnSize| fraems, so the
+ // beginning is silent.
+ should(
+ ch0.slice(0, 2 * spnSize - 1),
+ `ScriptProcessor output[0:${2 * spnSize - 1}]`)
+ .beConstantValueOf(0);
+
+ // For the middle section (after adding latency), the output
+ // should be the source shifted by |offset|.
+ should(
+ ch0.slice(2 * spnSize, 2 * spnSize + stopFrame),
+ `ScriptProcessor output[${2 * spnSize}:${
+ 2 * spnSize + stopFrame - 1}]`)
+ .beCloseToArray(shifted, {absoluteThreshold: 0});
+
+ // Output should be constant after the source has stopped.
+ // Include the latency introduced by the node.
+ should(
+ ch0.slice(2 * spnSize + stopFrame),
+ `ScriptProcessor output[${2 * spnSize + stopFrame}:]`)
+ .beConstantValueOf(offset);
+ })
+ .then(() => task.done());
+ });
+
+ audit.run();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js
index 986204df8b7..fde1c6f0374 100644
--- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js
+++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-helper.js
@@ -309,6 +309,21 @@ function listenToConnected(pc) {
});
}
+// Returns a promise that resolves when |pc.connectionState| is in one of the
+// wanted states.
+function waitForConnectionStateChange(pc, wantedStates) {
+ return new Promise((resolve) => {
+ if (wantedStates.includes(pc.connectionState)) {
+ resolve();
+ return;
+ }
+ pc.addEventListener('connectionstatechange', () => {
+ if (wantedStates.includes(pc.connectionState))
+ resolve();
+ });
+ });
+}
+
// Resolves when RTP packets have been received.
function listenForSSRCs(t, receiver) {
return new Promise((resolve) => {
diff --git a/tests/wpt/web-platform-tests/webrtc/protocol/dtls-fingerprint-validation.html b/tests/wpt/web-platform-tests/webrtc/protocol/dtls-fingerprint-validation.html
new file mode 100644
index 00000000000..9a397785eec
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webrtc/protocol/dtls-fingerprint-validation.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>DTLS fingerprint validation</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../RTCPeerConnection-helper.js"></script>
+</head>
+<body>
+<script>
+
+// Tests that an invalid fingerprint leads to a connectionState 'failed'.
+promise_test(async t => {
+ const pc1 = new RTCPeerConnection();
+ const pc2 = new RTCPeerConnection();
+ t.add_cleanup(() => pc1.close());
+ t.add_cleanup(() => pc2.close());
+ pc1.createDataChannel('datachannel');
+ coupleIceCandidates(pc1, pc2);
+ const offer = await pc1.createOffer();
+ await pc2.setRemoteDescription(offer);
+ await pc1.setLocalDescription(offer);
+ const answer = await pc2.createAnswer();
+ await pc1.setRemoteDescription(new RTCSessionDescription({
+ type: answer.type,
+ sdp: answer.sdp.replace(/a=fingerprint:sha-256 .*/g,
+ 'a=fingerprint:sha-256 00:00:00:00:00:00:00:00:00:00:00:00:00:' +
+ '00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00'),
+ }));
+ await pc2.setLocalDescription(answer);
+
+ await waitForConnectionStateChange(pc1, ['failed']);
+ await waitForConnectionStateChange(pc2, ['failed']);
+}, 'Connection fails if one side provides a wrong DTLS fingerprint');
+</script>
+</body>
+</html>