diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2020-01-22 09:57:43 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-22 09:57:43 -0500 |
commit | 24674687acaaca3a796f8cc61bc98c6e7d0097fb (patch) | |
tree | 2cd4d1cc3e6f06341e0927fc511a7ffab47d6491 | |
parent | ee3fb92e53d08c34a41b748aa4e49ae336eaf611 (diff) | |
parent | c4a68ec65c38f5905b83b3d02be2389c6a0074ec (diff) | |
download | servo-24674687acaaca3a796f8cc61bc98c6e7d0097fb.tar.gz servo-24674687acaaca3a796f8cc61bc98c6e7d0097fb.zip |
Auto merge of #25573 - servo-wpt-sync:wpt_update_22-01-2020, r=jdm
Sync WPT with upstream (22-01-2020)
Automated downstream sync of changes from upstream as of 22-01-2020.
[no-wpt-sync]
r? @servo-wpt-sync
189 files changed, 2589 insertions, 663 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini index 4c1aa18e695..abf0d50aff3 100644 --- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini @@ -2,9 +2,6 @@ [Revoke blob URL after creating Request, will fetch] expected: FAIL - [Revoke blob URL after calling fetch, fetch should succeed] - expected: FAIL - [url-with-fetch.any.html] [Revoke blob URL after creating Request, will fetch] diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index d3622831fda..4ff61c1c047 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -37,6 +37,12 @@ {} ] ], + "css/css-flexbox/zero-content-size-with-scrollbar-crash.html": [ + [ + "css/css-flexbox/zero-content-size-with-scrollbar-crash.html", + {} + ] + ], "css/css-grid/subgrid/contain-strict-nested-subgrid-crash.html": [ [ "css/css-grid/subgrid/contain-strict-nested-subgrid-crash.html", @@ -169,6 +175,12 @@ {} ] ], + "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-crash.html": [ + [ + "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-crash.html", + {} + ] + ], "html/semantics/embedded-content/the-object-element/block-object-with-ruby-crash.html": [ [ "html/semantics/embedded-content/the-object-element/block-object-with-ruby-crash.html", @@ -106181,6 +106193,54 @@ {} ] ], + "css/compositing/root-element-background-transparency.html": [ + [ + "css/compositing/root-element-background-transparency.html", + [ + [ + "/css/compositing/root-element-background-transparency-ref.html", + "==" + ] + ], + {} + ] + ], + "css/compositing/root-element-blend-mode.html": [ + [ + "css/compositing/root-element-blend-mode.html", + [ + [ + "/css/compositing/root-element-blend-mode-ref.html", + "==" + ] + ], + {} + ] + ], + "css/compositing/root-element-filter.html": [ + [ + "css/compositing/root-element-filter.html", + [ + [ + "/css/compositing/root-element-filter-ref.html", + "==" + ] + ], + {} + ] + ], + "css/compositing/root-element-opacity.html": [ + [ + "css/compositing/root-element-opacity.html", + [ + [ + "/css/compositing/root-element-opacity-ref.html", + "==" + ] + ], + {} + ] + ], "css/compositing/svg/mix-blend-mode-in-svg-image.html": [ [ "css/compositing/svg/mix-blend-mode-in-svg-image.html", @@ -148799,6 +148859,30 @@ {} ] ], + "css/css-text-decor/text-underline-position-001a.html": [ + [ + "css/css-text-decor/text-underline-position-001a.html", + [ + [ + "/css/css-text-decor/reference/text-underline-position-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-text-decor/text-underline-position-001b.html": [ + [ + "css/css-text-decor/text-underline-position-001b.html", + [ + [ + "/css/css-text-decor/reference/text-underline-position-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-text/boundary-shaping/boundary-shaping-001.html": [ [ "css/css-text/boundary-shaping/boundary-shaping-001.html", @@ -166643,6 +166727,30 @@ {} ] ], + "css/css-transforms/transform-translate-background-001.html": [ + [ + "css/css-transforms/transform-translate-background-001.html", + [ + [ + "/css/css-transforms/transform-translate-background-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-transforms/transform-translate-background-002.html": [ + [ + "css/css-transforms/transform-translate-background-002.html", + [ + [ + "/css/css-transforms/transform-translate-background-001-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-transforms/transform-translatex-001.html": [ [ "css/css-transforms/transform-translatex-001.html", @@ -206997,6 +207105,18 @@ {} ] ], + "html/rendering/replaced-elements/embedded-content/object-fallback-text-decoration.html": [ + [ + "html/rendering/replaced-elements/embedded-content/object-fallback-text-decoration.html", + [ + [ + "/html/rendering/replaced-elements/embedded-content/object-fallback-text-decoration-ref.html", + "==" + ] + ], + {} + ] + ], "html/rendering/replaced-elements/embedded-content/video-controls-vertical-writing-mode.html": [ [ "html/rendering/replaced-elements/embedded-content/video-controls-vertical-writing-mode.html", @@ -207153,6 +207273,18 @@ {} ] ], + "html/rendering/the-details-element/summary-text-decoration.html": [ + [ + "html/rendering/the-details-element/summary-text-decoration.html", + [ + [ + "/html/rendering/the-details-element/summary-text-decoration-ref.html", + "==" + ] + ], + {} + ] + ], "html/rendering/widgets/button-layout/anonymous-button-content-box.html": [ [ "html/rendering/widgets/button-layout/anonymous-button-content-box.html", @@ -210941,6 +211073,18 @@ {} ] ], + "svg/extensibility/foreignObject/foreign-object-scale-scroll.html": [ + [ + "svg/extensibility/foreignObject/foreign-object-scale-scroll.html", + [ + [ + "/svg/extensibility/foreignObject/foreign-object-scale-scroll-ref.html", + "==" + ] + ], + {} + ] + ], "svg/extensibility/foreignObject/foreign-object-size.html": [ [ "svg/extensibility/foreignObject/foreign-object-size.html", @@ -247632,6 +247776,18 @@ "css/compositing/mix-blend-mode/support/yellow_square.svg": [ [] ], + "css/compositing/root-element-background-transparency-ref.html": [ + [] + ], + "css/compositing/root-element-blend-mode-ref.html": [ + [] + ], + "css/compositing/root-element-filter-ref.html": [ + [] + ], + "css/compositing/root-element-opacity-ref.html": [ + [] + ], "css/compositing/svg/reference/mix-blend-mode-svg-rectangle-ref.html": [ [] ], @@ -259605,6 +259761,9 @@ "css/css-text-decor/reference/text-underline-offset-vertical-002-ref.html": [ [] ], + "css/css-text-decor/reference/text-underline-position-001-ref.html": [ + [] + ], "css/css-text/META.yml": [ [] ], @@ -262344,6 +262503,9 @@ "css/css-transforms/transform-transformed-tr-percent-height-child-ref.html": [ [] ], + "css/css-transforms/transform-translate-background-001-ref.html": [ + [] + ], "css/css-transforms/transform-translate-ref.html": [ [] ], @@ -273819,19 +273981,28 @@ "html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html.headers": [ [] ], - "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups.https.html.headers": [ + "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html.headers": [ [] ], - "html/cross-origin-opener-policy/iframe-popup-same-origin.https.html.headers": [ + "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html.headers": [ [] ], - "html/cross-origin-opener-policy/iframe-popup-unsafe-none.https.html.headers": [ + "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html.headers": [ [] ], - "html/cross-origin-opener-policy/no-https.html.headers": [ + "html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html.headers": [ [] ], - "html/cross-origin-opener-policy/popup-meta-http-equiv.https.html.headers": [ + "html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html.headers": [ + [] + ], + "html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html.headers": [ + [] + ], + "html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html.headers": [ + [] + ], + "html/cross-origin-opener-policy/no-https.html.headers": [ [] ], "html/cross-origin-opener-policy/popup-redirect-cache.https.html.headers": [ @@ -277272,6 +277443,9 @@ "html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_without_context_ref.html": [ [] ], + "html/rendering/replaced-elements/embedded-content/object-fallback-text-decoration-ref.html": [ + [] + ], "html/rendering/replaced-elements/embedded-content/video-controls-vertical-writing-mode-ref.html": [ [] ], @@ -277317,6 +277491,9 @@ "html/rendering/the-details-element/summary-display-list-item-ref.html": [ [] ], + "html/rendering/the-details-element/summary-text-decoration-ref.html": [ + [] + ], "html/rendering/widgets/button-layout/anonymous-button-content-box-ref.html": [ [] ], @@ -279903,6 +280080,9 @@ "infrastructure/metadata/infrastructure/reftest/legacy/reftest_fuzzy_chain_ini.html.ini": [ [] ], + "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_1.html.ini": [ + [] + ], "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_full.html.ini": [ [] ], @@ -284850,6 +285030,9 @@ "referrer-policy/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html.headers": [ [] ], + "referrer-policy/generic/inheritance/resources/make-html-script.js": [ + [] + ], "referrer-policy/generic/multiple-headers-and-values.html.headers": [ [] ], @@ -287844,6 +288027,9 @@ "svg/extensibility/foreignObject/foreign-object-paints-before-rect-ref.html": [ [] ], + "svg/extensibility/foreignObject/foreign-object-scale-scroll-ref.html": [ + [] + ], "svg/extensibility/foreignObject/foreign-object-size-ref.html": [ [] ], @@ -292908,6 +293094,12 @@ "trusted-types/empty-default-policy.tentative.html.headers": [ [] ], + "trusted-types/no-require-trusted-types-for-report-only.tentative.html.headers": [ + [] + ], + "trusted-types/require-trusted-types-for-report-only.tentative.html.headers": [ + [] + ], "trusted-types/support/WorkerGlobalScope-importScripts.https.js": [ [] ], @@ -345434,9 +345626,9 @@ {} ] ], - "element-timing/multiple-redirects-TAO.sub.html": [ + "element-timing/multiple-redirects-TAO.html": [ [ - "element-timing/multiple-redirects-TAO.sub.html", + "element-timing/multiple-redirects-TAO.html", {} ] ], @@ -362600,20 +362792,38 @@ ], "html/cross-origin-opener-policy/coep-navigate-popup.https.html": [ [ - "html/cross-origin-opener-policy/coep-navigate-popup.https.html", - {} + "html/cross-origin-opener-policy/coep-navigate-popup.https.html?0-1", + { + "timeout": "long" + } + ], + [ + "html/cross-origin-opener-policy/coep-navigate-popup.https.html?2-3", + { + "timeout": "long" + } + ], + [ + "html/cross-origin-opener-policy/coep-navigate-popup.https.html?4-last", + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/coep-redirect.https.html": [ [ "html/cross-origin-opener-policy/coep-redirect.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/coep.https.html": [ [ "html/cross-origin-opener-policy/coep.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/coop-navigated-history-popup.https.html": [ @@ -362639,79 +362849,137 @@ "html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https.html": [ [ "html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html": [ [ "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html": [ [ "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html": [ [ "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html": [ [ "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html": [ [ "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html": [ [ "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html": [ [ "html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html": [ [ "html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html": [ [ "html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html", - {} + { + "timeout": "long" + } ] ], - "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups.https.html": [ + "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html": [ [ - "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups.https.html", - {} + "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html", + { + "timeout": "long" + } ] ], - "html/cross-origin-opener-policy/iframe-popup-same-origin.https.html": [ + "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html": [ [ - "html/cross-origin-opener-policy/iframe-popup-same-origin.https.html", - {} + "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html", + { + "timeout": "long" + } ] ], - "html/cross-origin-opener-policy/iframe-popup-unsafe-none.https.html": [ + "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html": [ [ - "html/cross-origin-opener-policy/iframe-popup-unsafe-none.https.html", - {} + "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html", + { + "timeout": "long" + } + ] + ], + "html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html": [ + [ + "html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html", + { + "timeout": "long" + } + ] + ], + "html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html": [ + [ + "html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html", + { + "timeout": "long" + } + ] + ], + "html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html": [ + [ + "html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html", + { + "timeout": "long" + } + ] + ], + "html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html": [ + [ + "html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html", + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/no-https.html": [ @@ -362739,19 +363007,25 @@ "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html": [ [ "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html": [ [ "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html": [ [ "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/popup-same-origin-non-initial-about-blank.https.html": [ @@ -362763,55 +363037,73 @@ "html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html": [ [ "html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html": [ [ "html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html": [ [ "html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html": [ [ "html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html": [ [ "html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html": [ [ "html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html": [ [ "html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html": [ [ "html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html", - {} + { + "timeout": "long" + } ] ], "html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html": [ [ "html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html", - {} + { + "timeout": "long" + } ] ], "html/dom/documents/dom-tree-accessors/Document.body.html": [ @@ -377184,6 +377476,12 @@ {} ] ], + "largest-contentful-paint/multiple-redirects-TAO.html": [ + [ + "largest-contentful-paint/multiple-redirects-TAO.html", + {} + ] + ], "largest-contentful-paint/observe-after-untrusted-scroll.html": [ [ "largest-contentful-paint/observe-after-untrusted-scroll.html", @@ -377807,6 +378105,12 @@ {} ] ], + "mathml/presentation-markup/mrow/spacing.html": [ + [ + "mathml/presentation-markup/mrow/spacing.html", + {} + ] + ], "mathml/presentation-markup/operators/embellished-operator-001.html": [ [ "mathml/presentation-markup/operators/embellished-operator-001.html", @@ -382270,8 +382574,13 @@ [ "script", "script-tests/FileSystemBaseHandle-postMessage.js" + ], + [ + "timeout", + "long" ] - ] + ], + "timeout": "long" } ] ], @@ -395034,7 +395343,8 @@ [ "portals/portals-focus.sub.html", { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], @@ -409850,6 +410160,24 @@ {} ] ], + "referrer-policy/generic/inheritance/iframe-inheritance-document-write.html": [ + [ + "referrer-policy/generic/inheritance/iframe-inheritance-document-write.html", + {} + ] + ], + "referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html": [ + [ + "referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html", + {} + ] + ], + "referrer-policy/generic/inheritance/iframe-inheritance-javascript.html": [ + [ + "referrer-policy/generic/inheritance/iframe-inheritance-javascript.html", + {} + ] + ], "referrer-policy/generic/inheritance/iframe-inheritance-srcdoc-child.html": [ [ "referrer-policy/generic/inheritance/iframe-inheritance-srcdoc-child.html", @@ -410652,7 +410980,9 @@ "resource-timing/resource_timing_buffer_full_eventually.html": [ [ "resource-timing/resource_timing_buffer_full_eventually.html", - {} + { + "timeout": "long" + } ] ], "resource-timing/resource_timing_buffer_full_when_shrink_buffer_size.html": [ @@ -422691,6 +423021,30 @@ } ] ], + "trusted-types/no-require-trusted-types-for-report-only.tentative.html": [ + [ + "trusted-types/no-require-trusted-types-for-report-only.tentative.html", + {} + ] + ], + "trusted-types/no-require-trusted-types-for.tentative.html": [ + [ + "trusted-types/no-require-trusted-types-for.tentative.html", + {} + ] + ], + "trusted-types/require-trusted-types-for-report-only.tentative.html": [ + [ + "trusted-types/require-trusted-types-for-report-only.tentative.html", + {} + ] + ], + "trusted-types/require-trusted-types-for.tentative.html": [ + [ + "trusted-types/require-trusted-types-for.tentative.html", + {} + ] + ], "trusted-types/trusted-types-createHTMLDocument.tentative.html": [ [ "trusted-types/trusted-types-createHTMLDocument.tentative.html", @@ -441840,6 +442194,52 @@ {} ] ], + "workers/modules/shared-worker-import-blob-url.any.js": [ + [ + "workers/modules/shared-worker-import-blob-url.any.html", + { + "script_metadata": [ + [ + "global", + "!worker" + ], + [ + "script", + "/workers/modules/resources/import-test-cases.js" + ] + ] + } + ] + ], + "workers/modules/shared-worker-import-failure.html": [ + [ + "workers/modules/shared-worker-import-failure.html", + {} + ] + ], + "workers/modules/shared-worker-import.any.js": [ + [ + "workers/modules/shared-worker-import.any.html", + { + "script_metadata": [ + [ + "global", + "!worker" + ], + [ + "script", + "/workers/modules/resources/import-test-cases.js" + ] + ] + } + ] + ], + "workers/modules/shared-worker-options-type.html": [ + [ + "workers/modules/shared-worker-options-type.html", + {} + ] + ], "workers/name-property.html": [ [ "workers/name-property.html", @@ -465914,7 +466314,7 @@ }, "paths": { ".azure-pipelines.yml": [ - "03e5a51cc8f77b1a1045027c9a947da02a13c581", + "7e1732fd45b186682e93932068f8840ba00d9caf", "support" ], ".codecov.yml": [ @@ -467190,7 +467590,7 @@ "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html": [ - "76fc17a882ff492b29716fcc0ea4230676abc361", + "834c1952c5ad86004873c652de0a79993ed2a57e", "testharness" ], "2dcontext/drawing-text-to-the-canvas/2d.text.measure.advances.html": [ @@ -470074,7 +470474,7 @@ "support" ], "2dcontext/tools/tests2dtext.yaml": [ - "6d5f8f660fa3fbc8e2b8b8710070241ccde392d0", + "e1423284bd8622b31da6e4ec2a3caaa5ce71dce2", "support" ], "2dcontext/transformations/2d.transformation.getTransform.html": [ @@ -472326,7 +472726,7 @@ "support" ], "README.md": [ - "3b580da869015b968668bec6a26f3137f4a020a0", + "482da428db4ab90a006754ccc40209e9f2f13b7d", "support" ], "WebCryptoAPI/META.yml": [ @@ -560969,6 +561369,38 @@ "c6393343dff89a6e5a5a5087675145cb1ec1de83", "testharness" ], + "css/compositing/root-element-background-transparency-ref.html": [ + "4671d44c1c3f3e2ff16149cbaabebb0433aef3e5", + "support" + ], + "css/compositing/root-element-background-transparency.html": [ + "910eb08e8d3004da7418f8f00f38d022841262f2", + "reftest" + ], + "css/compositing/root-element-blend-mode-ref.html": [ + "14c99f708564ff97c5affe66c4a634eded0a7ff8", + "support" + ], + "css/compositing/root-element-blend-mode.html": [ + "2c97d8b5e8ca9139bb83aca0ca90494d6fbbb255", + "reftest" + ], + "css/compositing/root-element-filter-ref.html": [ + "27cfb11b8f480cdd3cc94c5467bf6b3dc9b831db", + "support" + ], + "css/compositing/root-element-filter.html": [ + "62bde9dfd991d01314569ae694b495adc489a21e", + "reftest" + ], + "css/compositing/root-element-opacity-ref.html": [ + "be2348ab967f2ff4c161f8bbb9999a0bd8523e82", + "support" + ], + "css/compositing/root-element-opacity.html": [ + "4885d805ad3f3b59d60ccbf3047e8694d7be0f18", + "reftest" + ], "css/compositing/svg/mix-blend-mode-in-svg-image.html": [ "658e0275d70b357b210ae70243a2f58b9752910c", "reftest" @@ -574657,6 +575089,10 @@ "bec931a4e331192704701d261807e9b0ce7d3c6b", "reftest" ], + "css/css-flexbox/zero-content-size-with-scrollbar-crash.html": [ + "c38659a9d8cff6d0003793896dc83cc78e7a22c4", + "crashtest" + ], "css/css-font-loading/META.yml": [ "3ac9b655b0606783334ff91f9fba852df8efdbc1", "support" @@ -601297,6 +601733,10 @@ "438fb1432d25d184082f4d8c3033f8c6c2bce6f8", "support" ], + "css/css-text-decor/reference/text-underline-position-001-ref.html": [ + "aae441ac4e02ddb6e44bfa9004ff33c376cb6548", + "support" + ], "css/css-text-decor/text-decoration-001-manual.html": [ "9b620132697dfbf68f0d10575afaf7d902e649da", "manual" @@ -601869,6 +602309,14 @@ "71b5a677926544a796727cd21f2d60bfa0fdbb8f", "reftest" ], + "css/css-text-decor/text-underline-position-001a.html": [ + "f79fc9d39fe1a5e5ff21a4c7d16d2becc00a3e96", + "reftest" + ], + "css/css-text-decor/text-underline-position-001b.html": [ + "f8c6ff9aadace4b90490089901801bc3c4f7cc14", + "reftest" + ], "css/css-text-decor/text-underline-position-019-manual.html": [ "0308fbc8c9ed4b54865a5b382741c148c6853981", "manual" @@ -612973,6 +613421,18 @@ "22c7008a672378beee17ae9f6f7528f78af58099", "reftest" ], + "css/css-transforms/transform-translate-background-001-ref.html": [ + "f0b53d492a008c3d79200f725be7c4f527616b0c", + "support" + ], + "css/css-transforms/transform-translate-background-001.html": [ + "72011e37bce073ce79bc65ad75dcaf4f55cce55a", + "reftest" + ], + "css/css-transforms/transform-translate-background-002.html": [ + "b1be52774007c1f7886c18fd18f2acea279ef554", + "reftest" + ], "css/css-transforms/transform-translate-ref.html": [ "1a781a06145aa3f6c192976b36dbb47672666ae7", "support" @@ -642262,7 +642722,7 @@ "support" ], "docs/index.md": [ - "d1a527e1a754bdb846c11846e90b23c6e7771a92", + "419c99aca9d78c259235dbaa9e8ab662930ffb81", "support" ], "docs/intro-video-transcript.md": [ @@ -642446,7 +642906,7 @@ "support" ], "docs/writing-tests/testharness-api.md": [ - "a17f5795bc33d64570dac59524111675b44a2880", + "c882e4daa2d93ed8390fa8d3ba8b662115311389", "support" ], "docs/writing-tests/testharness-tutorial.md": [ @@ -645113,7 +645573,7 @@ "b29e66c04a70dffbc17f05f516d3d190159ec1c5", "testharness" ], - "element-timing/multiple-redirects-TAO.sub.html": [ + "element-timing/multiple-redirects-TAO.html": [ "6800f7cf6873ef10540e83fc0fa7b249c8050e0e", "testharness" ], @@ -649334,7 +649794,7 @@ "testharness" ], "fetch/api/policies/referrer-origin-when-cross-origin.html": [ - "18de7364634d18a79861309172ec75ee83676208", + "5cd79e4b53615995cb79ad8ad06d9b405151be71", "testharness" ], "fetch/api/policies/referrer-origin-when-cross-origin.html.headers": [ @@ -649342,7 +649802,7 @@ "support" ], "fetch/api/policies/referrer-origin-when-cross-origin.js": [ - "7cd4113f506f26c91275eb65361fc4887e9d1398", + "0adadbc55081f0dbb9250be1cec89c7134603bb3", "support" ], "fetch/api/policies/referrer-origin-when-cross-origin.js.headers": [ @@ -655190,7 +655650,7 @@ "support" ], "html/cross-origin-opener-policy/blob-popup.https.html": [ - "4aef1b848917c1f2901eb696a39d5d7f1369a063", + "a4e53e7806267049b9190019e2061fd77ac3073a", "testharness" ], "html/cross-origin-opener-policy/blob-popup.https.html.headers": [ @@ -655206,7 +655666,7 @@ "support" ], "html/cross-origin-opener-policy/coep-navigate-popup.https.html": [ - "faa2793e5faaa81d4d819110ec1045dac9d9cde0", + "714a4b6c4270900282328af1aacadc8592a0b44e", "testharness" ], "html/cross-origin-opener-policy/coep-navigate-popup.https.html.headers": [ @@ -655214,7 +655674,7 @@ "support" ], "html/cross-origin-opener-policy/coep-redirect.https.html": [ - "2727013783fa3d3c6a26f6746c1a0c28c59fdf19", + "83f8f8a33d4b2c9c7f23c02011bcc568836e62ea", "testharness" ], "html/cross-origin-opener-policy/coep-redirect.https.html.headers": [ @@ -655222,7 +655682,7 @@ "support" ], "html/cross-origin-opener-policy/coep.https.html": [ - "de1dd56d9d55e5e3f1de62b16058139204c2e098", + "f6d975564f4fd0a5d272ea6977b7aa93c64e4794", "testharness" ], "html/cross-origin-opener-policy/coep.https.html.headers": [ @@ -655230,11 +655690,11 @@ "support" ], "html/cross-origin-opener-policy/coop-navigated-history-popup.https.html": [ - "bd1cabafd4164e51804b0760dbf45885f3df3520", + "a061be992c1aa05ba8b0c1290f3562ab9a88904e", "testharness" ], "html/cross-origin-opener-policy/coop-navigated-popup.https.html": [ - "3c6019ace0b308562cca08d6d6bfd6484882e1db", + "e1741932919a426429083544ce44e2f4438cab3d", "testharness" ], "html/cross-origin-opener-policy/coop-navigated-popup.https.html.headers": [ @@ -655250,11 +655710,11 @@ "support" ], "html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https.html": [ - "73ef1ea29a2e91f0e4f9a9867081fe8aa5a9c81b", + "c389058d9edcb52a1de92cf7aa036686a23afe9a", "testharness" ], "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html": [ - "a8b6d543cd018b06b962b4ad1ef41b8c043ae496", + "1f522f70e68c69b57a4aa94847895db97e779ebf", "testharness" ], "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html.headers": [ @@ -655262,7 +655722,7 @@ "support" ], "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html": [ - "aaaae2dc31799bc46d58424133edb47a8b31794c", + "d7686f23d37cdb0cdee43573217353182bc2a671", "testharness" ], "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html.headers": [ @@ -655270,7 +655730,7 @@ "support" ], "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html": [ - "fd58b06f783966f2ad24c2c2443c422fce2e94d0", + "9a1dc11b417a065dfb1bcf814c07f04b1ffe8ef6", "testharness" ], "html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html.headers": [ @@ -655278,7 +655738,7 @@ "support" ], "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html": [ - "7330ff75bcff697490ee248f938bdbb9c79f6b88", + "b54ff2f49557ecedcbfceb68e1217bd1ef2c5aa8", "testharness" ], "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html.headers": [ @@ -655286,7 +655746,7 @@ "support" ], "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html": [ - "01cc6719fd3a202514444765ff6a4e4d2153f2f1", + "b2279094b170f908672c85ba3525ab6a3adc032c", "testharness" ], "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html.headers": [ @@ -655294,7 +655754,7 @@ "support" ], "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html": [ - "b1a664dd9a5b8e8dd4cf561a31f85e8f2e88ae2d", + "371aa41d0117c3e0ccd3317579b9bb8a78d31751", "testharness" ], "html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html.headers": [ @@ -655302,7 +655762,7 @@ "support" ], "html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html": [ - "d0fc7c79841eab57d810566e4eedc3e4f338d954", + "af14446257ba12f1e0dbc6b30ea6d29ff7dd905b", "testharness" ], "html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html.headers": [ @@ -655310,7 +655770,7 @@ "support" ], "html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html": [ - "67d2523e28d9af525449a192f659d5be1768532c", + "ec463a17706509b1ae431c52e46ecdaee2c7452e", "testharness" ], "html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html.headers": [ @@ -655318,39 +655778,71 @@ "support" ], "html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html": [ - "78b7ca8fcad0f5a68dbf3fefd3d1945564783fad", + "80ed35424c99e324aef7c1e58e4c585246ce14ba", "testharness" ], "html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html.headers": [ "34bd099a302f893f92586241ea38aac812bf28d0", "support" ], - "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups.https.html": [ - "0c33b40b181b6f6258614e8f30794926d61ddf6b", + "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html": [ + "b03949e7a9f9a768b5f8911cf34717bd54f5509e", + "testharness" + ], + "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html.headers": [ + "d83ed86fb9b5d159b9f380424887402edc96cb75", + "support" + ], + "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html": [ + "66b0a4afa7fd487c5047bcb7a8cd43224b2fc430", "testharness" ], - "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups.https.html.headers": [ + "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html.headers": [ "d83ed86fb9b5d159b9f380424887402edc96cb75", "support" ], - "html/cross-origin-opener-policy/iframe-popup-same-origin.https.html": [ - "2b7decd39cf8861b59788003d64bf84ce48ff984", + "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html": [ + "d2f2783606e6cdb021eb0a29bec5d11137af7675", "testharness" ], - "html/cross-origin-opener-policy/iframe-popup-same-origin.https.html.headers": [ + "html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html.headers": [ + "d83ed86fb9b5d159b9f380424887402edc96cb75", + "support" + ], + "html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html": [ + "635f7ab3b872c49c436a5cfcb387e63100322ea3", + "testharness" + ], + "html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html.headers": [ "46ad58d83bf6e98913ca4c564b7acb8f19fa0093", "support" ], - "html/cross-origin-opener-policy/iframe-popup-unsafe-none.https.html": [ - "78a18118504bb9ad9a52b25bfc12059721708dd9", + "html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html": [ + "d6521bd9dc4cdf32aae3e252a77af3c7b1bf5b83", "testharness" ], - "html/cross-origin-opener-policy/iframe-popup-unsafe-none.https.html.headers": [ + "html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html.headers": [ + "46ad58d83bf6e98913ca4c564b7acb8f19fa0093", + "support" + ], + "html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html": [ + "ad7c0e263ab40957ad6b9584254c00ace6941943", + "testharness" + ], + "html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html.headers": [ + "073ce7adfbd81cb7c0b2f91f96c8349b6677f26c", + "support" + ], + "html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html": [ + "8113189cc86c42b367224246c545b253ee780fa5", + "testharness" + ], + "html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html.headers": [ "073ce7adfbd81cb7c0b2f91f96c8349b6677f26c", "support" ], "html/cross-origin-opener-policy/no-https.html": [ - "f4e926b2eb2838c443f2e8f4d3bc024e719039a7", + "db15d5c676efb6f5761dec52ad56580fdfc1acbf", "testharness" ], "html/cross-origin-opener-policy/no-https.html.headers": [ @@ -655361,12 +655853,8 @@ "e36b5190aafc0b42b043802422dd411a831a20a5", "testharness" ], - "html/cross-origin-opener-policy/popup-meta-http-equiv.https.html.headers": [ - "46ad58d83bf6e98913ca4c564b7acb8f19fa0093", - "support" - ], "html/cross-origin-opener-policy/popup-redirect-cache.https.html": [ - "0524878a03a8d3764c63b77b5c8c4f1453c5a288", + "d68c80664bc549ca0e9786653bc0b3759ca31953", "testharness" ], "html/cross-origin-opener-policy/popup-redirect-cache.https.html.headers": [ @@ -655374,7 +655862,7 @@ "support" ], "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html": [ - "cea3788ba83d41a97b3b59bd2744db079f272a45", + "74ded50d6677abeb0e7308ebd17f402e2e6438ca", "testharness" ], "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html.headers": [ @@ -655382,7 +655870,7 @@ "support" ], "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html": [ - "a50231f82287b03d15c186472767c215035886f6", + "b67db7e70666c7d30b7299cd2947bf1baa4a5915", "testharness" ], "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html.headers": [ @@ -655390,7 +655878,7 @@ "support" ], "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html": [ - "53b4263a70fd41bd044440abeddce3b9585e5850", + "af7836f77ee888d4856419a3ad4f37765a81c864", "testharness" ], "html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html.headers": [ @@ -655406,7 +655894,7 @@ "support" ], "html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html": [ - "9f7d27b3c8dc381f893c6ccf84c463db7f503f9b", + "f72f8a59be20955475ab484c281b771c04a8ec13", "testharness" ], "html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html.headers": [ @@ -655414,7 +655902,7 @@ "support" ], "html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html": [ - "c84219a80f5c83ca6e4dc244406db9f05461fa83", + "5798851f686584ba6cae36d84bb04019d2967880", "testharness" ], "html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html.headers": [ @@ -655422,7 +655910,7 @@ "support" ], "html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html": [ - "b875cc2e0e4abbc215be36111a22414f72126138", + "1af0f7ca3ac35aa318f35df089a2497d747617a3", "testharness" ], "html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html.headers": [ @@ -655430,11 +655918,11 @@ "support" ], "html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html": [ - "5cbf5b4c20c9b89c5cf946ebeea1733fbfb57c2c", + "6b6397c48691c3ae099e4563bf6e5c391fe2087b", "testharness" ], "html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html": [ - "f8a4ebe71288d6071f3d644607132a32b0c63f79", + "66d720f7e92abb387e4cc39fd6a90767615b7a38", "testharness" ], "html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html.headers": [ @@ -655442,19 +655930,19 @@ "support" ], "html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html": [ - "e38acf4fcb1e1d0b039894013ab56e011c5efa8f", + "58ea328f0cffdd185efa5a0891db8397ac828d32", "testharness" ], "html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html": [ - "d89398cd653de327a10ff53b58b29a62e422ffb8", + "6b5bf18bf43495c3a9b7fe04c82ec5c3ea2efbd8", "testharness" ], "html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html": [ - "cb6fc02ac171f606cb00a315d327062d13f32e91", + "6000ec600f8b41368f8bf2cf7822cd90ae0e825f", "testharness" ], "html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html": [ - "6e0edfa04233865f802a12a3ad3c4f26d50866f7", + "2f9d6f15e23dbf46910b56cde7e7c59dd0040607", "testharness" ], "html/cross-origin-opener-policy/resources/call-functionCalledByOpenee.html": [ @@ -655462,11 +655950,11 @@ "support" ], "html/cross-origin-opener-policy/resources/common.js": [ - "59ba33d65b04e26c1db810783b7fdcc96dee8954", + "760db60365fbe79a70d37c770a48a162c5058002", "support" ], "html/cross-origin-opener-policy/resources/coop-coep.py": [ - "e6f655ab728107e4bac31cd7748711f719b01bd3", + "0271d7834af98a1d25fd2869c11c6f56b08bfcd3", "support" ], "html/cross-origin-opener-policy/resources/iframe-popup.sub.html": [ @@ -655474,7 +655962,7 @@ "support" ], "html/cross-origin-opener-policy/resources/postback.html": [ - "cf3c93bbe1d3589e9a649db34995e02e2ac9c1e4", + "5955e2d7593a51fa112fe82bb97b79add54f3ba0", "support" ], "html/cross-origin-opener-policy/resources/postback.html.headers": [ @@ -661817,6 +662305,10 @@ "4abd9ce533d7740e906a83a0e8cbc67c8613bf52", "testharness" ], + "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-crash.html": [ + "111dcbe5338a1df74c69a05cccd618f37a761c91", + "crashtest" + ], "html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-default-style.html": [ "f07c84f406cefc7054e8a13c2796d3d82673bdf7", "testharness" @@ -662321,6 +662813,14 @@ "ae0c9c8c8e05d4ffbe46c2250d6f2568903f84c9", "support" ], + "html/rendering/replaced-elements/embedded-content/object-fallback-text-decoration-ref.html": [ + "9481e80ac81b14cc7c4a044b16cc3e8cf5d547e6", + "support" + ], + "html/rendering/replaced-elements/embedded-content/object-fallback-text-decoration.html": [ + "89657ef8a2dd6be764768388a8d57d994cc0fdb3", + "reftest" + ], "html/rendering/replaced-elements/embedded-content/video-controls-vertical-writing-mode-ref.html": [ "9a2d1d064139b4f58dc06c1d588c50b89a97aaec", "support" @@ -662481,6 +662981,14 @@ "c2e96e987ea943e29626e0cfd013ef6d6cae3bbc", "reftest" ], + "html/rendering/the-details-element/summary-text-decoration-ref.html": [ + "8b6105fd2ec3eaa17ff9f18e50acfe989c4878af", + "support" + ], + "html/rendering/the-details-element/summary-text-decoration.html": [ + "80bbd44c46c3b5e07c64eeb959c9642e156eab3f", + "reftest" + ], "html/rendering/unmapped-attributes.html": [ "3f457eb492f0b72b2a9c5891e8784d0b69958b38", "testharness" @@ -664770,7 +665278,7 @@ "testharness" ], "html/semantics/embedded-content/the-canvas-element/security.pattern.fillStyle.sub.html": [ - "6695138c57b6556d29fc6070efa5f1542f9fa3c1", + "70c5f194ff63bedea313fe924f8c2f80849d9bb5", "testharness" ], "html/semantics/embedded-content/the-canvas-element/security.pattern.image.fillStyle.cross.html": [ @@ -673486,7 +673994,7 @@ "support" ], "infrastructure/metadata/infrastructure/reftest/legacy/fuzzy-ref-2.html.ini": [ - "0bbb2bf0aa5faf14d0c92f044cd55e5baceffdca", + "cdfd9736c54bdf645a776caaa93d497fe937a04e", "support" ], "infrastructure/metadata/infrastructure/reftest/legacy/reftest_and_fail_0-ref.html.ini": [ @@ -673498,19 +674006,23 @@ "support" ], "infrastructure/metadata/infrastructure/reftest/legacy/reftest_fuzzy_chain_ini.html.ini": [ - "69dc018f38990001626df54f1d067efd3421fdd0", + "d3776e243e460f438bcaddd1169ccbcc937b6e33", + "support" + ], + "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_1.html.ini": [ + "44f185357bc55366f4ac1825e16c91e356ffe2f6", "support" ], "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_full.html.ini": [ - "0ebde2f4a62f4df54dd5639904df0478b457e56b", + "d682550d53eaeab5ff70cbabb09e1ff7a7bdb8d2", "support" ], "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_ref_only.html.ini": [ - "70c0446b5dc9a41dd692b131453ef8931fe5165a", + "4437fceff899b84e9f316cf6d0e6fb300dc503d7", "support" ], "infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_short.html.ini": [ - "1859d256800414818d55117ab8e05d19cdb819e0", + "27e3290e6fbc90ba0b08816924924fe4bc0b8922", "support" ], "infrastructure/metadata/infrastructure/reftest/reftest_match_and_mismatch-0.html.ini": [ @@ -675161,6 +675673,10 @@ "0e40127b57683fa76392827003b15c2bb9c8d558", "testharness" ], + "largest-contentful-paint/multiple-redirects-TAO.html": [ + "ec8ddc3ec61c6ca854dc55d4b3384e6403e54569", + "testharness" + ], "largest-contentful-paint/observe-after-untrusted-scroll.html": [ "1b2cd1d25b5bb9da740e5127526fed41dcebfae7", "testharness" @@ -675898,11 +676414,11 @@ "reftest" ], "mathml/presentation-markup/mrow/inferred-mrow-baseline.html": [ - "1541b2d6ce17c90a52c15f3ce5461a5c7d42920f", + "c92cbba922f0c126d93a431daf789dd291a4dbb5", "testharness" ], "mathml/presentation-markup/mrow/inferred-mrow-stretchy.html": [ - "b6a51762dfda0b05cbcc272b9fb5cedad0c66a94", + "4b89dd6fa5f0daddfb91aa5ad0d29ad3be1da551", "testharness" ], "mathml/presentation-markup/mrow/legacy-mfenced-element-001-ref.html": [ @@ -675929,6 +676445,10 @@ "0de9a90eed9de0b7a6b4ff9484db1c9d87376c24", "testharness" ], + "mathml/presentation-markup/mrow/spacing.html": [ + "4bdfc9a001a3fa87716f3e6b0e5e3da3f0ee1c74", + "testharness" + ], "mathml/presentation-markup/operators/embellished-operator-001.html": [ "31bdff2fd7c2c4e463adfba2c3768d678c5c7424", "testharness" @@ -676806,7 +677326,7 @@ "support" ], "mathml/support/feature-detection.js": [ - "1952d3b06c123955832d0f9d5e35031285703c73", + "7ad4d953d0822c306882524952738b894521325d", "support" ], "mathml/support/layout-comparison.js": [ @@ -676910,7 +677430,7 @@ "support" ], "measure-memory/measure-memory.tentative.any.js": [ - "c4f47a0b0844623abcaddb6f5b873552cc9908aa", + "cf42e2c9f4667432cf642ed0696f1afc989cafd9", "testharness" ], "media-capabilities/META.yml": [ @@ -680670,7 +681190,7 @@ "manual" ], "native-file-system/native_FileSystemBaseHandle-postMessage-manual.https.tentative.html": [ - "266238c4acc269b4a29b0f849f1807172ce3dd72", + "e04be7df5fc7bdb00c1737c35174ee368370c43d", "manual" ], "native-file-system/native_FileSystemDirectoryHandle-getDirectory-manual.https.tentative.html": [ @@ -680774,7 +681294,7 @@ "testharness" ], "native-file-system/sandboxed_FileSystemBaseHandle-postMessage.tentative.https.window.js": [ - "e010f6599e890f0eeaffd01a4bae962a8aa8b950", + "f7d5776e19e50865f298877a08e0b0a463073d6c", "testharness" ], "native-file-system/sandboxed_FileSystemDirectoryHandle-getDirectory.tentative.https.any.js": [ @@ -689574,7 +690094,7 @@ "testharness" ], "portals/portals-focus.sub.html": [ - "1779590779af1f7306925add9dfdd84a6abfa323", + "97b7579eb63694310aa4d34b656c7414e68bd7c2", "testharness" ], "portals/portals-host-exposure.sub.html": [ @@ -702570,17 +703090,33 @@ "testharness" ], "referrer-policy/generic/inheritance/iframe-inheritance-data.html": [ - "368e77e1217d449f558f6e45174227fd64e3b27d", + "1d39781e30583201cf057c5269146ea95ca2d510", + "testharness" + ], + "referrer-policy/generic/inheritance/iframe-inheritance-document-write.html": [ + "cba71bb1d9f541deef790d3adeee159180196dca", + "testharness" + ], + "referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html": [ + "e20da4f2cccfe4d8981d83ddb6d48ec3d6f4c2d6", + "testharness" + ], + "referrer-policy/generic/inheritance/iframe-inheritance-javascript.html": [ + "77b6d759f5f4694298da8dc3f72825fbfcffe799", "testharness" ], "referrer-policy/generic/inheritance/iframe-inheritance-srcdoc-child.html": [ - "ecd5a41cc0beb02a36a7dcaca2803e6c84697158", + "cd4b4ae724814625b210b5fc96ecf5ecef321822", "testharness" ], "referrer-policy/generic/inheritance/iframe-inheritance-srcdoc.html": [ - "6639ebd98731b28cef86e3743e4def21cfa14fa9", + "c4dffd3ed70607f0caaddb99d0b0291e719e1e96", "testharness" ], + "referrer-policy/generic/inheritance/resources/make-html-script.js": [ + "e285c559c04db3884022a94f6df8ca4f1b5e8cf1", + "support" + ], "referrer-policy/generic/link-rel-prefetch.html": [ "72e831c92129aed2d80a4178fb56f9d7c20dacad", "testharness" @@ -703090,7 +703626,7 @@ "testharness" ], "resource-timing/resource_timing_buffer_full_eventually.html": [ - "ce745237c0657c7045b00d9c7b8e71770ed490fc", + "140973156fbd85b7228c7dc6e2b36866bbcd2975", "testharness" ], "resource-timing/resource_timing_buffer_full_when_shrink_buffer_size.html": [ @@ -704162,7 +704698,7 @@ "testharness" ], "scroll-to-text-fragment/scroll-to-text-fragment-target.html": [ - "bc9ee9e6bc550d4e149354e8a989ef7ba29520ca", + "09d22ff6d1d6792b66865d62ccd8e07ec96a70b7", "support" ], "scroll-to-text-fragment/scroll-to-text-fragment.html": [ @@ -705650,7 +706186,7 @@ "testharness" ], "service-workers/service-worker/clients-matchall-client-types.https.html": [ - "a2a56816a650fa54d6075055a64e0f009e5829ac", + "54f182b6202cd67cc63e159e7e2d4294fdf975ff", "testharness" ], "service-workers/service-worker/clients-matchall-exact-controller.https.html": [ @@ -705930,7 +706466,7 @@ "testharness" ], "service-workers/service-worker/getregistrations.https.html": [ - "3e48d5fe3618b36713d724b71e4026ea24553bd4", + "3a9b9a23317b2bb1370689b553a49c28de4cf8f8", "testharness" ], "service-workers/service-worker/global-serviceworker.https.any.js": [ @@ -708938,7 +709474,7 @@ "support" ], "speech-api/META.yml": [ - "9ce8830e78fc4be5b25e5382248810932abfd829", + "88f1837f96f6e140990eb2de9981f7901596a32f", "support" ], "speech-api/SpeechRecognition-abort-manual.https.html": [ @@ -710381,6 +710917,14 @@ "5757d07a0999cde2b5ca8ddeb6307d632772de5f", "reftest" ], + "svg/extensibility/foreignObject/foreign-object-scale-scroll-ref.html": [ + "a2217fed5d059cc819034ad7101bd4ff19856ca3", + "support" + ], + "svg/extensibility/foreignObject/foreign-object-scale-scroll.html": [ + "72ce40dc5c04a647bb81dcf88020ec762c3408e1", + "reftest" + ], "svg/extensibility/foreignObject/foreign-object-size-ref.html": [ "e0b17a2c4a287ee6fe339b23cc9df94de54c0bfb", "support" @@ -714582,7 +715126,7 @@ "support" ], "tools/ci/azure/install_edge.yml": [ - "e4c425ab7a0f03218d922e7310ea9d8fde0f51aa", + "297b6e60b29f3a9bbd00b3ee00b705635138f2cb", "support" ], "tools/ci/azure/install_firefox.yml": [ @@ -719494,7 +720038,7 @@ "support" ], "tools/wpt/browser.py": [ - "f0c2eeb94b8c52c5c6d10491fd952437163d0c0a", + "13ce823d0cecff9f84e131be80f101bd468e3cf5", "support" ], "tools/wpt/commands.json": [ @@ -719938,7 +720482,7 @@ "support" ], "tools/wptrunner/wptrunner/executors/executorselenium.py": [ - "ceca81211e1140577cc3a5f163ffe17c73dd56a3", + "39d723a788662dd55c2707eb8d670dba6237cd3c", "support" ], "tools/wptrunner/wptrunner/executors/executorservo.py": [ @@ -719950,7 +720494,7 @@ "support" ], "tools/wptrunner/wptrunner/executors/executorwebdriver.py": [ - "0b329210fc546f9ee50a8a4d0ae02133e3446106", + "d09eb1e145170243dc9e74aa68f53d05154283fa", "support" ], "tools/wptrunner/wptrunner/executors/executorwebkit.py": [ @@ -720174,7 +720718,7 @@ "support" ], "tools/wptrunner/wptrunner/wptcommandline.py": [ - "91f1161b01b99f31ef1d3dde05333627bf4365b2", + "5b7278b99ff4bfe03981f87671a240141bd0a037", "support" ], "tools/wptrunner/wptrunner/wptlogging.py": [ @@ -720670,7 +721214,7 @@ "testharness" ], "trusted-types/GlobalEventHandlers-onclick.tentative.html": [ - "8c9c2f1a70bdb368bf535f40b8eae136c2eee23a", + "6cbf680fa26d2e3aeea6152ecb22d3b8e2e1c098", "testharness" ], "trusted-types/HTMLElement-generic.tentative.html": [ @@ -720754,7 +721298,7 @@ "testharness" ], "trusted-types/TrustedTypePolicyFactory-metadata.tentative.html": [ - "da7d1b4f87700e15420c7c849eaa683cd42c0e5d", + "67c734b5a4285576bbe51f6e4f67e674ca1c1c03", "testharness" ], "trusted-types/Window-TrustedTypes.tentative.html": [ @@ -720762,51 +721306,51 @@ "testharness" ], "trusted-types/WorkerGlobalScope-importScripts.https.html": [ - "9dbfd7b93c97abda7beff52e2e9afebefe518f29", + "0aa965e16e08e9ba90b63ef0ab9e731f6ebffbdf", "testharness" ], "trusted-types/block-Node-multiple-arguments.tentative.html": [ - "5552e1313728c9688b7dfa32a9ee2bea38faa151", + "879d34f96126945fb3ae78d9c5f86ccb04b1f39c", "testharness" ], "trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.html": [ - "82e31200e6ba5150672e28a898d70d71486ada8a", + "12cef6af661a5f56f59cdd7e6a5f81ae6e200b0c", "testharness" ], "trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.html": [ - "468ed7b6975194ffde6b4106b0d78f5b99ca24ee", + "6d723ba23b6b196d97c3e5816e7d867803b95eb0", "testharness" ], "trusted-types/block-string-assignment-to-Document-write.tentative.html": [ - "4defb56c88ed763bf65c3f45e16a7d56234b7970", + "1049b46563d4b95d089db0d18b37b90970f1018b", "testharness" ], "trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.tentative.html": [ - "37a73f08c20a297a74bd7025906444a1083cb0c1", + "1e8c091d87e70b5d3d037dd1a49fd4774aa56628", "testharness" ], "trusted-types/block-string-assignment-to-Element-outerHTML.tentative.html": [ - "8f314a26bf5d522276864abdc989a403afdfd170", + "17815e6a9e9bfe4199d089f03504aa89d09203ff", "testharness" ], "trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html": [ - "2639e16ea084063d90c7d176a576f2e77a4293d7", + "47c4c3557f8363af8fd3937401345ac56c9941eb", "testharness" ], "trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.html": [ - "5754521b2bd78ebf31c496961108386aff23650f", + "cc8b05e8c8370a50da89d8232e7276ae4b75b356", "testharness" ], "trusted-types/block-string-assignment-to-HTMLElement-generic.tentative.html": [ - "84ff83bc083ac473704d791f929df5ae6ba7f1f6", + "b5745199f41c49d7aab63822c3138548907544f0", "testharness" ], "trusted-types/block-string-assignment-to-Range-createContextualFragment.tentative.html": [ - "61553eb71dfcf4a49e580450602aabcc3e515282", + "a57376206de6f1383ed716494fe328a842d37ba1", "testharness" ], "trusted-types/block-text-node-insertion-into-script-element.tentative.html": [ - "04b19f7e42111a11073a4049350f7d8ddde7d1b2", + "1f5e8fda7aeacc4494643b570c9526fc3a855caa", "testharness" ], "trusted-types/csp-block-eval.tentative.html": [ @@ -720818,7 +721362,7 @@ "testharness" ], "trusted-types/default-policy-report-only.tentative.html.headers": [ - "fa87952ae486b3a902eca0257eadace8e25e881f", + "67b9ef7a3c5ef2f53775de6965ca12343026a829", "support" ], "trusted-types/default-policy.tentative.html": [ @@ -720826,7 +721370,7 @@ "testharness" ], "trusted-types/default-policy.tentative.html.headers": [ - "1bc33add09b4b34ce2cba21f488f8ed53345a27a", + "6a40e40a586a5b0ad3f01bf8e45402e74d424cd2", "support" ], "trusted-types/empty-default-policy-report-only.tentative.html": [ @@ -720834,7 +721378,7 @@ "testharness" ], "trusted-types/empty-default-policy-report-only.tentative.html.headers": [ - "fa87952ae486b3a902eca0257eadace8e25e881f", + "67b9ef7a3c5ef2f53775de6965ca12343026a829", "support" ], "trusted-types/empty-default-policy.tentative.html": [ @@ -720842,7 +721386,7 @@ "testharness" ], "trusted-types/empty-default-policy.tentative.html.headers": [ - "1bc33add09b4b34ce2cba21f488f8ed53345a27a", + "6a40e40a586a5b0ad3f01bf8e45402e74d424cd2", "support" ], "trusted-types/eval-csp-no-tt.tentative.html": [ @@ -720850,11 +721394,11 @@ "testharness" ], "trusted-types/eval-csp-tt-default-policy.tentative.html": [ - "8f1926d9cf26ff2f9b1be1c65e6c6784e75c24b2", + "eaa74eaf4cd03e0aa3da97e26f700317945a87da", "testharness" ], "trusted-types/eval-csp-tt-no-default-policy.tentative.html": [ - "dc976d64abd62332366f3bee60b8915245fc437d", + "0da09a8a5cd1c2d353b17850ff89b607afa1873f", "testharness" ], "trusted-types/eval-no-csp-no-tt-default-policy.tentative.html": [ @@ -720866,19 +721410,43 @@ "testharness" ], "trusted-types/eval-with-permissive-csp.tentative.html": [ - "074fe79dc93fee6563bcb9ce2db3fa708bf4ad4f", + "32f12d8e129d69c225cc26e3b886f4ff91469542", "testharness" ], "trusted-types/idlharness.tentative.window.js": [ "5a854a12b78026a3318dad70ffa0d6a690e39f55", "testharness" ], + "trusted-types/no-require-trusted-types-for-report-only.tentative.html": [ + "56f6295221355dd0c0900f9932222c461c11eda8", + "testharness" + ], + "trusted-types/no-require-trusted-types-for-report-only.tentative.html.headers": [ + "fa87952ae486b3a902eca0257eadace8e25e881f", + "support" + ], + "trusted-types/no-require-trusted-types-for.tentative.html": [ + "4e11b03617beb3716f51653843fd458c69274758", + "testharness" + ], + "trusted-types/require-trusted-types-for-report-only.tentative.html": [ + "25b4440ef4117010bb7da7c8f3ad87f01d3bf55f", + "testharness" + ], + "trusted-types/require-trusted-types-for-report-only.tentative.html.headers": [ + "c6412f8d472fcfd6022b0ae485f52b3d3dedd820", + "support" + ], + "trusted-types/require-trusted-types-for.tentative.html": [ + "95cfc4d106e5adfe6539641a3b046796b257b972", + "testharness" + ], "trusted-types/support/WorkerGlobalScope-importScripts.https.js": [ "fa63c8bad0fcd9f93d89c8c3bea2d8a0b59d2094", "support" ], "trusted-types/support/WorkerGlobalScope-importScripts.https.js.headers": [ - "1bc33add09b4b34ce2cba21f488f8ed53345a27a", + "6a40e40a586a5b0ad3f01bf8e45402e74d424cd2", "support" ], "trusted-types/support/helper.sub.js": [ @@ -720890,7 +721458,7 @@ "support" ], "trusted-types/support/navigation-report-only-support.html.headers": [ - "fa87952ae486b3a902eca0257eadace8e25e881f", + "67b9ef7a3c5ef2f53775de6965ca12343026a829", "support" ], "trusted-types/support/navigation-support.html": [ @@ -720898,7 +721466,7 @@ "support" ], "trusted-types/support/navigation-support.html.headers": [ - "1bc33add09b4b34ce2cba21f488f8ed53345a27a", + "6a40e40a586a5b0ad3f01bf8e45402e74d424cd2", "support" ], "trusted-types/support/worker.js": [ @@ -720906,7 +721474,7 @@ "support" ], "trusted-types/trusted-types-createHTMLDocument.tentative.html": [ - "6ab5f42d5ffd82ccc3bf5c9ea8916c2b2f810987", + "711e494a1607d575e1ee7f48693b5a442617ac42", "testharness" ], "trusted-types/trusted-types-duplicate-names-list-report-only.tentative.html": [ @@ -720926,39 +721494,39 @@ "testharness" ], "trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html": [ - "7902df1c30385ef3896829c7c6f7af646b5403ed", + "786731041140b5bbe228869eeeb0ccb4bc6f1544", "testharness" ], "trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html.headers": [ - "4bc0bd3c1ab29d551a5e9988bde5a9dc8f6fa1a7", + "30fe3b1df1d8f10ea4eb495f53bf93066a9e5ecd", "support" ], "trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html": [ - "bd8933a48355f46f1973764874e017b263df197c", + "18c035215e0b9f1ba7b6fab226e9c9853049fa36", "testharness" ], "trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html.headers": [ - "ba26c77fbf498385424205b8bff0c404f0f5357b", + "1d7033658c1eccb672e85b281ba800832c972712", "support" ], "trusted-types/trusted-types-eval-reporting.tentative.https.html": [ - "c751ae1330cd01cfb1c4b21d0a676576656837b2", + "a521f94389ae0412a36b87f60d5428415b184a88", "testharness" ], "trusted-types/trusted-types-eval-reporting.tentative.https.html.headers": [ - "2e935f73a48c42346b6352fa6cd16d12294eebd8", + "91a2be91ef749e470f8998d7058871484dcb274d", "support" ], "trusted-types/trusted-types-navigation.tentative.html": [ - "7f17c64e57090392c100eb0791372fcf9107de13", + "657cbb74e0ecd5b30fbd73fb73a54eb6db62dfd7", "testharness" ], "trusted-types/trusted-types-report-only.tentative.https.html": [ - "bf0a1eb9c1911e2fb25ed89dbd14e7dfd86cf358", + "fcb77841163d9a09774497d2b8588f85c2a42b06", "testharness" ], "trusted-types/trusted-types-report-only.tentative.https.html.headers": [ - "b38cfae2cb209eec5b8c9e8b0c774262694c1aec", + "857a8b31e86bc395e95913ee521d4fc73109c74c", "support" ], "trusted-types/trusted-types-reporting-check-report.https.html": [ @@ -720970,15 +721538,15 @@ "support" ], "trusted-types/trusted-types-reporting.tentative.https.html": [ - "10a951fa12cb8d69249a96cb85ce34f6136e52c5", + "ef282dc609c88c1e3add16ed4b3363e75030727a", "testharness" ], "trusted-types/trusted-types-reporting.tentative.https.html.headers": [ - "947a151c874ce9d372baa786c1b2964cbd9bc279", + "fa8aceab74b0f6e937da3999d471f6afaac4c24e", "support" ], "trusted-types/tt-block-eval.tentative.html": [ - "e721b0e0d3699301e7580dcaecf4fc189e077636", + "8fe8aa50d6c9f8e3ac5f1a01a0d41f84a5c03549", "testharness" ], "uievents/META.yml": [ @@ -724342,7 +724910,7 @@ "testharness" ], "url/urlsearchparams-constructor.any.js": [ - "398021dde2f35f427399c639871bfbb8106a3279", + "f7989f70ea0071bc7180e0a23f10aef55335734e", "testharness" ], "url/urlsearchparams-delete.any.js": [ @@ -730006,7 +730574,7 @@ "testharness" ], "webrtc/RTCPeerConnection-createDataChannel.html": [ - "58e757bce076e9b5ad16c5943ff3065b91305fae", + "943e5728775494b8c5be4c521ce9671cd4e1bc4e", "testharness" ], "webrtc/RTCPeerConnection-createOffer.html": [ @@ -736586,7 +737154,7 @@ "support" ], "workers/modules/resources/dynamic-import-and-then-static-import-worker.js": [ - "9a386e63be51dcdae988de99bdd76709bf49d1b6", + "527702f551174f8f2578fce16c7854351126e3a5", "support" ], "workers/modules/resources/dynamic-import-given-url-worker.js": [ @@ -736614,7 +737182,7 @@ "support" ], "workers/modules/resources/dynamic-import-worker.js": [ - "07f4df9db3ebd94dbc5ffd56fa7df36635a93857", + "2e756fe055e9e9ec815031483b02dc286918ca2c", "support" ], "workers/modules/resources/empty-worker.js": [ @@ -736622,7 +737190,7 @@ "support" ], "workers/modules/resources/eval-dynamic-import-worker.js": [ - "af57b19f98ddcae391c4a55eb7ad1f51a4a0acf5", + "60080d4292a8033e9824a289eef85574cc6a3a81", "support" ], "workers/modules/resources/export-on-dynamic-import-script.js": [ @@ -736654,7 +737222,7 @@ "support" ], "workers/modules/resources/import-scripts-worker.js": [ - "676cccb2ad7f6fc6c6a77474ca0683738db03983", + "d85f573ffe3afa285b931ca0b81c76e9388252e4", "support" ], "workers/modules/resources/import-test-cases.js": [ @@ -736662,11 +737230,11 @@ "support" ], "workers/modules/resources/nested-dynamic-import-worker.js": [ - "cb37f6e20f67c13f77582de19a1d4bd852537aa7", + "00da43c5f0787474462da62ec1dc6647aa2469b3", "support" ], "workers/modules/resources/nested-static-import-worker.js": [ - "7599faaa099f594a05d71f628d548f6732b2b193", + "c3a9ff0b799d5a53aa2faf41289b20153d884c5d", "support" ], "workers/modules/resources/new-worker-window.html": [ @@ -736674,7 +737242,7 @@ "support" ], "workers/modules/resources/post-message-on-load-worker.js": [ - "93818ccad90c60547d724f8fdcdaf626b7301cb6", + "e1c547ab6a4d577280442dbfcbec5a5ec9296666", "support" ], "workers/modules/resources/referrer-checker.py": [ @@ -736682,7 +737250,7 @@ "support" ], "workers/modules/resources/static-import-and-then-dynamic-import-worker.js": [ - "cd98d8c17df652d367b0720492c432851f10f66a", + "2d857a2e90a11af9f52e5d59d15ee30d225deeaf", "support" ], "workers/modules/resources/static-import-non-existent-script-worker.js": [ @@ -736710,9 +737278,25 @@ "support" ], "workers/modules/resources/static-import-worker.js": [ - "48751dbe03bb0f7de23e26911ac7af5733c7d5f1", + "19a347999d386fd4df8dc831c6d164b27630ef7a", "support" ], + "workers/modules/shared-worker-import-blob-url.any.js": [ + "d9e9e34c394bc171cd497c8527b4806dfc32c595", + "testharness" + ], + "workers/modules/shared-worker-import-failure.html": [ + "0e0b9b306314fd96b48e0007918935bc56df2d53", + "testharness" + ], + "workers/modules/shared-worker-import.any.js": [ + "450d4ad422b8da33d515da9b41557f488aff8bff", + "testharness" + ], + "workers/modules/shared-worker-options-type.html": [ + "25b793c631de2899d6ddc73900716328ea8837f9", + "testharness" + ], "workers/name-property.html": [ "ccc2a9de3a9c59acc19eefb247b1c92b78a52941", "testharness" diff --git a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini new file mode 100644 index 00000000000..4c79907309b --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini @@ -0,0 +1,4 @@ +[CaretPosition-001.html] + [Element at (400, 100)] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini index b91e9432330..ad82111842c 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -318,18 +318,18 @@ [<iframe>: separate response Content-Type: text/html */*;charset=gbk] expected: FAIL - [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html] + [<iframe>: combined response Content-Type: text/html;" text/plain] expected: FAIL - [<iframe>: separate response Content-Type: text/html;" \\" text/plain] + [<iframe>: combined response Content-Type: */* text/html] expected: FAIL - [<iframe>: combined response Content-Type: text/html;" text/plain] + [<iframe>: combined response Content-Type: text/html */*;charset=gbk] expected: FAIL - [<iframe>: separate response Content-Type: text/plain */*] + [<iframe>: combined response Content-Type: text/html;" \\" text/plain] expected: FAIL - [<iframe>: separate response Content-Type: text/html;x=" text/plain] + [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] expected: FAIL diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini index 5c001592859..d2df9b78483 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -56,6 +56,3 @@ [separate text/javascript x/x] expected: FAIL - [separate text/javascript;charset=windows-1252 error text/javascript] - expected: FAIL - diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini index d4ba399b762..536384f36e1 100644 --- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini @@ -11,6 +11,6 @@ [X-Content-Type-Options%3A%20nosniff%0C] expected: FAIL - [X-Content-Type-Options%3A%20'NosniFF'] + [X-Content-Type-Options%3A%20%2Cnosniff] expected: FAIL diff --git a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini index 2644d64e6a0..6bd06899fdd 100644 --- a/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini +++ b/tests/wpt/metadata/fetch/security/embedded-credentials.tentative.sub.html.ini @@ -1,6 +1,6 @@ [embedded-credentials.tentative.sub.html] type: testharness - expected: CRASH + expected: TIMEOUT [Embedded credentials are treated as network errors.] expected: FAIL @@ -8,7 +8,7 @@ expected: FAIL [Embedded credentials are treated as network errors in new windows.] - expected: TIMEOUT + expected: FAIL [Embedded credentials matching the top-level are treated as network errors for cross-origin URLs.] expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini new file mode 100644 index 00000000000..75d75b4cda2 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_2.html] + [Multiple history traversals, last would be aborted] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_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/history/the-location-interface/location-protocol-setter-non-broken.html.ini b/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini index ced66541669..02999abae84 100644 --- a/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini @@ -1,5 +1,6 @@ [location-protocol-setter-non-broken.html] type: testharness + expected: CRASH [Set data URL frame location.protocol to gopher] expected: FAIL diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini index c12c0f8ae48..6852d7663de 100644 --- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini +++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini @@ -1,4 +1,8 @@ [skip-document-with-fragment.html] + expected: TIMEOUT [Autofocus elements in iframed documents with URL fragments should be skipped.] expected: FAIL + [Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini index b3bd9f4c289..5f60c78e73c 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini @@ -1,6 +1,6 @@ [iframe_sandbox_popups_escaping-3.html] type: testharness - expected: CRASH + expected: TIMEOUT [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] expected: TIMEOUT diff --git a/tests/wpt/metadata/html/semantics/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/ignore-opens-during-unload.window.js.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini index 910c88d3e81..69bd952d756 100644 --- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini +++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini @@ -1,5 +1,5 @@ [ignore-opens-during-unload.window.html] - expected: CRASH + expected: TIMEOUT [ignore-opens-during-unload] expected: FAIL diff --git a/tests/wpt/metadata/referrer-policy/generic/inheritance/iframe-inheritance-document-write.html.ini b/tests/wpt/metadata/referrer-policy/generic/inheritance/iframe-inheritance-document-write.html.ini new file mode 100644 index 00000000000..92fcdd0c838 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/generic/inheritance/iframe-inheritance-document-write.html.ini @@ -0,0 +1,4 @@ +[iframe-inheritance-document-write.html] + [Referrer Policy: iframes with document.write()] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html.ini b/tests/wpt/metadata/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html.ini new file mode 100644 index 00000000000..8826ca3e156 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html.ini @@ -0,0 +1,7 @@ +[iframe-inheritance-javascript-child.html] + [Referrer Policy: iframes with javascript url reuse referrer policy] + expected: FAIL + + [Referrer Policy: iframes with javascript url reuse referrer policy 2] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/generic/inheritance/iframe-inheritance-javascript.html.ini b/tests/wpt/metadata/referrer-policy/generic/inheritance/iframe-inheritance-javascript.html.ini new file mode 100644 index 00000000000..7487d673a42 --- /dev/null +++ b/tests/wpt/metadata/referrer-policy/generic/inheritance/iframe-inheritance-javascript.html.ini @@ -0,0 +1,4 @@ +[iframe-inheritance-javascript.html] + [Referrer Policy: iframes with javascript url reuse referrer policy] + expected: FAIL + diff --git a/tests/wpt/metadata/referrer-policy/generic/inheritance/iframe-inheritance-srcdoc.html.ini b/tests/wpt/metadata/referrer-policy/generic/inheritance/iframe-inheritance-srcdoc.html.ini index 00076bbd03a..e7f2f20a202 100644 --- a/tests/wpt/metadata/referrer-policy/generic/inheritance/iframe-inheritance-srcdoc.html.ini +++ b/tests/wpt/metadata/referrer-policy/generic/inheritance/iframe-inheritance-srcdoc.html.ini @@ -1,5 +1,4 @@ [iframe-inheritance-srcdoc.html] - expected: TIMEOUT [iframes srcdoc correctly inherit the ancestor's referrer policy] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini b/tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini index b4090ef9fe2..1c7ec9ce1db 100644 --- a/tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini +++ b/tests/wpt/metadata/resource-timing/crossorigin-sandwich-TAO.sub.html.ini @@ -1,5 +1,4 @@ [crossorigin-sandwich-TAO.sub.html] - expected: ERROR [There should be one entry.] expected: FAIL diff --git a/tests/wpt/metadata/webxr/xrSession_input_events_end.https.html.ini b/tests/wpt/metadata/webxr/xrSession_input_events_end.https.html.ini index 1c2f8518d1a..1d6cd17924d 100644 --- a/tests/wpt/metadata/webxr/xrSession_input_events_end.https.html.ini +++ b/tests/wpt/metadata/webxr/xrSession_input_events_end.https.html.ini @@ -1,5 +1,5 @@ [xrSession_input_events_end.https.html] expected: TIMEOUT [Calling end during an input callback stops processing at the right time] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/web-platform-tests/.azure-pipelines.yml b/tests/wpt/web-platform-tests/.azure-pipelines.yml index 03e5a51cc8f..7e1732fd45b 100644 --- a/tests/wpt/web-platform-tests/.azure-pipelines.yml +++ b/tests/wpt/web-platform-tests/.azure-pipelines.yml @@ -19,6 +19,7 @@ trigger: # These are all the branches referenced in the jobs that follow. - epochs/daily - epochs/three_hourly +- triggers/edge_stable - triggers/edge_dev - triggers/edge_canary - triggers/safari_stable @@ -239,6 +240,42 @@ jobs: condition: always() - template: tools/ci/azure/cleanup_win10.yml +- job: results_edge_stable + displayName: 'all tests: Edge Stable' + condition: | + or(eq(variables['Build.SourceBranch'], 'refs/heads/epochs/daily'), + eq(variables['Build.SourceBranch'], 'refs/heads/triggers/edge_stable'), + and(eq(variables['Build.Reason'], 'Manual'), variables['run_all_edge_stable'])) + strategy: + parallel: 10 # chosen to make runtime ~2h + timeoutInMinutes: 180 + pool: + name: 'Hosted Windows Client' + steps: + - template: tools/ci/azure/system_info.yml + - template: tools/ci/azure/checkout.yml + - template: tools/ci/azure/install_python.yml + - template: tools/ci/azure/pip_install.yml + parameters: + packages: virtualenv + - template: tools/ci/azure/install_certs.yml + - template: tools/ci/azure/install_edge.yml + parameters: + channel: stable + - template: tools/ci/azure/update_hosts.yml + - template: tools/ci/azure/update_manifest.yml + - script: python ./wpt run --yes --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --install-fonts --this-chunk $(System.JobPositionInPhase) --total-chunks $(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info --channel stable edgechromium + displayName: 'Run tests (Edge Stable)' + - task: PublishBuildArtifacts@1 + displayName: 'Publish results' + inputs: + artifactName: 'edge-stable-results' + - template: tools/ci/azure/cleanup_win10.yml +- template: tools/ci/azure/fyi_hook.yml + parameters: + dependsOn: results_edge_stable + artifactName: edge-stable-results + - job: results_edge_dev displayName: 'all tests: Edge Dev' condition: | diff --git a/tests/wpt/web-platform-tests/2dcontext/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html b/tests/wpt/web-platform-tests/2dcontext/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html index 76fc17a882f..834c1952c5a 100644 --- a/tests/wpt/web-platform-tests/2dcontext/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html +++ b/tests/wpt/web-platform-tests/2dcontext/drawing-text-to-the-canvas/2d.text.measure.actualBoundingBox.html @@ -35,14 +35,15 @@ document.fonts.ready.then(() => { ctx.direction = 'ltr'; ctx.align = 'left' ctx.baseline = 'alphabetic' - // Some platforms may return '-0'. - _assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft)", "0"); // Different platforms may render text slightly different. + // Values that are nominally expected to be zero might actually vary by a pixel or so + // if the UA accounts for antialiasing at glyph edges, so we allow a slight deviation. + _assert(Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1"); _assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50"); _assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35"); - _assertSame(Math.abs(ctx.measureText('A').actualBoundingBoxDescent), 0, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent)", "0"); + _assert(Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1"); - _assertSame(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft), 0, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft)", "0"); + _assert(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1"); _assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200"); _assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85"); _assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37"); diff --git a/tests/wpt/web-platform-tests/2dcontext/tools/tests2dtext.yaml b/tests/wpt/web-platform-tests/2dcontext/tools/tests2dtext.yaml index 6d5f8f660fa..e1423284bd8 100644 --- a/tests/wpt/web-platform-tests/2dcontext/tools/tests2dtext.yaml +++ b/tests/wpt/web-platform-tests/2dcontext/tools/tests2dtext.yaml @@ -1088,14 +1088,15 @@ ctx.direction = 'ltr'; ctx.align = 'left' ctx.baseline = 'alphabetic' - // Some platforms may return '-0'. - @assert Math.abs(ctx.measureText('A').actualBoundingBoxLeft) === 0; // Different platforms may render text slightly different. + // Values that are nominally expected to be zero might actually vary by a pixel or so + // if the UA accounts for antialiasing at glyph edges, so we allow a slight deviation. + @assert Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1; @assert ctx.measureText('A').actualBoundingBoxRight >= 50; @assert ctx.measureText('A').actualBoundingBoxAscent >= 35; - @assert Math.abs(ctx.measureText('A').actualBoundingBoxDescent) === 0; + @assert Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1; - @assert Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) === 0; + @assert Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1; @assert ctx.measureText('ABCD').actualBoundingBoxRight >= 200; @assert ctx.measureText('ABCD').actualBoundingBoxAscent >= 85; @assert ctx.measureText('ABCD').actualBoundingBoxDescent >= 37; diff --git a/tests/wpt/web-platform-tests/README.md b/tests/wpt/web-platform-tests/README.md index 3b580da8690..482da428db4 100644 --- a/tests/wpt/web-platform-tests/README.md +++ b/tests/wpt/web-platform-tests/README.md @@ -3,16 +3,15 @@ The web-platform-tests Project [](https://community-tc.services.mozilla.com/api/github/v1/repository/web-platform-tests/wpt/master/latest) -The web-platform-tests Project is a W3C-coordinated attempt to build a -cross-browser test suite for the Web-platform stack. Writing tests in a way -that allows them to be run in all browsers gives browser projects -confidence that they are shipping software that is compatible with other -implementations, and that later implementations will be compatible with -their implementations. This in turn gives Web authors/developers -confidence that they can actually rely on the Web platform to deliver on -the promise of working across browsers and devices without needing extra -layers of abstraction to paper over the gaps left by specification -editors and implementors. +The web-platform-tests Project is a cross-browser test suite for the +Web-platform stack. Writing tests in a way that allows them to be run in all +browsers gives browser projects confidence that they are shipping software that +is compatible with other implementations, and that later implementations will +be compatible with their implementations. This in turn gives Web +authors/developers confidence that they can actually rely on the Web platform +to deliver on the promise of working across browsers and devices without +needing extra layers of abstraction to paper over the gaps left by +specification editors and implementors. The most important sources of information and activity are: diff --git a/tests/wpt/web-platform-tests/css/compositing/root-element-background-transparency-ref.html b/tests/wpt/web-platform-tests/css/compositing/root-element-background-transparency-ref.html new file mode 100644 index 00000000000..4671d44c1c3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/compositing/root-element-background-transparency-ref.html @@ -0,0 +1,7 @@ +<!doctype HTML> +<title>Backround color transparency on the root element blends with a white backdrop</title> +<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/compositing/#pagebackdrop"> +<html style="background: rgb(150, 150, 150)"> + <div id=spacer style="width: 100px; height: 3000px"></div> +</html> diff --git a/tests/wpt/web-platform-tests/css/compositing/root-element-background-transparency.html b/tests/wpt/web-platform-tests/css/compositing/root-element-background-transparency.html new file mode 100644 index 00000000000..910eb08e8d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/compositing/root-element-background-transparency.html @@ -0,0 +1,8 @@ +<!doctype HTML> +<title>Backround color transparency on the root element blends with a white backdrop</title> +<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/compositing/#pagebackdrop"> +<link rel="match" href="root-element-background-transparency-ref.html"> +<html style="background: rgba(45, 45, 45, 0.5)"> + <div id=spacer style="width: 100px; height: 3000px"></div> +</html> diff --git a/tests/wpt/web-platform-tests/css/compositing/root-element-blend-mode-ref.html b/tests/wpt/web-platform-tests/css/compositing/root-element-blend-mode-ref.html new file mode 100644 index 00000000000..14c99f70856 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/compositing/root-element-blend-mode-ref.html @@ -0,0 +1,6 @@ +<!doctype HTML> +<title>Blend-mode on the root stacking context blends with the root element's background.</title> +<html style="background: #000"> + <div style="width: 50px; height: 50px; background: #000"></div> + <div id=spacer style="width: 100px; height: 3000px"></div> +</html> diff --git a/tests/wpt/web-platform-tests/css/compositing/root-element-blend-mode.html b/tests/wpt/web-platform-tests/css/compositing/root-element-blend-mode.html new file mode 100644 index 00000000000..2c97d8b5e8c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/compositing/root-element-blend-mode.html @@ -0,0 +1,9 @@ +<!doctype HTML> +<title>Blend-mode on the root stacking context blends with the root element's background.</title> +<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/compositing/#pagebackdrop"> +<link rel="match" href="root-element-blend-mode-ref.html"> +<html style="background: #000;"> + <div style="width: 50px; height: 50px; background: #E33; mix-blend-mode: multiply"></div> + <div id=spacer style="width: 100px; height: 3000px"></div> +</html> diff --git a/tests/wpt/web-platform-tests/css/compositing/root-element-filter-ref.html b/tests/wpt/web-platform-tests/css/compositing/root-element-filter-ref.html new file mode 100644 index 00000000000..27cfb11b8f4 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/compositing/root-element-filter-ref.html @@ -0,0 +1,8 @@ +<!doctype HTML> +<title>A filter on the root element applies to its background</title> +<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/compositing/#pagebackdrop"> +<html style="background: #FFF"> + <div style="width: 50px; height: 50px; background: #1CC"></div> + <div id=spacer style="width: 100px; height: 3000px"></div> +</html> diff --git a/tests/wpt/web-platform-tests/css/compositing/root-element-filter.html b/tests/wpt/web-platform-tests/css/compositing/root-element-filter.html new file mode 100644 index 00000000000..62bde9dfd99 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/compositing/root-element-filter.html @@ -0,0 +1,9 @@ +<!doctype HTML> +<title>A filter on the root element applies to its background</title> +<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/compositing/#pagebackdrop"> +<link rel="match" href="root-element-filter-ref.html"> +<html style="filter: invert(1); background: #000"> + <div style="width: 50px; height: 50px; background: #E33"></div> + <div id=spacer style="width: 100px; height: 3000px"></div> +</html> diff --git a/tests/wpt/web-platform-tests/css/compositing/root-element-opacity-ref.html b/tests/wpt/web-platform-tests/css/compositing/root-element-opacity-ref.html new file mode 100644 index 00000000000..be2348ab967 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/compositing/root-element-opacity-ref.html @@ -0,0 +1,7 @@ +<!doctype HTML> +<title>Opacity on the root element blends with a white backdrop</title> +<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/compositing/#pagebackdrop"> +<html style="background: #DDD"> + <div id=spacer style="width: 100px; height: 3000px"></div> +</html> diff --git a/tests/wpt/web-platform-tests/css/compositing/root-element-opacity.html b/tests/wpt/web-platform-tests/css/compositing/root-element-opacity.html new file mode 100644 index 00000000000..4885d805ad3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/compositing/root-element-opacity.html @@ -0,0 +1,8 @@ +<!doctype HTML> +<title>Opacity on the root element blends with a white background</title> +<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org"> +<link rel="help" href="https://drafts.fxtf.org/compositing/#pagebackdrop"> +<link rel="match" href="root-element-opacity-ref.html"> +<html style="background: #BBB; opacity: 0.5"> + <div id=spacer style="width: 100px; height: 3000px"></div> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-flexbox/zero-content-size-with-scrollbar-crash.html b/tests/wpt/web-platform-tests/css/css-flexbox/zero-content-size-with-scrollbar-crash.html new file mode 100644 index 00000000000..c38659a9d8c --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-flexbox/zero-content-size-with-scrollbar-crash.html @@ -0,0 +1,6 @@ +<!DOCTYPE html> +<link rel="help" href="https://drafts.csswg.org/css-flexbox-1/"> +<meta name="assert" content="This test passes if the renderer does not crash."/> +<div style="display: flex;"> + <div style="max-width: 0px; overflow: scroll;"></div> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-position-001-ref.html b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-position-001-ref.html new file mode 100644 index 00000000000..aae441ac4e0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/reference/text-underline-position-001-ref.html @@ -0,0 +1,83 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title>text-underline-position reference file</title> + <style> + .outer { + margin: 1em; + clear: left; + } + .outer > div { + margin: .25em; + padding: .25em; + float: left; + border: 1px dotted gray; + } + u { + text-decoration: 2px green underline; + text-underline-offset: .25em; + } + .test1 > div { + writing-mode: initial; + } + .test2 > div { + writing-mode: sideways-rl; + } + .test3 > div { + writing-mode: sideways-lr; + } + .test4 > div { + writing-mode: vertical-rl; + text-orientation: sideways; + } + .test5 > div { + writing-mode: vertical-lr; + text-orientation: sideways; + } + </style> +</head> +<body> + <p class="instructions">Test passes if the left and right boxes match in each case:</p> + <div class="outer test1"> + <div> + <p><u>underlined</u></p> + </div> + <div> + <p><u>underlined</u></p> + </div> + </div> + <div class="outer test2"> + <div> + <p><u>underlined</u></p> + </div> + <div> + <p><u>underlined</u></p> + </div> + </div> + <div class="outer test3"> + <div> + <p><u>underlined</u></p> + </div> + <div> + <p><u>underlined</u></p> + </div> + </div> + <div class="outer test4"> + <div> + <p><u>underlined</u></p> + </div> + <div> + <p><u>underlined</u></p> + </div> + </div> + <div class="outer test5"> + <div> + <p><u>underlined</u></p> + </div> + <div> + <p><u>underlined</u></p> + </div> + </div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-position-001a.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-position-001a.html new file mode 100644 index 00000000000..f79fc9d39fe --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-position-001a.html @@ -0,0 +1,90 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title>text-underline-position test case</title> + <meta name="assert" content="text-underline-position:left has no effect in horizontal typographic mode"> + <link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com"> + <link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#underline-left"> + <link rel="match" href="reference/text-underline-position-001-ref.html"> + <style> + .outer { + margin: 1em; + clear: left; + } + .outer > div { + margin: .25em; + padding: .25em; + float: left; + border: 1px dotted gray; + } + u { + text-decoration: 2px green underline; + text-underline-offset: .25em; + } + .test1 > div { + writing-mode: initial; + } + .test2 > div { + writing-mode: sideways-rl; + } + .test3 > div { + writing-mode: sideways-lr; + } + .test4 > div { + writing-mode: vertical-rl; + text-orientation: sideways; + } + .test5 > div { + writing-mode: vertical-lr; + text-orientation: sideways; + } + .test { + text-underline-position: left; + } + </style> +</head> +<body> + <p class="instructions">Test passes if the left and right boxes match in each case:</p> + <div class="outer test1"> + <div> + <p><u class="test">underlined</u></p> + </div> + <div> + <p><u>underlined</u></p> + </div> + </div> + <div class="outer test2"> + <div> + <p><u class="test">underlined</u></p> + </div> + <div> + <p><u>underlined</u></p> + </div> + </div> + <div class="outer test3"> + <div> + <p><u class="test">underlined</u></p> + </div> + <div> + <p><u>underlined</u></p> + </div> + </div> + <div class="outer test4"> + <div> + <p><u class="test">underlined</u></p> + </div> + <div> + <p><u>underlined</u></p> + </div> + </div> + <div class="outer test5"> + <div> + <p><u class="test">underlined</u></p> + </div> + <div> + <p><u>underlined</u></p> + </div> + </div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-position-001b.html b/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-position-001b.html new file mode 100644 index 00000000000..f8c6ff9aada --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-text-decor/text-underline-position-001b.html @@ -0,0 +1,90 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title>text-underline-position test case</title> + <meta name="assert" content="text-underline-position:right has no effect in horizontal typographic mode"> + <link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com"> + <link rel="help" href="https://drafts.csswg.org/css-text-decor-4/#underline-right"> + <link rel="match" href="reference/text-underline-position-001-ref.html"> + <style> + .outer { + margin: 1em; + clear: left; + } + .outer > div { + margin: .25em; + padding: .25em; + float: left; + border: 1px dotted gray; + } + u { + text-decoration: 2px green underline; + text-underline-offset: .25em; + } + .test1 > div { + writing-mode: initial; + } + .test2 > div { + writing-mode: sideways-rl; + } + .test3 > div { + writing-mode: sideways-lr; + } + .test4 > div { + writing-mode: vertical-rl; + text-orientation: sideways; + } + .test5 > div { + writing-mode: vertical-lr; + text-orientation: sideways; + } + .test { + text-underline-position: right; + } + </style> +</head> +<body> + <p class="instructions">Test passes if the left and right boxes match in each case:</p> + <div class="outer test1"> + <div> + <p><u class="test">underlined</u></p> + </div> + <div> + <p><u>underlined</u></p> + </div> + </div> + <div class="outer test2"> + <div> + <p><u class="test">underlined</u></p> + </div> + <div> + <p><u>underlined</u></p> + </div> + </div> + <div class="outer test3"> + <div> + <p><u class="test">underlined</u></p> + </div> + <div> + <p><u>underlined</u></p> + </div> + </div> + <div class="outer test4"> + <div> + <p><u class="test">underlined</u></p> + </div> + <div> + <p><u>underlined</u></p> + </div> + </div> + <div class="outer test5"> + <div> + <p><u class="test">underlined</u></p> + </div> + <div> + <p><u>underlined</u></p> + </div> + </div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-001-ref.html b/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-001-ref.html new file mode 100644 index 00000000000..f0b53d492a0 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-001-ref.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<html> +<meta charset="utf-8"> +<title>CSS Transforms: Reference Translate gradient background on root element</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<style> + html { + background: green; + } +</style> +<div style="height: 400vh;"></div> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-001.html b/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-001.html new file mode 100644 index 00000000000..72011e37bce --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-001.html @@ -0,0 +1,17 @@ +<!DOCTYPE html> +<html> +<meta charset="utf-8"> +<title>CSS Transforms: Translate gradient background on root element</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-rendering"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=988446"> +<link rel="match" href="transform-translate-background-001-ref.html"> +<meta name="assert" content="Checks that the linear gradient is modified when you vertically translate the root element. The test passes if you see only green."> +<style> + html { + background: linear-gradient(to bottom, red 0%, red 50%, green 50%, green 100%); + transform: translate(0, -250vh); + } +</style> +<div style="height: 400vh;"></div> +</html> diff --git a/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-002.html b/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-002.html new file mode 100644 index 00000000000..b1be5277400 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-transforms/transform-translate-background-002.html @@ -0,0 +1,23 @@ +<!DOCTYPE html> +<html class="reftest-wait"> +<meta charset="utf-8"> +<title>CSS Transforms: Dynamically translate gradient background on root element</title> +<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com"> +<link rel="help" href="https://drafts.csswg.org/css-transforms/#transform-rendering"> +<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=988446"> +<link rel="match" href="transform-translate-background-001-ref.html"> +<meta name="assert" content="Checks that the linear gradient is modified when you dynamically translate the root element. The test passes if you see only green."> +<script src="/common/reftest-wait.js"></script> +<style> + html { + background: linear-gradient(to bottom, red 0%, red 50%, green 50%, green 100%); + } +</style> +<div style="height: 400vh;"></div> +<script> + requestAnimationFrame(() => requestAnimationFrame(() => { + document.documentElement.style.transform = "translate(0, -250vh)"; + takeScreenshot(); + })); +</script> +</html> diff --git a/tests/wpt/web-platform-tests/docs/index.md b/tests/wpt/web-platform-tests/docs/index.md index d1a527e1a75..419c99aca9d 100644 --- a/tests/wpt/web-platform-tests/docs/index.md +++ b/tests/wpt/web-platform-tests/docs/index.md @@ -1,15 +1,14 @@ # web-platform-tests documentation -The web-platform-tests project is a W3C-coordinated attempt to build a -cross-browser test suite for [the Web-platform -stack](https://platform.html5.org). Writing tests in a way that allows them to -be run in all browsers gives browser projects confidence that they are shipping -software which is compatible with other implementations, and that later -implementations will be compatible with their implementations. This in turn -gives Web authors/developers confidence that they can actually rely on the Web -platform to deliver on the promise of working across browsers and devices -without needing extra layers of abstraction to paper over the gaps left by -specification editors and implementors. +The web-platform-tests project is a cross-browser test suite for [the +Web-platform stack](https://platform.html5.org). Writing tests in a way that +allows them to be run in all browsers gives browser projects confidence that +they are shipping software which is compatible with other implementations, and +that later implementations will be compatible with their implementations. This +in turn gives Web authors/developers confidence that they can actually rely on +the Web platform to deliver on the promise of working across browsers and +devices without needing extra layers of abstraction to paper over the gaps left +by specification editors and implementors. The most important sources of information and activity are: diff --git a/tests/wpt/web-platform-tests/docs/writing-tests/testharness-api.md b/tests/wpt/web-platform-tests/docs/writing-tests/testharness-api.md index a17f5795bc3..c882e4daa2d 100644 --- a/tests/wpt/web-platform-tests/docs/writing-tests/testharness-api.md +++ b/tests/wpt/web-platform-tests/docs/writing-tests/testharness-api.md @@ -180,8 +180,12 @@ In the example above, `foo()` returns a Promise that resolves with the string "foo". The `test_function` passed into `promise_test` invokes `foo` and attaches a resolve reaction that verifies the returned value. -Note that in the promise chain constructed in `test_function` assertions don't -need to be wrapped in `step` or `step_func` calls. +Note that in the promise chain constructed in `test_function` +assertions don't need to be wrapped in `step` or `step_func` +calls. However when mixing event handlers and `promise_test`, the +event handler callback functions *do* need to be wrapped since an +exception in these functions does not cause the promise chain to +reject. Unlike Asynchronous Tests, Promise Tests don't start running until after the previous Promise Test finishes. [Under rare diff --git a/tests/wpt/web-platform-tests/element-timing/multiple-redirects-TAO.sub.html b/tests/wpt/web-platform-tests/element-timing/multiple-redirects-TAO.html index 6800f7cf687..6800f7cf687 100644 --- a/tests/wpt/web-platform-tests/element-timing/multiple-redirects-TAO.sub.html +++ b/tests/wpt/web-platform-tests/element-timing/multiple-redirects-TAO.html diff --git a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.html b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.html index 18de7364634..5cd79e4b536 100644 --- a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.html +++ b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.html @@ -7,6 +7,7 @@ <meta name="help" href="https://fetch.spec.whatwg.org/#http-network-or-cache-fetch"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> + <script src="/common/get-host-info.sub.js"></script> </head> <body> <script src="../resources/utils.js"></script> diff --git a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.js b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.js index 7cd4113f506..0adadbc5508 100644 --- a/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.js +++ b/tests/wpt/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin.js @@ -1,6 +1,7 @@ if (this.document === undefined) { importScripts("/resources/testharness.js"); importScripts("../resources/utils.js"); + importScripts("/common/get-host-info.sub.js"); // A nested importScripts() with a referrer-policy should have no effect // on overall worker policy. @@ -8,7 +9,7 @@ if (this.document === undefined) { } var referrerOrigin = location.origin + '/'; -var fetchedUrl = "https://{{domains[www]}}:{{ports[https][0]}}" + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?cors&headers=referer"; +var fetchedUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + "inspect-headers.py?cors&headers=referer"; promise_test(function(test) { return fetch(fetchedUrl).then(function(resp) { diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/blob-popup.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/blob-popup.https.html index 4aef1b84891..a4e53e78062 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/blob-popup.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/blob-popup.https.html @@ -20,15 +20,17 @@ async_test(t => { const blobContents = `<script> const w = window.open("${get_host_info().HTTPS_REMOTE_ORIGIN}/html/cross-origin-opener-policy/resources/coop-coep.py?coop=x&coep=x&channel=${bc.name}", "${bc.name}"); window.opener.furtherPopup = w; - -// w will be closed by its postback iframe. When out of process, -// window.close() does not work. -window.opener.test.add_cleanup(() => w.close()); <\/script>`; const blob = new Blob([blobContents], { type: "text/html" }); const blobURL = URL.createObjectURL(blob); const popup = window.open(blobURL); - t.add_cleanup(() => popup.close()); + t.add_cleanup(() => { + // Close the popups once the test is complete. + // The browsing context of the second popup is closed hence use the + // broadcast channel to trigger the closure. + bc.postMessage("close"); + popup.close(); + }); popup.onload = t.step_func(() => { assert_equals(popup.opener, window); assert_equals(popup.location.href, blobURL); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-navigate-popup.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-navigate-popup.https.html index faa2793e5fa..714a4b6c427 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-navigate-popup.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-navigate-popup.https.html @@ -1,8 +1,12 @@ <!doctype html> <title>Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy: a navigating popup</title> -<meta content=timeout value=long> +<meta name=timeout content=long> +<meta name=variant content=?0-1> +<meta name=variant content=?2-3> +<meta name=variant content=?4-last> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> +<script src="/common/subset-tests.js"></script> <script src="/common/get-host-info.sub.js"></script> <script src="resources/common.js"></script> <script> @@ -35,7 +39,7 @@ "title": "coop unsafe-none/coep", "coop": "unsafe-none", "coep": "require-corp", - "opener": true + "opener": false }, { "title": "coop unsafe-none/no coep", @@ -43,7 +47,12 @@ "coep": "", "opener": false } -].forEach(variant => { +].forEach((variant, i) => { + // Only run specified variants + if (!shouldRunSubTest(i)) { + return; + } + ["same-origin", "same-site"].forEach(site => { const title = `Popup navigating to ${site} with ${variant.title}`; const channel = title.replace(/ /g,"-"); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-redirect.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-redirect.https.html index 2727013783f..83f8f8a33d4 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-redirect.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep-redirect.https.html @@ -1,6 +1,6 @@ <!doctype html> <title>Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy: redirects</title> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> @@ -47,7 +47,7 @@ const coopCOEPPath = new URL("resources/coop-coep.py", window.location).pathname "redirectCOEP": "require-corp", "coop": "same-origin", "coep": "require-corp", - "opener": true + "opener": false }, { "title": "coop unsafe-none/coep to coop unsafe-inherit/coep", @@ -55,7 +55,7 @@ const coopCOEPPath = new URL("resources/coop-coep.py", window.location).pathname "redirectCOEP": "require-corp", "coop": "unsafe-none", "coep": "require-corp", - "opener": true + "opener": false } ].forEach(variant => { const title = `Redirect from ${variant.title}`; diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep.https.html index de1dd56d9d5..f6d975564f4 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coep.https.html @@ -1,6 +1,6 @@ <!doctype html> <title>Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy</title> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> @@ -17,7 +17,7 @@ "title": "popup with coop unsafe-none/coep", "coop": "unsafe-none", "coep": "require-corp", - "opener": true + "opener": false }, { "title": "popup with coop unsafe-none without coep", diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-history-popup.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-history-popup.https.html index bd1cabafd41..a061be992c1 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-history-popup.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-history-popup.https.html @@ -1,6 +1,6 @@ <!doctype html> <title>Cross-Origin-Opener-Policy: a navigating popup that then goes back in history</title> -<meta name="timeout" content="long"> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-popup.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-popup.https.html index 3c6019ace0b..e1741932919 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-popup.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/coop-navigated-popup.https.html @@ -12,7 +12,12 @@ async_test(t => { const noCOOP = "/common/blank.html"; const popupName = token(); const popup = window.open(noCOOP, popupName); - t.add_cleanup(() => popup.close()); + // Close the popup once the test is complete. + // The browsing context is closed after the navigation hence use the broadcast channel + // to trigger the closure. + t.add_cleanup(() => { + bc.postMessage("close"); + }); popup.onload = t.step_func(() => { assert_equals(popup.name, popupName); assert_equals(new URL(popup.document.URL).pathname, noCOOP); @@ -23,6 +28,7 @@ async_test(t => { // string comparison to "" to keep the random token out of error messages. assert_equals(payload.name.length, 0); assert_false(payload.opener); + assert_true(popup.closed); }); const coop = `resources/coop-coep.py?coop=same-origin&coep=&channel=${channel.name}`; popup.location = coop; diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https.html index 73ef1ea29a2..c389058d9ed 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/coep-navigate-popup-unsafe-inherit.https.html @@ -1,6 +1,6 @@ <!doctype html> <title>Historical: Cross-Origin-Opener-Policy and Cross-Origin-Embedder-Policy: a navigating popup</title> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html index a8b6d543cd0..1f522f70e68 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-cross-origin.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html index aaaae2dc317..d7686f23d37 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-origin.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html index fd58b06f783..9a1dc11b417 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-origin-unsafe-allow-outgoing-with-same-site.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html index 7330ff75bcf..b54ff2f4955 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-cross-origin.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html index 01cc6719fd3..b2279094b17 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-origin.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html index b1a664dd9a5..371aa41d011 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-unsafe-allow-outgoing-with-same-site.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html index d0fc7c79841..af14446257b 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-cross-origin.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html index 67d2523e28d..ec463a17706 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-origin.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html index 78b7ca8fcad..80ed35424c9 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/historical/popup-same-site-with-same-site.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html index 0c33b40b181..b03949e7a9f 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html @@ -1,5 +1,6 @@ <!doctype html> <meta charset=utf-8> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> @@ -8,15 +9,6 @@ <div id=log></div> <script> [ -[SAME_ORIGIN, SAME_ORIGIN, "same-origin", false, false], -[SAME_SITE, SAME_ORIGIN, "same-origin", false, false], -[CROSS_ORIGIN, SAME_ORIGIN, "same-origin", false, false], -[SAME_ORIGIN, SAME_SITE, "same-origin", false, false], -[SAME_SITE, SAME_SITE, "same-origin", false, false], -[CROSS_ORIGIN, SAME_SITE, "same-origin", false, false], -[SAME_ORIGIN, CROSS_ORIGIN, "same-origin", false, false], -[SAME_SITE, CROSS_ORIGIN, "same-origin", false, false], -[CROSS_ORIGIN, CROSS_ORIGIN, "same-origin", false, false], [SAME_ORIGIN, SAME_ORIGIN, "same-origin-allow-popups", true, true], [SAME_SITE, SAME_ORIGIN, "same-origin-allow-popups", false, false], [CROSS_ORIGIN, SAME_ORIGIN, "same-origin-allow-popups", false, false], @@ -26,15 +18,6 @@ [SAME_ORIGIN, CROSS_ORIGIN, "same-origin-allow-popups", false, false], [SAME_SITE, CROSS_ORIGIN, "same-origin-allow-popups", false, false], [CROSS_ORIGIN, CROSS_ORIGIN, "same-origin-allow-popups", false, false], -[SAME_ORIGIN, SAME_ORIGIN, "", true, true], -[SAME_SITE, SAME_ORIGIN, "", true, true], -[CROSS_ORIGIN, SAME_ORIGIN, "", true, true], -[SAME_ORIGIN, SAME_SITE, "", true, true], -[SAME_SITE, SAME_SITE, "", true, true], -[CROSS_ORIGIN, SAME_SITE, "", true, true], -[SAME_ORIGIN, CROSS_ORIGIN, "", true, true], -[SAME_SITE, CROSS_ORIGIN, "", true, true], -[CROSS_ORIGIN, CROSS_ORIGIN, "", true, true], ].forEach( value => { run_coop_test_iframe("same-origin-allow-popups", value[0], value[1], value[2], value[3], value[4]); }); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html.headers index d83ed86fb9b..d83ed86fb9b 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups.https.html.headers +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin-allow-popups.https.html.headers diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html new file mode 100644 index 00000000000..66b0a4afa7f --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta name=timeout content=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> + +<div id=log></div> +<script> +[ +[SAME_ORIGIN, SAME_ORIGIN, "same-origin", false, false], +[SAME_SITE, SAME_ORIGIN, "same-origin", false, false], +[CROSS_ORIGIN, SAME_ORIGIN, "same-origin", false, false], +[SAME_ORIGIN, SAME_SITE, "same-origin", false, false], +[SAME_SITE, SAME_SITE, "same-origin", false, false], +[CROSS_ORIGIN, SAME_SITE, "same-origin", false, false], +[SAME_ORIGIN, CROSS_ORIGIN, "same-origin", false, false], +[SAME_SITE, CROSS_ORIGIN, "same-origin", false, false], +[CROSS_ORIGIN, CROSS_ORIGIN, "same-origin", false, false], +].forEach( value => { + run_coop_test_iframe("same-origin-allow-popups", value[0], value[1], value[2], value[3], value[4]); +}); + + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html.headers new file mode 100644 index 00000000000..d83ed86fb9b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-same-origin.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: same-origin-allow-popups diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html new file mode 100644 index 00000000000..d2f2783606e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html @@ -0,0 +1,26 @@ +<!doctype html> +<meta charset=utf-8> +<meta name=timeout content=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> + +<div id=log></div> +<script> +[ +[SAME_ORIGIN, SAME_ORIGIN, "", true, true], +[SAME_SITE, SAME_ORIGIN, "", true, true], +[CROSS_ORIGIN, SAME_ORIGIN, "", true, true], +[SAME_ORIGIN, SAME_SITE, "", true, true], +[SAME_SITE, SAME_SITE, "", true, true], +[CROSS_ORIGIN, SAME_SITE, "", true, true], +[SAME_ORIGIN, CROSS_ORIGIN, "", true, true], +[SAME_SITE, CROSS_ORIGIN, "", true, true], +[CROSS_ORIGIN, CROSS_ORIGIN, "", true, true], +].forEach( value => { + run_coop_test_iframe("same-origin-allow-popups", value[0], value[1], value[2], value[3], value[4]); +}); + + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html.headers new file mode 100644 index 00000000000..d83ed86fb9b --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-allow-popups-to-unsafe-none.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: same-origin-allow-popups diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html new file mode 100644 index 00000000000..635f7ab3b87 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html @@ -0,0 +1,25 @@ +<!doctype html> +<meta charset=utf-8> +<meta name=timeout content=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> + +<div id=log></div> +<script> +[ +[SAME_ORIGIN, SAME_ORIGIN, "same-origin", true, true], +[SAME_SITE, SAME_ORIGIN, "same-origin", false, false], +[CROSS_ORIGIN, SAME_ORIGIN, "same-origin", false, false], +[SAME_ORIGIN, SAME_SITE, "same-origin", false, false], +[SAME_SITE, SAME_SITE, "same-origin", false, false], +[CROSS_ORIGIN, SAME_SITE, "same-origin", false, false], +[SAME_ORIGIN, CROSS_ORIGIN, "same-origin", false, false], +[SAME_SITE, CROSS_ORIGIN, "same-origin", false, false], +[CROSS_ORIGIN, CROSS_ORIGIN, "same-origin", false, false], +].forEach( value => { + run_coop_test_iframe("same-origin", value[0], value[1], value[2], value[3], value[4]); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html.headers index 46ad58d83bf..46ad58d83bf 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin.https.html.headers +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-same-origin.https.html.headers diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html index 2b7decd39cf..d6521bd9dc4 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html @@ -1,5 +1,6 @@ <!doctype html> <meta charset=utf-8> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> @@ -8,15 +9,6 @@ <div id=log></div> <script> [ -[SAME_ORIGIN, SAME_ORIGIN, "same-origin", true, true], -[SAME_SITE, SAME_ORIGIN, "same-origin", false, true], -[CROSS_ORIGIN, SAME_ORIGIN, "same-origin", false, true], -[SAME_ORIGIN, SAME_SITE, "same-origin", false, false], -[SAME_SITE, SAME_SITE, "same-origin", false, true], -[CROSS_ORIGIN, SAME_SITE, "same-origin", false, true], -[SAME_ORIGIN, CROSS_ORIGIN, "same-origin", false, false], -[SAME_SITE, CROSS_ORIGIN, "same-origin", false, true], -[CROSS_ORIGIN, CROSS_ORIGIN, "same-origin", false, true], [SAME_ORIGIN, SAME_ORIGIN, "", false, false], [SAME_SITE, SAME_ORIGIN, "", false, true], [CROSS_ORIGIN, SAME_ORIGIN, "", false, true], diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-meta-http-equiv.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html.headers index 46ad58d83bf..46ad58d83bf 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-meta-http-equiv.https.html.headers +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-same-origin-to-unsafe-none.https.html.headers diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html index 78a18118504..ad7c0e263ab 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html @@ -1,5 +1,6 @@ <!doctype html> <meta charset=utf-8> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> @@ -17,15 +18,6 @@ [SAME_ORIGIN, CROSS_ORIGIN, "same-origin", false, false], [SAME_SITE, CROSS_ORIGIN, "same-origin", false, false], [CROSS_ORIGIN, CROSS_ORIGIN, "same-origin", false, false], -[SAME_ORIGIN, SAME_ORIGIN, "", true, true], -[SAME_SITE, SAME_ORIGIN, "", true, true], -[CROSS_ORIGIN, SAME_ORIGIN, "", true, true], -[SAME_ORIGIN, SAME_SITE, "", true, true], -[SAME_SITE, SAME_SITE, "", true, true], -[CROSS_ORIGIN, SAME_SITE, "", true, true], -[SAME_ORIGIN, CROSS_ORIGIN, "", true, true], -[SAME_SITE, CROSS_ORIGIN, "", true, true], -[CROSS_ORIGIN, CROSS_ORIGIN, "", true, true], ].forEach( value => { run_coop_test_iframe("unsafe-none", value[0], value[1], value[2], value[3], value[4]); }); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html.headers index 073ce7adfbd..073ce7adfbd 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none.https.html.headers +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-same-origin.https.html.headers diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html new file mode 100644 index 00000000000..8113189cc86 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html @@ -0,0 +1,25 @@ +<!doctype html> +<meta charset=utf-8> +<meta name=timeout content=long> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/common.js"></script> + +<div id=log></div> +<script> +[ +[SAME_ORIGIN, SAME_ORIGIN, "", true, true], +[SAME_SITE, SAME_ORIGIN, "", true, true], +[CROSS_ORIGIN, SAME_ORIGIN, "", true, true], +[SAME_ORIGIN, SAME_SITE, "", true, true], +[SAME_SITE, SAME_SITE, "", true, true], +[CROSS_ORIGIN, SAME_SITE, "", true, true], +[SAME_ORIGIN, CROSS_ORIGIN, "", true, true], +[SAME_SITE, CROSS_ORIGIN, "", true, true], +[CROSS_ORIGIN, CROSS_ORIGIN, "", true, true], +].forEach( value => { + run_coop_test_iframe("unsafe-none", value[0], value[1], value[2], value[3], value[4]); +}); + +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html.headers b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html.headers new file mode 100644 index 00000000000..073ce7adfbd --- /dev/null +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/iframe-popup-unsafe-none-to-unsafe-none.https.html.headers @@ -0,0 +1 @@ +Cross-Origin-Opener-Policy: unsafe-none diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/no-https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/no-https.html index f4e926b2eb2..db15d5c676e 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/no-https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/no-https.html @@ -1,5 +1,5 @@ <!doctype html> -<meta name="timeout" content="long"> +<meta name=timeout content=long> <title>Cross-Origin-Opener-Policy requires secure contexts</title> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-redirect-cache.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-redirect-cache.https.html index 0524878a03a..d68c80664bc 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-redirect-cache.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-redirect-cache.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta name="timeout" content="long"> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> @@ -15,6 +15,7 @@ function url_test_cache(t, url, channelName, hasOpener) { const payload = event.data; assert_equals(payload.name, hasOpener ? channelName : ""); assert_equals(payload.opener, hasOpener); + assert_equals(w.closed, !hasOpener); bc.close() // test the same url for cache @@ -23,9 +24,7 @@ function url_test_cache(t, url, channelName, hasOpener) { const w = window.open(url, channelName); - // w will be closed by its postback iframe. When out of process, - // window.close() does not work. - t.add_cleanup(() => w.close()); + // The popup is closed by url_test. } // Redirect from hostA to hostB with same coop and coep. diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html index cea3788ba83..74ded50d667 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-cross-origin.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html index a50231f8228..b67db7e7066 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-origin.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html index 53b4263a70f..af7836f77ee 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-allow-popups-with-same-site.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html index 9f7d27b3c8d..f72f8a59be2 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-cross-origin.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html index c84219a80f5..5798851f686 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-origin.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html index b875cc2e0e4..1af0f7ca3ac 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-same-origin-with-same-site.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html index 5cbf5b4c20c..6b6397c4869 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-cross-origin.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html index f8a4ebe7128..66d720f7e92 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-origin.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html index e38acf4fcb1..58ea328f0cf 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unsafe-none-with-same-site.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html index d89398cd653..6b5bf18bf43 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-cross-origin.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html index cb6fc02ac17..6000ec600f8 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-origin.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html index 6e0edfa0423..2f9d6f15e23 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-unspecified-with-same-site.https.html @@ -1,6 +1,6 @@ <!doctype html> <meta charset=utf-8> -<meta content=timeout value=long> +<meta name=timeout content=long> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src="/common/get-host-info.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js index 59ba33d65b0..760db60365f 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/common.js @@ -12,13 +12,17 @@ function url_test(t, url, channelName, hasOpener, openerDOMAccess) { if (openerDOMAccess !== undefined) { assert_equals(payload.openerDOMAccess, openerDOMAccess, 'openerDOMAccess'); } + assert_equals(w.closed, !hasOpener, 'Openee browsing context closed'); }); const w = window.open(url, channelName); - // w will be closed by its postback iframe. When out of process, - // window.close() does not work. - t.add_cleanup(() => w.close()); + // Close the popup once the test is complete. + // The browsing context might be closed hence use the broadcast channel + // to trigger the closure. + t.add_cleanup(() => { + bc.postMessage("close"); + }); } function coop_coep_test(t, host, coop, coep, channelName, hasOpener, openerDOMAccess) { @@ -43,7 +47,14 @@ function run_coop_test_iframe (documentTitle, iframe_origin, popup_origin, popup const name = iframe_origin.name + "_iframe_opening_" + popup_origin.name + "_popup_with_coop_" + popup_coop; async_test(t => { const frame = document.createElement("iframe"); - t.add_cleanup(() => { frame.remove(); }); + + // Close the popup and remove the frame once the test is + // complete. The browsing context might be closed hence use the + // broadcast channel to trigger the closure. + t.add_cleanup(() => { + frame.remove(); + bc.postMessage("close"); + }); const origin = CROSS_ORIGIN.origin; const path = new URL("resources/iframe-popup.sub.html", window.location).pathname; diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-coep.py b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-coep.py index e6f655ab728..0271d7834af 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-coep.py +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/coop-coep.py @@ -50,6 +50,13 @@ def main(request, response): openerDOMAccessAllowed = !!self.opener.document.URL; } catch(ex) { } + // Handle the response from the frame, closing the popup once the + // test completes. + addEventListener("message", event => { + if (event.data == "close") { + close(); + } + }); const iframe = document.querySelector("iframe"); iframe.onload = () => { const payload = { name: self.name, opener: !!self.opener, openerDOMAccess: openerDOMAccessAllowed }; diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/postback.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/postback.html index cf3c93bbe1d..5955e2d7593 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/postback.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/resources/postback.html @@ -3,8 +3,17 @@ <script> const channelName = new URL(location).searchParams.get("channel"); const bc = new BroadcastChannel(channelName); + +// Handle the close message from the test-cleanup, forwarding it to the +// top level document, as this iframe and the opening document might not +// be able to close the popup. +bc.onmessage = event => { + if (event.data == "close") { + top.postMessage("close", "*"); + } +}; + window.addEventListener("message", event => { bc.postMessage(event.data); - window.parent.close(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-crash.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-crash.html new file mode 100644 index 00000000000..111dcbe5338 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-crash.html @@ -0,0 +1,9 @@ +<!DOCTYPE html> +<link rel="help" href="https://crbug.com/1039241"> +<div style="width: min-content;"> + <div style="writing-mode:vertical-lr;"> + <fieldset> + <div style="width:10%;"></div> + </fieldset> + </div> +</div> diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/object-fallback-text-decoration-ref.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/object-fallback-text-decoration-ref.html new file mode 100644 index 00000000000..9481e80ac81 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/object-fallback-text-decoration-ref.html @@ -0,0 +1,3 @@ +<!doctype html> +<title>Test reference</title> +<span style="text-decoration:underline">This text should be underlined.</span> diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/object-fallback-text-decoration.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/object-fallback-text-decoration.html new file mode 100644 index 00000000000..89657ef8a2d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/embedded-content/object-fallback-text-decoration.html @@ -0,0 +1,9 @@ +<!doctype html> +<title>Rendering of object element fallback with text-decoration</title> +<link rel="match" href="object-fallback-text-decoration-ref.html"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/rendering.html#embedded-content-rendering-rules"> +<meta name="assert" content="Checks that text-decoration applies to rendered object fallback."> +<style> + object { text-decoration: underline; } +</style> +<object>This text should be underlined.</object> diff --git a/tests/wpt/web-platform-tests/html/rendering/the-details-element/summary-text-decoration-ref.html b/tests/wpt/web-platform-tests/html/rendering/the-details-element/summary-text-decoration-ref.html new file mode 100644 index 00000000000..8b6105fd2ec --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/the-details-element/summary-text-decoration-ref.html @@ -0,0 +1,5 @@ +<!doctype html> +<title>Test reference</title> +<details> + <summary><span style="text-decoration:underline">This text should be underlined.</span></summary> +</details> diff --git a/tests/wpt/web-platform-tests/html/rendering/the-details-element/summary-text-decoration.html b/tests/wpt/web-platform-tests/html/rendering/the-details-element/summary-text-decoration.html new file mode 100644 index 00000000000..80bbd44c46c --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/the-details-element/summary-text-decoration.html @@ -0,0 +1,11 @@ +<!doctype html> +<title>Rendering of summary element with text-decoration</title> +<link rel="match" href="summary-text-decoration-ref.html"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/rendering.html#the-details-and-summary-elements"> +<meta name="assert" content="Checks that text-decoration applies to rendered summary element."> +<style> + summary { text-decoration: underline; } +</style> +<details> + <summary>This text should be underlined.</summary> +</details> diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.fillStyle.sub.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.fillStyle.sub.html index 6695138c57b..70c5f194ff6 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.fillStyle.sub.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/the-canvas-element/security.pattern.fillStyle.sub.html @@ -3,6 +3,7 @@ <title>Canvas test: security.pattern.canvas.fillStyle.cross</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> <script src="/common/media.js"></script> <script src="/2dcontext/resources/canvas-tests.js"></script> @@ -11,8 +12,8 @@ <script> -forEachCanvasSource("http://{{domains[www1]}}:{{ports[http][0]}}", - "http://{{domains[]}}:{{ports[http][0]}}", +forEachCanvasSource(get_host_info().HTTP_REMOTE_ORIGIN, + get_host_info().HTTP_ORIGIN, (name, factory) => { promise_test(_ => { return factory().then(source => { diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/legacy/fuzzy-ref-2.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/legacy/fuzzy-ref-2.html.ini index 0bbb2bf0aa5..cdfd9736c54 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/legacy/fuzzy-ref-2.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/legacy/fuzzy-ref-2.html.ini @@ -1,2 +1,4 @@ [fuzzy-ref-2.html] - fuzzy: maxDifference=255;100-100 + fuzzy: + if os == "mac" and product == "chrome": maxDifference=254-255;100-100 + maxDifference=255;100-100 diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/legacy/reftest_fuzzy_chain_ini.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/legacy/reftest_fuzzy_chain_ini.html.ini index 69dc018f389..d3776e243e4 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/legacy/reftest_fuzzy_chain_ini.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/legacy/reftest_fuzzy_chain_ini.html.ini @@ -1,2 +1,4 @@ [reftest_fuzzy_chain_ini.html] - fuzzy: maxDifference=255;100-100 + fuzzy: + if os == "mac" and product == "chrome": maxDifference=254-255;100-100 + maxDifference=255;100-100 diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_1.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_1.html.ini new file mode 100644 index 00000000000..44f185357bc --- /dev/null +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_1.html.ini @@ -0,0 +1,3 @@ +[reftest_fuzzy_1.html] + fuzzy: + if os == "mac" and product == "chrome": fuzzy-ref-1.html:254-255;100 diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_full.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_full.html.ini index 0ebde2f4a62..d682550d53e 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_full.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_full.html.ini @@ -1,3 +1,6 @@ [reftest_fuzzy_ini_full.html] - fuzzy: [maxDifference=1;100-100, - reftest_fuzzy_ini_full.html==fuzzy-ref-1.html:255;100] + fuzzy: + if os == "mac" and product == "chrome": [maxDifference=1;100-100, + reftest_fuzzy_ini_full.html==fuzzy-ref-1.html:254-255;100] + if 1 == 1: [maxDifference=1;100-100, # 'if 1 == 1:' is a workaround for a parser bug + reftest_fuzzy_ini_full.html==fuzzy-ref-1.html:255;100] diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_ref_only.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_ref_only.html.ini index 70c0446b5dc..4437fceff89 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_ref_only.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_ref_only.html.ini @@ -1,4 +1,8 @@ [reftest_fuzzy_ini_ref_only.html] - fuzzy: [maxDifference=1;100-100, - fuzzy-ref-1.html:maxDifference=255;100-100, - reftest_fuzzy==fuzzy-ref-2.html:maxDifference=1;100-100] + fuzzy: + if os == "mac" and product == "chrome": [maxDifference=1;100-100, + fuzzy-ref-1.html:maxDifference=254-255;100-100, + reftest_fuzzy==fuzzy-ref-2.html:maxDifference=1;100-100] + if 1 == 1: [maxDifference=1;100-100, # 1 == 1 is a workaround for a parser bug. + fuzzy-ref-1.html:maxDifference=255;100-100, + reftest_fuzzy==fuzzy-ref-2.html:maxDifference=1;100-100] diff --git a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_short.html.ini b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_short.html.ini index 1859d256800..27e3290e6fb 100644 --- a/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_short.html.ini +++ b/tests/wpt/web-platform-tests/infrastructure/metadata/infrastructure/reftest/reftest_fuzzy_ini_short.html.ini @@ -1,2 +1,4 @@ [reftest_fuzzy_ini_short.html] - fuzzy: maxDifference=255;100-100 + fuzzy: + if os == "mac" and product == "chrome": maxDifference=254-255;100-100 + maxDifference=255;100-100 diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/multiple-redirects-TAO.html b/tests/wpt/web-platform-tests/largest-contentful-paint/multiple-redirects-TAO.html new file mode 100644 index 00000000000..ec8ddc3ec61 --- /dev/null +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/multiple-redirects-TAO.html @@ -0,0 +1,62 @@ +<!DOCTYPE HTML> +<html> +<head> +<meta charset="utf-8" /> +<title>This test validates some Timing-Allow-Origin header usage in multiple redirects.</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/largest-contentful-paint-helpers.js"></script> +<script src="/common/get-host-info.sub.js"></script> +</head> +<img id='image'></img> +<body> +<script> +async_test(t => { + assert_precondition(window.LargestContentfulPaint, "LargestContentfulPaint is not implemented"); + let destUrl = get_host_info().HTTP_REMOTE_ORIGIN + + '/element-timing/resources/multiple-redirects.py?'; + destUrl += 'redirect_count=2'; + // The final resource has '*' in TAO header, so will not affect the result. + destUrl += '&final_resource=/element-timing/resources/circle-tao.svg'; + destUrl += '&origin1=' + get_host_info().UNAUTHENTICATED_ORIGIN; + destUrl += '&origin2=' + get_host_info().HTTP_REMOTE_ORIGIN; + const taoCombinations = [ + {tao1: location.origin, tao2: location.origin, passes: false}, + {tao1: location.origin, tao2: get_host_info().HTTP_REMOTE_ORIGIN, passes: false}, + {tao1: location.origin, tao2: 'null', passes: true}, + {tao1: location.origin, tao2: '*', passes: true}, + {tao1: location.origin, tao2: location.origin, passes: false}, + {tao1: 'null', tao2: '*', passes: false}, + {tao1: '*', tao2: 'null', passes: true}, + ]; + function getURL(item) { + return destUrl + '&tao1=' + item.tao1 + '&tao2=' + item.tao2; + } + function setImage(index) { + const image = document.getElementById('image'); + const item = taoCombinations[index]; + image.src = getURL(item); + } + let observedCount = 0; + let beforeLoad = performance.now(); + new PerformanceObserver(t.step_func(entries => { + assert_equals(entries.getEntries().length, 1, 'There should be a single entry.'); + const e = entries.getEntries()[0]; + const item = taoCombinations[observedCount]; + const url = getURL(item); + const options = item.passes ? [] : ['renderTimeIs0']; + checkImage(e, url, 'image', 200*200, beforeLoad, options); + observedCount++; + if (observedCount === taoCombinations.length) { + t.done(); + } else { + beforeLoad = performance.now(); + setImage(observedCount); + } + })).observe({entryTypes: ['largest-contentful-paint']}); + setImage(0); +}, 'Cross-origin images with passing/failing TAO should/shouldn\'t have its renderTime set.'); +</script> +</body> +</html> + diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-baseline.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-baseline.html index 1541b2d6ce1..c92cbba922f 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-baseline.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-baseline.html @@ -20,7 +20,7 @@ window.addEventListener("load", runTests); function runTests() { - ["Mrow", "Sqrt", "Style", "Error", "Phantom", "Math", "Menclose", "Mpadded"].forEach((tag) => { + ["Mrow", "Sqrt", "Style", "Error", "Phantom", "Math", "Menclose", "Mpadded", "Unknown"].forEach((tag) => { var x = document.getElementById("above" + tag).getBoundingClientRect(); var y = document.getElementById("below" + tag).getBoundingClientRect(); test(function() { @@ -43,8 +43,10 @@ <math><mspace id="aboveMath" width="10px" height="30px" style="background: purple"></mspace><mspace id="belowMath" width="10px" depth="30px" style="background: blue"></mspace></math> <math><menclose notation="box"><mspace id="aboveMenclose" width="10px" height="30px" style="background: purple" ></mspace><mspace id="belowMenclose" width="10px" depth="30px" style="background: blue"></mspace></menclose></math> - <math><mpadded notation="box"><mspace id="aboveMpadded" width="10px" height="30px" style="background: purple" + <math><mpadded lspace="10px"><mspace id="aboveMpadded" width="10px" height="30px" style="background: purple" ></mspace><mspace id="belowMpadded" width="10px" depth="30px" style="background: blue"></mspace></mpadded></math> + <math><unknown><mspace id="aboveUnknown" width="10px" height="30px" style="background: purple" +></mspace><mspace id="belowUnknown" width="10px" depth="30px" style="background: blue"></mspace></unknown></math> </p> </body> </html> diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-stretchy.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-stretchy.html index b6a51762dfd..4b89dd6fa5f 100644 --- a/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-stretchy.html +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/inferred-mrow-stretchy.html @@ -31,7 +31,7 @@ window.addEventListener("load", () => { document.fonts.ready.then(runTests); }); function runTests() { - ["Mrow", "Sqrt", "Style", "Error", "Phantom", "Math", "Menclose", "Mpadded"].forEach((tag) => { + ["Mrow", "Sqrt", "Style", "Error", "Phantom", "Math", "Menclose", "Mpadded", "Unknown"].forEach((tag) => { var mo = document.getElementById("mo" + tag); test(function() { assert_true(MathMLFeatureDetection.has_mspace()); @@ -52,7 +52,8 @@ <math><mphantom><mo style="visibilty: visible;" id="moPhantom">↨</mo><mspace width="1px" height="100px" style="background: magenta"></mspace></mphantom></math> <math><mo id="moMath">↨</mo><mspace width="1px" height="100px" style="background: magenta"></mspace></math> <math><menclose notation="box"><mo id="moMenclose">↨</mo><mspace width="1px" height="100px" style="background: magenta"></mspace></menclose></math> - <math><mpadded notation="box"><mo id="moMpadded">↨</mo><mspace width="1px" height="100px" style="background: magenta"></mspace></mpadded></math> + <math><mpadded lspace="10px"><mo id="moMpadded">↨</mo><mspace width="1px" height="100px" style="background: magenta"></mspace></mpadded></math> + <math><unknown><mo id="moUnknown">↨</mo><mspace width="1px" height="100px" style="background: magenta"></mspace></unknown></math> </p> </body> </html> diff --git a/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/spacing.html b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/spacing.html new file mode 100644 index 00000000000..4bdfc9a001a --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/presentation-markup/mrow/spacing.html @@ -0,0 +1,51 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Spacing in mrows</title> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#horizontally-group-sub-expressions-mrow"> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#radicals-msqrt-mroot"> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#style-change-mstyle"> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#error-message-merror"> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#making-sub-expressions-invisible-mphantom"> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-top-level-math-element"> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#enclose-expression-inside-notation-menclose"> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#adjust-space-around-content-mpadded"> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#operator-fence-separator-or-accent-mo"> +<meta name="assert" content="Spacing is added around operators inside mrow-like elements."> +<script src="/mathml/support/feature-detection.js"></script> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script type="text/javascript"> + setup({ explicit_done: true }); + window.addEventListener("load", () => { document.fonts.ready.then(runTests); }); + function runTests() + { + ["Mrow", "Sqrt", "Style", "Error", "Phantom", "Math", "Menclose", "Mpadded", "Unknown"].forEach((tag) => { + test(function() { + assert_true(MathMLFeatureDetection.has_operator_spacing()); + var mrow = document.getElementById(tag); + var mn1 = mrow.firstElementChild.getBoundingClientRect(); + var mn2 = mrow.lastElementChild.getBoundingClientRect(); + assert_greater_than_equal(mn2.left - mn1.right, 50); + }, `operator spacing inside ${tag}`); + }); + done(); + } +</script> +</head> +<body> + <div id="log"></div> + <p> + <math><mrow id="Mrow"><mn>1</mn><mo lspace="50px">|</mo><mn>2</mn></mrow></math> + <math><msqrt id="Sqrt"><mn>1</mn><mo lspace="50px">|</mo><mn>2</mn></msqrt></math> + <math><mstyle id="Style"><mn>1</mn><mo lspace="50px">|</mo><mn>2</mn></mstyle></math> + <math><merror id="Error"><mn>1</mn><mo lspace="50px"></mo><mn>2</mn></merror></math> + <math><mphantom id="Phantom"><mn>1</mn><mo lspace="50px">|</mo><mn>2</mn></mphantom></math> + <math id="Math"><mn>1</mn><mo lspace="50px">|</mo><mn>2</mn></math> + <math><menclose id="Menclose" notation="box"><mn>1</mn><mo lspace="50px">|</mo><mn>2</mn></menclose></math> + <math><mpadded id="Mpadded" lspace="10px"><mn>1</mn><mo lspace="50px">|</mo><mn>2</mn></mpadded></math> + <math><unknown id="Unknown"><mn>1</mn><mo lspace="50px">|</mo><mn>2</mn></unknown></math> + </p> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/mathml/support/feature-detection.js b/tests/wpt/web-platform-tests/mathml/support/feature-detection.js index 1952d3b06c1..7ad4d953d08 100644 --- a/tests/wpt/web-platform-tests/mathml/support/feature-detection.js +++ b/tests/wpt/web-platform-tests/mathml/support/feature-detection.js @@ -24,35 +24,11 @@ var MathMLFeatureDetection = { }, "has_menclose": function() { - if (!this.hasOwnProperty("_has_menclose")) { - document.body.insertAdjacentHTML("beforeend", "<math>\ -<mrow style='font-size: 20px !important'>\ - <mrow>\ - <mrow>\ - <mrow>\ - <mtext>A</mtext>\ - </mrow>\ - </mrow>\ - </mrow>\ -</mrow>\ -<menclose notation='box' style='font-size: 20px !important'>\ - <menclose notation='box'>\ - <menclose notation='box'>\ - <menclose notation='box'>\ - <mtext>A</mtext>\ - </menclose>\ - </menclose>\ - </menclose>\ -</menclose>\ -</math>"); - var math = document.body.lastElementChild; - // The boxes will make menclose wider than mrow, if the former is supported. - this._has_menclose = - math.lastElementChild.getBoundingClientRect().width - - math.firstElementChild.getBoundingClientRect().width > 5; - document.body.removeChild(math); - } - return this._has_menclose; + // Just check whether <mrow> is supported because discussion on this is + // still open ( https://github.com/mathml-refresh/mathml/issues/105 ) + // and it would have to behave at least like an mrow, even if it becomes + // an unknown element at the end. + return this.has_mrow(); }, "has_merror": function() { diff --git a/tests/wpt/web-platform-tests/measure-memory/measure-memory.tentative.any.js b/tests/wpt/web-platform-tests/measure-memory/measure-memory.tentative.any.js index c4f47a0b084..cf42e2c9f46 100644 --- a/tests/wpt/web-platform-tests/measure-memory/measure-memory.tentative.any.js +++ b/tests/wpt/web-platform-tests/measure-memory/measure-memory.tentative.any.js @@ -1,25 +1,62 @@ +function checkMeasureMemoryResultEntry(entry, checkUrl) { + assert_own_property(entry, "jsMemoryEstimate"); + assert_own_property(entry, "jsMemoryRange"); + assert_equals(entry.jsMemoryRange.length, 2); + assert_greater_than_equal(entry.jsMemoryRange[1], entry.jsMemoryRange[0]); + assert_greater_than_equal(entry.jsMemoryEstimate, entry.jsMemoryRange[0]); + assert_greater_than_equal(entry.jsMemoryRange[1], entry.jsMemoryEstimate); + if (checkUrl) { + assert_own_property(entry, "url"); + } +} + function checkMeasureMemoryResultSummary(result) { assert_own_property(result, "total"); - assert_own_property(result.total, "jsMemoryEstimate"); - assert_own_property(result.total, "jsMemoryRange"); - assert_equals(result.total.jsMemoryRange.length, 2); - assert_greater_than_equal( - result.total.jsMemoryRange[1], - result.total.jsMemoryRange[0]); - assert_greater_than_equal( - result.total.jsMemoryEstimate, - result.total.jsMemoryRange[0]); - assert_greater_than_equal( - result.total.jsMemoryRange[1], - result.total.jsMemoryEstimate); + checkMeasureMemoryResultEntry(result.total, false); +} + +function checkMeasureMemoryResultDetails(result) { + assert_own_property(result, "current"); + checkMeasureMemoryResultEntry(result.current, true); + assert_own_property(result, "other"); + for (other of result.other) { + checkMeasureMemoryResultEntry(other, true); + } } promise_test(async testCase => { - let result = await performance.measureMemory(); - checkMeasureMemoryResultSummary(result); + try { + let result = await performance.measureMemory(); + checkMeasureMemoryResultSummary(result); + } catch (error) { + if (!(error instanceof DOMException)) { + throw error; + } + assert_equals(error.name, "SecurityError"); + } }, 'Well-formed result of performance.measureMemory with default arguments.'); promise_test(async testcase => { - let result = await performance.measureMemory({detailed: false}); - checkMeasureMemoryResultSummary(result); -}, 'well-formed result of performance.measurememory with detailed=false.'); + try { + let result = await performance.measureMemory({detailed: false}); + checkMeasureMemoryResultSummary(result); + } catch (error) { + if (!(error instanceof DOMException)) { + throw error; + } + assert_equals(error.name, "SecurityError"); + } +}, 'well-formed result of performance.measureMemory with detailed=false.'); + +promise_test(async testcase => { + try { + let result = await performance.measureMemory({detailed: true}); + checkMeasureMemoryResultSummary(result); + checkMeasureMemoryResultDetails(result); + } catch (error) { + if (!(error instanceof DOMException)) { + throw error; + } + assert_equals(error.name, "SecurityError"); + } +}, 'well-formed result of performance.measureMemory with detailed=true.'); diff --git a/tests/wpt/web-platform-tests/native-file-system/native_FileSystemBaseHandle-postMessage-manual.https.tentative.html b/tests/wpt/web-platform-tests/native-file-system/native_FileSystemBaseHandle-postMessage-manual.https.tentative.html index 266238c4acc..e04be7df5fc 100644 --- a/tests/wpt/web-platform-tests/native-file-system/native_FileSystemBaseHandle-postMessage-manual.https.tentative.html +++ b/tests/wpt/web-platform-tests/native-file-system/native_FileSystemBaseHandle-postMessage-manual.https.tentative.html @@ -1,5 +1,6 @@ <!doctype html> <meta charset=utf-8> +<meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> diff --git a/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemBaseHandle-postMessage.tentative.https.window.js b/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemBaseHandle-postMessage.tentative.https.window.js index e010f6599e8..f7d5776e19e 100644 --- a/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemBaseHandle-postMessage.tentative.https.window.js +++ b/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemBaseHandle-postMessage.tentative.https.window.js @@ -4,4 +4,5 @@ // META: script=resources/messaging-helpers.js // META: script=resources/messaging-blob-helpers.js // META: script=resources/messaging-serialize-helpers.js -// META: script=script-tests/FileSystemBaseHandle-postMessage.js
\ No newline at end of file +// META: script=script-tests/FileSystemBaseHandle-postMessage.js +// META: timeout=long diff --git a/tests/wpt/web-platform-tests/portals/portals-focus.sub.html b/tests/wpt/web-platform-tests/portals/portals-focus.sub.html index 1779590779a..97b7579eb63 100644 --- a/tests/wpt/web-platform-tests/portals/portals-focus.sub.html +++ b/tests/wpt/web-platform-tests/portals/portals-focus.sub.html @@ -1,4 +1,5 @@ <!DOCTYPE html> +<meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/testdriver.js"></script> diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-data.html b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-data.html index 368e77e1217..1d39781e305 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-data.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-data.html @@ -4,37 +4,21 @@ <link rel="help" href="https://www.w3.org/TR/referrer-policy/#referrer-policy-delivery-nested"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> - <!-- Common global functions for referrer-policy tests. --> - <script src="/common/security-features/resources/common.sub.js"></script> - <script src="/referrer-policy/generic/referrer-policy-test-case.js"></script> + <script src="/common/get-host-info.sub.js"></script> + <script src="resources/make-html-script.js"></script> <meta name="referrer" content="origin"> </head> <body onload="runTest()"> <h1>Referrer Policy: iframes with data url uses no referrer</h1> <script> let test = async_test("iframes with data url uses no referrer"); - window.addEventListener("message", test.step_func((msg) => { + window.addEventListener("message", test.step_func_done(msg => { assert_equals(msg.data.referrer, undefined); - test.done(); })); function runTest() { - const BASE = location.protocol + "//www1." + location.hostname + ":" + location.port; - const TEST_DATA = - `data:text/html,<script src = "${BASE}/common/security-features/resources/common.sub.js"></` + `script> - <script src = "${BASE}/referrer-policy/generic/referrer-policy-test-case.js"></` + `script> - <script> - var urlPath = "/common/security-features/subresource/xhr.py"; - var url = "${BASE}" + urlPath; - requestViaXhr(url).then((msg) => { - parent.postMessage({referrer: msg.referrer}, "*")}) - .catch((e) => { - parent.postMessage({referrer: "FAILURE"}, "*"); - }); - </` + "script>"; - let iframe = document.createElement("iframe"); - iframe.src = TEST_DATA; + iframe.src = `data:text/html,${createScriptString(get_host_info().REMOTE_ORIGIN)}`; document.body.appendChild(iframe); } </script> diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-document-write.html b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-document-write.html new file mode 100644 index 00000000000..cba71bb1d9f --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-document-write.html @@ -0,0 +1,20 @@ +<!doctype html> +<title>Referrer Policy: iframes with document.write()</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/make-html-script.js"></script> +<meta name="referrer" content="origin"> +<div id="log"></div> +<script> +async_test(t => { + window.addEventListener("message", t.step_func_done(msg => { + assert_equals(msg.data.referrer, self.origin + "/"); + })); + + const iframe = document.createElement("iframe"); + document.body.appendChild(iframe); + iframe.contentDocument.write(createScriptString(get_host_info().REMOTE_ORIGIN)); + iframe.contentDocument.close(); +}); +</script> diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html new file mode 100644 index 00000000000..e20da4f2ccc --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-javascript-child.html @@ -0,0 +1,70 @@ +<!doctype html> +<title>Referrer Policy: iframes with javascript url reuse referrer policy</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/make-html-script.js"></script> +<meta name="referrer" content="origin"> +<div id="log"></div> +<script> +[ + { + srcDocPolicy: ``, + expected: self.origin + "/" + }, + { + srcDocPolicy: `<meta name="referrer" content="no-referrer">`, + expected: undefined + } +].forEach(({ srcDocPolicy, expected }) => { + promise_test(t => { + return new Promise(resolve => { + window.addEventListener("message", t.step_func(msg => { + assert_equals(msg.data.referrer, expected); + resolve(); + }), { once:true }); + + const iframe = document.createElement("iframe"); + t.add_cleanup(() => iframe.remove()); + iframe.srcdoc = `${srcDocPolicy}<body><h1>Outer iframe</h1></body>`; + iframe.onload = t.step_func(() => { + iframe.onload = null; + const iframeChild = iframe.contentDocument.createElement("iframe"); + iframeChild.src = `javascript:'${createScriptString(get_host_info().REMOTE_ORIGIN)}'`; + iframe.contentDocument.body.appendChild(iframeChild); + }); + document.body.appendChild(iframe); + }); + }); +}); + +[ + { + srcDocPolicy: ``, + expected: self.origin + "/" + }, + { + srcDocPolicy: `<meta name="referrer" content="no-referrer">`, + expected: undefined + } +].forEach(({ srcDocPolicy, expected }) => { + promise_test(t => { + return new Promise(resolve => { + window.addEventListener("message", t.step_func(msg => { + assert_equals(msg.data.referrer, expected); + resolve(); + }), { once:true }); + + const iframe = document.createElement("iframe"); + t.add_cleanup(() => iframe.remove()); + iframe.srcdoc = `${srcDocPolicy}<body><h1>Outer iframe</h1></body>`; + iframe.onload = t.step_func(() => { + iframe.onload = null; + iframe.contentWindow.location = `javascript:'${createScriptString(get_host_info().REMOTE_ORIGIN)}'`; + }); + document.body.appendChild(iframe); + }); + }); +}); + +</script> diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-javascript.html b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-javascript.html new file mode 100644 index 00000000000..77b6d759f5f --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-javascript.html @@ -0,0 +1,19 @@ +<!doctype html> +<title>Referrer Policy: iframes with javascript url reuse referrer policy</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/make-html-script.js"></script> +<meta name="referrer" content="origin"> +<div id="log"></div> +<script> +async_test(t => { + window.addEventListener("message", t.step_func_done(msg => { + assert_equals(msg.data.referrer, self.origin + "/"); + })); + + const iframe = document.createElement("iframe"); + iframe.src = `javascript:'${createScriptString(get_host_info().REMOTE_ORIGIN)}'`; + document.body.appendChild(iframe); +}); +</script> diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-srcdoc-child.html b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-srcdoc-child.html index ecd5a41cc0b..cd4b4ae7248 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-srcdoc-child.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-srcdoc-child.html @@ -5,43 +5,27 @@ <link rel="help" href="https://www.w3.org/TR/referrer-policy/#referrer-policy-delivery-nested"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> - <!-- Common global functions for referrer-policy tests. --> - <script src="/common/security-features/resources/common.sub.js"></script> - <script src="/referrer-policy/generic/referrer-policy-test-case.js"></script> + <script src="/common/get-host-info.sub.js"></script> + <script src="resources/make-html-script.js"></script> <meta name="referrer" content="origin"> </head> <body onload="runTest()"> <h1>Referrer Policy: iframes srcdoc child correctly inherit the ancestor's referrer policy</h1> <script> var test = async_test("iframes srcdoc child correctly inherit the ancestor's referrer policy"); - window.addEventListener("message", test.step_func((msg) => { - assert_equals(msg.data.referrer, document.location.origin + "/"); - test.done(); + window.addEventListener("message", test.step_func_done(msg => { + assert_equals(msg.data.referrer, self.origin + "/"); })); - const BASE = location.protocol + "//www1." + location.hostname + ":" + location.port; - function runTest() { var iframe = document.createElement("iframe"); iframe.srcdoc = `<body><h1>Outer iframe</h1></body>`; - iframe.onload = function() { + iframe.onload = test.step_func(() => { iframe.onload = null; var iframeChild = iframe.contentDocument.createElement("iframe"); - iframeChild.srcdoc = - `<script src = "${BASE}/common/security-features/resources/common.sub.js"></sc` + `ript> - <script src = "${BASE}/referrer-policy/generic/referrer-policy-test-case.js"></sc` + `ript> - <script> - var urlPath = "/common/security-features/subresource/xhr.py"; - var url = "${BASE}" + urlPath; - requestViaXhr(url).then((msg) => { - window.top.postMessage({referrer: msg.referrer}, "*")}) - .catch((e) => { - window.top.postMessage({referrer: "FAILURE"}, "*"); - }); - </sc` + "ript>"; + iframeChild.srcdoc = createScriptString(get_host_info().REMOTE_ORIGIN); iframe.contentDocument.body.appendChild(iframeChild); - }; - + }); document.body.appendChild(iframe); } </script> diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-srcdoc.html b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-srcdoc.html index 6639ebd9873..c4dffd3ed70 100644 --- a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-srcdoc.html +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/iframe-inheritance-srcdoc.html @@ -5,33 +5,21 @@ <link rel="help" href="https://www.w3.org/TR/referrer-policy/#referrer-policy-delivery-nested"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> - <!-- Common global functions for referrer-policy tests. --> - <script src="/common/security-features/resources/common.sub.js"></script> + <script src="/common/get-host-info.sub.js"></script> + <script src="resources/make-html-script.js"></script> <meta name="referrer" content="origin"> </head> <body onload="runTest()"> <h1>Referrer Policy: iframes srcdoc correctly inherit the ancestor's referrer policy</h1> <script> var test = async_test("iframes srcdoc correctly inherit the ancestor's referrer policy"); - window.addEventListener("message", test.step_func((msg) => { - assert_equals(msg.data.referrer, document.location.origin + "/"); - test.done(); + window.addEventListener("message", test.step_func_done(msg => { + assert_equals(msg.data.referrer, self.origin + "/"); })); function runTest() { var iframe = document.createElement("iframe"); - iframe.srcdoc = - `<script src = "/common/security-features/resources/common.sub.js"></` + `script> - <script> - var urlPath = "/common/security-features/subresource/xhr.py"; - var url = "${location.protocol}//www1.${location.hostname}:${location.port}" + urlPath; - requestViaXhr(url).then((msg) => { - parent.postMessage({referrer: msg.referrer}, "*")}) - .catch((e) => { - parent.postMessage({referrer: "FAILURE"}, "*"); - }); - </` + "script>"; - + iframe.srcdoc = createScriptString(get_host_info().REMOTE_ORIGIN); document.body.appendChild(iframe); } </script> diff --git a/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/resources/make-html-script.js b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/resources/make-html-script.js new file mode 100644 index 00000000000..e285c559c04 --- /dev/null +++ b/tests/wpt/web-platform-tests/referrer-policy/generic/inheritance/resources/make-html-script.js @@ -0,0 +1,10 @@ +function createScriptString(origin) { + return `<script src = "${origin}/common/security-features/resources/common.sub.js"><\/script> + <script> + requestViaXhr("${origin}/common/security-features/subresource/xhr.py").then(msg => { + top.postMessage({referrer: msg.referrer}, "*") + }).catch(e => { + top.postMessage({referrer: "FAILURE"}, "*"); + }); + <\/script>`; +} diff --git a/tests/wpt/web-platform-tests/resource-timing/resource_timing_buffer_full_eventually.html b/tests/wpt/web-platform-tests/resource-timing/resource_timing_buffer_full_eventually.html index ce745237c06..140973156fb 100644 --- a/tests/wpt/web-platform-tests/resource-timing/resource_timing_buffer_full_eventually.html +++ b/tests/wpt/web-platform-tests/resource-timing/resource_timing_buffer_full_eventually.html @@ -4,6 +4,7 @@ <meta charset="utf-8" /> <link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/> <title>This test validates that resource timing implementations have a finite number of entries in their buffer.</title> +<meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> </head> @@ -12,28 +13,24 @@ const t = async_test("Finite resource timing entries buffer size"); performance.onresourcetimingbufferfull = t.step_func_done(function() { }); - window.onload = t.step_func( - function() { - // Scripts appended in JS to ensure setResourceTimingBufferSize is called before. - let counter = performance.getEntriesByType("resource").length; - function appendScripts() { - const documentFragment = document.createDocumentFragment(); - // Add 100 elements at a time to avoid page reflow every time. - let numScriptsAccumulated = 0; - while (numScriptsAccumulated < 100) { - const src = "resources/empty.js?" + counter; - const script = document.createElement('script'); - script.type = 'text/javascript'; - script.src = src; - documentFragment.appendChild(script); - ++counter; - ++numScriptsAccumulated; - } - document.body.appendChild(documentFragment); - t.step_timeout(appendScripts, 20); - } - appendScripts(); - }); + let counter = 0; + function appendScripts() { + const documentFragment = document.createDocumentFragment(); + // Add 8 elements at a time to avoid page reflow every time. + let numScriptsAccumulated = 0; + while (numScriptsAccumulated < 8) { + const src = "resources/empty.js?" + counter; + const script = document.createElement('script'); + script.type = 'text/javascript'; + script.src = src; + documentFragment.appendChild(script); + ++counter; + ++numScriptsAccumulated; + } + document.body.appendChild(documentFragment); + t.step_timeout(appendScripts, 20); + } + appendScripts(); </script> </body> </html> diff --git a/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html b/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html index bc9ee9e6bc5..09d22ff6d1d 100644 --- a/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html +++ b/tests/wpt/web-platform-tests/scroll-to-text-fragment/scroll-to-text-fragment-target.html @@ -48,6 +48,14 @@ function checkScroll() { let key = (new URL(document.location)).searchParams.get("key"); stashResults(key, results); } + +// Ensure two animation frames on load to test the fallback to element anchor, +// which gets queued for the next frame if the text fragment is not found. +window.onload = function() { + window.requestAnimationFrame(function() { + window.requestAnimationFrame(checkScroll); + }) +} </script> <style> .scroll-section { @@ -64,7 +72,7 @@ function checkScroll() { display: none; } </style> -<body onload="window.requestAnimationFrame(checkScroll)"> +<body> <div id="element" class="scroll-section">Element</div> <p id="text" class="scroll-section">This is a test page !$'()*+./:;=?@_~ &,- ネコ</p> <p id="more-text" class="scroll-section">More test page text</p> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/clients-matchall-client-types.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/clients-matchall-client-types.https.html index a2a56816a65..54f182b6202 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/clients-matchall-client-types.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/clients-matchall-client-types.https.html @@ -4,121 +4,89 @@ <script src="/resources/testharnessreport.js"></script> <script src="resources/test-helpers.sub.js"></script> <script> -var scope = 'resources/clients-matchall-client-types'; -var iframe_url = scope + '-iframe.html'; -var shared_worker_url = scope + '-shared-worker.js'; -var dedicated_worker_url = scope + '-dedicated-worker.js'; +const scope = 'resources/clients-matchall-client-types'; +const iframe_url = scope + '-iframe.html'; +const shared_worker_url = scope + '-shared-worker.js'; +const dedicated_worker_url = scope + '-dedicated-worker.js'; /* visibilityState, focused, url, type, frameType */ -var expected_only_window = [ +const expected_only_window = [ ['visible', true, new URL(iframe_url, location).href, 'window', 'nested'] ]; -var expected_only_shared_worker = [ +const expected_only_shared_worker = [ [undefined, undefined, new URL(shared_worker_url, location).href, 'sharedworker', 'none'] ]; -var expected_only_dedicated_worker = [ +const expected_only_dedicated_worker = [ [undefined, undefined, new URL(dedicated_worker_url, location).href, 'worker', 'none'] ]; // These are explicitly sorted by URL in the service worker script. -var expected_all_clients = [ +const expected_all_clients = [ expected_only_dedicated_worker[0], expected_only_window[0], expected_only_shared_worker[0], ]; -function test_matchall(frame, expected, query_options) { +async function test_matchall(frame, expected, query_options) { // Make sure the frame gets focus. frame.focus(); - return new Promise(function(resolve, reject) { - var channel = new MessageChannel(); - channel.port1.onmessage = function(e) { resolve(e.data); }; + const data = await new Promise(resolve => { + const channel = new MessageChannel(); + channel.port1.onmessage = e => resolve(e.data); frame.contentWindow.navigator.serviceWorker.controller.postMessage( {port:channel.port2, options:query_options}, [channel.port2]); - }).then(function(data) { - if (typeof data === 'string') { - throw new Error(data); - } + }); - assert_equals(data.length, expected.length, 'result count'); + if (typeof data === 'string') { + throw new Error(data); + } - for (var i = 0; i < data.length; ++i) { - assert_array_equals(data[i], expected[i]); - } - }); + assert_equals(data.length, expected.length, 'result count'); + + for (let i = 0; i < data.length; ++i) { + assert_array_equals(data[i], expected[i]); + } } -promise_test(function(t) { - var frame; - return service_worker_unregister_and_register( - t, 'resources/clients-matchall-worker.js', scope) - .then(function(registration) { - t.add_cleanup(function() { - return service_worker_unregister(t, scope); - }); +promise_test(async t => { + const registration = await service_worker_unregister_and_register( + t, 'resources/clients-matchall-worker.js', scope); + t.add_cleanup(_ => registration.unregister()); + await wait_for_state(t, registration.installing, 'activated'); + const frame = await with_iframe(iframe_url); + t.add_cleanup(_ => frame.remove()); + await test_matchall(frame, expected_only_window, {}); + await test_matchall(frame, expected_only_window, {type:'window'}); +}, 'Verify matchAll() with window client type'); - return wait_for_state(t, registration.installing, 'activated'); - }) - .then(function() { return with_iframe(iframe_url); }) - .then(function(f) { - frame = f; - return test_matchall(frame, expected_only_window, {}); - }) - .then(function() { - return test_matchall(frame, expected_only_window, {type:'window'}); - }) - .then(function() { - frame.remove(); - }); - }, 'Verify matchAll() with window client type'); +promise_test(async t => { + const registration = await service_worker_unregister_and_register( + t, 'resources/clients-matchall-worker.js', scope); + t.add_cleanup(_ => registration.unregister()); + await wait_for_state(t, registration.installing, 'activated'); + const frame = await with_iframe(iframe_url); + t.add_cleanup(_ => frame.remove()); -promise_test(function(t) { - var frame; - return service_worker_unregister_and_register( - t, 'resources/clients-matchall-worker.js', scope) - .then(function(registration) { - t.add_cleanup(function() { - return service_worker_unregister(t, scope); - }); + // Set up worker clients. + const shared_worker = await new Promise((resolve, reject) => { + const w = new SharedWorker(shared_worker_url); + w.onerror = e => reject(e.message); + w.port.onmessage = _ => resolve(w); + }); + const dedicated_worker = await new Promise((resolve, reject) => { + const w = new Worker(dedicated_worker_url); + w.onerror = e => reject(e.message); + w.onmessage = _ => resolve(w); + w.postMessage('Start'); + }); - return wait_for_state(t, registration.installing, 'activated'); - }) - .then(function() { return with_iframe(iframe_url); }) - .then(function(f) { - frame = f; - return new Promise(function(resolve, reject) { - var w = new SharedWorker(shared_worker_url); - w.port.onmessage = resolve; - }); - }) - .then(function() { - return new Promise(function(resolve, reject) { - var w = new Worker(dedicated_worker_url); - w.onmessage = resolve; - w.postMessage('Start'); - }); - }) - .then(function() { - return test_matchall(frame, expected_only_window, {}); - }) - .then(function() { - return test_matchall(frame, expected_only_window, {type:'window'}); - }) - .then(function() { - return test_matchall(frame, expected_only_shared_worker, - {type:'sharedworker'}); - }) - .then(function() { - return test_matchall(frame, expected_only_dedicated_worker, - {type:'worker'}); - }) - .then(function() { - return test_matchall(frame, expected_all_clients, {type:'all'}); - }) - .then(function() { - frame.remove(); - }); + await test_matchall(frame, expected_only_window, {}); + await test_matchall(frame, expected_only_window, {type:'window'}); + await test_matchall(frame, expected_only_shared_worker, + {type:'sharedworker'}); + await test_matchall(frame, expected_only_dedicated_worker, {type:'worker'}); + await test_matchall(frame, expected_all_clients, {type:'all'}); }, 'Verify matchAll() with {window, sharedworker, worker} client types'); </script> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/getregistrations.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/getregistrations.https.html index 3e48d5fe361..3a9b9a23317 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/getregistrations.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/getregistrations.https.html @@ -31,14 +31,19 @@ promise_test(async t => { promise_test(async t => { const scope1 = 'resources/scope/getregistrations/scope1'; const scope2 = 'resources/scope/getregistrations/scope2'; + const scope3 = 'resources/scope/getregistrations/scope12'; + const script = 'resources/empty-worker.js'; t.add_cleanup(() => service_worker_unregister(t, scope1)); t.add_cleanup(() => service_worker_unregister(t, scope2)); + t.add_cleanup(() => service_worker_unregister(t, scope3)); const registrations = [ await service_worker_unregister_and_register(t, script, scope1), - await service_worker_unregister_and_register(t, script, scope2) + await service_worker_unregister_and_register(t, script, scope2), + await service_worker_unregister_and_register(t, script, scope3), ]; + const value = await navigator.serviceWorker.getRegistrations(); assert_array_equals(value, registrations); }, 'Register multiple times then getRegistrations'); diff --git a/tests/wpt/web-platform-tests/speech-api/META.yml b/tests/wpt/web-platform-tests/speech-api/META.yml index 9ce8830e78f..88f1837f96f 100644 --- a/tests/wpt/web-platform-tests/speech-api/META.yml +++ b/tests/wpt/web-platform-tests/speech-api/META.yml @@ -1,3 +1,5 @@ spec: https://w3c.github.io/speech-api/ suggested_reviewers: + - andrenatal - foolip + - marcoscaceres diff --git a/tests/wpt/web-platform-tests/svg/extensibility/foreignObject/foreign-object-scale-scroll-ref.html b/tests/wpt/web-platform-tests/svg/extensibility/foreignObject/foreign-object-scale-scroll-ref.html new file mode 100644 index 00000000000..a2217fed5d0 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/extensibility/foreignObject/foreign-object-scale-scroll-ref.html @@ -0,0 +1,8 @@ +<!doctype html> +<svg width="400" height="400"> + <foreignObject x="200" y="200" width="200" height="200"> + <div style="width: 100px; height: 100px; transform: scale(2); transform-origin: 0 0; overflow: scroll"> + <div style="width: 1000px; height: 1000px; background: blue"></div> + </div> + </foreignObject> +</svg> diff --git a/tests/wpt/web-platform-tests/svg/extensibility/foreignObject/foreign-object-scale-scroll.html b/tests/wpt/web-platform-tests/svg/extensibility/foreignObject/foreign-object-scale-scroll.html new file mode 100644 index 00000000000..72ce40dc5c0 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/extensibility/foreignObject/foreign-object-scale-scroll.html @@ -0,0 +1,9 @@ +<!doctype html> +<title>foreignObject with scale transform and overflow:scroll</title> +<link rel="help" href="https://svgwg.org/svg2-draft/single-page.html#embedded-ForeignObjectElement"/> +<link rel="match" href="foreign-object-scale-scroll-ref.html"> +<svg width="400" height="400"> + <foreignObject x="100" y="100" transform="scale(2)" width="100" height="100" style="overflow: scroll"> + <div style="width: 1000px; height: 1000px; background: blue"></div> + </foreignObject> +</svg> diff --git a/tests/wpt/web-platform-tests/tools/ci/azure/install_edge.yml b/tests/wpt/web-platform-tests/tools/ci/azure/install_edge.yml index e4c425ab7a0..297b6e60b29 100644 --- a/tests/wpt/web-platform-tests/tools/ci/azure/install_edge.yml +++ b/tests/wpt/web-platform-tests/tools/ci/azure/install_edge.yml @@ -4,6 +4,26 @@ parameters: # Should match https://web-platform-tests.org/running-tests/chrome.html # Just replace chrome with edgechromium steps: +- ${{ if eq(parameters.channel, 'stable') }}: + - powershell: | + $edgeInstallerName = 'MicrosoftEdgeSetup.exe' + # Link to Stable channel installer + Start-BitsTransfer -Source 'https://go.microsoft.com/fwlink/?linkid=2108834&Channel=Stable&language=en' -Destination MicrosoftEdgeSetup.exe + if (-not (Test-Path $edgeInstallerName)) { + Throw "Failed to download Edge installer to $edgeInstallerName." + } + cmd /c START /WAIT $edgeInstallerName /silent /install + $edgePath = "$env:systemdrive\Program Files (x86)\Microsoft\Edge\Application" + if (Test-Path $edgePath) { + Write-Host "##vso[task.prependpath]$edgePath" + Write-Host "Edge Stable installed at $edgePath." + (Get-Item -Path "$edgePath\msedge.exe").VersionInfo | Format-List + } else { + Copy-Item -Path "$env:temp\*edge*.log" -Destination $(Build.ArtifactStagingDirectory) -Force + Throw "Failed to install Edge at $edgePath" + } + displayName: 'Install Edge Stable' + - ${{ if eq(parameters.channel, 'canary') }}: - powershell: | $edgeInstallerName = 'MicrosoftEdgeSetup.exe' diff --git a/tests/wpt/web-platform-tests/tools/wpt/browser.py b/tests/wpt/web-platform-tests/tools/wpt/browser.py index f0c2eeb94b8..13ce823d0ce 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/browser.py +++ b/tests/wpt/web-platform-tests/tools/wpt/browser.py @@ -888,8 +888,10 @@ class EdgeChromium(Browser): if not binary: # Use paths from different Edge channels starting with Release\Beta\Dev\Canary winpaths = [os.path.expanduser("~\\AppData\\Local\\Microsoft\\Edge\\Application"), + os.path.expandvars("$SYSTEMDRIVE\\Program Files\\Microsoft\\Edge\\Application"), os.path.expandvars("$SYSTEMDRIVE\\Program Files\\Microsoft\\Edge Beta\\Application"), os.path.expandvars("$SYSTEMDRIVE\\Program Files\\Microsoft\\Edge Dev\\Application"), + os.path.expandvars("$SYSTEMDRIVE\\Program Files (x86)\\Microsoft\\Edge\\Application"), os.path.expandvars("$SYSTEMDRIVE\\Program Files (x86)\\Microsoft\\Edge Beta\\Application"), os.path.expandvars("$SYSTEMDRIVE\\Program Files (x86)\\Microsoft\\Edge Dev\\Application"), os.path.expanduser("~\\AppData\Local\\Microsoft\\Edge SxS\\Application")] diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py index ceca81211e1..39d723a7886 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorselenium.py @@ -1,11 +1,12 @@ +from __future__ import absolute_import import json import os import socket import threading import time import traceback -import urlparse import uuid +from six.moves.urllib.parse import urljoin from .base import (CallbackHandler, RefTestExecutor, @@ -87,8 +88,8 @@ class SeleniumTestharnessProtocolPart(TestharnessProtocolPart): def load_runner(self, url_protocol): if self.runner_handle: self.webdriver.switch_to_window(self.runner_handle) - url = urlparse.urljoin(self.parent.executor.server_url(url_protocol), - "/testharness_runner.html") + url = urljoin(self.parent.executor.server_url(url_protocol), + "/testharness_runner.html") self.logger.debug("Loading %s" % url) self.webdriver.get(url) self.runner_handle = self.webdriver.current_window_handle diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py index 0b329210fc5..d09eb1e1451 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py @@ -1,11 +1,12 @@ +from __future__ import absolute_import import json import os import socket import threading import time import traceback -import urlparse import uuid +from six.moves.urllib.parse import urljoin from .base import (CallbackHandler, CrashtestExecutor, @@ -86,8 +87,8 @@ class WebDriverTestharnessProtocolPart(TestharnessProtocolPart): def load_runner(self, url_protocol): if self.runner_handle: self.webdriver.window_handle = self.runner_handle - url = urlparse.urljoin(self.parent.executor.server_url(url_protocol), - "/testharness_runner.html") + url = urljoin(self.parent.executor.server_url(url_protocol), + "/testharness_runner.html") self.logger.debug("Loading %s" % url) self.webdriver.url = url diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py index 91f1161b01b..5b7278b99ff 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py @@ -1,4 +1,4 @@ -from __future__ import print_function +from __future__ import absolute_import, print_function import argparse import os import sys @@ -16,9 +16,9 @@ def abs_path(path): def url_or_path(path): - import urlparse + from six.moves.urllib.parse import urlparse - parsed = urlparse.urlparse(path) + parsed = urlparse(path) if len(parsed.scheme) > 2: return path else: diff --git a/tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.tentative.html b/tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.tentative.html index 8c9c2f1a70b..6cbf680fa26 100644 --- a/tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.tentative.html @@ -3,7 +3,7 @@ <script src="/resources/testharnessreport.js"></script> <script src="support/helper.sub.js"></script> -<meta http-equiv="Content-Security-Policy" content="trusted-types *"> +<meta http-equiv="Content-Security-Policy" content="trusted-types *; require-trusted-types-for 'script'"> <body> <div id="container"></div> <script> diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-metadata.tentative.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-metadata.tentative.html index da7d1b4f877..67c734b5a42 100644 --- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-metadata.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-metadata.tentative.html @@ -4,7 +4,7 @@ <script src="/resources/testharnessreport.js"></script> <script src="support/helper.sub.js"></script> -<meta http-equiv="Content-Security-Policy" content="trusted-types *"> +<meta http-equiv="Content-Security-Policy" content="trusted-types *; require-trusted-types-for 'script';"> <body> <div id="target"></div> <script> diff --git a/tests/wpt/web-platform-tests/trusted-types/WorkerGlobalScope-importScripts.https.html b/tests/wpt/web-platform-tests/trusted-types/WorkerGlobalScope-importScripts.https.html index 9dbfd7b93c9..0aa965e16e0 100644 --- a/tests/wpt/web-platform-tests/trusted-types/WorkerGlobalScope-importScripts.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/WorkerGlobalScope-importScripts.https.html @@ -1,7 +1,7 @@ <!doctype html> <html> <head> - <meta http-equiv="Content-Security-Policy" content="trusted-types *"> + <meta http-equiv="Content-Security-Policy" content="trusted-types *; require-trusted-types-for 'script';"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> </head> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-Node-multiple-arguments.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-Node-multiple-arguments.tentative.html index 5552e131372..879d34f9612 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-Node-multiple-arguments.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-Node-multiple-arguments.tentative.html @@ -4,7 +4,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="support/helper.sub.js"></script> - <meta http-equiv="Content-Security-Policy" content="trusted-types *"> + <meta http-equiv="Content-Security-Policy" content="trusted-types *; require-trusted-types-for 'script';"> </head> <body> <div id="container"></div> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.html index 82e31200e6b..12cef6af661 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.html @@ -3,7 +3,7 @@ <script src="/resources/testharnessreport.js"></script> <script src="support/helper.sub.js"></script> -<meta http-equiv="Content-Security-Policy" content="trusted-types *"> +<meta http-equiv="Content-Security-Policy" content="trusted-types *; require-trusted-types-for 'script';"> <body> <script> // Trusted HTML assignments do not throw. diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.html index 468ed7b6975..6d723ba23b6 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.html @@ -3,7 +3,7 @@ <script src="/resources/testharnessreport.js"></script> <script src="support/helper.sub.js"></script> -<meta http-equiv="Content-Security-Policy" content="trusted-types *"> +<meta http-equiv="Content-Security-Policy" content="trusted-types *; require-trusted-types-for 'script';"> <body> <script> // setTimeout tests diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.html index 4defb56c88e..1049b46563d 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.html @@ -5,7 +5,7 @@ <script src="/resources/testharnessreport.js"></script> <script src="support/helper.sub.js"></script> - <meta http-equiv="Content-Security-Policy" content="trusted-types *"> + <meta http-equiv="Content-Security-Policy" content="trusted-types *; require-trusted-types-for 'script';"> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.tentative.html index 37a73f08c20..1e8c091d87e 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.tentative.html @@ -5,7 +5,7 @@ <script src="/resources/testharnessreport.js"></script> <script src="support/helper.sub.js"></script> - <meta http-equiv="Content-Security-Policy" content="trusted-types *"> + <meta http-equiv="Content-Security-Policy" content="trusted-types *; require-trusted-types-for 'script';"> </head> <body> <div id="container"></div> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-outerHTML.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-outerHTML.tentative.html index 8f314a26bf5..17815e6a9e9 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-outerHTML.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-outerHTML.tentative.html @@ -5,7 +5,7 @@ <script src="/resources/testharnessreport.js"></script> <script src="support/helper.sub.js"></script> - <meta http-equiv="Content-Security-Policy" content="trusted-types *"> + <meta http-equiv="Content-Security-Policy" content="trusted-types *; require-trusted-types-for 'script';"> </head> <body> <div id="container"></div> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html index 2639e16ea08..47c4c3557f8 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.html @@ -5,7 +5,7 @@ <script src="/resources/testharnessreport.js"></script> <script src="support/helper.sub.js"></script> - <meta http-equiv="Content-Security-Policy" content="trusted-types *"> + <meta http-equiv="Content-Security-Policy" content="trusted-types *; require-trusted-types-for 'script';"> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.html index 5754521b2bd..cc8b05e8c83 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.html @@ -5,7 +5,7 @@ <script src="/resources/testharnessreport.js"></script> <script src="support/helper.sub.js"></script> - <meta http-equiv="Content-Security-Policy" content="trusted-types *"> + <meta http-equiv="Content-Security-Policy" content="trusted-types *; require-trusted-types-for 'script';"> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLElement-generic.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLElement-generic.tentative.html index 84ff83bc083..b5745199f41 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLElement-generic.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLElement-generic.tentative.html @@ -5,7 +5,7 @@ <script src="/resources/testharnessreport.js"></script> <script src="support/helper.sub.js"></script> - <meta http-equiv="Content-Security-Policy" content="trusted-types *"> + <meta http-equiv="Content-Security-Policy" content="trusted-types *; require-trusted-types-for 'script';"> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Range-createContextualFragment.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Range-createContextualFragment.tentative.html index 61553eb71df..a57376206de 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Range-createContextualFragment.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Range-createContextualFragment.tentative.html @@ -3,7 +3,7 @@ <script src="/resources/testharnessreport.js"></script> <script src="support/helper.sub.js"></script> -<meta http-equiv="Content-Security-Policy" content="trusted-types *"> +<meta http-equiv="Content-Security-Policy" content="trusted-types *; require-trusted-types-for 'script';"> <body> <script> // TrustedHTML assignments do not throw. diff --git a/tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.html b/tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.html index 04b19f7e421..1f5e8fda7ae 100644 --- a/tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.html @@ -3,7 +3,7 @@ <head> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> - <meta http-equiv="Content-Security-Policy" content="trusted-types *"> + <meta http-equiv="Content-Security-Policy" content="trusted-types *; require-trusted-types-for 'script';"> </head> <body> <div id="container"></div> diff --git a/tests/wpt/web-platform-tests/trusted-types/default-policy-report-only.tentative.html.headers b/tests/wpt/web-platform-tests/trusted-types/default-policy-report-only.tentative.html.headers index fa87952ae48..67b9ef7a3c5 100644 --- a/tests/wpt/web-platform-tests/trusted-types/default-policy-report-only.tentative.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/default-policy-report-only.tentative.html.headers @@ -1 +1 @@ -Content-Security-Policy-Report-Only: trusted-types * +Content-Security-Policy-Report-Only: trusted-types *; require-trusted-types-for 'script'; diff --git a/tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.html.headers b/tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.html.headers index 1bc33add09b..6a40e40a586 100644 --- a/tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.html.headers @@ -1 +1 @@ -Content-Security-Policy: trusted-types * +Content-Security-Policy: trusted-types *; require-trusted-types-for 'script'; diff --git a/tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.html.headers b/tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.html.headers index fa87952ae48..67b9ef7a3c5 100644 --- a/tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.html.headers @@ -1 +1 @@ -Content-Security-Policy-Report-Only: trusted-types * +Content-Security-Policy-Report-Only: trusted-types *; require-trusted-types-for 'script'; diff --git a/tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.html.headers b/tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.html.headers index 1bc33add09b..6a40e40a586 100644 --- a/tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.html.headers @@ -1 +1 @@ -Content-Security-Policy: trusted-types * +Content-Security-Policy: trusted-types *; require-trusted-types-for 'script'; diff --git a/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-default-policy.tentative.html b/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-default-policy.tentative.html index 8f1926d9cf2..eaa74eaf4cd 100644 --- a/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-default-policy.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-default-policy.tentative.html @@ -16,7 +16,7 @@ }, "eval of TrustedScript works."); test(t => { - assert_equals(eval('1+1'), 15); + assert_equals(eval('1+1'), 2); }, "eval of string works."); test(t => { diff --git a/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-no-default-policy.tentative.html b/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-no-default-policy.tentative.html index dc976d64abd..0da09a8a5cd 100644 --- a/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-no-default-policy.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-no-default-policy.tentative.html @@ -4,7 +4,7 @@ <script nonce="abc" src="/resources/testharness.js"></script> <script nonce="abc" src="/resources/testharnessreport.js"></script> <script nonce="abc" src="support/helper.sub.js"></script> - <meta http-equiv="Content-Security-Policy" content="trusted-types *"> + <meta http-equiv="Content-Security-Policy" content="trusted-types *; require-trusted-types-for 'script';"> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/trusted-types/eval-with-permissive-csp.tentative.html b/tests/wpt/web-platform-tests/trusted-types/eval-with-permissive-csp.tentative.html index 074fe79dc93..32f12d8e129 100644 --- a/tests/wpt/web-platform-tests/trusted-types/eval-with-permissive-csp.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/eval-with-permissive-csp.tentative.html @@ -7,7 +7,7 @@ <!-- Note: Trusted Types enforcement, and a CSP that allows all eval. --> <meta http-equiv="Content-Security-Policy" - content="script-src 'nonce-abc' 'unsafe-eval'; trusted-types *"> + content="script-src 'nonce-abc' 'unsafe-eval'; trusted-types *; require-trusted-types-for 'script'"> </head> <body> <script nonce="abc"> diff --git a/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.html b/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.html new file mode 100644 index 00000000000..56f62952213 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.html @@ -0,0 +1,44 @@ +<!DOCTYPE html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> +</head> +<body> +<script> + const testCases = [ + ["script", "src"], + ["div", "innerHTML"], + ["script", "text"], + ]; + + testCases.forEach(c => { + const name = `${c[0]}.${c[1]} `; + test(t => { + s = document.createElement("script"); + s.innerText = "1"; + assert_equals("1", s.innerText.toString()); + }, name + "without trusted types"); + }); + + p = trustedTypes.createPolicy("policyA", + {createScript: s => s + 1, createHTML: s => s + 1, createScriptURL: s => s + 1}); + testCases.forEach(c => { + const name = `${c[0]}.${c[1]} `; + test(t => { + s = document.createElement("script"); + script = p.createScript("1"); + s.innerText = script; + assert_equals(script.toString(), s.innerText.toString()); + }, name + "with trusted types"); + }); + + trustedTypes.createPolicy("default", {}); + testCases.forEach(c => { + const name = `${c[0]}.${c[1]} `; + test(t => { + s = document.createElement("script"); + s.innerText = "1"; + assert_equals(s.innerText.toString(), "1"); + }, name + "empty default"); + }); +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.html.headers b/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.html.headers new file mode 100644 index 00000000000..fa87952ae48 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.html.headers @@ -0,0 +1 @@ +Content-Security-Policy-Report-Only: trusted-types * diff --git a/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for.tentative.html b/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for.tentative.html new file mode 100644 index 00000000000..4e11b03617b --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for.tentative.html @@ -0,0 +1,45 @@ +<!DOCTYPE html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <meta http-equiv="Content-Security-Policy" content="trusted-types *"> +</head> +<body> +<script> + const testCases = [ + ["script", "src"], + ["div", "innerHTML"], + ["script", "text"], + ]; + + testCases.forEach(c => { + const name = `${c[0]}.${c[1]} `; + test(t => { + s = document.createElement("script"); + s.innerText = "1"; + assert_equals("1", s.innerText.toString()); + }, name + "without trusted types"); + }); + + p = trustedTypes.createPolicy("policyA", + {createScript: s => s + 1, createHTML: s => s + 1, createScriptURL: s => s + 1}); + testCases.forEach(c => { + const name = `${c[0]}.${c[1]} `; + test(t => { + s = document.createElement("script"); + script = p.createScript("1"); + s.innerText = script; + assert_equals(script.toString(), s.innerText.toString()); + }, name + "with trusted types"); + }); + + trustedTypes.createPolicy("default", {}); + testCases.forEach(c => { + const name = `${c[0]}.${c[1]} `; + test(t => { + s = document.createElement("script"); + s.innerText = "1"; + assert_equals(s.innerText.toString(), "1"); + }, name + "empty default"); + }); +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for-report-only.tentative.html b/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for-report-only.tentative.html new file mode 100644 index 00000000000..25b4440ef41 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for-report-only.tentative.html @@ -0,0 +1,71 @@ +<!DOCTYPE html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> +</head> +<body> +<script> + + function promise_violation(filter_arg) { + return _ => new Promise((resolve, reject) => { + function handler(e) { + let matches = (filter_arg instanceof Function) + ? filter_arg(e) + : (e.originalPolicy.includes(filter_arg)); + if (matches) { + document.removeEventListener("securitypolicyviolation", handler); + e.stopPropagation(); + resolve(e); + } + } + + document.addEventListener("securitypolicyviolation", handler); + }); + } + + promise_test(t => { + let p = Promise.resolve() + .then(promise_violation("require-trusted-types-for 'script'")); + + d = document.createElement("div"); + d.innerHTML = "a"; + assert_equals("a", d.innerHTML); + return p; + }, "Require trusted types for 'script' block create HTML."); + + promise_test(t => { + let p = Promise.resolve() + .then(promise_violation("require-trusted-types-for 'script'")); + + d = document.createElement("script"); + d.innerText = "a"; + assert_equals("a", d.innerText); + return p; + }, "Require trusted types for 'script' block create script."); + + promise_test(t => { + let p = Promise.resolve() + .then(promise_violation("require-trusted-types-for 'script'")); + + s = document.createElement("script"); + s.src = "a"; + assert_true(s.src.includes("/trusted-types/a")); + return p; + }, "Require trusted types for 'script' block create script URL."); + + promise_test(t => { + return new Promise(resolve => { + p = trustedTypes.createPolicy("policyA", {createScript: s => s+1}); + p1 = trustedTypes.createPolicy("policyA", {createHTML: _ => ""}); + p2 = trustedTypes.createPolicy("default", {}); + script = p.createScript("1"); + assert_equals(script.toString(), "11"); + s = document.createElement("script"); + s.innerText = script; + assert_equals(script.toString(), s.innerText.toString()); + s.innerText = "1"; + assert_equals("1", s.innerText); + resolve(); + }); + }, "Set require trusted types for 'script' without CSP for trusted types don't block policy creation and using."); +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for-report-only.tentative.html.headers b/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for-report-only.tentative.html.headers new file mode 100644 index 00000000000..c6412f8d472 --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for-report-only.tentative.html.headers @@ -0,0 +1 @@ +Content-Security-Policy-Report-Only: require-trusted-types-for 'script'
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for.tentative.html b/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for.tentative.html new file mode 100644 index 00000000000..95cfc4d106e --- /dev/null +++ b/tests/wpt/web-platform-tests/trusted-types/require-trusted-types-for.tentative.html @@ -0,0 +1,78 @@ +<!DOCTYPE html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script'"> +</head> +<body> +<script> + + function promise_violation(filter_arg) { + return _ => new Promise((resolve, reject) => { + function handler(e) { + let matches = (filter_arg instanceof Function) + ? filter_arg(e) + : (e.originalPolicy.includes(filter_arg)); + if (matches) { + document.removeEventListener("securitypolicyviolation", handler); + e.stopPropagation(); + resolve(e); + } + } + + document.addEventListener("securitypolicyviolation", handler); + }); + } + + promise_test(t => { + let p = Promise.resolve() + .then(promise_violation("require-trusted-types-for 'script'")); + d = document.createElement("div"); + assert_throws(new TypeError(), + _ => { + d.innerHTML = "a"; + }); + assert_equals("", d.innerHTML); + return p; + }, "Require trusted types for 'script' block create HTML."); + + promise_test(t => { + let p = Promise.resolve() + .then(promise_violation("require-trusted-types-for 'script'")); + d = document.createElement("script"); + assert_throws(new TypeError(), + _ => { + d.innerText = "a"; + }); + assert_equals("", d.innerText); + return p; + }, "Require trusted types for 'script' block create script."); + + promise_test(t => { + let p = Promise.resolve() + .then(promise_violation("require-trusted-types-for 'script'")); + s = document.createElement("script"); + assert_throws(new TypeError(), + _ => { + s.src = "a"; + }); + assert_equals("", s.src); + return p; + }, "Require trusted types for 'script' block create script URL."); + + promise_test(t => { + return new Promise(resolve => { + p = trustedTypes.createPolicy("policyA", {createScript: s => s + 1}); + p1 = trustedTypes.createPolicy("policyA", {createHTML: _ => ""}); + p2 = trustedTypes.createPolicy("default", {createScript: s => s}); + script = p.createScript("1"); + assert_equals(script.toString(), "11"); + s = document.createElement("script"); + s.innerText = script; + assert_equals(script.toString(), s.innerText.toString()); + s.innerText = "1"; + assert_equals("1", s.innerText.toString()); + resolve(); + }); + }, "Set require trusted types for 'script' without CSP for trusted types don't block policy creation and using."); +</script>
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/trusted-types/support/WorkerGlobalScope-importScripts.https.js.headers b/tests/wpt/web-platform-tests/trusted-types/support/WorkerGlobalScope-importScripts.https.js.headers index 1bc33add09b..6a40e40a586 100644 --- a/tests/wpt/web-platform-tests/trusted-types/support/WorkerGlobalScope-importScripts.https.js.headers +++ b/tests/wpt/web-platform-tests/trusted-types/support/WorkerGlobalScope-importScripts.https.js.headers @@ -1 +1 @@ -Content-Security-Policy: trusted-types * +Content-Security-Policy: trusted-types *; require-trusted-types-for 'script'; diff --git a/tests/wpt/web-platform-tests/trusted-types/support/navigation-report-only-support.html.headers b/tests/wpt/web-platform-tests/trusted-types/support/navigation-report-only-support.html.headers index fa87952ae48..67b9ef7a3c5 100644 --- a/tests/wpt/web-platform-tests/trusted-types/support/navigation-report-only-support.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/support/navigation-report-only-support.html.headers @@ -1 +1 @@ -Content-Security-Policy-Report-Only: trusted-types * +Content-Security-Policy-Report-Only: trusted-types *; require-trusted-types-for 'script'; diff --git a/tests/wpt/web-platform-tests/trusted-types/support/navigation-support.html.headers b/tests/wpt/web-platform-tests/trusted-types/support/navigation-support.html.headers index 1bc33add09b..6a40e40a586 100644 --- a/tests/wpt/web-platform-tests/trusted-types/support/navigation-support.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/support/navigation-support.html.headers @@ -1 +1 @@ -Content-Security-Policy: trusted-types * +Content-Security-Policy: trusted-types *; require-trusted-types-for 'script'; diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-createHTMLDocument.tentative.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-createHTMLDocument.tentative.html index 6ab5f42d5ff..711e494a160 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-createHTMLDocument.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-createHTMLDocument.tentative.html @@ -2,7 +2,7 @@ <head> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> - <meta http-equiv="Content-Security-Policy" content="trusted-types * 'allow-duplicates'"> + <meta http-equiv="Content-Security-Policy" content="trusted-types * 'allow-duplicates'; require-trusted-types-for 'script'"> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html index 7902df1c303..78673104114 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html @@ -76,7 +76,7 @@ promise_test(t => { let p = Promise.resolve() - .then(promise_violation("trusted-types *")) + .then(promise_violation("require-trusted-types-for 'script'")) .then(promise_flush()); expect_throws(_ => eval('script_run_beacon="should not run"')); assert_equals(script_run_beacon, 'never_overwritten'); diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html.headers index 4bc0bd3c1ab..30fe3b1df1d 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-no-unsafe-eval.tentative.https.html.headers @@ -1,4 +1,4 @@ Content-Security-Policy: trusted-types * Content-Security-Policy: script-src http: https: 'nonce-123' 'report-sample' Content-Security-Policy: plugin-types bla/blubb - +Content-Security-Policy: require-trusted-types-for 'script' diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html index bd8933a4835..18c035215e0 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html @@ -76,7 +76,7 @@ promise_test(t => { let p = Promise.resolve() - .then(promise_violation("trusted-types *")) + .then(promise_violation("require-trusted-types-for 'script'")) .then(promise_flush()); eval('script_run_beacon="report-only-does-not-stop"'); assert_equals(script_run_beacon, 'report-only-does-not-stop'); diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html.headers index ba26c77fbf4..1d7033658c1 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html.headers @@ -1,4 +1,5 @@ Content-Security-Policy-Report-Only: trusted-types * Content-Security-Policy: script-src http: https: 'nonce-123' 'unsafe-eval' Content-Security-Policy: plugin-types bla/blubb +Content-Security-Policy-Report-Only: require-trusted-types-for 'script' diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html index c751ae1330c..a521f94389a 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html @@ -68,7 +68,7 @@ promise_test(t => { let beacon = 'never_overwritten'; let p = Promise.resolve() - .then(promise_violation("trusted-types *")) + .then(promise_violation("require-trusted-types-for 'script'")) .then(promise_flush()); assert_throws(new EvalError(), _ => eval('beacon="should not run"')); diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html.headers index 2e935f73a48..91a2be91ef7 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting.tentative.https.html.headers @@ -1,4 +1,5 @@ Content-Security-Policy: trusted-types * Content-Security-Policy: script-src http: https: 'nonce-123' 'unsafe-eval' Content-Security-Policy: plugin-types bla/blubb +Content-Security-Policy: require-trusted-types-for 'script' diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-navigation.tentative.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-navigation.tentative.html index 7f17c64e570..657cbb74e0e 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-navigation.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-navigation.tentative.html @@ -12,7 +12,8 @@ } function expectViolationAsMessage(sample) { - const filter = e => (e.data.effectiveDirective == "trusted-types" && + const filter = e => ((e.data.effectiveDirective == "require-trusted-types-for" || + e.data.effectiveDirective == "trusted-types") && (!sample || e.data.sample.startsWith(sample))); return new expectMessage(filter); } diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-report-only.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-report-only.tentative.https.html index bf0a1eb9c19..fcb77841163 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-report-only.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-report-only.tentative.https.html @@ -77,8 +77,8 @@ return p.then(report => { assert_equals(report.documentURI, "" + window.location); assert_equals(report.disposition, "report"); - assert_equals(report.effectiveDirective, "trusted-types"); - assert_equals(report.violatedDirective, "trusted-types"); + assert_equals(report.effectiveDirective, "require-trusted-types-for"); + assert_equals(report.violatedDirective, "require-trusted-types-for"); assert_true(report.originalPolicy.startsWith("trusted-types two;")); }); }, "Trusted Type violation report: check report contents"); diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-report-only.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/trusted-types-report-only.tentative.https.html.headers index b38cfae2cb2..857a8b31e86 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-report-only.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-report-only.tentative.https.html.headers @@ -1 +1 @@ -Content-Security-Policy-Report-Only: trusted-types two; report-uri /content-security-policy/resources/dummy-report.php +Content-Security-Policy-Report-Only: trusted-types two; report-uri /content-security-policy/resources/dummy-report.php; require-trusted-types-for 'script'; diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html index 10a951fa12c..ef282dc609c 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html @@ -125,13 +125,13 @@ }, "Trusted Type violation report: creating a forbidden-but-not-reported policy."); promise_test(t => { - let p = promise_violation("trusted-types two")(); + let p = promise_violation("require-trusted-types-for 'script'")(); expect_throws(_ => document.getElementById("script").src = url); return p; }, "Trusted Type violation report: assign string to script url"); promise_test(t => { - let p = promise_violation("trusted-types two")(); + let p = promise_violation("require-trusted-types-for 'script'")(); expect_throws(_ => document.getElementById("div").innerHTML = "abc"); return p; }, "Trusted Type violation report: assign string to html"); @@ -152,7 +152,7 @@ promise_test(t => { let p = Promise.resolve() - .then(promise_violation("trusted-types two")) + .then(promise_violation("require-trusted-types-for 'script'")) .then(expect_blocked_uri("trusted-types-sink")) .then(expect_sample("Element.innerHTML")) .then(expect_sample("abc")); @@ -162,7 +162,7 @@ promise_test(t => { let p = Promise.resolve() - .then(promise_violation("trusted-types two")) + .then(promise_violation("require-trusted-types-for 'script'")) .then(expect_blocked_uri("trusted-types-sink")) .then(expect_sample("HTMLScriptElement.src")); expect_throws(_ => { document.getElementById("script").src = "" }); @@ -171,7 +171,7 @@ promise_test(t => { let p = Promise.resolve() - .then(promise_violation("trusted-types two")) + .then(promise_violation("require-trusted-types-for 'script'")) .then(expect_blocked_uri("trusted-types-sink")) .then(expect_sample("HTMLElement.innerText")) .then(expect_sample("2+2;")); @@ -181,7 +181,7 @@ promise_test(t => { let p = Promise.resolve() - .then(promise_violation("trusted-types one")) + .then(promise_violation("require-trusted-types-for 'script'")) .then(expect_blocked_uri("trusted-types-sink")) .then(expect_sample("eval")) .then(expect_sample("2+2")) @@ -195,7 +195,7 @@ // We expect the sample string to always contain the name, and at least the // start of the value, but it should not be excessively long. let p = Promise.resolve() - .then(promise_violation("trusted-types two")) + .then(promise_violation("require-trusted-types-for 'script'")) .then(expect_blocked_uri("trusted-types-sink")) .then(expect_sample("HTMLElement.innerText")) .then(expect_sample("abbb")) @@ -214,7 +214,7 @@ promise_test(t => { let p = Promise.resolve() - .then(promise_violation("trusted-types one")) + .then(promise_violation("require-trusted-types-for 'script'")) .then(expect_blocked_uri("trusted-types-sink")) .then(expect_sample("HTMLScriptElement.src")) .then(expect_sample("abc")); diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html.headers index 947a151c874..fa8aceab74b 100644 --- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html.headers +++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-reporting.tentative.https.html.headers @@ -2,4 +2,5 @@ Content-Security-Policy: trusted-types one Content-Security-Policy-Report-Only: trusted-types two; report-uri /content-security-policy/resources/dummy-report.php Content-Security-Policy: plugin-types bla/blubb Content-Security-Policy: default-src * 'unsafe-inline' +Content-Security-Policy: require-trusted-types-for 'script' diff --git a/tests/wpt/web-platform-tests/trusted-types/tt-block-eval.tentative.html b/tests/wpt/web-platform-tests/trusted-types/tt-block-eval.tentative.html index e721b0e0d36..8fe8aa50d6c 100644 --- a/tests/wpt/web-platform-tests/trusted-types/tt-block-eval.tentative.html +++ b/tests/wpt/web-platform-tests/trusted-types/tt-block-eval.tentative.html @@ -3,7 +3,7 @@ <head> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> - <meta http-equiv="Content-Security-Policy" content="trusted-types *"> + <meta http-equiv="Content-Security-Policy" content="trusted-types *; require-trusted-types-for 'script'"> </head> <body> <script> diff --git a/tests/wpt/web-platform-tests/url/urlsearchparams-constructor.any.js b/tests/wpt/web-platform-tests/url/urlsearchparams-constructor.any.js index 398021dde2f..f7989f70ea0 100644 --- a/tests/wpt/web-platform-tests/url/urlsearchparams-constructor.any.js +++ b/tests/wpt/web-platform-tests/url/urlsearchparams-constructor.any.js @@ -22,7 +22,7 @@ test(function () { test(() => { var params = new URLSearchParams(DOMException); assert_equals(params.toString(), "INDEX_SIZE_ERR=1&DOMSTRING_SIZE_ERR=2&HIERARCHY_REQUEST_ERR=3&WRONG_DOCUMENT_ERR=4&INVALID_CHARACTER_ERR=5&NO_DATA_ALLOWED_ERR=6&NO_MODIFICATION_ALLOWED_ERR=7&NOT_FOUND_ERR=8&NOT_SUPPORTED_ERR=9&INUSE_ATTRIBUTE_ERR=10&INVALID_STATE_ERR=11&SYNTAX_ERR=12&INVALID_MODIFICATION_ERR=13&NAMESPACE_ERR=14&INVALID_ACCESS_ERR=15&VALIDATION_ERR=16&TYPE_MISMATCH_ERR=17&SECURITY_ERR=18&NETWORK_ERR=19&ABORT_ERR=20&URL_MISMATCH_ERR=21"A_EXCEEDED_ERR=22&TIMEOUT_ERR=23&INVALID_NODE_TYPE_ERR=24&DATA_CLONE_ERR=25") - assert_throws(new TypeError(), () => new URLSearchParams(DOMException.prototype), + assert_throws_js(TypeError, () => new URLSearchParams(DOMException.prototype), "Constructing a URLSearchParams from DOMException.prototype should throw due to branding checks"); }, "URLSearchParams constructor, DOMException as argument") @@ -153,8 +153,8 @@ test(function() { params = new URLSearchParams([['a', 'b'], ['c', 'd']]); assert_equals(params.get("a"), "b"); assert_equals(params.get("c"), "d"); - assert_throws(new TypeError(), function() { new URLSearchParams([[1]]); }); - assert_throws(new TypeError(), function() { new URLSearchParams([[1,2,3]]); }); + assert_throws_js(TypeError, function() { new URLSearchParams([[1]]); }); + assert_throws_js(TypeError, function() { new URLSearchParams([[1,2,3]]); }); }, "Constructor with sequence of sequences of strings"); [ diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-createDataChannel.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-createDataChannel.html index 58e757bce07..943e5728775 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-createDataChannel.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-createDataChannel.html @@ -69,7 +69,7 @@ test(t => { t.add_cleanup(() => pc.close()); assert_equals(pc.createDataChannel.length, 1); - assert_throws(new TypeError(), () => pc.createDataChannel()); + assert_throws_js(TypeError, () => pc.createDataChannel()); }, 'createDataChannel with no argument should throw TypeError'); /* @@ -292,11 +292,11 @@ test(t => { const pc = new RTCPeerConnection; t.add_cleanup(() => pc.close()); - assert_throws(new TypeError(), () => pc.createDataChannel('', { + assert_throws_js(TypeError, () => pc.createDataChannel('', { maxPacketLifeTime: 0, maxRetransmits: 0 })); - assert_throws(new TypeError(), () => pc.createDataChannel('', { + assert_throws_js(TypeError, () => pc.createDataChannel('', { maxPacketLifeTime: 42, maxRetransmits: 42 })); @@ -330,6 +330,15 @@ for (const [description, protocol, expected] of protocols) { 20. If [[DataChannelId]] is equal to 65535, which is greater than the maximum allowed ID of 65534 but still qualifies as an unsigned short, throw a TypeError. */ +for (const id of [0, 1, 65534, 65535]) { + test((t) => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + const dc = pc.createDataChannel('', { id }); + assert_equals(dc.id, null); + }, `createDataChannel with id ${id} and negotiated not set should succeed, but not set the channel's id`); +} + for (const id of [0, 1, 65534]) { test(t => { const pc = new RTCPeerConnection(); @@ -337,7 +346,15 @@ for (const id of [0, 1, 65534]) { const dc = pc.createDataChannel('', { 'negotiated': true, 'id': id }); assert_equals(dc.id, id); - }, `createDataChannel with id ${id} should succeed`); + }, `createDataChannel with id ${id} and negotiated true should succeed, and set the channel's id`); +} + +for (const id of [-1, 65536]) { + test((t) => { + const pc = new RTCPeerConnection(); + t.add_cleanup(() => pc.close()); + assert_throws_js(TypeError, () => pc.createDataChannel('', { id })); + }, `createDataChannel with id ${id} and negotiated not set should throw TypeError`); } for (const id of [-1, 65535, 65536]) { @@ -345,7 +362,7 @@ for (const id of [-1, 65535, 65536]) { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); - assert_throws(new TypeError(), () => pc.createDataChannel('', + assert_throws_js(TypeError, () => pc.createDataChannel('', { 'negotiated': true, 'id': id })); }, `createDataChannel with id ${id} should throw TypeError`); } @@ -380,10 +397,10 @@ test(t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); - assert_throws(new TypeError(), () => + assert_throws_js(TypeError, () => pc.createDataChannel('l'.repeat(65536))); - assert_throws(new TypeError(), () => + assert_throws_js(TypeError, () => pc.createDataChannel('l'.repeat(65536), { negotiated: true, id: 42 @@ -394,10 +411,10 @@ test(t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); - assert_throws(new TypeError(), () => + assert_throws_js(TypeError, () => pc.createDataChannel('\u00b5'.repeat(32768))); - assert_throws(new TypeError(), () => + assert_throws_js(TypeError, () => pc.createDataChannel('\u00b5'.repeat(32768), { negotiated: true, id: 42 @@ -435,12 +452,12 @@ test(t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); - assert_throws(new TypeError(), () => + assert_throws_js(TypeError, () => pc.createDataChannel('', { protocol: 'p'.repeat(65536) })); - assert_throws(new TypeError(), () => + assert_throws_js(TypeError, () => pc.createDataChannel('', { protocol: 'p'.repeat(65536), negotiated: true, @@ -452,12 +469,12 @@ test(t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); - assert_throws(new TypeError(), () => + assert_throws_js(TypeError, () => pc.createDataChannel('', { protocol: '\u00b6'.repeat(32768) })); - assert_throws(new TypeError(), () => + assert_throws_js(TypeError, () => pc.createDataChannel('', { protocol: '\u00b6'.repeat(32768), negotiated: true, @@ -520,7 +537,7 @@ test(t => { const pc = new RTCPeerConnection(); t.add_cleanup(() => pc.close()); - assert_throws(new TypeError(), () => + assert_throws_js(TypeError, () => pc.createDataChannel('test', { negotiated: true })); diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-and-then-static-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-and-then-static-import-worker.js index 9a386e63be5..527702f5511 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-and-then-static-import-worker.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-and-then-static-import-worker.js @@ -1,12 +1,24 @@ // This script is meant to be imported by a module worker. It receives a // message from the worker and responds with the list of imported modules. const sourcePromise = new Promise(resolve => { - self.onmessage = e => { - // DedicatedWorkerGlobalScope doesn't fill in e.source, - // so use e.target instead. - const source = e.source ? e.source : e.target; - resolve(source); - }; + if ('DedicatedWorkerGlobalScope' in self && + self instanceof DedicatedWorkerGlobalScope) { + self.onmessage = e => { + resolve(e.target); + }; + } else if ( + 'SharedWorkerGlobalScope' in self && + self instanceof SharedWorkerGlobalScope) { + self.onconnect = e => { + resolve(e.ports[0]); + }; + } else if ( + 'ServiceWorkerGlobalScope' in self && + self instanceof ServiceWorkerGlobalScope) { + self.onmessage = e => { + resolve(e.source); + }; + } }); const importedModulesPromise = diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-worker.js index 07f4df9db3e..2e756fe055e 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-worker.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/dynamic-import-worker.js @@ -1,12 +1,24 @@ // This script is meant to be imported by a module worker. It receives a // message from the worker and responds with the list of imported modules. const sourcePromise = new Promise(resolve => { - self.onmessage = e => { - // DedicatedWorkerGlobalScope doesn't fill in e.source, - // so use e.target instead. - const source = e.source ? e.source : e.target; - resolve(source); - }; + if ('DedicatedWorkerGlobalScope' in self && + self instanceof DedicatedWorkerGlobalScope) { + self.onmessage = e => { + resolve(e.target); + }; + } else if ( + 'SharedWorkerGlobalScope' in self && + self instanceof SharedWorkerGlobalScope) { + self.onconnect = e => { + resolve(e.ports[0]); + }; + } else if ( + 'ServiceWorkerGlobalScope' in self && + self instanceof ServiceWorkerGlobalScope) { + self.onmessage = e => { + resolve(e.source); + }; + } }); const importedModulesPromise = diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/eval-dynamic-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/eval-dynamic-import-worker.js index af57b19f98d..60080d4292a 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/eval-dynamic-import-worker.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/eval-dynamic-import-worker.js @@ -1,18 +1,29 @@ // This script is meant to be imported by a module worker. It receives a // message from the worker and responds with the list of imported modules. -const code = - "const sourcePromise = new Promise(resolve => {" + - " self.onmessage = e => {" + - " const source = e.source ? e.source : e.target;" + - " resolve(source);" + - " };" + - "});" + - "const importedModulesPromise =" + - " import('./export-on-load-script.js')" + - " .then(module => module.importedModules)" + - " .catch(error => `Failed to do dynamic import: ${error}`);" + - "Promise.all([sourcePromise, importedModulesPromise]).then(results => {" + - " const [source, importedModules] = results;" + - " source.postMessage(importedModules);" + - "});"; +const code = 'const sourcePromise = new Promise(resolve => {' + + ' if (\'DedicatedWorkerGlobalScope\' in self &&' + + ' self instanceof DedicatedWorkerGlobalScope) {' + + ' self.onmessage = e => {' + + ' resolve(e.target);' + + ' };' + + ' } else if (\'SharedWorkerGlobalScope\' in self &&' + + ' self instanceof SharedWorkerGlobalScope) {' + + ' self.onconnect = e => {' + + ' resolve(e.ports[0]);' + + ' };' + + ' } else if (\'ServiceWorkerGlobalScope\' in self &&' + + ' self instanceof ServiceWorkerGlobalScope) {' + + ' self.onmessage = e => {' + + ' resolve(e.source);' + + ' };' + + ' }' + + '});' + + 'const importedModulesPromise =' + + ' import(\'./export-on-load-script.js\')' + + ' .then(module => module.importedModules)' + + ' .catch(error => `Failed to do dynamic import: ${error}`);' + + 'Promise.all([sourcePromise, importedModulesPromise]).then(results => {' + + ' const [source, importedModules] = results;' + + ' source.postMessage(importedModules);' + + '});'; eval(code); diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/import-scripts-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/import-scripts-worker.js index 676cccb2ad7..d85f573ffe3 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/import-scripts-worker.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/import-scripts-worker.js @@ -1,6 +1,15 @@ try { importScripts('empty-worker.js'); - postMessage('LOADED'); + if ('DedicatedWorkerGlobalScope' in self && + self instanceof DedicatedWorkerGlobalScope) { + postMessage('LOADED'); + } else if ( + 'SharedWorkerGlobalScope' in self && + self instanceof SharedWorkerGlobalScope) { + onconnect = e => { + e.ports[0].postMessage('LOADED'); + }; + } } catch (e) { // Post a message instead of propagating an ErrorEvent to the page because // propagated event loses an error name. @@ -11,5 +20,14 @@ try { // and colno attributes initialized appropriately, and the error attribute // initialized to null." // https://html.spec.whatwg.org/multipage/workers.html#runtime-script-errors-2 - postMessage(e.name); + if ('DedicatedWorkerGlobalScope' in self && + self instanceof DedicatedWorkerGlobalScope) { + postMessage(e.name); + } else if ( + 'SharedWorkerGlobalScope' in self && + self instanceof SharedWorkerGlobalScope) { + onconnect = connectEvent => { + connectEvent.ports[0].postMessage(e.name); + }; + } } diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/nested-dynamic-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/nested-dynamic-import-worker.js index cb37f6e20f6..00da43c5f07 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/nested-dynamic-import-worker.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/nested-dynamic-import-worker.js @@ -2,12 +2,24 @@ // message from the worker and responds with the list of imported modules. const sourcePromise = new Promise(resolve => { - self.onmessage = e => { - // DedicatedWorkerGlobalScope doesn't fill in e.source, - // so use e.target instead. - const source = e.source ? e.source : e.target; - resolve(source); - }; + if ('DedicatedWorkerGlobalScope' in self && + self instanceof DedicatedWorkerGlobalScope) { + self.onmessage = e => { + resolve(e.target); + }; + } else if ( + 'SharedWorkerGlobalScope' in self && + self instanceof SharedWorkerGlobalScope) { + self.onconnect = e => { + resolve(e.ports[0]); + }; + } else if ( + 'ServiceWorkerGlobalScope' in self && + self instanceof ServiceWorkerGlobalScope) { + self.onmessage = e => { + resolve(e.source); + }; + } }); const importedModulesPromise = diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/nested-static-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/nested-static-import-worker.js index 7599faaa099..c3a9ff0b799 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/nested-static-import-worker.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/nested-static-import-worker.js @@ -1,9 +1,21 @@ // This script is meant to be imported by a module worker. It receives a // message from the worker and responds with the list of imported modules. import * as module from './export-on-static-import-script.js'; -self.onmessage = e => { - // DedicatedWorkerGlobalScope doesn't fill in e.source, - // so use e.target instead. - const source = e.source ? e.source : e.target; - source.postMessage(module.importedModules); -}; +if ('DedicatedWorkerGlobalScope' in self && + self instanceof DedicatedWorkerGlobalScope) { + self.onmessage = e => { + e.target.postMessage(module.importedModules); + }; +} else if ( + 'SharedWorkerGlobalScope' in self && + self instanceof SharedWorkerGlobalScope) { + self.onconnect = e => { + e.ports[0].postMessage(module.importedModules); + }; +} else if ( + 'ServiceWorkerGlobalScope' in self && + self instanceof ServiceWorkerGlobalScope) { + self.onmessage = e => { + e.source.postMessage(module.importedModules); + }; +} diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/post-message-on-load-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/post-message-on-load-worker.js index 93818ccad90..e1c547ab6a4 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/post-message-on-load-worker.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/post-message-on-load-worker.js @@ -1 +1,10 @@ -postMessage('LOADED'); +if ('DedicatedWorkerGlobalScope' in self && + self instanceof DedicatedWorkerGlobalScope) { + postMessage('LOADED'); +} else if ( + 'SharedWorkerGlobalScope' in self && + self instanceof SharedWorkerGlobalScope) { + self.onconnect = e => { + e.ports[0].postMessage('LOADED'); + }; +} diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/static-import-and-then-dynamic-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/static-import-and-then-dynamic-import-worker.js index cd98d8c17df..2d857a2e90a 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/static-import-and-then-dynamic-import-worker.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/static-import-and-then-dynamic-import-worker.js @@ -3,12 +3,24 @@ import * as module from './export-on-dynamic-import-script.js'; const sourcePromise = new Promise(resolve => { - self.onmessage = e => { - // DedicatedWorkerGlobalScope doesn't fill in e.source, - // so use e.target instead. - const source = e.source ? e.source : e.target; - resolve(source); - }; + if ('DedicatedWorkerGlobalScope' in self && + self instanceof DedicatedWorkerGlobalScope) { + self.onmessage = e => { + resolve(e.target); + }; + } else if ( + 'SharedWorkerGlobalScope' in self && + self instanceof SharedWorkerGlobalScope) { + self.onconnect = e => { + resolve(e.ports[0]); + }; + } else if ( + 'ServiceWorkerGlobalScope' in self && + self instanceof ServiceWorkerGlobalScope) { + self.onmessage = e => { + resolve(e.source); + }; + } }); export let importedModules = ['export-on-dynamic-import-script.js']; diff --git a/tests/wpt/web-platform-tests/workers/modules/resources/static-import-worker.js b/tests/wpt/web-platform-tests/workers/modules/resources/static-import-worker.js index 48751dbe03b..19a347999d3 100644 --- a/tests/wpt/web-platform-tests/workers/modules/resources/static-import-worker.js +++ b/tests/wpt/web-platform-tests/workers/modules/resources/static-import-worker.js @@ -1,9 +1,21 @@ // This script is meant to be imported by a module worker. It receives a // message from the worker and responds with the list of imported modules. import * as module from './export-on-load-script.js'; -self.onmessage = e => { - // DedicatedWorkerGlobalScope doesn't fill in e.source, - // so use e.target instead. - const source = e.source ? e.source : e.target; - source.postMessage(module.importedModules); -}; +if ('DedicatedWorkerGlobalScope' in self && + self instanceof DedicatedWorkerGlobalScope) { + self.onmessage = e => { + e.target.postMessage(module.importedModules); + }; +} else if ( + 'SharedWorkerGlobalScope' in self && + self instanceof SharedWorkerGlobalScope) { + self.onconnect = e => { + e.ports[0].postMessage(module.importedModules); + }; +} else if ( + 'ServiceWorkerGlobalScope' in self && + self instanceof ServiceWorkerGlobalScope) { + self.onmessage = e => { + e.source.postMessage(module.importedModules); + }; +} diff --git a/tests/wpt/web-platform-tests/workers/modules/shared-worker-import-blob-url.any.js b/tests/wpt/web-platform-tests/workers/modules/shared-worker-import-blob-url.any.js new file mode 100644 index 00000000000..d9e9e34c394 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/modules/shared-worker-import-blob-url.any.js @@ -0,0 +1,23 @@ +// META: global=!worker +// META: script=/workers/modules/resources/import-test-cases.js + +// Imports |testCase.scriptURL| on a shared worker loaded from a blob URL, +// and waits until the list of imported modules is sent from the worker. Passes +// if the list is equal to |testCase.expectation|. +function import_blob_url_test(testCase) { + promise_test(async () => { + const importURL = new URL(testCase.scriptURL, location.href); + const blob = + new Blob([`import "${importURL}";`], {type: 'text/javascript'}); + const blobURL = URL.createObjectURL(blob); + const worker = new SharedWorker(blobURL, {type: 'module'}); + worker.port.postMessage('Send message for tests from main script.'); + const msgEvent = await new Promise((resolve, reject) => { + worker.port.onmessage = resolve; + worker.onerror = (error) => reject(error && error.message); + }); + assert_array_equals(msgEvent.data, testCase.expectation); + }, testCase.description); +} + +testCases.forEach(import_blob_url_test); diff --git a/tests/wpt/web-platform-tests/workers/modules/shared-worker-import-failure.html b/tests/wpt/web-platform-tests/workers/modules/shared-worker-import-failure.html new file mode 100644 index 00000000000..0e0b9b30631 --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/modules/shared-worker-import-failure.html @@ -0,0 +1,33 @@ +<!DOCTYPE html> +<title>SharedWorker: import failure</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> setup({allow_uncaught_exception: true}); </script> +<script> + +// TODO: Factor out the test cases into a separate file. +// (like import-test-cases.js) +// TODO: Add rest of the tests correponding to +// 'dedicated-worker-import-failure.html' + +promise_test(async () => { + const scriptURL = 'resources/import-scripts-worker.js'; + const worker = new SharedWorker(scriptURL, { type: 'module' }); + const msg_event = + await new Promise(resolve => worker.port.onmessage = resolve); + assert_equals(msg_event.data, 'TypeError'); +}, 'importScripts() on module worker should throw an exception.'); + +test(() => { + const scriptURL = 'http://invalid:123$'; + assert_throws('SyntaxError', + () => new SharedWorker(scriptURL, { type: 'module' })); +}, 'SharedWorker construction for an invalid URL should throw an exception.'); + +test(() => { + const scriptURL = 'file:///static-import-worker.js'; + assert_throws('SecurityError', + () => new SharedWorker(scriptURL, { type: 'module' })); +}, 'SharedWorker construction for a file URL should throw an exception.'); + +</script> diff --git a/tests/wpt/web-platform-tests/workers/modules/shared-worker-import.any.js b/tests/wpt/web-platform-tests/workers/modules/shared-worker-import.any.js new file mode 100644 index 00000000000..450d4ad422b --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/modules/shared-worker-import.any.js @@ -0,0 +1,19 @@ +// META: global=!worker +// META: script=/workers/modules/resources/import-test-cases.js + +// Starts a shared worker for |testCase.scriptURL| and waits until the list +// of imported modules is sent from the worker. Passes if the list is equal to +// |testCase.expectation|. +function import_test(testCase) { + promise_test(async () => { + const worker = new SharedWorker(testCase.scriptURL, {type: 'module'}); + worker.port.postMessage('Send message for tests from main script.'); + const msgEvent = await new Promise((resolve, reject) => { + worker.port.onmessage = resolve; + worker.onerror = (error) => reject(error && error.message); + }); + assert_array_equals(msgEvent.data, testCase.expectation); + }, testCase.description); +} + +testCases.forEach(import_test); diff --git a/tests/wpt/web-platform-tests/workers/modules/shared-worker-options-type.html b/tests/wpt/web-platform-tests/workers/modules/shared-worker-options-type.html new file mode 100644 index 00000000000..25b793c631d --- /dev/null +++ b/tests/wpt/web-platform-tests/workers/modules/shared-worker-options-type.html @@ -0,0 +1,47 @@ +<!DOCTYPE html> +<title>SharedWorker: WorkerOptions 'type'</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + +promise_test(() => { + const worker = new SharedWorker('resources/post-message-on-load-worker.js'); + return new Promise(resolve => worker.port.onmessage = resolve) + .then(msg_event => assert_equals(msg_event.data, 'LOADED')); +}, 'Test worker construction with the default worker type.'); + +promise_test(() => { + const worker = new SharedWorker('resources/post-message-on-load-worker.js', + { type: 'classic' }); + return new Promise(resolve => worker.port.onmessage = resolve) + .then(msg_event => assert_equals(msg_event.data, 'LOADED')); +}, 'Test worker construction with the "classic" worker type.'); + +promise_test(() => { + const worker = new SharedWorker('resources/post-message-on-load-worker.js', + { type: 'module' }); + return new Promise(resolve => worker.port.onmessage = resolve) + .then(msg_event => assert_equals(msg_event.data, 'LOADED')); +}, 'Test worker construction with the "module" worker type.'); + +test(() => { + assert_throws( + new TypeError(), + () => { + new SharedWorker('resources/post-message-on-load-worker.js', + {type : ''}); + }, + 'Worker construction with an empty type should throw an exception'); +}, 'Test worker construction with an empty worker type.'); + +test(() => { + assert_throws( + new TypeError(), + () => { + new SharedWorker('resources/post-message-on-load-worker.js', + {type : 'unknown'}); + }, + 'Worker construction with an unknown type should throw an exception'); +}, 'Test worker construction with an unknown worker type.'); + +</script> |