aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWPT Sync Bot <josh+wptsync@joshmatthews.net>2018-12-10 21:07:47 -0500
committerWPT Sync Bot <josh+wptsync@joshmatthews.net>2018-12-10 23:19:57 -0500
commita44e48301c1210c354bd7c37d105406e895c62a0 (patch)
tree282e7ea9924d8b255c992daefae92fbf53ab82e8
parenteeaca0b26d4bd46668fb792dccfbee0111982f6a (diff)
downloadservo-a44e48301c1210c354bd7c37d105406e895c62a0.tar.gz
servo-a44e48301c1210c354bd7c37d105406e895c62a0.zip
Update web-platform-tests to revision 912d5081b62d6e6a2f847935c82722e31cca7a1f
-rw-r--r--tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini3
-rw-r--r--tests/wpt/metadata/MANIFEST.json274
-rw-r--r--tests/wpt/metadata/css/css-transitions/properties-value-003.html.ini6
-rw-r--r--tests/wpt/metadata/encoding/single-byte-decoder.html.ini2
-rw-r--r--tests/wpt/metadata/fetch/images/canvas-remote-read-remote-image-redirect.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini (renamed from tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini)2
-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/forms/the-button-element/button-click-submits.html.ini6
-rw-r--r--tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini7
-rw-r--r--tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.tentative.html.ini31
-rw-r--r--tests/wpt/metadata/html/semantics/scripting-1/the-script-element/muted-errors.sub.html.ini6
-rw-r--r--tests/wpt/metadata/quirks/unitless-length/quirks.html.ini283
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.js2
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/hmac.js2
-rw-r--r--tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa.js2
-rw-r--r--tests/wpt/web-platform-tests/check_stability.ini1
-rw-r--r--tests/wpt/web-platform-tests/common/performance-timeline-utils.js7
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/block-end-aligned-abspos-with-overflow-ref.html8
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/block-end-aligned-abspos-with-overflow.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-break/block-end-aligned-abspos.html25
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/double-forward.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/invalidation-change-exportparts-forward.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/invalidation-change-part-name-forward.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/invalidation-complex-selector-forward.html34
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/precedence-part-vs-part.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/simple-forward-shorthand.html32
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/simple-forward.html32
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/currentcolor-animation-001.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-transitions/transitions-animatable-properties-01.html6
-rw-r--r--tests/wpt/web-platform-tests/css/css-values/calc-unit-analysis.html18
-rw-r--r--tests/wpt/web-platform-tests/css/css-variables/test_variable_legal_values.html6
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/offsetParent_element_test.html10
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/computed-style-001.html20
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/computed-style-005.html10
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/inline-style-001.html31
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-001.html23
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-002.html12
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-003.html9
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-004.html8
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/style-sheet-interfaces-001.html39
-rw-r--r--tests/wpt/web-platform-tests/css/cssom/style-sheet-interfaces-002.html12
-rw-r--r--tests/wpt/web-platform-tests/css/mediaqueries/test_media_queries.html12
-rw-r--r--tests/wpt/web-platform-tests/fetch/images/canvas-remote-read-remote-image-redirect.html27
-rw-r--r--tests/wpt/web-platform-tests/hr-time/monotonic-clock.any.js9
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/available-images-onload.html33
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/forms/the-button-element/button-click-submits.html61
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/support/target_blank_iplicit_noopener.html6
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.tentative.html60
-rw-r--r--tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/muted-errors.sub.html19
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini6
-rw-r--r--tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/elementTiming.html.ini2
-rw-r--r--tests/wpt/web-platform-tests/navigation-timing/resources/webperftestharness.js7
-rw-r--r--tests/wpt/web-platform-tests/navigation-timing/test_navigation_redirectCount_none.html3
-rw-r--r--tests/wpt/web-platform-tests/navigation-timing/test_no_previous_document.html3
-rw-r--r--tests/wpt/web-platform-tests/navigation-timing/test_timing_attributes_order.html3
-rw-r--r--tests/wpt/web-platform-tests/navigation-timing/test_timing_client_redirect.html5
-rw-r--r--tests/wpt/web-platform-tests/navigation-timing/test_timing_reload.html3
-rw-r--r--tests/wpt/web-platform-tests/navigation-timing/test_timing_xserver_redirect.html5
-rw-r--r--tests/wpt/web-platform-tests/requestidlecallback/basic.html12
-rw-r--r--tests/wpt/web-platform-tests/resource-timing/resources/webperftestharness.js15
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/current-time-nan.html85
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/current-time-root-scroller.html44
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/current-time-writing-modes.html350
-rw-r--r--tests/wpt/web-platform-tests/scroll-animations/current-time.html2
-rw-r--r--tests/wpt/web-platform-tests/tools/ci/check_stability.py7
-rwxr-xr-xtests/wpt/web-platform-tests/tools/ci/taskcluster-run.py25
-rw-r--r--tests/wpt/web-platform-tests/tools/manifest/download.py79
-rw-r--r--tests/wpt/web-platform-tests/tools/third_party/hyper/hyper/http20/connection.py26
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/run.py30
-rw-r--r--tests/wpt/web-platform-tests/tools/wpt/testfiles.py24
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py2
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/tests/functional/base.py1
-rw-r--r--tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_response.py2
-rw-r--r--tests/wpt/web-platform-tests/user-timing/resources/webperftestharness.js7
-rw-r--r--tests/wpt/web-platform-tests/webrtc/protocol/msid-parse.html69
75 files changed, 1901 insertions, 299 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 a69bf24f48c..2b106826024 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -107437,6 +107437,18 @@
{}
]
],
+ "css/css-break/block-end-aligned-abspos-with-overflow.html": [
+ [
+ "/css/css-break/block-end-aligned-abspos-with-overflow.html",
+ [
+ [
+ "/css/css-break/block-end-aligned-abspos-with-overflow-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css/css-break/line-after-unbreakable-float-after-padding.html": [
[
"/css/css-break/line-after-unbreakable-float-after-padding.html",
@@ -251674,6 +251686,11 @@
{}
]
],
+ "css/css-break/block-end-aligned-abspos-with-overflow-ref.html": [
+ [
+ {}
+ ]
+ ],
"css/css-break/line-after-unbreakable-float-after-padding-ref.html": [
[
{}
@@ -295564,6 +295581,11 @@
{}
]
],
+ "html/semantics/links/links-created-by-a-and-area-elements/support/target_blank_iplicit_noopener.html": [
+ [
+ {}
+ ]
+ ],
"html/semantics/links/linktypes/alternate-css-ref.html": [
[
{}
@@ -338586,6 +338608,12 @@
{}
]
],
+ "css/css-break/block-end-aligned-abspos.html": [
+ [
+ "/css/css-break/block-end-aligned-abspos.html",
+ {}
+ ]
+ ],
"css/css-break/hit-test-inline-fragmentation-with-border-radius.html": [
[
"/css/css-break/hit-test-inline-fragmentation-with-border-radius.html",
@@ -342760,6 +342788,12 @@
{}
]
],
+ "css/css-shadow-parts/double-forward.html": [
+ [
+ "/css/css-shadow-parts/double-forward.html",
+ {}
+ ]
+ ],
"css/css-shadow-parts/host-stylesheet.html": [
[
"/css/css-shadow-parts/host-stylesheet.html",
@@ -342772,6 +342806,18 @@
{}
]
],
+ "css/css-shadow-parts/invalidation-change-exportparts-forward.html": [
+ [
+ "/css/css-shadow-parts/invalidation-change-exportparts-forward.html",
+ {}
+ ]
+ ],
+ "css/css-shadow-parts/invalidation-change-part-name-forward.html": [
+ [
+ "/css/css-shadow-parts/invalidation-change-part-name-forward.html",
+ {}
+ ]
+ ],
"css/css-shadow-parts/invalidation-change-part-name-idl-domtokenlist.html": [
[
"/css/css-shadow-parts/invalidation-change-part-name-idl-domtokenlist.html",
@@ -342790,6 +342836,12 @@
{}
]
],
+ "css/css-shadow-parts/invalidation-complex-selector-forward.html": [
+ [
+ "/css/css-shadow-parts/invalidation-complex-selector-forward.html",
+ {}
+ ]
+ ],
"css/css-shadow-parts/invalidation-complex-selector.html": [
[
"/css/css-shadow-parts/invalidation-complex-selector.html",
@@ -342802,6 +342854,24 @@
{}
]
],
+ "css/css-shadow-parts/precedence-part-vs-part.html": [
+ [
+ "/css/css-shadow-parts/precedence-part-vs-part.html",
+ {}
+ ]
+ ],
+ "css/css-shadow-parts/simple-forward-shorthand.html": [
+ [
+ "/css/css-shadow-parts/simple-forward-shorthand.html",
+ {}
+ ]
+ ],
+ "css/css-shadow-parts/simple-forward.html": [
+ [
+ "/css/css-shadow-parts/simple-forward.html",
+ {}
+ ]
+ ],
"css/css-shadow-parts/simple.html": [
[
"/css/css-shadow-parts/simple.html",
@@ -364496,6 +364566,12 @@
{}
]
],
+ "fetch/images/canvas-remote-read-remote-image-redirect.html": [
+ [
+ "/fetch/images/canvas-remote-read-remote-image-redirect.html",
+ {}
+ ]
+ ],
"fetch/nosniff/image.html": [
[
"/fetch/nosniff/image.html",
@@ -371720,6 +371796,12 @@
{}
]
],
+ "html/semantics/embedded-content/the-img-element/available-images-onload.html": [
+ [
+ "/html/semantics/embedded-content/the-img-element/available-images-onload.html",
+ {}
+ ]
+ ],
"html/semantics/embedded-content/the-img-element/current-pixel-density/basic.html": [
[
"/html/semantics/embedded-content/the-img-element/current-pixel-density/basic.html",
@@ -373398,6 +373480,12 @@
{}
]
],
+ "html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.tentative.html": [
+ [
+ "/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.tentative.html",
+ {}
+ ]
+ ],
"html/semantics/rellist-feature-detection.html": [
[
"/html/semantics/rellist-feature-detection.html",
@@ -404730,6 +404818,24 @@
{}
]
],
+ "scroll-animations/current-time-nan.html": [
+ [
+ "/scroll-animations/current-time-nan.html",
+ {}
+ ]
+ ],
+ "scroll-animations/current-time-root-scroller.html": [
+ [
+ "/scroll-animations/current-time-root-scroller.html",
+ {}
+ ]
+ ],
+ "scroll-animations/current-time-writing-modes.html": [
+ [
+ "/scroll-animations/current-time-writing-modes.html",
+ {}
+ ]
+ ],
"scroll-animations/current-time.html": [
[
"/scroll-animations/current-time.html",
@@ -414640,6 +414746,12 @@
{}
]
],
+ "webrtc/protocol/msid-parse.html": [
+ [
+ "/webrtc/protocol/msid-parse.html",
+ {}
+ ]
+ ],
"webrtc/protocol/video-codecs.https.html": [
[
"/webrtc/protocol/video-codecs.https.html",
@@ -448658,7 +448770,7 @@
"testharness"
],
"WebCryptoAPI/sign_verify/ecdsa.js": [
- "869fb796517561d7026ab8c215b62a014f72e65b",
+ "208b81c45ea10fded7f24c7c99b288a914c8fe66",
"support"
],
"WebCryptoAPI/sign_verify/ecdsa_vectors.js": [
@@ -448670,7 +448782,7 @@
"testharness"
],
"WebCryptoAPI/sign_verify/hmac.js": [
- "22a2acf64f5b5e050a9e76ca01d4fb96aaa57b22",
+ "e8f9ec5815287fc9c2ab0eb039edf806f3a8f613",
"support"
],
"WebCryptoAPI/sign_verify/hmac_vectors.js": [
@@ -448678,7 +448790,7 @@
"support"
],
"WebCryptoAPI/sign_verify/rsa.js": [
- "656c320f78f6a394ceaaf01e50d540f6c5c1a2ed",
+ "251f57e8bbcfffa179390fc7efab266393a27f3e",
"support"
],
"WebCryptoAPI/sign_verify/rsa_pkcs.https.worker.js": [
@@ -453230,7 +453342,7 @@
"testharness"
],
"check_stability.ini": [
- "b939328be1cb69c3dcc47495930ba0df28b2bad2",
+ "e6ab448c001021a8fd77e4766591236dfdd02890",
"support"
],
"clear-site-data/META.yml": [
@@ -453574,7 +453686,7 @@
"support"
],
"common/performance-timeline-utils.js": [
- "3efce5b5d8b3cbc9ac17171e674d317de8797a55",
+ "b20241cc6106f93a999b498bbf21426f44ad89fc",
"support"
],
"common/performance-timeline-utils.js.headers": [
@@ -540601,6 +540713,18 @@
"bfd40518b4a6477632fa319f3e53fe22517d326d",
"support"
],
+ "css/css-break/block-end-aligned-abspos-with-overflow-ref.html": [
+ "a8470b09a7d67eb3929c0380eaa45779c2b558ad",
+ "support"
+ ],
+ "css/css-break/block-end-aligned-abspos-with-overflow.html": [
+ "9000c6351384be8cec767405f7f7aecaf2223173",
+ "reftest"
+ ],
+ "css/css-break/block-end-aligned-abspos.html": [
+ "c7acaa977b240ecde638e900d0fec7844cf2b965",
+ "testharness"
+ ],
"css/css-break/break-before-always-001.xht": [
"e2e7297d1532fba60d2074aa2701600dc7441742",
"visual"
@@ -565969,6 +566093,10 @@
"7fe9744af9584c07ffff6c408574002896e8c134",
"testharness"
],
+ "css/css-shadow-parts/double-forward.html": [
+ "d23ec775fff830bd3ed2668ec2dc7ab184a6dc37",
+ "testharness"
+ ],
"css/css-shadow-parts/host-stylesheet.html": [
"2e65c4b1b57bd9959c68e85e11b442c67f2c5a42",
"testharness"
@@ -565977,6 +566105,14 @@
"2dfd4b0510a758c73bf8ac8291088d39077578d7",
"testharness"
],
+ "css/css-shadow-parts/invalidation-change-exportparts-forward.html": [
+ "1e319deb633cdb765ea4613eb7c2b8c6dd0e615a",
+ "testharness"
+ ],
+ "css/css-shadow-parts/invalidation-change-part-name-forward.html": [
+ "f8da6d1f543fcfdcfe9c191d5564c9c07af930f3",
+ "testharness"
+ ],
"css/css-shadow-parts/invalidation-change-part-name-idl-domtokenlist.html": [
"2f9fffb86eacb088365fc592e31c58238e8321dc",
"testharness"
@@ -565989,6 +566125,10 @@
"47630d956f9bf3053ec3ed8a2d04223bdd8720a9",
"testharness"
],
+ "css/css-shadow-parts/invalidation-complex-selector-forward.html": [
+ "7c732b9bdf12467a40b64ebf8a02a10f249a900b",
+ "testharness"
+ ],
"css/css-shadow-parts/invalidation-complex-selector.html": [
"5b1fd800790c4e14ec8fbc34bd24eb6c2eb31ab0",
"testharness"
@@ -565997,6 +566137,18 @@
"fc3282a6e944950548eeda66a78d453ec1a552f3",
"testharness"
],
+ "css/css-shadow-parts/precedence-part-vs-part.html": [
+ "9905cf8b5e46b51dc21326dc31f8c2bc6d7a39b6",
+ "testharness"
+ ],
+ "css/css-shadow-parts/simple-forward-shorthand.html": [
+ "0142967dfdb707a376b86e5347465117033cda01",
+ "testharness"
+ ],
+ "css/css-shadow-parts/simple-forward.html": [
+ "a1a19aee4ede175f7e862318105f4625144b6e42",
+ "testharness"
+ ],
"css/css-shadow-parts/simple.html": [
"a7f17d9670b137995b0dfc6f43221e16b988376d",
"testharness"
@@ -578834,7 +578986,7 @@
"testharness"
],
"css/css-transitions/currentcolor-animation-001.html": [
- "e36e748150680628c150a12f686579da6e99ddcc",
+ "4fd982a8cc77aa999c947d5c47e0aec8df8b9a92",
"testharness"
],
"css/css-transitions/detached-container-001.html": [
@@ -579466,7 +579618,7 @@
"testharness"
],
"css/css-transitions/transitions-animatable-properties-01.html": [
- "39dd073f929fa59abb52bc7b4b4644a351670ad2",
+ "48a7d1e2e016ae914dbc9b8c08eadbc0e2a669a2",
"testharness"
],
"css/css-transitions/zero-duration-multiple-transition.html": [
@@ -583414,7 +583566,7 @@
"testharness"
],
"css/css-values/calc-unit-analysis.html": [
- "1520b4d3fa2390c219d637023fc3981dc01ab8ff",
+ "20eab22bf7cdff8c4fdc7a88b1524f69d4b042fb",
"testharness"
],
"css/css-values/ch-unit-001.html": [
@@ -583814,7 +583966,7 @@
"support"
],
"css/css-variables/test_variable_legal_values.html": [
- "2e074389f7a4ff38f7cbdac8f865f8cffde9663a",
+ "1d86c0834ccb1da7965edf56f9a4aefc0a041421",
"testharness"
],
"css/css-variables/variable-animation-from-to.html": [
@@ -590942,7 +591094,7 @@
"testharness"
],
"css/cssom-view/offsetParent_element_test.html": [
- "bb5686d41daebaa6cff5b023cbab5211248b7aac",
+ "c88b616986511b3220449c03421e827be0d2e534",
"testharness"
],
"css/cssom-view/offsetTopLeftInScrollableParent.html": [
@@ -591350,7 +591502,7 @@
"testharness"
],
"css/cssom/computed-style-001.html": [
- "80bf06c300ec7a693ca74dc98dbf2b62df721aaa",
+ "d637b066b03a71283ad89315a5c346a1715900f1",
"testharness"
],
"css/cssom/computed-style-002.html": [
@@ -591366,7 +591518,7 @@
"testharness"
],
"css/cssom/computed-style-005.html": [
- "998f70eb97836575c0135ff5311a43b6ee09ab94",
+ "49a5977acdb999be701ecc6da3c10eb433237621",
"testharness"
],
"css/cssom/computed-style-set-property.html": [
@@ -591522,7 +591674,7 @@
"testharness"
],
"css/cssom/inline-style-001.html": [
- "51f36f250e5c10cec7f08f5aa1a2de989d90bfd8",
+ "d4bf3b92ab2c9a45614754807cdd5f2af79c1fa5",
"testharness"
],
"css/cssom/insertRule-charset-no-index.html": [
@@ -591558,19 +591710,19 @@
"reftest"
],
"css/cssom/medialist-interfaces-001.html": [
- "19c661e1b3dffa1f30d9886346317879063ae0d4",
+ "f436177fb8ec210d878418883d7876f64d1c45df",
"testharness"
],
"css/cssom/medialist-interfaces-002.html": [
- "2b6bba2a661ed257fcb775b3a2884f3dfb630c3e",
+ "9820015f5e02642ea4c544184811f9f243ee83c5",
"testharness"
],
"css/cssom/medialist-interfaces-003.html": [
- "649f9485f44f800b7685d604ac31c88ce43e4d81",
+ "1778c4a7ae98904460054157c2cc44ae264e0e70",
"testharness"
],
"css/cssom/medialist-interfaces-004.html": [
- "cf9befb8ffb628f59508d5d74ec6ed4db9e4e09e",
+ "7cbea37cba421bbf13887322cc48b72a8e04cdc8",
"testharness"
],
"css/cssom/overflow-serialization.html": [
@@ -591634,11 +591786,11 @@
"testharness"
],
"css/cssom/style-sheet-interfaces-001.html": [
- "20dc9713e58b05a159ef731164889fc37b4b02aa",
+ "1f6c9e249357df597ecdf270bf9820be8254f40a",
"testharness"
],
"css/cssom/style-sheet-interfaces-002.html": [
- "51b0eb336be7abb33b7b0b29523b1eafd3d9b93e",
+ "e86a9a16e3bc9c0a22277996ad1fbb5f273d4bdd",
"testharness"
],
"css/cssom/stylesheet-replacedata-dynamic-ref.html": [
@@ -592810,7 +592962,7 @@
"support"
],
"css/mediaqueries/test_media_queries.html": [
- "a239efdc1168f69471f5d0a88e4f9027fc00ae17",
+ "250f9524adeadeb2684196ccac8843cfed1567c2",
"testharness"
],
"css/mediaqueries/viewport-script-dynamic-ref.html": [
@@ -611485,6 +611637,10 @@
"721d6e79b5248ed7a4334d754b8039c366090051",
"testharness"
],
+ "fetch/images/canvas-remote-read-remote-image-redirect.html": [
+ "bfcb7537651f285d0aa5d60a41032c534ff39b95",
+ "testharness"
+ ],
"fetch/nosniff/image.html": [
"9dfdb94cf62a4cde91e44f6d4299ca26c15ba9db",
"testharness"
@@ -612882,7 +613038,7 @@
"testharness"
],
"hr-time/monotonic-clock.any.js": [
- "f7f254557f4296f8e69757eb9ed3ac11a05d3a33",
+ "c53b04d844e4f587891595c09c56e336f3893f9b",
"testharness"
],
"hr-time/performance-tojson.html": [
@@ -625505,6 +625661,10 @@
"15e02bcf51535d45a702b0977f919eff8ce5ba9c",
"testharness"
],
+ "html/semantics/embedded-content/the-img-element/available-images-onload.html": [
+ "5fc5cb8b61986a020b52a16dd765a88459399165",
+ "testharness"
+ ],
"html/semantics/embedded-content/the-img-element/available-images-ref.html": [
"8061abae50899a2befe286723d8bd5c285b356ab",
"support"
@@ -626182,7 +626342,7 @@
"testharness"
],
"html/semantics/forms/the-button-element/button-click-submits.html": [
- "e6f02d3e21caf3a4f53f3698f69c17f64aad069f",
+ "f09d06080fbe83feb401f575e7d78b0a741009f1",
"testharness"
],
"html/semantics/forms/the-button-element/button-events.html": [
@@ -627225,6 +627385,14 @@
"dd2d719134fd7573e85c9a696350cffa1705b661",
"support"
],
+ "html/semantics/links/links-created-by-a-and-area-elements/support/target_blank_iplicit_noopener.html": [
+ "bf6a1ae5bfe16e4fd50296636894859a0ee25ec1",
+ "support"
+ ],
+ "html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.tentative.html": [
+ "39903dcd520c52669f7ab15494777a63c6e7c1b1",
+ "testharness"
+ ],
"html/semantics/links/linktypes/alternate-css-ref.html": [
"ec961eac157152db3f3428392d93cb7f74f366ed",
"support"
@@ -628874,7 +629042,7 @@
"support"
],
"html/semantics/scripting-1/the-script-element/muted-errors.sub.html": [
- "a42179dc85d35f328a69f12bbfd2b2f6211b7151",
+ "1b255faf7e1286f9379e825403de2b069c452747",
"testharness"
],
"html/semantics/scripting-1/the-script-element/nomodule-reflect.html": [
@@ -632038,11 +632206,11 @@
"support"
],
"infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini": [
- "f751532cee7e7a558c85011986aa72a65b79ce7c",
+ "750dd055dbd80030672572bc51f6dce2f5757698",
"support"
],
"infrastructure/metadata/infrastructure/testdriver/actions/elementTiming.html.ini": [
- "a1e9ea86844e78c00282a32a5a64c6365c04ffa2",
+ "7a6cf82bbd3aad03ac3367e8a9b5e20e5aab1c25",
"support"
],
"infrastructure/metadata/infrastructure/testdriver/actions/eventOrder.html.ini": [
@@ -637566,7 +637734,7 @@
"support"
],
"navigation-timing/resources/webperftestharness.js": [
- "afdfa2a768b1065f05f61de77d6528aee658d7dc",
+ "3efb52783f1e5dcb0d42aad11aec2a9e47257d33",
"support"
],
"navigation-timing/test_document_open.html": [
@@ -637586,7 +637754,7 @@
"testharness"
],
"navigation-timing/test_navigation_redirectCount_none.html": [
- "eaaef4b514c7f44aaeb64b9f0d9307fa50ad068a",
+ "da94d24c746212e0fdf60872f3dc81cc10f2db9a",
"testharness"
],
"navigation-timing/test_navigation_type_backforward.html": [
@@ -637602,7 +637770,7 @@
"testharness"
],
"navigation-timing/test_no_previous_document.html": [
- "0b9eb4b2224a70c6c75c9d35fe1871a52cc7d7b2",
+ "0bce16525caa65d666e2bb061227c277478237bc",
"testharness"
],
"navigation-timing/test_performance_attributes.sub.html": [
@@ -637626,15 +637794,15 @@
"testharness"
],
"navigation-timing/test_timing_attributes_order.html": [
- "03c2619cb3e4ad4916bcdf9cf51174b61416e546",
+ "5e885ea7ec3f360d6fd6ba060d49773713fef228",
"testharness"
],
"navigation-timing/test_timing_client_redirect.html": [
- "3bc369234a03fe081f55a4ded8d85bd0fa6b86c0",
+ "bebf39eb98a6f26dd9623dff2b31cec28f101d87",
"testharness"
],
"navigation-timing/test_timing_reload.html": [
- "0e28a6479b10c3610dc18687dcb0a92e1fd95e3a",
+ "a660caf4ef9fffc32dfbc9da4a76c590689cf4aa",
"testharness"
],
"navigation-timing/test_timing_server_redirect.html": [
@@ -637642,7 +637810,7 @@
"testharness"
],
"navigation-timing/test_timing_xserver_redirect.html": [
- "93db8699f879e54e4ffb8440b4b28ab7dcc65905",
+ "a39f7c2642cd0c091267af6f151ff8b45f56be09",
"testharness"
],
"navigation-timing/test_unique_performance_objects.html": [
@@ -655498,7 +655666,7 @@
"support"
],
"requestidlecallback/basic.html": [
- "e481a6bd3bd1f936d06b93a6d31d839442776981",
+ "429134ec4360f1bbbae4db608a93a6ba25930604",
"testharness"
],
"requestidlecallback/callback-exception.html": [
@@ -655874,7 +656042,7 @@
"support"
],
"resource-timing/resources/webperftestharness.js": [
- "98b2954bad3765c94d6c7c3faf1128b47bf032b4",
+ "203eb0d16b4f3ad8d22877ff7afc7064fe252892",
"support"
],
"resource-timing/resources/webperftestharnessextension.js": [
@@ -657321,8 +657489,20 @@
"a449b32d2be4bfe9e825ff3b3637a5ddb609b93e",
"testharness"
],
+ "scroll-animations/current-time-nan.html": [
+ "356f0a606826377aa20c6750cad7230fdc17c450",
+ "testharness"
+ ],
+ "scroll-animations/current-time-root-scroller.html": [
+ "8e600e6ef05e17e0b1d93ce3fa12f6dbe8fe50c6",
+ "testharness"
+ ],
+ "scroll-animations/current-time-writing-modes.html": [
+ "a7e55513eec655ba51d5d7ad680cab9c7f977946",
+ "testharness"
+ ],
"scroll-animations/current-time.html": [
- "8c70594612ac758f7934d8f30818cb0150925e5e",
+ "0dc2a6fd4ad9702b5664df69fd015e3880106a47",
"testharness"
],
"scroll-animations/idlharness.window.js": [
@@ -665982,7 +666162,7 @@
"support"
],
"tools/ci/check_stability.py": [
- "cbed7a3521d3ba7ea2b5a21dc7daa14bcdff88d7",
+ "a71e0956629a86ff1769014767a894471e5b09bb",
"support"
],
"tools/ci/ci_built_diff.sh": [
@@ -666050,7 +666230,7 @@
"support"
],
"tools/ci/taskcluster-run.py": [
- "fc6338ed31f73fc4a40703b0c918a60b0e174e20",
+ "f443903786e9ee9a8cb2f3ab20e1cf4bb11faf68",
"support"
],
"tools/ci/tcdownload.py": [
@@ -666278,7 +666458,7 @@
"support"
],
"tools/manifest/download.py": [
- "8bb3cb673de54f0676d1cb873a0853c9ddf65d4b",
+ "2e505f371ed882dc329409cc24de97b9a923bd31",
"support"
],
"tools/manifest/item.py": [
@@ -668422,7 +668602,7 @@
"support"
],
"tools/third_party/hyper/hyper/http20/connection.py": [
- "3c3927671f567d0b3314a8d5c5d56180ab6a2693",
+ "12076cdaf14ead370de4e0e6b5730a7f9b2517c5",
"support"
],
"tools/third_party/hyper/hyper/http20/errors.py": [
@@ -670782,11 +670962,11 @@
"support"
],
"tools/wpt/run.py": [
- "b07ba9e193b267bae50f4371ca76262d8f4cc954",
+ "ea6069504416f57542619bfbb0e3c17db3ed7142",
"support"
],
"tools/wpt/testfiles.py": [
- "bac32cf6ff24dd50f18bbacf0a179e061c5aad83",
+ "c25ca2d43e21b15a614f3cf8a2d237165164bc57",
"support"
],
"tools/wpt/tests/latest_mozilla_central.txt": [
@@ -671162,7 +671342,7 @@
"support"
],
"tools/wptrunner/wptrunner/executors/executorwebdriver.py": [
- "40e67d22c7b5321248f6ba52afd2021e112ba847",
+ "ce103a73bea9167dcb7448101951cf894207671a",
"support"
],
"tools/wptrunner/wptrunner/executors/executorwebkit.py": [
@@ -671502,7 +671682,7 @@
"support"
],
"tools/wptserve/tests/functional/base.py": [
- "b08f5eabe46ccdb27553babbd159b1dc6287efe8",
+ "c114e5e905cb8da98f0c5e6e8811e57af40abf3e",
"support"
],
"tools/wptserve/tests/functional/docroot/bar.any.worker.js": [
@@ -671670,7 +671850,7 @@
"support"
],
"tools/wptserve/tests/functional/test_response.py": [
- "4e1e053d01971477d259c8e8d0e67552f81753bb",
+ "20fb3f776a9e98e2a6c95f23bf5b5d03bb0c0c27",
"support"
],
"tools/wptserve/tests/functional/test_server.py": [
@@ -672782,7 +672962,7 @@
"testharness"
],
"user-timing/resources/webperftestharness.js": [
- "79c218f336fb0e7a08ae145dae39aac9517892ce",
+ "4a8e2de69fc803c7fd06d7372a0de395aceec670",
"support"
],
"user-timing/resources/webperftestharnessextension.js": [
@@ -677873,6 +678053,10 @@
"88bdfcfc2867335ca53c30f5637b38b3d12c64ca",
"testharness"
],
+ "webrtc/protocol/msid-parse.html": [
+ "e0d3eb76a3a98497e1bcfed36d2ce0e6d4cb0e75",
+ "testharness"
+ ],
"webrtc/protocol/video-codecs.https.html": [
"e728effbeb94de865df9f8860cd45c8de1f601c1",
"testharness"
diff --git a/tests/wpt/metadata/css/css-transitions/properties-value-003.html.ini b/tests/wpt/metadata/css/css-transitions/properties-value-003.html.ini
index 405957d0ebe..95ae1c11729 100644
--- a/tests/wpt/metadata/css/css-transitions/properties-value-003.html.ini
+++ b/tests/wpt/metadata/css/css-transitions/properties-value-003.html.ini
@@ -503,3 +503,9 @@
[border-top-right-radius border-radius(px-px) / values]
expected: FAIL
+ [display display(static to absolute) / events]
+ expected: FAIL
+
+ [display display(static to absolute) / values]
+ 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 e24380ba9c0..bc930eb436f 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: TIMEOUT
+ expected: CRASH
[ISO-8859-2: iso_8859-2:1987 (XMLHttpRequest)]
expected: FAIL
diff --git a/tests/wpt/metadata/fetch/images/canvas-remote-read-remote-image-redirect.html.ini b/tests/wpt/metadata/fetch/images/canvas-remote-read-remote-image-redirect.html.ini
new file mode 100644
index 00000000000..33630ce7eba
--- /dev/null
+++ b/tests/wpt/metadata/fetch/images/canvas-remote-read-remote-image-redirect.html.ini
@@ -0,0 +1,4 @@
+[canvas-remote-read-remote-image-redirect.html]
+ [Load a no-cors image from a same-origin URL that redirects to a cross-origin URL that redirects to the initial origin]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
index dc2e45516de..385376c7321 100644
--- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_4.html.ini
@@ -1,4 +1,4 @@
-[traverse_the_history_5.html]
+[traverse_the_history_4.html]
[Multiple history traversals, last would be aborted]
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/forms/the-button-element/button-click-submits.html.ini b/tests/wpt/metadata/html/semantics/forms/the-button-element/button-click-submits.html.ini
index f79b98227d2..13f78590065 100644
--- a/tests/wpt/metadata/html/semantics/forms/the-button-element/button-click-submits.html.ini
+++ b/tests/wpt/metadata/html/semantics/forms/the-button-element/button-click-submits.html.ini
@@ -10,3 +10,9 @@
[clicking a button that cancels the event should not trigger a submit]
expected: FAIL
+ [clicking the child of a button by dispatching a bubbling event should trigger a submit]
+ expected: TIMEOUT
+
+ [clicking the child of a button with .click() should trigger a submit]
+ expected: TIMEOUT
+
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
deleted file mode 100644
index 9e522297c94..00000000000
--- a/tests/wpt/metadata/html/semantics/interactive-elements/the-details-element/toggleEvent.html.ini
+++ /dev/null
@@ -1,7 +0,0 @@
-[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/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.tentative.html.ini b/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.tentative.html.ini
new file mode 100644
index 00000000000..86d1fe19ffb
--- /dev/null
+++ b/tests/wpt/metadata/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.tentative.html.ini
@@ -0,0 +1,31 @@
+[target_blank_implicit_noopener.tentative.html]
+ [Anchor element with target=_blank with rel=opener+noopener]
+ expected: FAIL
+
+ [Area element with target=_blank with rel=opener+noopener]
+ expected: FAIL
+
+ [Anchor element with target=_blank with rel=opener]
+ expected: FAIL
+
+ [Anchor element with target=_blank with rel=noopener+opener]
+ expected: FAIL
+
+ [Area element with target=_blank with rel=noopener]
+ expected: FAIL
+
+ [Area element with target=_blank with rel=opener]
+ expected: FAIL
+
+ [Anchor element with target=_blank with implicit rel=noopener]
+ expected: FAIL
+
+ [Area element with target=_blank with implicit rel=noopener]
+ expected: FAIL
+
+ [Area element with target=_blank with rel=noopener+opener]
+ expected: FAIL
+
+ [Anchor element with target=_blank with rel=noopener]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/muted-errors.sub.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/muted-errors.sub.html.ini
index fb9933203d8..461ea2d44c1 100644
--- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/muted-errors.sub.html.ini
+++ b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/muted-errors.sub.html.ini
@@ -5,3 +5,9 @@
[Errors for cross-origin script should be muted even if the script is once loaded as same-origin]
expected: FAIL
+ [Errors for cross-origin scripts redirected to a same-origin url should be muted]
+ expected: FAIL
+
+ [Errors for same-origin scripts redirected to a cross-origin url and redirected back to same-origin should be muted]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini b/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini
new file mode 100644
index 00000000000..2ed601c6ff4
--- /dev/null
+++ b/tests/wpt/metadata/quirks/unitless-length/quirks.html.ini
@@ -0,0 +1,283 @@
+[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/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.js b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.js
index 869fb796517..208b81c45ea 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/ecdsa.js
@@ -1,5 +1,7 @@
function run_test() {
+ setup({explicit_done: true});
+
var subtle = self.crypto.subtle; // Change to test prefixed implementations
// When are all these tests really done? When all the promises they use have resolved.
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/hmac.js b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/hmac.js
index 22a2acf64f5..e8f9ec58152 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/hmac.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/hmac.js
@@ -1,5 +1,7 @@
function run_test() {
+ setup({explicit_done: true});
+
var subtle = self.crypto.subtle; // Change to test prefixed implementations
// When are all these tests really done? When all the promises they use have resolved.
diff --git a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa.js b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa.js
index 656c320f78f..251f57e8bbc 100644
--- a/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa.js
+++ b/tests/wpt/web-platform-tests/WebCryptoAPI/sign_verify/rsa.js
@@ -1,5 +1,7 @@
function run_test() {
+ setup({explicit_done: true});
+
var subtle = self.crypto.subtle; // Change to test prefixed implementations
// When are all these tests really done? When all the promises they use have resolved.
diff --git a/tests/wpt/web-platform-tests/check_stability.ini b/tests/wpt/web-platform-tests/check_stability.ini
index b939328be1c..e6ab448c001 100644
--- a/tests/wpt/web-platform-tests/check_stability.ini
+++ b/tests/wpt/web-platform-tests/check_stability.ini
@@ -1,5 +1,4 @@
[file detection]
-skip_tests: conformance-checkers docs tools
# The vast majority of tests rely on files located within the `resources`
# directory. Because of this, modifications to that directory's contents have
# the potential to introduce instability in a large number of tests.
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 3efce5b5d8b..b20241cc610 100644
--- a/tests/wpt/web-platform-tests/common/performance-timeline-utils.js
+++ b/tests/wpt/web-platform-tests/common/performance-timeline-utils.js
@@ -1,3 +1,7 @@
+/*
+author: W3C http://www.w3.org/
+help: http://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute
+*/
var performanceNamespace = window.performance;
var namespace_check = false;
function wp_test(func, msg, properties)
@@ -10,7 +14,8 @@ function wp_test(func, msg, properties)
if (performanceNamespace === undefined || performanceNamespace == null)
{
// show a single error that window.performance is undefined
- test(function() { assert_true(performanceNamespace !== undefined && performanceNamespace != null, "window.performance is defined and not null"); }, "window.performance is defined and not null.", {author:"W3C http://www.w3.org/",help:"http://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute",assert:"The window.performance attribute provides a hosting area for performance related attributes. "});
+ // The window.performance attribute provides a hosting area for performance related attributes.
+ test(function() { assert_true(performanceNamespace !== undefined && performanceNamespace != null, "window.performance is defined and not null"); }, "window.performance is defined and not null.");
}
}
diff --git a/tests/wpt/web-platform-tests/css/css-break/block-end-aligned-abspos-with-overflow-ref.html b/tests/wpt/web-platform-tests/css/css-break/block-end-aligned-abspos-with-overflow-ref.html
new file mode 100644
index 00000000000..a8470b09a7d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/block-end-aligned-abspos-with-overflow-ref.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<style>
+ body { overflow:scroll; } /* Auto scrollbars may hide bugs. */
+</style>
+<p>There should be a green square below, and a smaller hotpink square.</p>
+<div style="float:left; width:20px; height:20px; margin-top:80px; margin-right:30px; background:hotpink;"></div>
+<div style="float:left; width:50px; height:50px; background:green;"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-break/block-end-aligned-abspos-with-overflow.html b/tests/wpt/web-platform-tests/css/css-break/block-end-aligned-abspos-with-overflow.html
new file mode 100644
index 00000000000..9000c635138
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/block-end-aligned-abspos-with-overflow.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#transforms">
+<link rel="help" href="https://www.w3.org/TR/CSS22/visudet.html#abs-non-replaced-height">
+<link rel="match" href="block-end-aligned-abspos-with-overflow-ref.html">
+<meta name="assert" content="Check that content that overflows a tall bottom-aligned abspos fragments properly">
+<style>
+ body { overflow:scroll; } /* Auto scrollbars may hide bugs. */
+</style>
+<p>There should be a green square below, and a smaller hotpink square.</p>
+<div style="columns:2; width:100px; height:100px; column-fill:auto; column-gap:0; background:white;">
+ <div style="position:relative; height:100%;">
+ <div style="position:absolute; width:20px; bottom:20px;">
+ <div style="height:10px; background:white;">
+ <div style="background:hotpink;">
+ <div style="height:10px; background:white;"></div>
+ <div style="break-inside:avoid; width:50px; height:50px; background:green;"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-break/block-end-aligned-abspos.html b/tests/wpt/web-platform-tests/css/css-break/block-end-aligned-abspos.html
new file mode 100644
index 00000000000..c7acaa977b2
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-break/block-end-aligned-abspos.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org">
+<link rel="help" href="https://www.w3.org/TR/css-break-3/#transforms">
+<link rel="help" href="https://www.w3.org/TR/CSS22/visudet.html#abs-non-replaced-height">
+<style>
+ body { overflow:scroll; } /* Auto scrollbars may hide bugs. */
+ #container { columns:2; height:200px; column-fill:auto; background:white; }
+ #abspos { position:absolute; width:50px; bottom:0; background:blue; }
+ #abspos > div { height:10px; background:white; }
+</style>
+<p>There should be two identical blue squares below.</p>
+<div id="container">
+ <div style="position:relative; height:100%;">
+ <div id="abspos" data-offset-y="80" data-expected-height="120">
+ <div style="margin:50px 0;" data-offset-y="50"></div>
+ <div data-offset-y="110"></div>
+ </div>
+ </div>
+</div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<script>
+ checkLayout("[data-offset-y]");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/double-forward.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/double-forward.html
new file mode 100644
index 00000000000..d23ec775fff
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/double-forward.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Shadow Parts - Double forward</title>
+ <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+ <link href="http://www.google.com/" rel="author" title="Google">
+ <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="support/shadow-helper.js"></script>
+ </head>
+ <body>
+ <style>#c-e-outer::part(part-forwarded2) { color: green; }</style>
+ <script>installCustomElement("custom-element-inner", "custom-element-inner-template");</script>
+ <template id="custom-element-inner-template">
+ <style>span { color: red; }</style>
+ <span id="green_part" part="partp">This text</span>
+ </template>
+ <script>installCustomElement("custom-element-middle", "custom-element-middle-template");</script>
+ <template id="custom-element-middle-template"><custom-element-inner id="c-e-inner" exportparts="partp: part-forwarded1"></custom-element-inner></template>
+ <script>installCustomElement("custom-element-outer", "custom-element-outer-template");</script>
+ <template id="custom-element-outer-template"><custom-element-middle id="c-e-middle" exportparts="part-forwarded1: part-forwarded2"></custom-element-middle></template>
+ The following text should be green:
+ <custom-element-outer id="c-e-outer"></custom-element-outer>
+ <script>
+ "use strict";
+ const colorGreen = "rgb(0, 128, 0)";
+ test(function() {
+ const el = getElementByShadowIds(document, ["c-e-outer", "c-e-middle", "c-e-inner", "green_part"]);
+ assert_equals(window.getComputedStyle(el).color, colorGreen);
+ }, "Part in inner host is forwarded through the middle host for styling by document style sheet");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/invalidation-change-exportparts-forward.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/invalidation-change-exportparts-forward.html
new file mode 100644
index 00000000000..1e319deb633
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/invalidation-change-exportparts-forward.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Shadow Parts - Invalidation change exportparts forward</title>
+ <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+ <link href="http://www.google.com/" rel="author" title="Google">
+ <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="support/shadow-helper.js"></script>
+ </head>
+ <body>
+ <style>#c-e-outer::part(part-forwarded) { color: red; }</style>
+ <script>installCustomElement("custom-element-inner", "custom-element-inner-template");</script>
+ <template id="custom-element-inner-template">
+ <style>span { color: green; }</style>
+ <span id="part" part="partp">This text</span>
+ </template>
+ <script>installCustomElement("custom-element-outer", "custom-element-outer-template");</script>
+ <template id="custom-element-outer-template"><custom-element-inner id="c-e-inner" exportparts="partp: part-forwarded"></custom-element-inner></template>
+ The following text should be green:
+ <custom-element-outer id="c-e-outer"></custom-element-outer>
+ <script>
+ "use strict";
+ test(function() {
+ const part = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "part"]);
+ const before = window.getComputedStyle(part).color;
+ getElementByShadowIds(document, ["c-e-outer", "c-e-inner"]).setAttribute("exportparts", "new-exportparts");
+ const after = window.getComputedStyle(part).color;
+ assert_not_equals(before, after);
+ }, "Part in selected host changed color");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/invalidation-change-part-name-forward.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/invalidation-change-part-name-forward.html
new file mode 100644
index 00000000000..f8da6d1f543
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/invalidation-change-part-name-forward.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Shadow Parts - Invalidation change part name forward</title>
+ <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+ <link href="http://www.google.com/" rel="author" title="Google">
+ <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="support/shadow-helper.js"></script>
+ </head>
+ <body>
+ <style>#c-e-outer::part(part-forwarded) { color: red; }</style>
+ <script>installCustomElement("custom-element-inner", "custom-element-inner-template");</script>
+ <template id="custom-element-inner-template">
+ <style>span { color: green; }</style>
+ <span id="part" part="partp">This text</span>
+ </template>
+ <script>installCustomElement("custom-element-outer", "custom-element-outer-template");</script>
+ <template id="custom-element-outer-template"><custom-element-inner id="c-e-inner" exportparts="partp: part-forwarded"></custom-element-inner></template>
+ The following text should be green:
+ <custom-element-outer id="c-e-outer"></custom-element-outer>
+ <script>
+ "use strict";
+ test(function() {
+ const part = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "part"]);
+ const before = window.getComputedStyle(part).color;
+ part.setAttribute("part", "new-partp");
+ const after = window.getComputedStyle(part).color;
+ assert_not_equals(before, after);
+ }, "Part in selected host changed color");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/invalidation-complex-selector-forward.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/invalidation-complex-selector-forward.html
new file mode 100644
index 00000000000..7c732b9bdf1
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/invalidation-complex-selector-forward.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Shadow Parts - Invalidation complex selector forward</title>
+ <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+ <link href="http://www.google.com/" rel="author" title="Google">
+ <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="support/shadow-helper.js"></script>
+ </head>
+ <body>
+ <style>#elem #c-e-outer::part(part-forwarded) { color: red; }</style>
+ <script>installCustomElement("custom-element-inner", "custom-element-inner-template");</script>
+ <template id="custom-element-inner-template">
+ <style>span { color: green; }</style>
+ <span id="part" part="partp">This text</span>
+ </template>
+ <script>installCustomElement("custom-element-outer", "custom-element-outer-template");</script>
+ <template id="custom-element-outer-template"><custom-element-inner id="c-e-inner" exportparts="partp: part-forwarded"></custom-element-inner></template>
+ The following text should be green:
+ <div id="elem"><custom-element-outer id="c-e-outer"></custom-element-outer></div>
+ <script>
+ "use strict";
+ test(function() {
+ const part = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "part"]);
+ const before = window.getComputedStyle(part).color;
+ document.getElementById("elem").setAttribute("id", "new-elem");
+ const after = window.getComputedStyle(part).color;
+ assert_not_equals(before, after);
+ }, "Part in selected host changed color");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/precedence-part-vs-part.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/precedence-part-vs-part.html
new file mode 100644
index 00000000000..9905cf8b5e4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/precedence-part-vs-part.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Shadow Parts - Precedence part vs part</title>
+ <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+ <link href="http://www.google.com/" rel="author" title="Google">
+ <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="support/shadow-helper.js"></script>
+ </head>
+ <body>
+ <style>#c-e-outer::part(part-forwarded) { color: green; }</style>
+ <script>installCustomElement("custom-element-inner", "custom-element-inner-template");</script>
+ <template id="custom-element-inner-template">
+ <style>span { color: blue; }</style>
+ <span id="green_part" part="partp">This text</span>
+ </template>
+ <script>installCustomElement("custom-element-outer", "custom-element-outer-template");</script>
+ <template id="custom-element-outer-template">
+ <style>#c-e-inner::part(partp) { color: red; }</style>
+ <custom-element-inner id="c-e-inner" exportparts="partp: part-forwarded"></custom-element-inner>
+ </template>
+ The following text should be green:
+ <custom-element-outer id="c-e-outer"></custom-element-outer>
+ <script>
+ "use strict";
+ const colorGreen = "rgb(0, 128, 0)";
+ test(function() {
+ const el = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "green_part"]);
+ assert_equals(window.getComputedStyle(el).color, colorGreen);
+ }, "Style from document overrides style from outer CE");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/simple-forward-shorthand.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/simple-forward-shorthand.html
new file mode 100644
index 00000000000..0142967dfdb
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/simple-forward-shorthand.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Shadow Parts - Simple forward shorthand</title>
+ <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+ <link href="http://www.google.com/" rel="author" title="Google">
+ <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="support/shadow-helper.js"></script>
+ </head>
+ <body>
+ <style>#c-e-outer::part(partp) { color: green; }</style>
+ <script>installCustomElement("custom-element-inner", "custom-element-inner-template");</script>
+ <template id="custom-element-inner-template">
+ <style>span { color: red; }</style>
+ <span id="green_part" part="partp">This text</span>
+ </template>
+ <script>installCustomElement("custom-element-outer", "custom-element-outer-template");</script>
+ <template id="custom-element-outer-template"><custom-element-inner id="c-e-inner" exportparts="partp"></custom-element-inner></template>
+ The following text should be green:
+ <custom-element-outer id="c-e-outer"></custom-element-outer>
+ <script>
+ "use strict";
+ const colorGreen = "rgb(0, 128, 0)";
+ test(function() {
+ const el = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "green_part"]);
+ assert_equals(window.getComputedStyle(el).color, colorGreen);
+ }, "Part in inner host is forwarded, under the same name, for styling by document style sheet");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/simple-forward.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/simple-forward.html
new file mode 100644
index 00000000000..a1a19aee4ed
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/simple-forward.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Shadow Parts - Simple forward</title>
+ <meta href="mailto:fergal@chromium.org" rel="author" title="Fergal Daly">
+ <link href="http://www.google.com/" rel="author" title="Google">
+ <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="support/shadow-helper.js"></script>
+ </head>
+ <body>
+ <style>#c-e-outer::part(part-forwarded) { color: green; }</style>
+ <script>installCustomElement("custom-element-inner", "custom-element-inner-template");</script>
+ <template id="custom-element-inner-template">
+ <style>span { color: red; }</style>
+ <span id="green_part" part="partp">This text</span>
+ </template>
+ <script>installCustomElement("custom-element-outer", "custom-element-outer-template");</script>
+ <template id="custom-element-outer-template"><custom-element-inner id="c-e-inner" exportparts="partp: part-forwarded"></custom-element-inner></template>
+ The following text should be green:
+ <custom-element-outer id="c-e-outer"></custom-element-outer>
+ <script>
+ "use strict";
+ const colorGreen = "rgb(0, 128, 0)";
+ test(function() {
+ const el = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "green_part"]);
+ assert_equals(window.getComputedStyle(el).color, colorGreen);
+ }, "Part in inner host is forwarded for styling by document style sheet");
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/currentcolor-animation-001.html b/tests/wpt/web-platform-tests/css/css-transitions/currentcolor-animation-001.html
index e36e7481506..4fd982a8cc7 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/currentcolor-animation-001.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/currentcolor-animation-001.html
@@ -15,6 +15,7 @@
<div id="test"></div>
<script>
+ // Transition does not occur when the value is currentColor and color changes
test(function() {
var div = document.getElementById("test");
var cs = getComputedStyle(div, "");
@@ -32,8 +33,7 @@ test(function() {
assert_true(quarter_interpolated != quarter_reference &&
quarter_interpolated == final_reference);
},
- "currentcolortransition",
- { assert: "Transition does not occur when the value is currentColor and color changes" });
+ "currentcolortransition");
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/css/css-transitions/transitions-animatable-properties-01.html b/tests/wpt/web-platform-tests/css/css-transitions/transitions-animatable-properties-01.html
index 39dd073f929..48a7d1e2e01 100644
--- a/tests/wpt/web-platform-tests/css/css-transitions/transitions-animatable-properties-01.html
+++ b/tests/wpt/web-platform-tests/css/css-transitions/transitions-animatable-properties-01.html
@@ -100,10 +100,8 @@
// create all the tests we need
for (var i = 0; i < kANIMATABLE_CSS_PROPERTIES.length; i++) {
- testsIntermediate.push(async_test(kANIMATABLE_CSS_PROPERTIES[i][0] + " intermediate",
- { assert: "property " + kANIMATABLE_CSS_PROPERTIES[i][0] + " is animatable" }));
- testsEnd.push(async_test(kANIMATABLE_CSS_PROPERTIES[i][0] + " end",
- { assert: "property " + kANIMATABLE_CSS_PROPERTIES[i][0] + " has correct value after transition's end" }));
+ testsIntermediate.push(async_test(kANIMATABLE_CSS_PROPERTIES[i][0] + " intermediate"));
+ testsEnd.push(async_test(kANIMATABLE_CSS_PROPERTIES[i][0] + " end"));
}
// getComputedStyle helper
diff --git a/tests/wpt/web-platform-tests/css/css-values/calc-unit-analysis.html b/tests/wpt/web-platform-tests/css/css-values/calc-unit-analysis.html
index 1520b4d3fa2..20eab22bf7c 100644
--- a/tests/wpt/web-platform-tests/css/css-values/calc-unit-analysis.html
+++ b/tests/wpt/web-platform-tests/css/css-values/calc-unit-analysis.html
@@ -32,8 +32,7 @@ function run() {
test_elt.style.setProperty(property, value);
test_elt.style.removeProperty(property);
},
- description_to_name(description),
- { assert: "invalid calc expression: " + description });
+ description_to_name(description));
}
function assert_valid_value(property, value, computes_to, description) {
@@ -46,27 +45,26 @@ function run() {
computes_to);
test_elt.style.removeProperty(property);
},
- description_to_name(description),
- { assert: "valid calc expression: " + description });
+ description_to_name(description));
}
- assert_invalid_value("margin-left", "calc(0)",
+ assert_invalid_value("margin-left", "calc(0)", // invalid calc expression
"unitless zero in calc() is a numeric type, not length");
assert_valid_value("margin-left", "calc(0px)", "0px",
"0px in calc()");
- assert_invalid_value("margin-left", "calc(1px + 2)",
+ assert_invalid_value("margin-left", "calc(1px + 2)", // invalid calc expression
"addition of length and number");
- assert_invalid_value("margin-left", "calc(2 + 1px)",
+ assert_invalid_value("margin-left", "calc(2 + 1px)", // invalid calc expression
"addition of number and length");
- assert_invalid_value("margin-left", "calc(1px - 2)",
+ assert_invalid_value("margin-left", "calc(1px - 2)", // invalid calc expression
"subtraction of length and number");
- assert_invalid_value("margin-left", "calc(2 - 1px)",
+ assert_invalid_value("margin-left", "calc(2 - 1px)", // invalid calc expression
"subtraction of number and length");
assert_valid_value("margin-left", "calc(2px * 2)", "4px",
"multiplication of length and number");
assert_valid_value("margin-left", "calc(2 * 2px)", "4px",
"multiplication of number and length");
- assert_invalid_value("margin-left", "calc(2px * 1px)",
+ assert_invalid_value("margin-left", "calc(2px * 1px)", // invalid calc expression
"multiplication of length and length");
}
diff --git a/tests/wpt/web-platform-tests/css/css-variables/test_variable_legal_values.html b/tests/wpt/web-platform-tests/css/css-variables/test_variable_legal_values.html
index 2e074389f7a..1d86c0834cc 100644
--- a/tests/wpt/web-platform-tests/css/css-variables/test_variable_legal_values.html
+++ b/tests/wpt/web-platform-tests/css/css-variables/test_variable_legal_values.html
@@ -44,8 +44,7 @@ function run() {
assert_not_equals(initial_cs, red_cs);
assert_equals(initial_cs, test_cs.backgroundColor);
},
- description_to_name(description),
- { assert: "Value allowed within variable: " + description });
+ description_to_name(description));
}
function assert_disallowed_balanced_variable_value(value, description) {
@@ -59,8 +58,7 @@ function run() {
assert_not_equals(green_cs, red_cs);
assert_equals(green_cs, test_cs.backgroundColor);
},
- description_to_name(description),
- { assert: "Value not allowed within variable: " + description });
+ description_to_name(description));
}
assert_allowed_variable_value("25%", "percentage");
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/offsetParent_element_test.html b/tests/wpt/web-platform-tests/css/cssom-view/offsetParent_element_test.html
index bb5686d41da..c88b6169865 100644
--- a/tests/wpt/web-platform-tests/css/cssom-view/offsetParent_element_test.html
+++ b/tests/wpt/web-platform-tests/css/cssom-view/offsetParent_element_test.html
@@ -93,6 +93,7 @@ var caption_element_child = document.getElementById('caption-element-child');
var table_element_tr = document.getElementById('table-element-tr');
var table_element = document.getElementById('table-element');
+// The offsetParent attribute algorithm rule checking passed!
test(function() {
assert_equals(html.offsetParent,null);
assert_equals(body.offsetParent,null);
@@ -104,10 +105,9 @@ test(function() {
assert_equals(none_element_child_audio.offsetParent,null);
assert_equals(none_element_child_canvas.offsetParent,null);
assert_equals(none_element_child_svg.offsetParent,undefined);
-}, "Valid the algorithm rule of offsetParent check step 1",
-{ assert: "The offsetParent attribute algorithm rule checking passed!" }
-);
+}, "Valid the algorithm rule of offsetParent check step 1");
+// The offsetParent attribute algorithm rule checking passed!
test(function() {
assert_equals(body_element_child.offsetParent,body);
assert_equals(window.getComputedStyle(relative_element).position,'relative');
@@ -122,9 +122,7 @@ test(function() {
assert_equals(caption_element_child.offsetParent,table_element);
assert_equals(window.getComputedStyle(td_element).position,'static');
assert_equals(td_element.offsetParent,table_element);
-}, "Valid the algorithm rule of offsetParent check step 2",
-{ assert: "The offsetParent attribute algorithm rule checking passed!" }
-);
+}, "Valid the algorithm rule of offsetParent check step 2");
</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom/computed-style-001.html b/tests/wpt/web-platform-tests/css/cssom/computed-style-001.html
index 80bf06c300e..d637b066b03 100644
--- a/tests/wpt/web-platform-tests/css/cssom/computed-style-001.html
+++ b/tests/wpt/web-platform-tests/css/cssom/computed-style-001.html
@@ -33,6 +33,7 @@
var inner = document.getElementById("inside");
var innerStyle;
+ // do not allow modifications to a computed CSSStyleDeclaration
test(function() {
innerStyle = window.getComputedStyle(inner);
assert_throws( "NO_MODIFICATION_ALLOWED_ERR",
@@ -44,27 +45,22 @@
assert_throws( "NO_MODIFICATION_ALLOWED_ERR",
function() { innerStyle.color = "blue"; },
"do not allow setting a property on a readonly CSSStyleDeclaration");
- }, "read_only", {
- assert: "do not allow modifications to a computed CSSStyleDeclaration"
- });
+ }, "read_only");
+ // Directly set properties are resolved
test(function() {
assert_equals(innerStyle.getPropertyValue("height"), "100px");
- }, "property_values", {
- assert: "Directly set properties are resolved"
- });
+ }, "property_values");
+ // Inherited properties are resolved
test(function() {
assert_equals(innerStyle.getPropertyValue("font-size"), "100px");
- }, "inherited_property_values", {
- assert: "Inherited properties are resolved"
- });
+ }, "inherited_property_values");
+ // Relative properties are resolved
test(function() {
assert_equals(innerStyle.getPropertyValue("width"), "100px");
- }, "relative_property_values", {
- assert: "Relative properties are resolved"
- });
+ }, "relative_property_values");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom/computed-style-005.html b/tests/wpt/web-platform-tests/css/cssom/computed-style-005.html
index 998f70eb978..49a5977acdb 100644
--- a/tests/wpt/web-platform-tests/css/cssom/computed-style-005.html
+++ b/tests/wpt/web-platform-tests/css/cssom/computed-style-005.html
@@ -47,19 +47,17 @@
let elem = document.getElementById(id);
let elemStyle = window.getComputedStyle(elem);
+ // positioned element's auto margins should be resolved to 10px.
test(function() {
assert_equals(elemStyle.getPropertyValue("margin-left"), "10px");
assert_equals(elemStyle.getPropertyValue("margin-right"), "10px");
- }, id + "_computed_margins", {
- assert: id + "-positioned element's auto margins should be resolved to 10px."
- });
+ }, id + "_computed_margins");
+ // positioned element should have a left and right of 0px (as authored).
test(function() {
assert_equals(elemStyle.getPropertyValue("left"), "0px");
assert_equals(elemStyle.getPropertyValue("right"), "0px");
- }, id + "_computed_left_and_right", {
- assert: id + "-positioned element should have a left and right of 0px (as authored)."
- });
+ }, id + "_computed_left_and_right");
}
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/css/cssom/inline-style-001.html b/tests/wpt/web-platform-tests/css/cssom/inline-style-001.html
index 51f36f250e5..d4bf3b92ab2 100644
--- a/tests/wpt/web-platform-tests/css/cssom/inline-style-001.html
+++ b/tests/wpt/web-platform-tests/css/cssom/inline-style-001.html
@@ -14,21 +14,22 @@
<div id="log"></div>
<div id="test" style="margin-left: 5px;"></div>
<script type="text/javascript">
+ // Can access CSSStyleDeclaration through style property
test(function() {
var test = document.getElementById("test");
assert_idl_attribute(test, "style");
declaration = test.style;
- }, "CSSStyleDeclaration_accessible", {
- assert: "Can access CSSStyleDeclaration through style property"
- });
+ }, "CSSStyleDeclaration_accessible");
+ // initial property values are correct
test(function() {
assert_equals(declaration.cssText, "margin-left: 5px;");
assert_equals(declaration.getPropertyValue("margin-left"), "5px");
- }, "read", {
- assert: "initial property values are correct"
- });
+ }, "read");
+ // setting cssText adds new properties
+ // setting cssText removes existing properties
+ // properties set through cssText are reflected in the computed style
test(function() {
declaration.cssText = "margin-left: 10px; padding-left: 10px;";
assert_equals(declaration.cssText, "margin-left: 10px; padding-left: 10px;");
@@ -41,12 +42,10 @@
var computedStyle = window.getComputedStyle(document.getElementById("test"));
assert_equals(computedStyle.getPropertyValue("margin-left"), "10px");
assert_equals(computedStyle.getPropertyValue("padding-left"), "10px");
- }, "csstext_write", {
- assert: [ "setting cssText adds new properties",
- "setting cssText removes existing properties",
- "properties set through cssText are reflected in the computed style"]
- });
+ }, "csstext_write");
+ // setProperty adds new properties
+ // properties set through setProperty are reflected in the computed style
test(function() {
while(declaration.length > 0)
declaration.removeProperty(declaration.item(0));
@@ -62,11 +61,9 @@
var computedStyle = window.getComputedStyle(document.getElementById("test"));
assert_equals(computedStyle.getPropertyValue("margin-left"), "15px");
assert_equals(computedStyle.getPropertyValue("padding-left"), "15px");
- }, "property_write", {
- assert: [ "setProperty adds new properties",
- "properties set through setProperty are reflected in the computed style"]
- });
+ }, "property_write");
+ // shorthand property is expanded
test(function() {
while(declaration.length > 0)
declaration.removeProperty(declaration.item(0));
@@ -75,9 +72,7 @@
assert_equals(declaration.getPropertyValue("margin-right"), "20px");
assert_equals(declaration.getPropertyValue("margin-bottom"), "20px");
assert_equals(declaration.getPropertyValue("margin-left"), "20px");
- }, "shorthand_properties", {
- assert: "shorthand property is expanded"
- });
+ }, "shorthand_properties");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-001.html b/tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-001.html
index 19c661e1b3d..f436177fb8e 100644
--- a/tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-001.html
+++ b/tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-001.html
@@ -5,6 +5,8 @@
<link rel="author" title="Ben Sheldon" href="mailto:ben@codeforamerica.org">
<link rel="author" title="Chapman Shoop" href="mailto:chapman.shoop@gmail.com">
<link rel="help" href="http://www.w3.org/TR/cssom-1/#the-medialist-interface">
+ <link rel="help" href="http://www.w3.org/TR/cssom-1/#serializing-media-queries">
+ <link rel="help" href="http://www.w3.org/TR/cssom-1/#serialize-a-media-query-list">
<meta name="flags" content="dom">
<meta name="assert" content="MediaLists are serialized according to the specification">
<script src="/resources/testharness.js" type="text/javascript"></script>
@@ -40,36 +42,33 @@
mediaList = styleSheet.media;
}
-
+ // MediaList.mediaText equals the 'media' value of the initial 'style' element.
test(function() {
setup();
assert_equals(mediaList.mediaText, "all");
- }, "mediatest_medialist_serialize_element",
- { help: ["http://www.w3.org/TR/cssom-1/#the-medialist-interface", "http://www.w3.org/TR/cssom-1/#serializing-media-queries"],
- assert: ["MediaList.mediaText equals the 'media' value of the initial 'style' element."] });
+ }, "mediatest_medialist_serialize_element");
+ // To serialize a comma-separated list concatenate all items of the list in list order while separating them by \",\" (U+002C), followed by a space (U+0020).
test(function() {
setup();
mediaList.appendMedium('screen');
assert_equals(mediaList.mediaText, "all, screen");
- }, "mediatest_medialist_serialize_comma",
- { help: ["http://www.w3.org/TR/cssom-1/#the-medialist-interface", "http://www.w3.org/TR/cssom-1/#serialize-a-media-query-list"],
- assert: ["To serialize a comma-separated list concatenate all items of the list in list order while separating them by \",\" (U+002C), followed by a space (U+0020)."] });
+ }, "mediatest_medialist_serialize_comma");
+ // If the media query list is empty return the empty string.
test(function() {
setup();
mediaList.deleteMedium('all');
assert_equals(mediaList.mediaText, "");
- }, "mediatest_medialist_serialize_empty",
- { help: ["http://www.w3.org/TR/cssom-1/#the-medialist-interface", "http://www.w3.org/TR/cssom-1/#serializing-media-queries"],
- assert: ["If the media query list is empty return the empty string."] });
+ }, "mediatest_medialist_serialize_empty");
+ // Each media query should be sorted in the same order as they appear in the list of media queries.
test(function() {
setup();
@@ -77,9 +76,7 @@
mediaList.appendMedium('print');
assert_equals(mediaList.mediaText, "all, screen, print");
- }, "mediatest_medialist_serialize_order",
- { help: ["http://www.w3.org/TR/cssom-1/#the-medialist-interface", "http://www.w3.org/TR/cssom-1/#serialize-a-media-query-list"],
- assert: ["Each media query should be sorted in the same order as they appear in the list of media queries."] });
+ }, "mediatest_medialist_serialize_order");
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-002.html b/tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-002.html
index 2b6bba2a661..9820015f5e0 100644
--- a/tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-002.html
+++ b/tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-002.html
@@ -33,12 +33,13 @@
<script type="text/javascript">
+ // MediaList.deleteMedium called without argument throws error.
test(function() {
media_list = setup();
assert_throws(new TypeError, function() { media_list.deleteMedium(); });
- }, "deleteMedium_called_without_argument",
- { assert: "MediaList.deleteMedium called without argument throws error." });
+ }, "deleteMedium_called_without_argument");
+ // MediaList.deleteMedium removes correct medium and updates corresponding properties.
test(function() {
media_list = setup();
@@ -50,9 +51,9 @@
assert_equals(media_list.length, 1);
assert_equals(media_list.item(0), "all");
assert_equals(media_list.mediaText, "all");
- }, "deleteMedium_removes_correct_medium",
- { assert: "MediaList.deleteMedium removes correct medium and updates corresponding properties." });
+ }, "deleteMedium_removes_correct_medium");
+ // MediaList.deleteMedium doesn't modify MediaList when medium is not found.
test(function() {
media_list = setup();
@@ -63,8 +64,7 @@
assert_equals(media_list.length, 1);
assert_equals(media_list.item(0), "all");
assert_equals(media_list.mediaText, "all");
- }, "deleteMedium_no_matching_medium_to_remove",
- { assert: "MediaList.deleteMedium doesn't modify MediaList when medium is not found." });
+ }, "deleteMedium_no_matching_medium_to_remove");
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-003.html b/tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-003.html
index 649f9485f44..1778c4a7ae9 100644
--- a/tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-003.html
+++ b/tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-003.html
@@ -40,22 +40,21 @@
mediaList = styleSheet.media;
}
-
+ // First explicit example input (first column) and output (second column) in specification.
test(function() {
setupMedia('not screen and (min-WIDTH:5px) AND (max-width:40px )');
assert_equals(mediaList.mediaText, "not screen and (max-width: 40px) and (min-width: 5px)");
- }, "mediatest_mediaquery_serialize_1",
- { assert: ["First explicit example input (first column) and output (second column) in specification."] });
+ }, "mediatest_mediaquery_serialize_1");
+ // Second explicit example input (first column) and output (second column) in specification.
test(function() {
setupMedia('all and (color) and (color) ');
assert_equals(mediaList.mediaText, "(color)");
- }, "mediatest_mediaquery_serialize_2",
- { assert: ["Second explicit example input (first column) and output (second column) in specification."] });
+ }, "mediatest_mediaquery_serialize_2");
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-004.html b/tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-004.html
index cf9befb8ffb..7cbea37cba4 100644
--- a/tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-004.html
+++ b/tests/wpt/web-platform-tests/css/cssom/medialist-interfaces-004.html
@@ -32,6 +32,7 @@
<script type="text/javascript">
+ // MediaList.appendMedium correctly adds medium to empty MediaList.
test(function() {
media_list = setup();
@@ -40,9 +41,9 @@
assert_equals(media_list.length, 1);
assert_equals(media_list.item(0), "all");
assert_equals(media_list.mediaText, "all");
- }, "appendMedium_correctly_appends_medium_to_empty_MediaList",
- { assert: "MediaList.appendMedium correctly adds medium to empty MediaList." });
+ }, "appendMedium_correctly_appends_medium_to_empty_MediaList");
+ // MediaList.appendMedium correctly adds medium to a MediaList that already has a medium.
test(function() {
media_list = setup();
@@ -56,8 +57,7 @@
assert_equals(media_list.item(0), "screen");
assert_equals(media_list.item(1), "all");
assert_equals(media_list.mediaText, "screen, all");
- }, "appendMedium_correctly_appends_medium_to_nonempty_MediaList",
- { assert: "MediaList.appendMedium correctly adds medium to a MediaList that already has a medium." });
+ }, "appendMedium_correctly_appends_medium_to_nonempty_MediaList");
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/css/cssom/style-sheet-interfaces-001.html b/tests/wpt/web-platform-tests/css/cssom/style-sheet-interfaces-001.html
index 20dc9713e58..1f6c9e24935 100644
--- a/tests/wpt/web-platform-tests/css/cssom/style-sheet-interfaces-001.html
+++ b/tests/wpt/web-platform-tests/css/cssom/style-sheet-interfaces-001.html
@@ -3,7 +3,9 @@
<head>
<title>CSS Test: CSSOM StyleSheet Initial Values</title>
<link rel="author" title="Bear Travis" href="mailto:betravis@adobe.com">
- <link rel="help" href="http://www.w3.org/TR/cssom-1/#css-style-sheets">
+ <link rel="help" href="https://www.w3.org/TR/cssom-1/#css-style-sheets">
+ <link rel="help" href="https://www.w3.org/TR/cssom-1/#the-cssimportrule-interface">
+ <link rel="help" href="https://www.w3.org/TR/cssom-1/#the-linkstyle-interface">
<meta name="flags" content="dom">
<meta name="assert" content="StyleSheet and CSSStyleSheet objects have the properties specified in their interfaces">
<script src="/resources/testharness.js" type="text/javascript"></script>
@@ -23,6 +25,9 @@
var styleSheet;
var linkSheet;
+
+ // styleElement.sheet exists and is a CSSStyleSheet
+ // linkElement.sheet exists and is a CSSStyleSheet
test(function() {
assert_idl_attribute(styleElement, "sheet");
assert_readonly(styleElement, "sheet");
@@ -31,11 +36,9 @@
assert_idl_attribute(linkElement, "sheet");
linkSheet = linkElement.sheet;
assert_true(linkSheet instanceof CSSStyleSheet);
- }, "sheet_property",
- { help: "http://www.w3.org/TR/cssom-1/#the-linkstyle-interface",
- assert: [ "styleElement.sheet exists", "styleElement.sheet is a CSSStyleSheet",
- "linkElement.sheet exists", "linkElement.sheet is a CSSStyleSheet"] });
+ }, "sheet_property");
+ // The sheet property on LinkStyle should always return the current associated style sheet.
test(function () {
var style = document.createElement("style");
document.querySelector("head").appendChild(style);
@@ -43,10 +46,10 @@
assert_equals(sheet1.cssRules.length, 0);
style.appendChild(document.createTextNode("a { color: green; }"));
assert_equals(style.sheet.cssRules.length, 1);
- }, "sheet_property_updates",
- { help: "https://www.w3.org/TR/cssom-1/#the-linkstyle-interface",
- assert: "The sheet property on LinkStyle should always return the current associated style sheet." });
+ }, "sheet_property_updates");
+ // ownerRule, cssRules, insertRule and deleteRule properties exist on CSSStyleSheet
+ // ownerRule, cssRules are read only
test(function() {
assert_idl_attribute(styleSheet, "ownerRule");
assert_idl_attribute(styleSheet, "cssRules");
@@ -55,21 +58,19 @@
assert_readonly(styleSheet, "ownerRule");
assert_readonly(styleSheet, "cssRules");
- }, "CSSStyleSheet_properties",
- { assert: [ "ownerRule, cssRules, insertRule and deleteRule properties exist on CSSStyleSheet",
- "ownerRule, cssRules are read only"] });
+ }, "CSSStyleSheet_properties");
var importSheet;
+ // CSSStyleSheet initial property values are correct
test(function() {
assert_equals(styleSheet.ownerRule, null);
assert_true(styleSheet.cssRules.length > 0);
assert_true(styleSheet.cssRules.item(0) instanceof CSSImportRule);
importSheet = styleSheet.cssRules.item(0).styleSheet;
- }, "CSSStyleSheet_property_values",
- { help: [ "http://www.w3.org/TR/cssom-1/#css-style-sheets",
- "http://www.w3.org/TR/cssom-1/#cssimportrule" ],
- assert: "CSSStyleSheet initial property values are correct" });
+ }, "CSSStyleSheet_property_values");
+ // type, disabled, ownerNode, parentStyleSheet, href, title, and media properties exist on StyleSheet
+ // type, ownerNode, parentStyleSheet, href, and title properties are read only
test(function() {
assert_idl_attribute(styleSheet, "type");
assert_idl_attribute(styleSheet, "disabled");
@@ -84,10 +85,9 @@
assert_readonly(styleSheet, "parentStyleSheet");
assert_readonly(styleSheet, "href");
assert_readonly(styleSheet, "title");
- }, "StyleSheet_properties",
- { assert: [ "type, disabled, ownerNode, parentStyleSheet, href, title, and media properties exist on StyleSheet",
- "type, ownerNode, parentStyleSheet, href, and title properties are read only" ] });
+ }, "StyleSheet_properties");
+ // StyleSheet initial property values are correct
test(function() {
assert_equals(styleSheet.type, "text/css");
assert_equals(styleSheet.disabled, false);
@@ -106,8 +106,7 @@
assert_equals(styleSheet.title, "internal style sheet");
assert_equals(styleSheet.media.item(0), "all");
- }, "StyleSheet_property_values",
- { assert: "StyleSheet initial property values are correct" });
+ }, "StyleSheet_property_values");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/cssom/style-sheet-interfaces-002.html b/tests/wpt/web-platform-tests/css/cssom/style-sheet-interfaces-002.html
index 51b0eb336be..e86a9a16e3b 100644
--- a/tests/wpt/web-platform-tests/css/cssom/style-sheet-interfaces-002.html
+++ b/tests/wpt/web-platform-tests/css/cssom/style-sheet-interfaces-002.html
@@ -19,24 +19,22 @@
<div id="log"></div>
<script type="text/javascript">
var sheet = document.getElementById("styleElement").sheet;
+ // Initial rule list is of size 1
+ // Can add a rule at first index
test(function() {
assert_equals(sheet.cssRules.length, 1);
sheet.insertRule("p { color: green; }", 0);
assert_equals(sheet.cssRules.length, 2);
assert_equals(sheet.cssRules.item(0).cssText, "p { color: green; }");
- }, "add_rule", {
- assert: [ "Initial rule list is of size 1",
- "Can add a rule at first index" ]
- });
+ }, "add_rule");
+ // Can delete rules until rule list is empty
test(function() {
sheet.deleteRule(0);
assert_equals(sheet.cssRules.length, 1);
sheet.deleteRule(0);
assert_equals(sheet.cssRules.length, 0);
- }, "delete_rule", {
- assert: "Can delete rules until rule list is empty"
- });
+ }, "delete_rule");
</script>
</body>
</html>
diff --git a/tests/wpt/web-platform-tests/css/mediaqueries/test_media_queries.html b/tests/wpt/web-platform-tests/css/mediaqueries/test_media_queries.html
index a239efdc116..250f9524ade 100644
--- a/tests/wpt/web-platform-tests/css/mediaqueries/test_media_queries.html
+++ b/tests/wpt/web-platform-tests/css/mediaqueries/test_media_queries.html
@@ -33,13 +33,13 @@ function run() {
function should_apply(q) {
test(function() {
assert_true(query_applies(q));
- }, "subtest_" + ++testNum, {assert: q + " should apply"});
+ }, "subtest_" + ++testNum);
}
function should_not_apply(q) {
test(function() {
assert_false(query_applies(q));
- }, "subtest_" + ++testNum, {assert: q + " should not apply"});
+ }, "subtest_" + ++testNum);
}
/*
@@ -68,13 +68,13 @@ function run() {
function query_should_be_parseable(q) {
test(function() {
assert_true(query_is_parseable(q))
- }, "subtest_" + ++testNum, {assert: "query " + q + " should be parseable"});
+ }, "subtest_" + ++testNum);
}
function query_should_not_be_parseable(q) {
test(function() {
assert_false(query_is_parseable(q))
- }, "subtest_" + ++testNum, {assert: "query " + q + " should not be parseable"});
+ }, "subtest_" + ++testNum);
}
/*
@@ -88,13 +88,13 @@ function run() {
function expression_should_be_parseable(e) {
test(function() {
assert_true(expression_is_parseable(e));
- }, "subtest_" + ++testNum, {assert: "expression " + e + " should be parseable"});
+ }, "subtest_" + ++testNum);
}
function expression_should_not_be_parseable(e) {
test(function() {
assert_false(expression_is_parseable(e));
- }, "subtest_" + ++testNum, {assert: "expression " + e + " should not be parseable"});
+ }, "subtest_" + ++testNum);
}
// The no-type syntax doesn't mix with the not and only keywords.
diff --git a/tests/wpt/web-platform-tests/fetch/images/canvas-remote-read-remote-image-redirect.html b/tests/wpt/web-platform-tests/fetch/images/canvas-remote-read-remote-image-redirect.html
new file mode 100644
index 00000000000..bfcb7537651
--- /dev/null
+++ b/tests/wpt/web-platform-tests/fetch/images/canvas-remote-read-remote-image-redirect.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Load a no-cors image from a same-origin URL that redirects to a cross-origin URL that redirects to the initial origin</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script>
+var image = new Image();
+image.onload = function() {
+ const canvas = document.createElement("canvas");
+ canvas.width = 100;
+ canvas.height = 100;
+
+ const context = canvas.getContext("2d");
+ context.drawImage(image, 0, 0, 100, 100);
+
+ assert_throws("SecurityError", () => {
+ context.getImageData(0, 0, 100, 100);
+ });
+ done();
+}
+
+const info = get_host_info();
+const finalURL = get_host_info().HTTP_ORIGIN + "/images/apng.png";
+const intermediateURL = get_host_info().HTTP_REMOTE_ORIGIN + "/fetch/api/resources/redirect.py?location=" + finalURL;
+image.src = "/fetch/api/resources/redirect.py?location=" + encodeURIComponent(intermediateURL);
+</script>
diff --git a/tests/wpt/web-platform-tests/hr-time/monotonic-clock.any.js b/tests/wpt/web-platform-tests/hr-time/monotonic-clock.any.js
index f7f254557f4..c53b04d844e 100644
--- a/tests/wpt/web-platform-tests/hr-time/monotonic-clock.any.js
+++ b/tests/wpt/web-platform-tests/hr-time/monotonic-clock.any.js
@@ -1,14 +1,13 @@
+// The time values returned when calling the now method MUST be monotonically increasing and not subject to system clock adjustments or system clock skew.
test(function() {
assert_true(self.performance.now() > 0, "self.performance.now() returns positive numbers");
-}, "self.performance.now() returns a positive number", {assert: "The time values returned when calling the now method MUST be monotonically increasing and not subject to system clock adjustments or system clock skew."});
+}, "self.performance.now() returns a positive number");
+// The difference between any two chronologically recorded time values returned from the now method MUST never be negative.
test(function() {
var now1 = self.performance.now();
var now2 = self.performance.now();
assert_true((now2-now1) >= 0, "self.performance.now() difference is not negative");
},
- "self.performance.now() difference is not negative",
- {
- assert: "The difference between any two chronologically recorded time values returned from the now method MUST never be negative."
- }
+ "self.performance.now() difference is not negative"
);
diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/available-images-onload.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/available-images-onload.html
new file mode 100644
index 00000000000..5fc5cb8b619
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-img-element/available-images-onload.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html>
+<title>Ensure images from available images list can be drawn to a canvas</title>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-list-of-available-images">
+<meta charset="utf-8">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+ async_test(function(t) {
+ var i = new Image();
+ i.onerror = t.unreached_func();
+ i.onload = t.step_func(function() {
+ var i2 = new Image();
+ // Potentially start multiple image loading tasks by performing several
+ // relevant mutations. This could lead to an invalid state later in an
+ // erroneous implementation.
+ i2.crossOrigin = true;
+ // Start an image loading task that is expected to short-circuit since
+ // the requested image is present in the list of available images.
+ i2.src = "3.jpg";
+ i2.onerror = t.unreached_func();
+ // Ensure the loaded image is in a state that is usable by a 2d canvas.
+ i2.onload = t.step_func_done(function() {
+ var c = document.createElement('canvas');
+ var ctx = c.getContext('2d');
+ ctx.drawImage(i2, 0, 0);
+ });
+ });
+ // Request an image which should be added to the list of available images.
+ i.src = "3.jpg";
+ });
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-button-element/button-click-submits.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-button-element/button-click-submits.html
index e6f02d3e21c..f09d06080fb 100644
--- a/tests/wpt/web-platform-tests/html/semantics/forms/the-button-element/button-click-submits.html
+++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-button-element/button-click-submits.html
@@ -146,4 +146,65 @@ test(t => {
}, "clicking a button inside a disabled fieldset's legend *should* trigger submit");
+async_test(t => {
+
+ const form = document.createElement("form");
+ const button = document.createElement("button");
+ const span = document.createElement("span");
+ button.appendChild(span);
+ form.appendChild(button);
+ document.body.appendChild(form);
+
+ form.addEventListener("submit", t.step_func_done(ev => {
+ ev.preventDefault();
+ assert_equals(ev.target, form);
+ }));
+
+ span.click();
+
+}, "clicking the child of a button with .click() should trigger a submit");
+
+async_test(t => {
+
+ const form = document.createElement("form");
+ const button = document.createElement("button");
+ const span = document.createElement("span");
+ button.appendChild(span);
+ form.appendChild(button);
+ document.body.appendChild(form);
+
+ form.addEventListener("submit", t.step_func_done(ev => {
+ ev.preventDefault();
+ assert_equals(ev.target, form);
+ }));
+
+ const e = new MouseEvent("click", { bubbles: true });
+ span.dispatchEvent(e);
+
+}, "clicking the child of a button by dispatching a bubbling event should trigger a submit");
+
+async_test(t => {
+
+ const form = document.createElement("form");
+ const button = document.createElement("button");
+ const span = document.createElement("span");
+ button.appendChild(span);
+ form.appendChild(button);
+ document.body.appendChild(form);
+
+ form.addEventListener("submit", t.step_func_done(ev => {
+ ev.preventDefault();
+ assert_unreached("Form should not be submitted");
+ }));
+
+ span.addEventListener("click", t.step_func(ev => {
+ ev.preventDefault();
+ t.step_timeout(() => t.done(), 500);
+ }));
+
+ const e = new MouseEvent("click", { bubbles: false });
+ span.dispatchEvent(e);
+
+}, "clicking the child of a button by dispatching a non-bubbling event should not trigger submit");
+
</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/support/target_blank_iplicit_noopener.html b/tests/wpt/web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/support/target_blank_iplicit_noopener.html
new file mode 100644
index 00000000000..bf6a1ae5bfe
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/support/target_blank_iplicit_noopener.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<script>
+ let bc = new BroadcastChannel(window.location.search.substring(1));
+ bc.postMessage({ hasOpener: opener !== null });
+ window.close();
+</script>
diff --git a/tests/wpt/web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.tentative.html b/tests/wpt/web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.tentative.html
new file mode 100644
index 00000000000..39903dcd520
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.tentative.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset=utf-8>
+ <title>Test behavior of rel="noopener" links</title>
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+</head>
+<body>
+ <a href="support/target_blank_iplicit_noopener.html?a1" id="a1" rel="noopener" target="_blank">Click me</a>
+ <a href="support/target_blank_iplicit_noopener.html?a2" id="a2" rel="opener" target="_blank">Click me</a>
+ <a href="support/target_blank_iplicit_noopener.html?a3" id="a3" target="_blank">Click me</a>
+ <a href="support/target_blank_iplicit_noopener.html?a4" id="a4" rel="opener noopener" target="_blank">Click me</a>
+ <a href="support/target_blank_iplicit_noopener.html?a5" id="a5" rel="noopener opener" target="_blank">Click me</a>
+
+ <img src="/images/threecolors.png" />
+ <area shape="rect" coords="0,0,99,50" href="support/target_blank_iplicit_noopener.html?area1" id="area1" rel="noopener" target="_blank" />
+ </img>
+ <img src="/images/threecolors.png" />
+ <area shape="rect" coords="0,0,99,50" href="support/target_blank_iplicit_noopener.html?area2" id="area2" rel="opener" target="_blank" />
+ </img>
+ <img src="/images/threecolors.png" />
+ <area shape="rect" coords="0,0,99,50" href="support/target_blank_iplicit_noopener.html?area3" id="area3" target="_blank" />
+ </img>
+ <img src="/images/threecolors.png" />
+ <area shape="rect" coords="0,0,99,50" href="support/target_blank_iplicit_noopener.html?area4" id="area4" rel="opener noopener" target="_blank" />
+ </img>
+ <img src="/images/threecolors.png" />
+ <area shape="rect" coords="0,0,99,50" href="support/target_blank_iplicit_noopener.html?area5" id="area5" rel="noopener opener" target="_blank" />
+ </img>
+
+ <script>
+
+ let tests = [
+ { id: "a1", hasOpener: false, name: "Anchor element with target=_blank with rel=noopener" },
+ { id: "a2", hasOpener: true, name: "Anchor element with target=_blank with rel=opener" },
+ { id: "a3", hasOpener: false, name: "Anchor element with target=_blank with implicit rel=noopener" },
+ { id: "a4", hasOpener: false, name: "Anchor element with target=_blank with rel=opener+noopener" },
+ { id: "a5", hasOpener: false, name: "Anchor element with target=_blank with rel=noopener+opener" },
+ { id: "area1", hasOpener: false, name: "Area element with target=_blank with rel=noopener" },
+ { id: "area2", hasOpener: true, name: "Area element with target=_blank with rel=opener" },
+ { id: "area3", hasOpener: false, name: "Area element with target=_blank with implicit rel=noopener" },
+ { id: "area4", hasOpener: false, name: "Area element with target=_blank with rel=opener+noopener" },
+ { id: "area5", hasOpener: false, name: "Area element with target=_blank with rel=noopener+opener" },
+ ];
+
+ tests.forEach(data => {
+ async_test(
+ test => {
+ let bc = new BroadcastChannel(data.id);
+ bc.addEventListener("message", test.step_func_done(e => {
+ assert_equals(e.data.hasOpener, data.hasOpener);
+ }), {once: true});
+
+ document.getElementById(data.id).click();
+ }, data.name);
+ });
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/muted-errors.sub.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/muted-errors.sub.html
index a42179dc85d..1b255faf7e1 100644
--- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/muted-errors.sub.html
+++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/muted-errors.sub.html
@@ -4,7 +4,7 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
-// https://html.spec.whatwg.org/#report-the-error
+// https://html.spec.whatwg.org/multipage/webappapis.html#report-the-error
// If script's muted errors is true, then set message to "Script error.",
// urlString to the empty string, line and col to 0, and errorValue to null.
setup({allow_uncaught_exception: true});
@@ -43,6 +43,16 @@
script.onload = test3.step_func_done(() => check(true));
document.body.appendChild(script);
}
+
+ var test4 = async_test("Errors for same-origin scripts redirected to a " +
+ "cross-origin url and redirected back to " +
+ "same-origin should be muted");
+ var check4 = test4.step_func_done(() => check(true));
+
+ var test5 = async_test("Errors for cross-origin scripts redirected to a " +
+ "same-origin url should be muted");
+ var check5 = test5.step_func_done(() => check(true));
+
function unreachable() { log.push("unexpected"); }
</script>
<script src="cacheable-script-throw.py" onerror="test1.unreached_func()()" onload="check1()"></script>
@@ -50,3 +60,10 @@
onerror="test2.unreached_func()()" onload="check2()"></script>
<iframe src="//{{domains[www2]}}:{{ports[http][0]}}/html/semantics/scripting-1/the-script-element/muted-errors-iframe.html"
onerror="test3.unreached_func()()" onload="step3()"></iframe>
+<script src="/fetch/api/resources/redirect.py?location=
+//{{domains[www2]}}:{{ports[http][0]}}/fetch/api/resources/redirect.py?location=
+//{{host}}:{{ports[http][0]}}/html/semantics/scripting-1/the-script-element/cacheable-script-throw.py?same-cross-same"
+onerror="test4.unreached_func()()" onload="check4()"></script>
+<script src="//{{domains[www2]}}:{{ports[http][0]}}/fetch/api/resources/redirect.py?location=
+//{{host}}:{{ports[http][0]}}/html/semantics/scripting-1/the-script-element/cacheable-script-throw.py?cross-same"
+onerror="test5.unreached_func()()" onload="check5()"></script>
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini
index f751532cee7..750dd055dbd 100644
--- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/elementPosition.html.ini
@@ -1,3 +1,7 @@
[elementPosition.html]
expected:
- if product == "chrome" or product == "safari": ERROR
+ if product == "chrome": ERROR
+
+ [TestDriver actions: element position]
+ expected:
+ if product == "safari": FAIL
diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/elementTiming.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/elementTiming.html.ini
index a1e9ea86844..7a6cf82bbd3 100644
--- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/elementTiming.html.ini
+++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/testdriver/actions/elementTiming.html.ini
@@ -1,3 +1,3 @@
[elementTiming.html]
expected:
- if product == "chrome" or product == "safari": ERROR
+ if product == "chrome": ERROR
diff --git a/tests/wpt/web-platform-tests/navigation-timing/resources/webperftestharness.js b/tests/wpt/web-platform-tests/navigation-timing/resources/webperftestharness.js
index afdfa2a768b..3efb52783f1 100644
--- a/tests/wpt/web-platform-tests/navigation-timing/resources/webperftestharness.js
+++ b/tests/wpt/web-platform-tests/navigation-timing/resources/webperftestharness.js
@@ -6,6 +6,9 @@ policies and contribution forms [3].
[1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
[2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license
[3] http://www.w3.org/2004/10/27-testcases
+
+author: W3C http://www.w3.org/
+help: http://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute
*/
//
@@ -39,12 +42,12 @@ function test_namespace(child_name, skip_root)
{
if (skip_root === undefined) {
var msg = 'window.performance is defined';
- wp_test(function () { assert_true(performanceNamespace !== undefined, msg); }, msg,{author:"W3C http://www.w3.org/",help:"http://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute",assert:"The window.performance attribute provides a hosting area for performance related attributes. "});
+ wp_test(function () { assert_true(performanceNamespace !== undefined, msg); }, msg);
}
if (child_name !== undefined) {
var msg2 = 'window.performance.' + child_name + ' is defined';
- wp_test(function() { assert_true(performanceNamespace[child_name] !== undefined, msg2); }, msg2,{author:"W3C http://www.w3.org/",help:"http://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute",assert:"The window.performance attribute provides a hosting area for performance related attributes. "});
+ wp_test(function() { assert_true(performanceNamespace[child_name] !== undefined, msg2); }, msg2);
}
}
diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_navigation_redirectCount_none.html b/tests/wpt/web-platform-tests/navigation-timing/test_navigation_redirectCount_none.html
index eaaef4b514c..da94d24c746 100644
--- a/tests/wpt/web-platform-tests/navigation-timing/test_navigation_redirectCount_none.html
+++ b/tests/wpt/web-platform-tests/navigation-timing/test_navigation_redirectCount_none.html
@@ -5,6 +5,7 @@
<title>window.performance.navigation.redirectCount on a non-redirected navigation</title>
<link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
<link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-navigation-timing-interface"/>
+ <link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/performance-timeline-utils.js"></script>
@@ -23,7 +24,7 @@
{
test_equals(performanceNamespace.timing.redirectStart, 0, 'timing.redirectStart on an non-redirected navigation');
test_equals(performanceNamespace.timing.redirectEnd, 0, 'timing.redirectEnd on an non-redirected navigation');
- test_equals(performanceNamespace.navigation.redirectCount, 0, 'navigation.redirectCount on an non-redirected navigation',{help:"http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface"});
+ test_equals(performanceNamespace.navigation.redirectCount, 0, 'navigation.redirectCount on an non-redirected navigation');
}
</script>
</body>
diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_no_previous_document.html b/tests/wpt/web-platform-tests/navigation-timing/test_no_previous_document.html
index 0b9eb4b2224..0bce16525ca 100644
--- a/tests/wpt/web-platform-tests/navigation-timing/test_no_previous_document.html
+++ b/tests/wpt/web-platform-tests/navigation-timing/test_no_previous_document.html
@@ -5,6 +5,7 @@
<title>window.performance.timing attributes on an initial navigation</title>
<link rel="author" title="Google" href="http://www.google.com/" />
<link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-navigation-timing-interface"/>
+ <link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/performance-timeline-utils.js"></script>
@@ -21,7 +22,7 @@
if (performanceNamespace)
{
test_true(frame.contentWindow.performance.navigation.type == performanceNamespace.navigation.TYPE_NAVIGATE,
- 'timing.navigation.type is TYPE_NAVIGATE',{help:"http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface"});
+ 'timing.navigation.type is TYPE_NAVIGATE');
test_equals(frame.contentWindow.performance.timing.unloadEventStart, 0, 'timing.unloadEventStart == 0 on navigation with no previous document');
test_equals(frame.contentWindow.performance.timing.unloadEventEnd, 0, 'timing.unloadEventEnd == 0 navigation with no previous document');
diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_timing_attributes_order.html b/tests/wpt/web-platform-tests/navigation-timing/test_timing_attributes_order.html
index 03c2619cb3e..5e885ea7ec3 100644
--- a/tests/wpt/web-platform-tests/navigation-timing/test_timing_attributes_order.html
+++ b/tests/wpt/web-platform-tests/navigation-timing/test_timing_attributes_order.html
@@ -5,6 +5,7 @@
<title>window.performance.timing attribute ordering on a simple navigation</title>
<link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
<link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-navigation-timing-interface"/>
+ <link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/performance-timeline-utils.js"></script>
@@ -43,7 +44,7 @@
//
test_equals(performanceNamespace.navigation.type,
performanceNamespace.navigation.TYPE_NAVIGATE,
- 'window.performance.navigation.type == TYPE_NAVIGATE',{help:"http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface"});
+ 'window.performance.navigation.type == TYPE_NAVIGATE');
// navigiation must be non-0
test_timing_greater_than('navigationStart', 0);
diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_timing_client_redirect.html b/tests/wpt/web-platform-tests/navigation-timing/test_timing_client_redirect.html
index 3bc369234a0..bebf39eb98a 100644
--- a/tests/wpt/web-platform-tests/navigation-timing/test_timing_client_redirect.html
+++ b/tests/wpt/web-platform-tests/navigation-timing/test_timing_client_redirect.html
@@ -5,6 +5,7 @@
<title>window.performance.timing.redirect attributes on a client redirect navigation</title>
<link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
<link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-navigation-timing-interface"/>
+ <link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/performance-timeline-utils.js"></script>
@@ -33,9 +34,9 @@
{
redirect_frame.onload = "";
test_true(redirect_frame.contentWindow.performance.navigation.type == performanceNamespace.navigation.TYPE_NAVIGATE,
- 'timing.navigation.type is TYPE_NAVIGATE',{help:"http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface"});
+ 'timing.navigation.type is TYPE_NAVIGATE');
- test_equals(redirect_frame.contentWindow.performance.navigation.redirectCount, 0, 'navigation.redirectCount == 0 on an client redirected navigation',{help:"http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface"});
+ test_equals(redirect_frame.contentWindow.performance.navigation.redirectCount, 0, 'navigation.redirectCount == 0 on an client redirected navigation');
test_equals(redirect_frame.contentWindow.performance.timing.redirectStart, 0, 'timing.redirectStart == 0 on an client redirected navigation');
test_equals(redirect_frame.contentWindow.performance.timing.redirectEnd, 0, 'timing.redirectEnd == 0 on an client redirected navigation');
diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_timing_reload.html b/tests/wpt/web-platform-tests/navigation-timing/test_timing_reload.html
index 0e28a6479b1..a660caf4ef9 100644
--- a/tests/wpt/web-platform-tests/navigation-timing/test_timing_reload.html
+++ b/tests/wpt/web-platform-tests/navigation-timing/test_timing_reload.html
@@ -5,6 +5,7 @@
<title>window.performance.timing attributes after a reloaded navigation</title>
<link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
<link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-navigation-timing-interface"/>
+ <link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/performance-timeline-utils.js"></script>
@@ -56,7 +57,7 @@
// ensure the frame reloaded
test_equals(reload_frame.contentWindow.performance.navigation.type,
performanceNamespace.navigation.TYPE_RELOAD,
- "window.performance.navigation.type == TYPE_RELOAD", {help:"http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface"});
+ "window.performance.navigation.type == TYPE_RELOAD");
// ensure reload timings changed
var timing = reload_frame.contentWindow.performance.timing;
diff --git a/tests/wpt/web-platform-tests/navigation-timing/test_timing_xserver_redirect.html b/tests/wpt/web-platform-tests/navigation-timing/test_timing_xserver_redirect.html
index 93db8699f87..a39f7c2642c 100644
--- a/tests/wpt/web-platform-tests/navigation-timing/test_timing_xserver_redirect.html
+++ b/tests/wpt/web-platform-tests/navigation-timing/test_timing_xserver_redirect.html
@@ -5,6 +5,7 @@
<title>window.performance.timing.redirect attributes on a cross-origin server redirected navigation</title>
<link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
<link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-navigation-timing-interface"/>
+ <link rel="help" href="http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface"/>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/performance-timeline-utils.js"></script>
@@ -35,8 +36,8 @@
performanceNamespace = document.getElementById("frameContext").contentWindow.performance;
test_equals(performanceNamespace.navigation.type,
performanceNamespace.navigation.TYPE_NAVIGATE,
- 'timing.navigation.type is TYPE_NAVIGATE',{help:"http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface"});
- test_equals(performanceNamespace.navigation.redirectCount, 0, 'navigation.redirectCount == 0 on a cross-origin server redirected navigation', {help:"http://www.w3.org/TR/navigation-timing/#sec-navigation-info-interface"});
+ 'timing.navigation.type is TYPE_NAVIGATE');
+ test_equals(performanceNamespace.navigation.redirectCount, 0, 'navigation.redirectCount == 0 on a cross-origin server redirected navigation');
test_timing_greater_than('navigationStart', 0);
diff --git a/tests/wpt/web-platform-tests/requestidlecallback/basic.html b/tests/wpt/web-platform-tests/requestidlecallback/basic.html
index e481a6bd3bd..429134ec436 100644
--- a/tests/wpt/web-platform-tests/requestidlecallback/basic.html
+++ b/tests/wpt/web-platform-tests/requestidlecallback/basic.html
@@ -4,21 +4,25 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
+// The window.requestIdleCallback function is used to request callbacks during browser-defined idle time.
test(function() {
assert_equals(typeof window.requestIdleCallback, "function");
-}, "window.requestIdleCallback is defined", {assert: "The window.requestIdleCallback function is used to request callbacks during browser-defined idle time."});
+}, "window.requestIdleCallback is defined");
+// The window.cancelIdleCallback function is used to cancel callbacks scheduled via requestIdleCallback.
test(function() {
assert_equals(typeof window.cancelIdleCallback, "function");
-}, "window.cancelIdleCallback is defined", {assert: "The window.cancelIdleCallback function is used to cancel callbacks scheduled via requestIdleCallback."});
+}, "window.cancelIdleCallback is defined");
+// The requestIdleCallback method MUST return a long
test(function() {
assert_equals(typeof window.requestIdleCallback(function() {}), "number");
-}, "window.requestIdleCallback() returns a number", {assert: "The requestIdleCallback method MUST return a long"});
+}, "window.requestIdleCallback() returns a number");
+// The cancelIdleCallback method MUST return void
test(function() {
assert_equals(typeof window.cancelIdleCallback(1), "undefined");
-}, "window.cancelIdleCallback() returns undefined", {assert: "The cancelIdleCallback method MUST return void"});
+}, "window.cancelIdleCallback() returns undefined");
async_test(function() {
// Check whether requestIdleCallback schedules a callback which gets executed
diff --git a/tests/wpt/web-platform-tests/resource-timing/resources/webperftestharness.js b/tests/wpt/web-platform-tests/resource-timing/resources/webperftestharness.js
index 98b2954bad3..203eb0d16b4 100644
--- a/tests/wpt/web-platform-tests/resource-timing/resources/webperftestharness.js
+++ b/tests/wpt/web-platform-tests/resource-timing/resources/webperftestharness.js
@@ -1,4 +1,8 @@
-//
+/*
+author: W3C http://www.w3.org/
+help: http://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute
+*/
+//
// Helper Functions for NavigationTiming W3C tests
//
@@ -45,7 +49,8 @@ function wp_test(func, msg, properties)
if (performanceNamespace === undefined || performanceNamespace == null)
{
// show a single error that window.performance is undefined
- test(function() { assert_true(performanceNamespace !== undefined && performanceNamespace != null, "window.performance is defined and not null"); }, "window.performance is defined and not null.", {author:"W3C http://www.w3.org/",help:"http://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute",assert:"The window.performance attribute provides a hosting area for performance related attributes. "});
+ // The window.performance attribute provides a hosting area for performance related attributes.
+ test(function() { assert_true(performanceNamespace !== undefined && performanceNamespace != null, "window.performance is defined and not null"); }, "window.performance is defined and not null.");
}
}
@@ -56,12 +61,14 @@ function test_namespace(child_name, skip_root)
{
if (skip_root === undefined) {
var msg = 'window.performance is defined';
- wp_test(function () { assert_true(performanceNamespace !== undefined, msg); }, msg,{author:"W3C http://www.w3.org/",help:"http://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute",assert:"The window.performance attribute provides a hosting area for performance related attributes. "});
+ // The window.performance attribute provides a hosting area for performance related attributes.
+ wp_test(function () { assert_true(performanceNamespace !== undefined, msg); }, msg);
}
if (child_name !== undefined) {
var msg2 = 'window.performance.' + child_name + ' is defined';
- wp_test(function() { assert_true(performanceNamespace[child_name] !== undefined, msg2); }, msg2,{author:"W3C http://www.w3.org/",help:"http://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute",assert:"The window.performance attribute provides a hosting area for performance related attributes. "});
+ // The window.performance attribute provides a hosting area for performance related attributes.
+ wp_test(function() { assert_true(performanceNamespace[child_name] !== undefined, msg2); }, msg2);
}
}
diff --git a/tests/wpt/web-platform-tests/scroll-animations/current-time-nan.html b/tests/wpt/web-platform-tests/scroll-animations/current-time-nan.html
new file mode 100644
index 00000000000..356f0a60682
--- /dev/null
+++ b/tests/wpt/web-platform-tests/scroll-animations/current-time-nan.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>ScrollTimeline current time algorithm - NaN cases</title>
+<link rel="help" href="https://wicg.github.io/scroll-animations/#current-time-algorithm">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<style>
+.scroller {
+ height: 100px;
+ width: 100px;
+ overflow: auto;
+}
+
+.content {
+ height: 500px;
+ width: 500px;
+}
+</style>
+
+<div id='inlineScroller' class='scroller' style='display: inline;'>
+ <div class='content'></div>
+</div>
+<script>
+'use strict';
+
+// TODO(smcgruer): In many of the tests below, timeRange is specified when it
+// should not need to be. This is an artifact of the initial Chrome
+// implementation which doesn't support timeRange: 'auto'. These should be
+// removed in the future.
+
+test(function() {
+ const scroller = document.querySelector('#inlineScroller');
+ const scrollTimeline = new ScrollTimeline(
+ { scrollSource: scroller, timeRange: 100, orientation: 'block' });
+
+ assert_equals(scrollTimeline.currentTime, null);
+}, 'currentTime should be null for a display: inline scrollSource');
+</script>
+
+<div id='displayNoneScroller' class='scroller' style='display: none;'>
+ <div class='content'></div>
+</div>
+<script>
+test(function() {
+ const scroller = document.querySelector('#displayNoneScroller');
+ const scrollTimeline = new ScrollTimeline(
+ { scrollSource: scroller, timeRange: 100, orientation: 'block' });
+
+ assert_equals(scrollTimeline.currentTime, null);
+}, 'currentTime should be null for a display: none scrollSource');
+</script>
+
+<script>
+test(function() {
+ const scroller = document.createElement('div');
+ const content = document.createElement('div');
+
+ scroller.style.overflow = 'auto';
+ scroller.style.height = '100px';
+ scroller.style.width = '100px';
+ content.style.height = '250px';
+ content.style.width = '250px';
+
+ scroller.appendChild(content);
+
+ const scrollTimeline = new ScrollTimeline(
+ { scrollSource: scroller, timeRange: 100, orientation: 'block' });
+
+ assert_equals(scrollTimeline.currentTime, null);
+}, 'currentTime should be null for an unattached scrollSource');
+</script>
+
+<div id='notAScroller' class='scroller' style='overflow: visible;'>
+ <div class='content'></div>
+</div>
+<script>
+test(function() {
+ const scroller = document.querySelector('#notAScroller');
+ const scrollTimeline = new ScrollTimeline(
+ { scrollSource: scroller, timeRange: 100, orientation: 'block' });
+
+ assert_equals(scrollTimeline.currentTime, null);
+}, 'currentTime should be null when the scrollSource is not a scroller');
+</script>
diff --git a/tests/wpt/web-platform-tests/scroll-animations/current-time-root-scroller.html b/tests/wpt/web-platform-tests/scroll-animations/current-time-root-scroller.html
new file mode 100644
index 00000000000..8e600e6ef05
--- /dev/null
+++ b/tests/wpt/web-platform-tests/scroll-animations/current-time-root-scroller.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>ScrollTimeline current time algorithm - root scroller</title>
+<link rel="help" href="https://wicg.github.io/scroll-animations/#current-time-algorithm">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<style>
+html {
+ /* Ensure the document is scrollable. */
+ min-height: 100%;
+ min-width: 100%;
+ padding-bottom: 100px;
+ padding-right: 100px;
+}
+</style>
+
+<script>
+test(function() {
+ const scroller = document.scrollingElement;
+ // Set the timeRange(s) such that currentTime maps directly to the value
+ // scrolled. This makes it easier to assert on the currentTime in the test.
+ const scrollerHeight = scroller.scrollHeight - scroller.clientHeight;
+ const scrollerWidth = scroller.scrollWidth - scroller.clientWidth;
+
+ const blockScrollTimeline = new ScrollTimeline(
+ { scrollSource: scroller, timeRange: scrollerHeight, orientation: 'block' });
+ const inlineScrollTimeline = new ScrollTimeline(
+ { scrollSource: scroller, timeRange: scrollerWidth, orientation: 'inline' });
+
+ // Unscrolled, both timelines should read a currentTime of 0.
+ assert_equals(blockScrollTimeline.currentTime, 0);
+ assert_equals(inlineScrollTimeline.currentTime, 0);
+
+ // Now do some scrolling and make sure that the ScrollTimelines update.
+ scroller.scrollTop = 50;
+ scroller.scrollLeft = 75;
+
+ // As noted above, the timeRange(s) are mapped such that currentTime should be
+ // the scroll offset.
+ assert_equals(blockScrollTimeline.currentTime, 50);
+ assert_equals(inlineScrollTimeline.currentTime, 75);
+}, 'currentTime calculates the correct time for a document.scrollingElement scrollSource');
+</script>
diff --git a/tests/wpt/web-platform-tests/scroll-animations/current-time-writing-modes.html b/tests/wpt/web-platform-tests/scroll-animations/current-time-writing-modes.html
new file mode 100644
index 00000000000..a7e55513eec
--- /dev/null
+++ b/tests/wpt/web-platform-tests/scroll-animations/current-time-writing-modes.html
@@ -0,0 +1,350 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>ScrollTimeline current time algorithm - interaction with writing modes</title>
+<link rel="help" href="https://wicg.github.io/scroll-animations/#current-time-algorithm">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<script src="./resources/scrolltimeline-utils.js"></script>
+
+<body></body>
+
+<script>
+'use strict';
+
+test(function() {
+ const scrollerOverrides = new Map([['direction', 'rtl']]);
+ const scroller = setupScrollTimelineTest(scrollerOverrides);
+
+ // Set the timeRange such that currentTime maps directly to the value
+ // scrolled. The contents and scroller are square, so it suffices to compute
+ // one edge and use it for all the timelines.
+ const scrollerSize = scroller.scrollHeight - scroller.clientHeight;
+
+ const blockScrollTimeline = new ScrollTimeline(
+ {scrollSource: scroller, timeRange: scrollerSize, orientation: 'block'});
+ const inlineScrollTimeline = new ScrollTimeline(
+ {scrollSource: scroller, timeRange: scrollerSize, orientation: 'inline'});
+ const horizontalScrollTimeline = new ScrollTimeline({
+ scrollSource: scroller,
+ timeRange: scrollerSize,
+ orientation: 'horizontal'
+ });
+ const verticalScrollTimeline = new ScrollTimeline({
+ scrollSource: scroller,
+ timeRange: scrollerSize,
+ orientation: 'vertical'
+ });
+
+ // Unscrolled, all timelines should read a current time of 0 even though the
+ // X-axis will have started at the right hand side for rtl.
+ assert_equals(
+ blockScrollTimeline.currentTime, 0, 'Unscrolled block timeline');
+ assert_equals(
+ inlineScrollTimeline.currentTime, 0, 'Unscrolled inline timeline');
+ assert_equals(
+ horizontalScrollTimeline.currentTime, 0,
+ 'Unscrolled horizontal timeline');
+ assert_equals(
+ verticalScrollTimeline.currentTime, 0, 'Unscrolled vertical timeline');
+
+ // The offset in the inline/horizontal direction should be inverted. The
+ // block/vertical direction should be unaffected.
+ scroller.scrollTop = 50;
+ scroller.scrollLeft = 75;
+
+ assert_equals(blockScrollTimeline.currentTime, 50, 'Scrolled block timeline');
+ assert_equals(
+ inlineScrollTimeline.currentTime, scrollerSize - 75,
+ 'Scrolled inline timeline');
+ assert_equals(
+ horizontalScrollTimeline.currentTime, scrollerSize - 75,
+ 'Scrolled horizontal timeline');
+ assert_equals(
+ verticalScrollTimeline.currentTime, 50, 'Scrolled vertical timeline');
+}, 'currentTime handles direction: rtl correctly');
+
+test(function() {
+ const scrollerOverrides = new Map([['writing-mode', 'vertical-rl']]);
+ const scroller = setupScrollTimelineTest(scrollerOverrides);
+
+ // Set the timeRange such that currentTime maps directly to the value
+ // scrolled. The contents and scroller are square, so it suffices to compute
+ // one edge and use it for all the timelines.
+ const scrollerSize = scroller.scrollHeight - scroller.clientHeight;
+
+ const blockScrollTimeline = new ScrollTimeline(
+ {scrollSource: scroller, timeRange: scrollerSize, orientation: 'block'});
+ const inlineScrollTimeline = new ScrollTimeline(
+ {scrollSource: scroller, timeRange: scrollerSize, orientation: 'inline'});
+ const horizontalScrollTimeline = new ScrollTimeline({
+ scrollSource: scroller,
+ timeRange: scrollerSize,
+ orientation: 'horizontal'
+ });
+ const verticalScrollTimeline = new ScrollTimeline({
+ scrollSource: scroller,
+ timeRange: scrollerSize,
+ orientation: 'vertical'
+ });
+
+ // Unscrolled, all timelines should read a current time of 0 even though the
+ // X-axis will have started at the right hand side for vertical-rl.
+ assert_equals(
+ blockScrollTimeline.currentTime, 0, 'Unscrolled block timeline');
+ assert_equals(
+ inlineScrollTimeline.currentTime, 0, 'Unscrolled inline timeline');
+ assert_equals(
+ horizontalScrollTimeline.currentTime, 0,
+ 'Unscrolled horizontal timeline');
+ assert_equals(
+ verticalScrollTimeline.currentTime, 0, 'Unscrolled vertical timeline');
+
+ // For vertical-rl, the X-axis starts on the right-hand-side and is the block
+ // axis. The Y-axis is normal but is the inline axis. For the
+ // horizontal/vertical cases, horizontal starts on the right-hand-side and
+ // vertical is normal.
+ scroller.scrollTop = 50;
+ scroller.scrollLeft = 75;
+
+ assert_equals(
+ blockScrollTimeline.currentTime, scrollerSize - 75,
+ 'Scrolled block timeline');
+ assert_equals(
+ inlineScrollTimeline.currentTime, 50, 'SCrolled inline timeline');
+ assert_equals(
+ horizontalScrollTimeline.currentTime, scrollerSize - 75,
+ 'Scrolled horizontal timeline');
+ assert_equals(
+ verticalScrollTimeline.currentTime, 50, 'Scrolled vertical timeline');
+}, 'currentTime handles writing-mode: vertical-rl correctly');
+
+test(function() {
+ const scrollerOverrides = new Map([['writing-mode', 'vertical-lr']]);
+ const scroller = setupScrollTimelineTest(scrollerOverrides);
+
+ // Set the timeRange such that currentTime maps directly to the value
+ // scrolled. The contents and scroller are square, so it suffices to compute
+ // one edge and use it for all the timelines.
+ const scrollerSize = scroller.scrollHeight - scroller.clientHeight;
+
+ const blockScrollTimeline = new ScrollTimeline(
+ {scrollSource: scroller, timeRange: scrollerSize, orientation: 'block'});
+ const inlineScrollTimeline = new ScrollTimeline(
+ {scrollSource: scroller, timeRange: scrollerSize, orientation: 'inline'});
+ const horizontalScrollTimeline = new ScrollTimeline({
+ scrollSource: scroller,
+ timeRange: scrollerSize,
+ orientation: 'horizontal'
+ });
+ const verticalScrollTimeline = new ScrollTimeline({
+ scrollSource: scroller,
+ timeRange: scrollerSize,
+ orientation: 'vertical'
+ });
+
+ // Unscrolled, all timelines should read a current time of 0.
+ assert_equals(
+ blockScrollTimeline.currentTime, 0, 'Unscrolled block timeline');
+ assert_equals(
+ inlineScrollTimeline.currentTime, 0, 'Unscrolled inline timeline');
+ assert_equals(
+ horizontalScrollTimeline.currentTime, 0,
+ 'Unscrolled horizontal timeline');
+ assert_equals(
+ verticalScrollTimeline.currentTime, 0, 'Unscrolled vertical timeline');
+
+ // For vertical-lr, both axes start at their 'normal' positions but the X-axis
+ // is the block direction and the Y-axis is the inline direction. This does
+ // not affect horizontal/vertical.
+ scroller.scrollTop = 50;
+ scroller.scrollLeft = 75;
+
+ assert_equals(blockScrollTimeline.currentTime, 75, 'Scrolled block timeline');
+ assert_equals(
+ inlineScrollTimeline.currentTime, 50, 'Scrolled inline timeline');
+ assert_equals(
+ horizontalScrollTimeline.currentTime, 75, 'Scrolled horizontal timeline');
+ assert_equals(
+ verticalScrollTimeline.currentTime, 50, 'Scrolled vertical timeline');
+}, 'currentTime handles writing-mode: vertical-lr correctly');
+
+test(function() {
+ const scrollerOverrides = new Map([['direction', 'rtl']]);
+ const scroller = setupScrollTimelineTest(scrollerOverrides);
+ // Set the timeRange such that currentTime maps directly to the value
+ // scrolled. The contents and scroller are square, so it suffices to compute
+ // one edge and use it for all the timelines.
+ const scrollerSize = scroller.scrollHeight - scroller.clientHeight;
+
+ const lengthScrollTimeline = new ScrollTimeline({
+ scrollSource: scroller,
+ timeRange: scrollerSize,
+ orientation: 'horizontal',
+ startScrollOffset: '20px'
+ });
+ const percentageScrollTimeline = new ScrollTimeline({
+ scrollSource: scroller,
+ timeRange: scrollerSize,
+ orientation: 'horizontal',
+ startScrollOffset: '20%'
+ });
+ const calcScrollTimeline = new ScrollTimeline({
+ scrollSource: scroller,
+ timeRange: scrollerSize,
+ orientation: 'horizontal',
+ startScrollOffset: 'calc(20% - 5px)'
+ });
+
+ // Unscrolled, all timelines should read a current time of unresolved, since
+ // the current offset (0) will be less than the startScrollOffset.
+ assert_equals(
+ lengthScrollTimeline.currentTime, null,
+ 'Unscrolled length-based timeline');
+ assert_equals(
+ percentageScrollTimeline.currentTime, null,
+ 'Unscrolled percentage-based timeline');
+ assert_equals(
+ calcScrollTimeline.currentTime, null, 'Unscrolled calc-based timeline');
+
+ // With direction rtl offsets are inverted, such that scrollLeft ==
+ // scrollerSize is the 'zero' point for currentTime. However the
+ // startScrollOffset is an absolute distance along the offset, so doesn't
+ // need adjusting.
+
+ // Check the length-based ScrollTimeline.
+ scroller.scrollLeft = scrollerSize;
+ assert_equals(
+ lengthScrollTimeline.currentTime, null,
+ 'Length-based timeline before the startScrollOffset point');
+ scroller.scrollLeft = scrollerSize - 20;
+ assert_equals(
+ lengthScrollTimeline.currentTime, 0,
+ 'Length-based timeline at the startScrollOffset point');
+ scroller.scrollLeft = scrollerSize - 50;
+ assert_equals(
+ lengthScrollTimeline.currentTime,
+ calculateCurrentTime(50, 20, scrollerSize, scrollerSize),
+ 'Length-based timeline after the startScrollOffset point');
+
+ // Check the percentage-based ScrollTimeline.
+ scroller.scrollLeft = scrollerSize - (0.19 * scrollerSize);
+ assert_equals(
+ percentageScrollTimeline.currentTime, null,
+ 'Percentage-based timeline before the startScrollOffset point');
+ scroller.scrollLeft = scrollerSize - (0.20 * scrollerSize);
+ assert_equals(
+ percentageScrollTimeline.currentTime, 0,
+ 'Percentage-based timeline at the startScrollOffset point');
+ scroller.scrollLeft = scrollerSize - (0.4 * scrollerSize);
+ assert_equals(
+ percentageScrollTimeline.currentTime,
+ calculateCurrentTime(
+ 0.4 * scrollerSize, 0.2 * scrollerSize, scrollerSize, scrollerSize),
+ 'Percentage-based timeline after the startScrollOffset point');
+
+ // Check the calc-based ScrollTimeline.
+ scroller.scrollLeft = scrollerSize - (0.2 * scrollerSize - 10);
+ assert_equals(
+ calcScrollTimeline.currentTime, null,
+ 'Calc-based timeline before the startScrollOffset point');
+ scroller.scrollLeft = scrollerSize - (0.2 * scrollerSize - 5);
+ assert_equals(
+ calcScrollTimeline.currentTime, 0,
+ 'Calc-based timeline at the startScrollOffset point');
+ scroller.scrollLeft = scrollerSize - (0.2 * scrollerSize);
+ assert_equals(
+ calcScrollTimeline.currentTime,
+ calculateCurrentTime(
+ 0.2 * scrollerSize, 0.2 * scrollerSize - 5, scrollerSize,
+ scrollerSize),
+ 'Calc-based timeline after the startScrollOffset point');
+}, 'currentTime handles startScrollOffset with direction: rtl correctly');
+
+test(function() {
+ const scrollerOverrides = new Map([['direction', 'rtl']]);
+ const scroller = setupScrollTimelineTest(scrollerOverrides);
+ // Set the timeRange such that currentTime maps directly to the value
+ // scrolled. The contents and scroller are square, so it suffices to compute
+ // one edge and use it for all the timelines.
+ const scrollerSize = scroller.scrollHeight - scroller.clientHeight;
+
+ const lengthScrollTimeline = new ScrollTimeline({
+ scrollSource: scroller,
+ timeRange: scrollerSize,
+ orientation: 'horizontal',
+ endScrollOffset: (scrollerSize - 20) + 'px'
+ });
+ const percentageScrollTimeline = new ScrollTimeline({
+ scrollSource: scroller,
+ timeRange: scrollerSize,
+ orientation: 'horizontal',
+ endScrollOffset: '80%'
+ });
+ const calcScrollTimeline = new ScrollTimeline({
+ scrollSource: scroller,
+ timeRange: scrollerSize,
+ orientation: 'horizontal',
+ endScrollOffset: 'calc(80% + 5px)'
+ });
+
+ // With direction rtl offsets are inverted, such that scrollLeft ==
+ // scrollerSize is the 'zero' point for currentTime. However the
+ // endScrollOffset is an absolute distance along the offset, so doesn't need
+ // adjusting.
+
+ // Check the length-based ScrollTimeline.
+ scroller.scrollLeft = 0;
+ assert_equals(
+ lengthScrollTimeline.currentTime, null,
+ 'Length-based timeline after the endScrollOffset point');
+ scroller.scrollLeft = 20;
+ assert_equals(
+ lengthScrollTimeline.currentTime,
+ calculateCurrentTime(
+ scrollerSize - 20, 0, scrollerSize - 20, scrollerSize),
+ 'Length-based timeline at the endScrollOffset point');
+ scroller.scrollLeft = 50;
+ assert_equals(
+ lengthScrollTimeline.currentTime,
+ calculateCurrentTime(
+ scrollerSize - 50, 0, scrollerSize - 20, scrollerSize),
+ 'Length-based timeline before the endScrollOffset point');
+
+ // Check the percentage-based ScrollTimeline.
+ scroller.scrollLeft = 0.19 * scrollerSize;
+ assert_equals(
+ percentageScrollTimeline.currentTime, null,
+ 'Percentage-based timeline after the endScrollOffset point');
+ scroller.scrollLeft = 0.20 * scrollerSize;
+ assert_equals(
+ percentageScrollTimeline.currentTime,
+ calculateCurrentTime(
+ 0.8 * scrollerSize, 0, 0.8 * scrollerSize, scrollerSize),
+ 'Percentage-based timeline at the endScrollOffset point');
+ scroller.scrollLeft = 0.4 * scrollerSize;
+ assert_equals(
+ percentageScrollTimeline.currentTime,
+ calculateCurrentTime(
+ 0.6 * scrollerSize, 0, 0.8 * scrollerSize, scrollerSize),
+ 'Percentage-based timeline before the endScrollOffset point');
+
+ // Check the calc-based ScrollTimeline. 80% + 5px
+ scroller.scrollLeft = 0.2 * scrollerSize - 10;
+ assert_equals(
+ calcScrollTimeline.currentTime, null,
+ 'Calc-based timeline after the endScrollOffset point');
+ scroller.scrollLeft = 0.2 * scrollerSize - 5;
+ assert_equals(
+ calcScrollTimeline.currentTime,
+ calculateCurrentTime(
+ 0.8 * scrollerSize + 5, 0, 0.8 * scrollerSize + 5, scrollerSize),
+ 'Calc-based timeline at the endScrollOffset point');
+ scroller.scrollLeft = 0.2 * scrollerSize;
+ assert_equals(
+ calcScrollTimeline.currentTime,
+ calculateCurrentTime(
+ 0.8 * scrollerSize, 0, 0.8 * scrollerSize + 5, scrollerSize),
+ 'Calc-based timeline before the endScrollOffset point');
+}, 'currentTime handles endScrollOffset with direction: rtl correctly');
+</script>
diff --git a/tests/wpt/web-platform-tests/scroll-animations/current-time.html b/tests/wpt/web-platform-tests/scroll-animations/current-time.html
index 8c70594612a..0dc2a6fd4ad 100644
--- a/tests/wpt/web-platform-tests/scroll-animations/current-time.html
+++ b/tests/wpt/web-platform-tests/scroll-animations/current-time.html
@@ -10,6 +10,8 @@
<body></body>
<script>
+'use strict';
+
test(function() {
const scroller = setupScrollTimelineTest();
// Set the timeRange such that currentTime maps directly to the value
diff --git a/tests/wpt/web-platform-tests/tools/ci/check_stability.py b/tests/wpt/web-platform-tests/tools/ci/check_stability.py
index cbed7a3521d..a71e0956629 100644
--- a/tests/wpt/web-platform-tests/tools/ci/check_stability.py
+++ b/tests/wpt/web-platform-tests/tools/ci/check_stability.py
@@ -176,7 +176,7 @@ def pr():
return pr if pr != "false" else None
-def get_changed_files(manifest_path, rev, ignore_changes, skip_tests):
+def get_changed_files(manifest_path, rev, ignore_changes):
if not rev:
branch_point = testfiles.branch_point()
revish = "%s..HEAD" % branch_point
@@ -189,7 +189,7 @@ def get_changed_files(manifest_path, rev, ignore_changes, skip_tests):
logger.info("Ignoring %s changed files:\n%s" %
(len(files_ignored), "".join(" * %s\n" % item for item in files_ignored)))
- tests_changed, files_affected = testfiles.affected_testfiles(files_changed, skip_tests,
+ tests_changed, files_affected = testfiles.affected_testfiles(files_changed,
manifest_path=manifest_path)
return tests_changed, files_affected
@@ -217,7 +217,6 @@ def run(venv, wpt_args, **kwargs):
with open(kwargs["config_file"], 'r') as config_fp:
config = SafeConfigParser()
config.readfp(config_fp)
- skip_tests = config.get("file detection", "skip_tests").split()
ignore_changes = set(config.get("file detection", "ignore_changes").split())
if kwargs["output_bytes"] is not None:
@@ -250,7 +249,7 @@ def run(venv, wpt_args, **kwargs):
if not wpt_kwargs["test_list"]:
manifest_path = os.path.join(wpt_kwargs["metadata_root"], "MANIFEST.json")
tests_changed, files_affected = get_changed_files(manifest_path, kwargs["rev"],
- ignore_changes, skip_tests)
+ ignore_changes)
if not (tests_changed or files_affected):
logger.info("No tests changed")
diff --git a/tests/wpt/web-platform-tests/tools/ci/taskcluster-run.py b/tests/wpt/web-platform-tests/tools/ci/taskcluster-run.py
index fc6338ed31f..f443903786e 100755
--- a/tests/wpt/web-platform-tests/tools/ci/taskcluster-run.py
+++ b/tests/wpt/web-platform-tests/tools/ci/taskcluster-run.py
@@ -11,19 +11,6 @@ browser_specific_args = {
"firefox": ["--install-browser"]
}
-def tests_affected(commit_range):
- output = subprocess.check_output([
- "python", "./wpt", "tests-affected", "--null", commit_range
- ], stderr=open(os.devnull, "w"))
-
- tests = output.split("\0")
-
- # Account for trailing null byte
- if tests and not tests[-1]:
- tests.pop()
-
- return tests
-
def find_wptreport(args):
parser = argparse.ArgumentParser()
@@ -56,16 +43,10 @@ def main(product, commit_range, wpt_args):
if commit_range:
logger.info(
- "Identifying tests affected in range '%s'..." % commit_range
+ "Running tests affected in range '%s'..." % commit_range
)
- tests = tests_affected(commit_range)
- logger.info("Identified %s affected tests" % len(tests))
-
- if not tests:
- logger.info("Quitting because no tests were affected.")
- return
+ wpt_args += ['--affected', commit_range]
else:
- tests = []
logger.info("Running all tests")
wpt_args += [
@@ -79,7 +60,7 @@ def main(product, commit_range, wpt_args):
]
wpt_args += browser_specific_args.get(product, [])
- command = ["python", "./wpt", "run"] + wpt_args + [product] + tests
+ command = ["python", "./wpt", "run"] + wpt_args + [product]
logger.info("Executing command: %s" % " ".join(command))
diff --git a/tests/wpt/web-platform-tests/tools/manifest/download.py b/tests/wpt/web-platform-tests/tools/manifest/download.py
index 8bb3cb673de..2e505f371ed 100644
--- a/tests/wpt/web-platform-tests/tools/manifest/download.py
+++ b/tests/wpt/web-platform-tests/tools/manifest/download.py
@@ -33,46 +33,53 @@ def should_download(manifest_path, rebuild_time=timedelta(days=5)):
return False
-def git_commits(repo_root):
+def merge_pr_tags(repo_root, max_count=50):
git = Git.get_func(repo_root)
- return [item for item in git("log", "--format=%H", "-n50").split("\n") if item]
-
-
-def github_url(commits):
- try:
- resp = urlopen("https://api.github.com/repos/web-platform-tests/wpt/releases")
- except Exception:
- return None
-
- if resp.code != 200:
- return None
-
- try:
- releases = json.load(resp.fp)
- except ValueError:
- logger.warning("Response was not valid JSON")
- return None
-
- fallback = None
- for release in releases:
- for commit in commits:
- for item in release["assets"]:
- if item["name"] == "MANIFEST-%s.json.gz" % commit:
- return item["browser_download_url"]
- elif item["name"] == "MANIFEST.json.gz" and not fallback:
- fallback = item["browser_download_url"]
- if fallback:
- logger.info("Can't find a commit-specific manifest so just using the most recent one")
- return fallback
-
-
-def download_manifest(manifest_path, commits_func, url_func, force=False):
+ tags = []
+ for line in git("log", "--format=%D", "--max-count=%s" % max_count).split("\n"):
+ for ref in line.split(", "):
+ if ref.startswith("tag: merge_pr_"):
+ tags.append(ref[5:])
+ return tags
+
+
+def github_url(tags):
+ for tag in tags:
+ url = "https://api.github.com/repos/web-platform-tests/wpt/releases/tags/%s" % tag
+ try:
+ resp = urlopen(url)
+ except Exception:
+ logger.warning("Fetching %s failed" % url)
+ continue
+
+ if resp.code != 200:
+ logger.warning("Fetching %s failed; got HTTP status %d" % (url, resp.code))
+ continue
+
+ try:
+ release = json.load(resp.fp)
+ except ValueError:
+ logger.warning("Response was not valid JSON")
+ return None
+
+ for item in release["assets"]:
+ # Accept both ways of naming the manfest asset, even though
+ # there's no longer a reason to include the commit sha.
+ if item["name"].startswith("MANIFEST-") and item["name"].endswith(".json.gz"):
+ return item["browser_download_url"]
+ elif item["name"] == "MANIFEST.json.gz":
+ return item["browser_download_url"]
+
+ return None
+
+
+def download_manifest(manifest_path, tags_func, url_func, force=False):
if not force and not should_download(manifest_path):
return False
- commits = commits_func()
+ tags = tags_func()
- url = url_func(commits)
+ url = url_func(tags)
if not url:
logger.warning("No generated manifest found")
return False
@@ -120,7 +127,7 @@ def create_parser():
def download_from_github(path, tests_root, force=False):
- return download_manifest(path, lambda: git_commits(tests_root), github_url,
+ return download_manifest(path, lambda: merge_pr_tags(tests_root), github_url,
force=force)
diff --git a/tests/wpt/web-platform-tests/tools/third_party/hyper/hyper/http20/connection.py b/tests/wpt/web-platform-tests/tools/third_party/hyper/hyper/http20/connection.py
index 3c3927671f5..12076cdaf14 100644
--- a/tests/wpt/web-platform-tests/tools/third_party/hyper/hyper/http20/connection.py
+++ b/tests/wpt/web-platform-tests/tools/third_party/hyper/hyper/http20/connection.py
@@ -5,9 +5,9 @@ hyper/http20/connection
Objects that build hyper's connection-level HTTP/2 abstraction.
"""
-from ..h2 import connection as h2Connection
-from ..h2 import events as h2Events
-from ..h2 import settings as h2Settings
+import h2.connection
+import h2.events
+import h2.settings
from ..compat import ssl
from ..tls import wrap_socket, H2_NPN_PROTOCOLS, H2C_PROTOCOL
@@ -185,7 +185,7 @@ class HTTP20Connection(object):
users should be strongly discouraged from messing about with connection
objects themselves.
"""
- self._conn = _LockedObject(h2Connection.H2Connection())
+ self._conn = _LockedObject(h2.connection.H2Connection())
# Streams are stored in a dictionary keyed off their stream IDs. We
# also save the most recent one for easy access without having to walk
@@ -387,7 +387,7 @@ class HTTP20Connection(object):
with self._conn as conn:
conn.initiate_upgrade_connection()
conn.update_settings(
- {h2Settings.ENABLE_PUSH: int(self._enable_push)}
+ {h2.settings.SettingCodes.ENABLE_PUSH: int(self._enable_push)}
)
self._send_outstanding_data()
@@ -408,7 +408,7 @@ class HTTP20Connection(object):
with self._conn as conn:
conn.initiate_connection()
conn.update_settings(
- {h2Settings.ENABLE_PUSH: int(self._enable_push)}
+ {h2.settings.SettingCodes.ENABLE_PUSH: int(self._enable_push)}
)
self._send_outstanding_data()
@@ -673,10 +673,10 @@ class HTTP20Connection(object):
self.recent_recv_streams |= stream_ids
for event in events:
- if isinstance(event, h2Events.DataReceived):
+ if isinstance(event, h2.events.DataReceived):
self._adjust_receive_window(event.flow_controlled_length)
self.streams[event.stream_id].receive_data(event)
- elif isinstance(event, h2Events.PushedStreamReceived):
+ elif isinstance(event, h2.events.PushedStreamReceived):
if self._enable_push:
self._new_stream(event.pushed_stream_id, local_closed=True)
self.streams[event.parent_stream_id].receive_push(event)
@@ -686,17 +686,17 @@ class HTTP20Connection(object):
# client action undefined when they do it anyway. So we
# just refuse the stream and go about our business.
self._send_rst_frame(event.pushed_stream_id, 7)
- elif isinstance(event, h2Events.ResponseReceived):
+ elif isinstance(event, h2.events.ResponseReceived):
self.streams[event.stream_id].receive_response(event)
- elif isinstance(event, h2Events.TrailersReceived):
+ elif isinstance(event, h2.events.TrailersReceived):
self.streams[event.stream_id].receive_trailers(event)
- elif isinstance(event, h2Events.StreamEnded):
+ elif isinstance(event, h2.events.StreamEnded):
self.streams[event.stream_id].receive_end_stream(event)
- elif isinstance(event, h2Events.StreamReset):
+ elif isinstance(event, h2.events.StreamReset):
if event.stream_id not in self.reset_streams:
self.reset_streams.add(event.stream_id)
self.streams[event.stream_id].receive_reset(event)
- elif isinstance(event, h2Events.ConnectionTerminated):
+ elif isinstance(event, h2.events.ConnectionTerminated):
# If we get GoAway with error code zero, we are doing a
# graceful shutdown and all is well. Otherwise, throw an
# exception.
diff --git a/tests/wpt/web-platform-tests/tools/wpt/run.py b/tests/wpt/web-platform-tests/tools/wpt/run.py
index b07ba9e193b..ea606950441 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/run.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/run.py
@@ -8,7 +8,7 @@ from six.moves import input
wpt_root = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir))
sys.path.insert(0, os.path.abspath(os.path.join(wpt_root, "tools")))
-from . import browser, install, utils, virtualenv
+from . import browser, install, testfiles, utils, virtualenv
from ..serve import serve
logger = None
@@ -45,6 +45,8 @@ def create_parser():
parser = argparse.ArgumentParser(add_help=False)
parser.add_argument("product", action="store",
help="Browser to run tests in")
+ parser.add_argument("--affected", action="store", default=None,
+ help="Run affected tests since revish")
parser.add_argument("--yes", "-y", dest="prompt", action="store_false", default=True,
help="Don't prompt before installing components")
parser.add_argument("--install-browser", action="store_true",
@@ -63,9 +65,12 @@ def create_parser():
return parser
-def exit(msg):
- logger.error(msg)
- sys.exit(1)
+def exit(msg=None):
+ if msg:
+ logger.error(msg)
+ sys.exit(1)
+ else:
+ sys.exit(0)
def args_general(kwargs):
@@ -489,6 +494,23 @@ def setup_wptrunner(venv, prompt=True, install_browser=False, **kwargs):
setup_cls = product_setup[kwargs["product"]](venv, prompt, sub_product)
setup_cls.install_requirements()
+ affected_revish = kwargs.pop("affected", None)
+ if affected_revish is not None:
+ files_changed, _ = testfiles.files_changed(
+ affected_revish, include_uncommitted=True, include_new=True)
+ # TODO: Perhaps use wptrunner.testloader.ManifestLoader here
+ # and remove the manifest-related code from testfiles.
+ # https://github.com/web-platform-tests/wpt/issues/14421
+ tests_changed, tests_affected = testfiles.affected_testfiles(
+ files_changed, manifest_path=kwargs.get("manifest_path"), manifest_update=kwargs["manifest_update"])
+ test_list = tests_changed | tests_affected
+ logger.info("Identified %s affected tests" % len(test_list))
+ if not test_list and not kwargs["test_list"]:
+ logger.info("Quitting because no tests were affected.")
+ exit()
+ test_list = [os.path.relpath(item, wpt_root) for item in test_list]
+ kwargs["test_list"] += test_list
+
if install_browser and not kwargs["channel"]:
logger.info("--install-browser is given but --channel is not set, default to nightly channel")
kwargs["channel"] = "nightly"
diff --git a/tests/wpt/web-platform-tests/tools/wpt/testfiles.py b/tests/wpt/web-platform-tests/tools/wpt/testfiles.py
index bac32cf6ff2..c25ca2d43e2 100644
--- a/tests/wpt/web-platform-tests/tools/wpt/testfiles.py
+++ b/tests/wpt/web-platform-tests/tools/wpt/testfiles.py
@@ -162,9 +162,12 @@ def exclude_ignored(files, ignore_rules):
def files_changed(revish, ignore_rules=None, include_uncommitted=False, include_new=False):
- """Get and return files changed since current branch diverged from master,
- excluding those that are located within any path matched by
- `ignore_rules`."""
+ """Find files changed in certain revisions.
+
+ The function passes `revish` directly to `git diff`, so `revish` can have a
+ variety of forms; see `git diff --help` for details. Files in the diff that
+ are matched by `ignore_rules` are excluded.
+ """
files = repo_files_changed(revish,
include_uncommitted=include_uncommitted,
include_new=include_new)
@@ -183,7 +186,7 @@ def _in_repo_root(full_path):
def _init_manifest_cache():
c = {}
- def load(manifest_path=None):
+ def load(manifest_path=None, manifest_update=True):
if manifest_path is None:
manifest_path = os.path.join(wpt_root, "MANIFEST.json")
if c.get(manifest_path):
@@ -191,7 +194,7 @@ def _init_manifest_cache():
# cache at most one path:manifest
c.clear()
wpt_manifest = manifest.load_and_update(wpt_root, manifest_path, "/",
- update=True)
+ update=manifest_update)
c[manifest_path] = wpt_manifest
return c[manifest_path]
return load
@@ -200,14 +203,17 @@ def _init_manifest_cache():
load_manifest = _init_manifest_cache()
-def affected_testfiles(files_changed, skip_tests, manifest_path=None):
+def affected_testfiles(files_changed, skip_dirs=None,
+ manifest_path=None, manifest_update=True):
"""Determine and return list of test files that reference changed files."""
+ if skip_dirs is None:
+ skip_dirs = set(["conformance-checkers", "docs", "tools"])
affected_testfiles = set()
# Exclude files that are in the repo root, because
# they are not part of any test.
files_changed = [f for f in files_changed if not _in_repo_root(f)]
nontests_changed = set(files_changed)
- wpt_manifest = load_manifest(manifest_path)
+ wpt_manifest = load_manifest(manifest_path, manifest_update)
test_types = ["testharness", "reftest", "wdspec"]
support_files = {os.path.join(wpt_root, path)
@@ -232,7 +238,7 @@ def affected_testfiles(files_changed, skip_tests, manifest_path=None):
rel_path = os.path.relpath(full_path, wpt_root)
path_components = rel_path.split(os.sep)
top_level_subdir = path_components[0]
- if top_level_subdir in skip_tests:
+ if top_level_subdir in skip_dirs:
continue
repo_path = "/" + os.path.relpath(full_path, wpt_root).replace(os.path.sep, "/")
if repo_path in rewrites:
@@ -271,7 +277,7 @@ def affected_testfiles(files_changed, skip_tests, manifest_path=None):
# Walk top_level_subdir looking for test files containing either the
# relative filepath or absolute filepath to the changed files.
if root == wpt_root:
- for dir_name in skip_tests:
+ for dir_name in skip_dirs:
dirs.remove(dir_name)
for fname in fnames:
test_full_path = os.path.join(root, fname)
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
index 40e67d22c7b..ce103a73bea 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
@@ -156,7 +156,7 @@ class WebDriverActionSequenceProtocolPart(ActionSequenceProtocolPart):
self.webdriver = self.parent.webdriver
def send_actions(self, actions):
- self.webdriver.actions.perform(actions)
+ self.webdriver.actions.perform(actions['actions'])
class WebDriverTestDriverProtocolPart(TestDriverProtocolPart):
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/base.py b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/base.py
index b08f5eabe46..c114e5e905c 100644
--- a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/base.py
+++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/base.py
@@ -106,7 +106,6 @@ class TestUsingH2Server:
self.conn.connect()
def teardown_method(self, test_method):
- self.conn.close()
self.server.stop()
diff --git a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_response.py b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_response.py
index 4e1e053d019..20fb3f776a9 100644
--- a/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_response.py
+++ b/tests/wpt/web-platform-tests/tools/wptserve/tests/functional/test_response.py
@@ -9,7 +9,7 @@ from six import create_bound_method
wptserve = pytest.importorskip("wptserve")
from .base import TestUsingServer, TestUsingH2Server, doc_root
-from hyper.h2.exceptions import ProtocolError
+from h2.exceptions import ProtocolError
def send_body_as_header(self):
if self._response.add_required_headers:
diff --git a/tests/wpt/web-platform-tests/user-timing/resources/webperftestharness.js b/tests/wpt/web-platform-tests/user-timing/resources/webperftestharness.js
index 79c218f336f..4a8e2de69fc 100644
--- a/tests/wpt/web-platform-tests/user-timing/resources/webperftestharness.js
+++ b/tests/wpt/web-platform-tests/user-timing/resources/webperftestharness.js
@@ -6,6 +6,9 @@ policies and contribution forms [3].
[1] http://www.w3.org/Consortium/Legal/2008/04-testsuite-license
[2] http://www.w3.org/Consortium/Legal/2008/03-bsd-license
[3] http://www.w3.org/2004/10/27-testcases
+
+author: W3C http://www.w3.org/
+help: http://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute
*/
//
@@ -55,12 +58,12 @@ function test_namespace(child_name, skip_root)
{
if (skip_root === undefined) {
var msg = 'window.performance is defined';
- wp_test(function () { assert_true(performanceNamespace !== undefined, msg); }, msg,{author:"W3C http://www.w3.org/",help:"http://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute",assert:"The window.performance attribute provides a hosting area for performance related attributes. "});
+ wp_test(function () { assert_true(performanceNamespace !== undefined, msg); }, msg);
}
if (child_name !== undefined) {
var msg2 = 'window.performance.' + child_name + ' is defined';
- wp_test(function() { assert_true(performanceNamespace[child_name] !== undefined, msg2); }, msg2,{author:"W3C http://www.w3.org/",help:"http://www.w3.org/TR/navigation-timing/#sec-window.performance-attribute",assert:"The window.performance attribute provides a hosting area for performance related attributes. "});
+ wp_test(function() { assert_true(performanceNamespace[child_name] !== undefined, msg2); }, msg2);
}
}
diff --git a/tests/wpt/web-platform-tests/webrtc/protocol/msid-parse.html b/tests/wpt/web-platform-tests/webrtc/protocol/msid-parse.html
new file mode 100644
index 00000000000..e0d3eb76a3a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webrtc/protocol/msid-parse.html
@@ -0,0 +1,69 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>RTCPeerconnection MSID parsing</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../RTCPeerConnection-helper.js"></script>
+<script>
+'use strict';
+const preamble = `v=0
+o=- 0 3 IN IP4 127.0.0.1
+s=-
+t=0 0
+a=fingerprint:sha-256 A7:24:72:CA:6E:02:55:39:BA:66:DF:6E:CC:4C:D8:B0:1A:BF:1A:56:65:7D:F4:03:AD:7E:77:43:2A:29:EC:93
+a=ice-ufrag:6HHHdzzeIhkE0CKj
+a=ice-pwd:XYDGVpfvklQIEnZ6YnyLsAew
+m=video 1 RTP/SAVPF 100
+a=rtcp-mux
+a=sendonly
+a=mid:video
+a=rtpmap:100 VP8/30
+`;
+
+
+promise_test(async t => {
+ const pc = new RTCPeerConnection();
+ t.add_cleanup(() => pc.close());
+ const ontrackPromise = addEventListenerPromise(t, pc, 'track');
+ await pc.setRemoteDescription({type: 'offer', sdp: preamble});
+ const trackevent = await ontrackPromise;
+ assert_equals(pc.getReceivers().length, 1);
+ assert_equals(trackevent.streams.length, 1, 'Stream count');
+}, 'Description with no msid produces a track with a stream');
+
+promise_test(async t => {
+ const pc = new RTCPeerConnection();
+ t.add_cleanup(() => pc.close());
+ const ontrackPromise = addEventListenerPromise(t, pc, 'track');
+ await pc.setRemoteDescription({type: 'offer',
+ sdp: preamble + 'a=msid:- foobar\n'});
+ const trackevent = await ontrackPromise;
+ assert_equals(pc.getReceivers().length, 1);
+ assert_equals(trackevent.streams.length, 0);
+}, 'Description with msid:- appid produces a track with no stream');
+
+promise_test(async t => {
+ const pc = new RTCPeerConnection();
+ t.add_cleanup(() => pc.close());
+ const ontrackPromise = addEventListenerPromise(t, pc, 'track');
+ await pc.setRemoteDescription({type: 'offer',
+ sdp: preamble + 'a=msid:foo bar\n'});
+ const trackevent = await ontrackPromise;
+ assert_equals(pc.getReceivers().length, 1);
+ assert_equals(trackevent.streams.length, 1);
+ assert_equals(trackevent.streams[0].id, 'foo');
+}, 'Description with msid:foo bar produces a stream with id foo');
+
+promise_test(async t => {
+ const pc = new RTCPeerConnection();
+ t.add_cleanup(() => pc.close());
+ const ontrackPromise = addEventListenerPromise(t, pc, 'track');
+ await pc.setRemoteDescription({type: 'offer',
+ sdp: preamble + 'a=msid:foo bar\n'
+ + 'a=msid:baz bar\n'});
+ const trackevent = await ontrackPromise;
+ assert_equals(pc.getReceivers().length, 1);
+ assert_equals(trackevent.streams.length, 2);
+}, 'Description with two msid produces two streams');
+
+</script>