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