aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2020-03-10 12:32:28 -0400
committerGitHub <noreply@github.com>2020-03-10 12:32:28 -0400
commite3c91f7c4919e96e80c5d0ef8e9acb3e4461b1c3 (patch)
tree9793eb3f27d45e2b783870d84046d49171f65f66
parent30fafdca19fd1eeb624c661b4c90c68482a43c05 (diff)
parent6f72329513ce9aecbcfbca4984d0317585c5f578 (diff)
downloadservo-e3c91f7c4919e96e80c5d0ef8e9acb3e4461b1c3.tar.gz
servo-e3c91f7c4919e96e80c5d0ef8e9acb3e4461b1c3.zip
Auto merge of #25938 - servo-wpt-sync:wpt_update_10-03-2020, r=jdm
Sync WPT with upstream (10-03-2020) Automated downstream sync of changes from upstream as of 10-03-2020. [no-wpt-sync] r? @servo-wpt-sync
-rw-r--r--tests/wpt/metadata-layout-2020/css/cssom-view/cssom-getBoundingClientRect-003.html.ini6
-rw-r--r--tests/wpt/metadata/MANIFEST.json582
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini4
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini4
-rw-r--r--tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini4
-rw-r--r--tests/wpt/metadata/css/css-animations/CSSAnimation-compositeOrder.tentative.html.ini3
-rw-r--r--tests/wpt/metadata/css/css-images/conic-gradient-angle-negative.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-images/conic-gradient-angle.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-images/conic-gradient-center.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-images/normalization-conic-2.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-images/normalization-conic-degenerate.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-images/normalization-conic.html.ini2
-rw-r--r--tests/wpt/metadata/css/css-images/out-of-range-color-stop-conic.html.ini2
-rw-r--r--tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini4
-rw-r--r--tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/cssom-getBoundingClientRect-003.html.ini7
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini3
-rw-r--r--tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini3
-rw-r--r--tests/wpt/metadata/fetch/content-type/response.window.js.ini13
-rw-r--r--tests/wpt/metadata/fetch/content-type/script.window.js.ini3
-rw-r--r--tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini3
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini4
-rw-r--r--tests/wpt/metadata/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html.ini3
-rw-r--r--tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/no-autofocus-on-changing-input-type.html.ini4
-rw-r--r--tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini3
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini3
-rw-r--r--tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini3
-rw-r--r--tests/wpt/metadata/webmessaging/with-ports/017.html.ini5
-rw-r--r--tests/wpt/metadata/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https.html.ini7
-rw-r--r--tests/wpt/web-platform-tests/.well-known/origin-policy16
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-outside-001-ref.xht2
-rw-r--r--tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-outside-001.xht2
-rw-r--r--tests/wpt/web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/conic-gradient-angle-negative.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/conic-gradient-angle.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/conic-gradient-center-ref.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/conic-gradient-center.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/linear-gradient-1.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/linear-gradient-2.html35
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/linear-gradient-ref.html27
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-conic-2-ref.html3
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-conic-2.html7
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-radial-2-ref.html4
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-radial-2.html8
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/normalization-conic-2.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/normalization-conic-degenerate.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/normalization-conic.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/normalization-linear-2.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/normalization-linear-degenerate.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/normalization-linear.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/normalization-radial-2.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/normalization-radial-degenerate.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/normalization-radial.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/out-of-range-color-stop-conic.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/reference/100x100-blue.html2
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/reference/200x200-blue-black-green-red.html22
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/repeating-conic-gradient-ref.html10
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/repeating-conic-gradient.html14
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/tiled-conic-gradients-ref.html29
-rw-r--r--tests/wpt/web-platform-tests/css/css-images/tiled-conic-gradients.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-lists/change-list-style-position-003-ref.html15
-rw-r--r--tests/wpt/web-platform-tests/css/css-lists/change-list-style-position-003.html21
-rw-r--r--tests/wpt/web-platform-tests/css/css-shadow-parts/exportparts-multiple.html76
-rw-r--r--tests/wpt/web-platform-tests/css/cssom-view/cssom-getBoundingClientRect-003.html34
-rw-r--r--tests/wpt/web-platform-tests/fetch/api/redirect/redirect-mode.any.js1
-rw-r--r--tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/no-autofocus-on-changing-input-type.html27
-rw-r--r--tests/wpt/web-platform-tests/html/rendering/widgets/baseline-alignment-and-overflow.tentative.html2
-rw-r--r--tests/wpt/web-platform-tests/interfaces/trusted-types.tentative.idl8
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/native_FileSystemBaseHandle-isSameEntry-manual.https.tentative.html10
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-resolve-manual.https.tentative.html10
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemBaseHandle-isSameEntry.tentative.https.any.js3
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-resolve.tentative.https.any.js3
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemBaseHandle-isSameEntry.js62
-rw-r--r--tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-resolve.js27
-rw-r--r--tests/wpt/web-platform-tests/origin-policy/content-security/manifest-404.https.html17
-rw-r--r--tests/wpt/web-platform-tests/origin-policy/content-security/manifest-mimetype.https.html16
-rw-r--r--tests/wpt/web-platform-tests/origin-policy/policies/op100 manifest-mimetype.json6
-rw-r--r--tests/wpt/web-platform-tests/origin-policy/policies/op99 csp-valid-manifest-with-404.json6
-rw-r--r--tests/wpt/web-platform-tests/paint-timing/input-text.html19
-rw-r--r--tests/wpt/web-platform-tests/paint-timing/resources/utils.js53
-rw-r--r--tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js9
-rw-r--r--tests/wpt/web-platform-tests/service-workers/service-worker/windowclient-navigate.https.html4
-rw-r--r--tests/wpt/web-platform-tests/svg/types/scripted/SVGGraphicsElement.getBBox-01.html129
-rw-r--r--tests/wpt/web-platform-tests/svg/types/scripted/SVGGraphicsElement.getBBox-02.html19
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestexpected.py23
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py5
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py4
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py1
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py7
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/DOMParser-parseFromString-regression.tentative.https.html1
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/DOMWindowTimers-setTimeout-setInterval.tentative.https.html35
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.tentative.https.html2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/HTMLScriptElement-internal-slot.tentative.https.html3
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedType-AttributeNodes.tentative.https.html1
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.https.html1
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-createXXX.tentative.https.html1
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-constants.tentative.https.html1
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests-wildcard.tentative.https.html1
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-getPropertyType.tentative.https.html1
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.https.html1
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-metadata.tentative.https.html2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/WorkerGlobalScope-importScripts.https.html2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-Node-multiple-arguments.tentative.https.html2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.https.html2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.https.html2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.https.html2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.tentative.https.html2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-outerHTML.tentative.https.html4
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.https.html2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.https.html2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLElement-generic.tentative.https.html4
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Range-createContextualFragment.tentative.https.html2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.https.html2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/default-policy-report-only.tentative.https.html.headers2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.https.html.headers2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.https.html.headers2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.https.html.headers2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-no-default-policy.tentative.https.html2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/eval-with-permissive-csp.tentative.https.html2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.https.html.headers2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for.tentative.https.html3
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/support/WorkerGlobalScope-importScripts.https.js.headers2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/support/navigation-report-only-support.html.headers2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/support/navigation-support.html.headers2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/trusted-types-createHTMLDocument.tentative.https.html3
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html2
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/trusted-types-eval-reporting-report-only.tentative.https.html.headers1
-rw-r--r--tests/wpt/web-platform-tests/trusted-types/tt-block-eval.tentative.https.html2
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/infinite-duration-animation-ref.html19
-rw-r--r--tests/wpt/web-platform-tests/web-animations/timing-model/animations/infinite-duration-animation.html64
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFReader-document-hidden-manual.https.html5
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html14
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/NDEFWriter_write.https.html28
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/nfc_permission.https.html29
-rw-r--r--tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js2
-rw-r--r--tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js4
-rw-r--r--tests/wpt/web-platform-tests/webxr/resources/webxr_util.js8
-rw-r--r--tests/wpt/web-platform-tests/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https.html224
140 files changed, 2007 insertions, 261 deletions
diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/cssom-getBoundingClientRect-003.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/cssom-getBoundingClientRect-003.html.ini
new file mode 100644
index 00000000000..46d01ecd813
--- /dev/null
+++ b/tests/wpt/metadata-layout-2020/css/cssom-view/cssom-getBoundingClientRect-003.html.ini
@@ -0,0 +1,6 @@
+[cssom-getBoundingClientRect-003.html]
+ [{Element,Range}.prototype.getBoundingClientRect on SVG <tspan>, Element]
+ expected: FAIL
+
+ [{Element,Range}.prototype.getBoundingClientRect on SVG <tspan>, Range]
+ expected: FAIL
diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json
index cc27a64a40c..ad42b9aa387 100644
--- a/tests/wpt/metadata/MANIFEST.json
+++ b/tests/wpt/metadata/MANIFEST.json
@@ -16645,6 +16645,13 @@
{}
]
],
+ "native_FileSystemBaseHandle-isSameEntry-manual.https.tentative.html": [
+ "1d13d8bab6685dee9a6579707bf3e51a2ffe8939",
+ [
+ null,
+ {}
+ ]
+ ],
"native_FileSystemBaseHandle-postMessage-BroadcastChannel-manual.https.tentative.html": [
"322b169985bf40e2bac1dba813e840e951f89414",
[
@@ -16729,6 +16736,13 @@
{}
]
],
+ "native_FileSystemDirectoryHandle-resolve-manual.https.tentative.html": [
+ "9c001b366b9d24e5d55e88409650b4454f2ddac7",
+ [
+ null,
+ {}
+ ]
+ ],
"native_FileSystemFileHandle-getFile-manual.https.tentative.html": [
"5a0b1d97b05a48c178cf86e6c766565fa87a7ef0",
[
@@ -23375,7 +23389,7 @@
},
"web-nfc": {
"NDEFReader-document-hidden-manual.https.html": [
- "10ce53e4a4f40bd0dfae074bf854f3491ea964a6",
+ "f2027dc99d1dad8004c72f0af5e7eea48836c3b2",
[
null,
{}
@@ -53358,7 +53372,7 @@
]
],
"floats-wrap-bfc-outside-001.xht": [
- "9ae6447f3c6e7fdd6dc080b1829782eeb6b8cb0e",
+ "1dec29a58388a844e2cb2bd4adba840c7017290f",
[
null,
[
@@ -143835,6 +143849,45 @@
]
},
"css-images": {
+ "conic-gradient-angle-negative.html": [
+ "ff8e20aafedd1c21730d1a5e61787f525d47ef11",
+ [
+ null,
+ [
+ [
+ "/css/css-images/reference/200x200-blue-black-green-red.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "conic-gradient-angle.html": [
+ "0b3404508d072705a59bdc97ac23b8d53fc1ffde",
+ [
+ null,
+ [
+ [
+ "/css/css-images/reference/200x200-blue-black-green-red.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "conic-gradient-center.html": [
+ "ecbc3ffa5c7cbae41b90940b6cdb591e82aef4cb",
+ [
+ null,
+ [
+ [
+ "/css/css-images/conic-gradient-center-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"css-image-fallbacks-and-annotations.html": [
"7c576624cd0f005febcc62027e87bcb8d7cca162",
[
@@ -144370,7 +144423,7 @@
]
],
"linear-gradient-1.html": [
- "dcf590f36734222359fb693a286af31731742895",
+ "aa5a1310c5079a282aaf6d57d5502b1ff77d6808",
[
null,
[
@@ -144383,7 +144436,7 @@
]
],
"linear-gradient-2.html": [
- "bdfd96ea85592ddf9c8dbb8ef8d11afaef6d9ef7",
+ "a9dca048b1ae09e4bcc5afe3893d1b45b79e965c",
[
null,
[
@@ -144395,6 +144448,19 @@
{}
]
],
+ "multiple-position-color-stop-conic-2.html": [
+ "5d4c6f0e17c6f97c9a60744d1c988d7cabbf00fd",
+ [
+ null,
+ [
+ [
+ "/css/css-images/multiple-position-color-stop-conic-2-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"multiple-position-color-stop-conic.html": [
"8a7331d08ff53bed6c19d96c95740b57fed43516",
[
@@ -144435,7 +144501,7 @@
]
],
"multiple-position-color-stop-radial-2.html": [
- "c66b0831626ba1a5687ba0b7a3a4ad9dc59ed877",
+ "339f5d4b33ab22a0d5640fc02fc4798a93ca9d91",
[
null,
[
@@ -144460,6 +144526,162 @@
{}
]
],
+ "normalization-conic-2.html": [
+ "7f5c3954f61a3c0f2c71069065f0c6d29bb1708b",
+ [
+ null,
+ [
+ [
+ "/css/css-images/reference/100x100-blue.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "normalization-conic-degenerate.html": [
+ "909fd54dcbdb4c865a8bbfc4f7d9b966cd1c663d",
+ [
+ null,
+ [
+ [
+ "/css/css-images/reference/100x100-blue.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "normalization-conic.html": [
+ "9c5e82d71cc779553835400aa596fe973d94e4bb",
+ [
+ null,
+ [
+ [
+ "/css/css-images/reference/100x100-blue.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "normalization-linear-2.html": [
+ "e3feeeb49a650beab8783d79ff8003ac011d3842",
+ [
+ null,
+ [
+ [
+ "/css/css-images/reference/100x100-blue.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "normalization-linear-degenerate.html": [
+ "26647290fb4e891ebe1fa667687ac7cf0f1c3eed",
+ [
+ null,
+ [
+ [
+ "/css/css-images/reference/100x100-blue.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "normalization-linear.html": [
+ "e46645631afa45fc031ffc5fb092d7b6c1e7e660",
+ [
+ null,
+ [
+ [
+ "/css/css-images/reference/100x100-blue.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "normalization-radial-2.html": [
+ "5ea50a5e035df1807db83ed5a1242253425fc797",
+ [
+ null,
+ [
+ [
+ "/css/css-images/reference/100x100-blue.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "normalization-radial-degenerate.html": [
+ "4fff3ac909a04779a36310fb19c002c6b75d2d3a",
+ [
+ null,
+ [
+ [
+ "/css/css-images/reference/100x100-blue.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "normalization-radial.html": [
+ "6a510aa52f38a46d91114b5bc0fc3f8b19156097",
+ [
+ null,
+ [
+ [
+ "/css/css-images/reference/100x100-blue.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "out-of-range-color-stop-conic.html": [
+ "be0c73a3bac62f5686f255245b080a07331ed48c",
+ [
+ null,
+ [
+ [
+ "/css/css-images/reference/200x200-blue-black-green-red.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "repeating-conic-gradient.html": [
+ "69c3bf4bacca3b24a6a1ebacf872062d2f52e947",
+ [
+ null,
+ [
+ [
+ "/css/css-images/repeating-conic-gradient-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "tiled-conic-gradients.html": [
+ "07e1540f2a435bad277c06ad7025c6e62fae8f97",
+ [
+ null,
+ [
+ [
+ "/css/css-images/tiled-conic-gradients-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"tiled-gradients.html": [
"f6f5f5bd53e1f9dfd49c019afc2f4a3496f6defa",
[
@@ -146330,6 +146552,19 @@
{}
]
],
+ "change-list-style-position-003.html": [
+ "8af360f0b090ee65f5496ed568a50f440d7a7555",
+ [
+ null,
+ [
+ [
+ "/css/css-lists/change-list-style-position-003-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"content-property": {
"marker-text-matches-armenian.html": [
"58f570cd1197579aba1b646a1c970ab13c23c3e3",
@@ -232732,6 +232967,19 @@
"web-animations": {
"timing-model": {
"animations": {
+ "infinite-duration-animation.html": [
+ "c641e5afa2aab390ebbc67df43af1bba34aa08a4",
+ [
+ null,
+ [
+ [
+ "/web-animations/timing-model/animations/infinite-duration-animation-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"reverse-running-animation.html": [
"65f89b3e04c0b7ff6af221a100685fa71bcf7591",
[
@@ -236127,7 +236375,7 @@
]
},
"origin-policy": [
- "df2b83256c2265fdcf1e48b6f1b06c852412cb23",
+ "15355ce0d91b3ed43d9dfa110cc3f6c597812a74",
[]
]
},
@@ -267039,7 +267287,7 @@
[]
],
"floats-wrap-bfc-outside-001-ref.xht": [
- "5ea97a40f51c830da10dd0dd00e1197f40172b6b",
+ "20ae62757d41bc51c29192e8be71ad7be0fc5b78",
[]
],
"floats-wrap-top-below-001l-notref.xht": [
@@ -291149,6 +291397,10 @@
"8d3b9472b2c9a2ee88dc97f907f9d16eb4fa3755",
[]
],
+ "conic-gradient-center-ref.html": [
+ "6af682601ef4c3923c738103d94603530d2f230a",
+ []
+ ],
"css-image-fallbacks-and-annotations-ref.html": [
"f3193036766e428bf946e81b7df72bfc7f4901db",
[]
@@ -291294,7 +291546,11 @@
[]
],
"linear-gradient-ref.html": [
- "6643bb918b5f79ce72d3f16ec999d675e04f59d3",
+ "033f1767799d718f072b48b6a99a4eaf7070f90e",
+ []
+ ],
+ "multiple-position-color-stop-conic-2-ref.html": [
+ "2ee92a11ee43a60031302ecb24b5a1e2865590ec",
[]
],
"multiple-position-color-stop-linear-2-ref.html": [
@@ -291302,15 +291558,27 @@
[]
],
"multiple-position-color-stop-radial-2-ref.html": [
- "9b5bdfdf2cd5f4b8f673713b01c8f0bb33cf3f42",
+ "39850ad3412a44d1dcb70bf8c93c216e8a13286f",
[]
],
"reference": {
"100x100-blue-green.html": [
"e4f35c3e430cc2994709f6805576d1fe2c1f9cf3",
[]
+ ],
+ "100x100-blue.html": [
+ "60015b014d7d7033bf690f19c7dee601d9e5b50a",
+ []
+ ],
+ "200x200-blue-black-green-red.html": [
+ "04322b066c316b8b89c73d966e00f607447edd8e",
+ []
]
},
+ "repeating-conic-gradient-ref.html": [
+ "0271bc3018507c8644c83f59022354807af364ab",
+ []
+ ],
"support": {
"1x1-green.gif": [
"e023d92c7ad04264d06196d47a5edd828a7f71db",
@@ -291495,6 +291763,10 @@
[]
]
},
+ "tiled-conic-gradients-ref.html": [
+ "95a4122bc0d293a78988714e07d4a247c02f23dd",
+ []
+ ],
"tiled-gradients-ref.html": [
"a6fa41214eefdb561eaf4757a4371d1953e313db",
[]
@@ -291693,6 +291965,10 @@
"0f724434d6ee7464ad99bc1c68142f8b06dbab98",
[]
],
+ "change-list-style-position-003-ref.html": [
+ "01494b4dd1f6671d2ff626b0f05ceee1077e287c",
+ []
+ ],
"change-list-style-type-ref.html": [
"033af1333132a2696d1a80ceacfc91f1ebf67a08",
[]
@@ -325331,7 +325607,7 @@
[]
],
"trusted-types.tentative.idl": [
- "29a1822465f3e83aeed3f219230092e66c210e8d",
+ "18a8bfeb3cbeb1e35de3be13719a74dcdbf49d92",
[]
],
"uievents.idl": [
@@ -328385,6 +328661,10 @@
"855e52f04ddf2f4f8641524010216c6e8c7cdda7",
[]
],
+ "FileSystemBaseHandle-isSameEntry.js": [
+ "e8a8725b95ead6c57cd6e179b1e1bb727812ab0d",
+ []
+ ],
"FileSystemBaseHandle-postMessage-BroadcastChannel.js": [
"7daf65e39b6f7776c46eb90d671c192b0ba4aca0",
[]
@@ -328433,6 +328713,10 @@
"ffd24a5eb7b9e937355d9e8e28c698f0a6e9a61c",
[]
],
+ "FileSystemDirectoryHandle-resolve.js": [
+ "a8900f97e54523f29bdc9afcd021d32c9dbb0e08",
+ []
+ ],
"FileSystemFileHandle-getFile.js": [
"6b7d9f9a3171c96aaa2e1312451b3a9cac6c2e9b",
[]
@@ -328793,6 +329077,10 @@
"0fc1d163f2b61951813eae9ca84f2d4fe7f59703",
[]
],
+ "op100 manifest-mimetype.json": [
+ "3d906d500ba797dd686c64ba1beb9d5fe11d3a28",
+ []
+ ],
"op2 cspfp-double-top-level.json": [
"26d798b585d96fd29994dc39544a15bd2f6a639d",
[]
@@ -328824,6 +329112,10 @@
"op9 csp-valid-with-multi-item-array.json": [
"edd743038db8d48a8f23ae903c8170205119dc2c",
[]
+ ],
+ "op99 csp-valid-manifest-with-404.json": [
+ "d0870331b43baf3e5a53e53f14aaa1c6e628183e",
+ []
]
},
"resources": {
@@ -328894,6 +329186,10 @@
"subframe-sending-paint.html": [
"f372bd6f4f88468ae67a4b5139346461c8d35628",
[]
+ ],
+ "utils.js": [
+ "6ccb5f6d7317a14547c755cdbf21c858b0d17a61",
+ []
]
}
},
@@ -337724,7 +338020,7 @@
[]
],
"nfc-mock.js": [
- "14bb8fdada399999efb67576481efa8881af48f3",
+ "1a7e15819e67ce0bc9d1db841cb4f091364e8138",
[]
],
"sensor.mojom.js": [
@@ -348151,7 +348447,7 @@
[]
],
"manifestexpected.py": [
- "335b0da5c907f649a4bec803ebc25ed7ff54faf8",
+ "63ebbe50d00e5d6288a5a4733e20c4fa3b49ce53",
[]
],
"manifestinclude.py": [
@@ -348203,7 +348499,7 @@
[]
],
"testloader.py": [
- "86d9de88221dff8ced44d54ce825d48393885a2f",
+ "c559c94debc72641e5b8f7a47efea466ac0a7e5e",
[]
],
"testrunner.py": [
@@ -348305,7 +348601,7 @@
[]
],
"wptcommandline.py": [
- "5f07e7e6520f028c2d4418a4c2bde782a50a84ae",
+ "59a8c55b4ef9847f08a0ccf4b09f268e9f087aae",
[]
],
"wptlogging.py": [
@@ -348375,11 +348671,11 @@
}
},
"wptrunner.py": [
- "3d15c6e5418e9cfb5bc6e71e1a8e4d9846974266",
+ "5ebc43d884dfbed010ef81c7de756d2d0ee8a55f",
[]
],
"wpttest.py": [
- "e8c267460661ae2978b2af2b903b494ad1a81c3a",
+ "1e27f90d91a5cd907a1de1701fbb571c517ef16b",
[]
]
},
@@ -348767,23 +349063,23 @@
[]
],
"default-policy-report-only.tentative.https.html.headers": [
- "67b9ef7a3c5ef2f53775de6965ca12343026a829",
+ "4c1ff15e167a9581839c64532078440689ca741c",
[]
],
"default-policy.tentative.https.html.headers": [
- "6a40e40a586a5b0ad3f01bf8e45402e74d424cd2",
+ "604e765da46d85fe8ab85d3097fe7c2cbe00a930",
[]
],
"empty-default-policy-report-only.tentative.https.html.headers": [
- "67b9ef7a3c5ef2f53775de6965ca12343026a829",
+ "4c1ff15e167a9581839c64532078440689ca741c",
[]
],
"empty-default-policy.tentative.https.html.headers": [
- "6a40e40a586a5b0ad3f01bf8e45402e74d424cd2",
+ "604e765da46d85fe8ab85d3097fe7c2cbe00a930",
[]
],
"no-require-trusted-types-for-report-only.tentative.https.html.headers": [
- "fa87952ae486b3a902eca0257eadace8e25e881f",
+ "aa00fcc15a30ef1f8968be44abc1a9e934a31979",
[]
],
"require-trusted-types-for-report-only.tentative.https.html.headers": [
@@ -348800,7 +349096,7 @@
[]
],
"WorkerGlobalScope-importScripts.https.js.headers": [
- "6a40e40a586a5b0ad3f01bf8e45402e74d424cd2",
+ "604e765da46d85fe8ab85d3097fe7c2cbe00a930",
[]
],
"helper.sub.js": [
@@ -348812,7 +349108,7 @@
[]
],
"navigation-report-only-support.html.headers": [
- "67b9ef7a3c5ef2f53775de6965ca12343026a829",
+ "4c1ff15e167a9581839c64532078440689ca741c",
[]
],
"navigation-support.html": [
@@ -348820,7 +349116,7 @@
[]
],
"navigation-support.html.headers": [
- "6a40e40a586a5b0ad3f01bf8e45402e74d424cd2",
+ "604e765da46d85fe8ab85d3097fe7c2cbe00a930",
[]
],
"worker.js": [
@@ -348837,7 +349133,7 @@
[]
],
"trusted-types-eval-reporting-report-only.tentative.https.html.headers": [
- "1d7033658c1eccb672e85b281ba800832c972712",
+ "b5e94c400bb00aef7a9231c05500375f418c1065",
[]
],
"trusted-types-eval-reporting.tentative.https.html.headers": [
@@ -349820,6 +350116,10 @@
],
"timing-model": {
"animations": {
+ "infinite-duration-animation-ref.html": [
+ "6b358bd4e7f3eb2e15d18246ec5722860a903a47",
+ []
+ ],
"reverse-running-animation-ref.html": [
"7fcdf9156f82ae51ed3004fa00ef1fc1f01192db",
[]
@@ -349922,7 +350222,7 @@
],
"resources": {
"nfc-helpers.js": [
- "b1753ddd1b3c5fb70b5ee4d99500623e3fdbdbfd",
+ "afe101d36aa3f294f495b705a520f18c831b0582",
[]
],
"support-iframe.html": [
@@ -353666,7 +353966,7 @@
[]
],
"webxr_test_constants.js": [
- "25652b8646ee53be3d429dac44db845701387408",
+ "d92da3d8f34875648a6e503c14daf7d83915023a",
[]
],
"webxr_test_constants_fake_world.js": [
@@ -353674,7 +353974,7 @@
[]
],
"webxr_util.js": [
- "dbe1585929f50089bb3e26a981b9c12b30e9fa1f",
+ "72a21c0ff29e266c95051e2780f594d44da0656b",
[]
]
},
@@ -384118,7 +384418,7 @@
]
],
"CSSAnimation-compositeOrder.tentative.html": [
- "225efd23addd664d6fb842264bbf04da4990378d",
+ "ee204db792666f176a72be43227c944185727f66",
[
null,
{}
@@ -394367,6 +394667,13 @@
{}
]
],
+ "exportparts-multiple.html": [
+ "a6773a8fb654564c4f124541652d2d9413c511cc",
+ [
+ null,
+ {}
+ ]
+ ],
"host-stylesheet.html": [
"2e65c4b1b57bd9959c68e85e11b442c67f2c5a42",
[
@@ -404764,6 +405071,13 @@
{}
]
],
+ "cssom-getBoundingClientRect-003.html": [
+ "5eb9448f67645309f38aa1d8361926386447b408",
+ [
+ null,
+ {}
+ ]
+ ],
"cssom-getBoxQuads-001.html": [
"25c3e934ac92d6b44f601e3655da2ae2f0208ac8",
[
@@ -426284,7 +426598,7 @@
]
],
"redirect-mode.any.js": [
- "557c249ff9d86fb8f9f4829ef7b0e384957d0a53",
+ "eed44e0414cb8947c9b7c21df6ef288f733f8994",
[
"fetch/api/redirect/redirect-mode.any.html",
{
@@ -433995,6 +434309,13 @@
{}
]
],
+ "no-autofocus-on-changing-input-type.html": [
+ "79a39ef2f9d990a046a901d7640f91378960dcc7",
+ [
+ null,
+ {}
+ ]
+ ],
"no-cross-origin-autofocus.html": [
"2cf7428f36cb30b3831b58744ad4c322fee0bdec",
[
@@ -434716,7 +435037,7 @@
]
},
"baseline-alignment-and-overflow.tentative.html": [
- "9ff6662002e30a3ee7ab51373320eb1f15513892",
+ "1c0b312eb4520e789bee93a4669e16035fde1648",
[
null,
{}
@@ -458009,6 +458330,47 @@
}
]
],
+ "sandboxed_FileSystemBaseHandle-isSameEntry.tentative.https.any.js": [
+ "67d36dfae8ae05a4013af598ec72cda89f964628",
+ [
+ "native-file-system/sandboxed_FileSystemBaseHandle-isSameEntry.tentative.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemBaseHandle-isSameEntry.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "native-file-system/sandboxed_FileSystemBaseHandle-isSameEntry.tentative.https.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemBaseHandle-isSameEntry.js"
+ ]
+ ]
+ }
+ ]
+ ],
"sandboxed_FileSystemBaseHandle-postMessage-BroadcastChannel.tentative.https.window.js": [
"1995ab9b1f99aefa5715f36fec3a83e3efd72d3f",
[
@@ -458461,6 +458823,47 @@
}
]
],
+ "sandboxed_FileSystemDirectoryHandle-resolve.tentative.https.any.js": [
+ "6ee32709307cb930c8d56374841792fd70235915",
+ [
+ "native-file-system/sandboxed_FileSystemDirectoryHandle-resolve.tentative.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemDirectoryHandle-resolve.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "native-file-system/sandboxed_FileSystemDirectoryHandle-resolve.tentative.https.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemDirectoryHandle-resolve.js"
+ ]
+ ]
+ }
+ ]
+ ],
"sandboxed_FileSystemFileHandle-getFile.tentative.https.any.js": [
"fb93858fe7934b27244fa0ff828eac75c34b6629",
[
@@ -470641,6 +471044,20 @@
{}
]
],
+ "manifest-404.https.html": [
+ "be738cc144513cafd3f1baa9c3e85d0a1a904e34",
+ [
+ null,
+ {}
+ ]
+ ],
+ "manifest-mimetype.https.html": [
+ "1a45077602245d5859db7c0b28c26cd41f7ffe5d",
+ [
+ null,
+ {}
+ ]
+ ],
"non-array.https.html": [
"c95b5a15b0e6414c90adeda7923d4c06372b76cf",
[
@@ -470917,6 +471334,13 @@
}
]
],
+ "input-text.html": [
+ "38527a4c667061de54c385add53eeb49f0d6bbfd",
+ [
+ null,
+ {}
+ ]
+ ],
"paint-visited.html": [
"9a5561d5f7f317738d406d45bf371013f5cf3f25",
[
@@ -527626,7 +528050,7 @@
]
],
"windowclient-navigate.https.html": [
- "b959ffd99e1b9eee4e2e81f28fe031b4f32e9937",
+ "4fd2aa1d06f62fc96ca00dd656c907ca50ef5c2c",
[
null,
{
@@ -537726,6 +538150,20 @@
{}
]
],
+ "SVGGraphicsElement.getBBox-01.html": [
+ "a56dc4093203bcdcdc1f8b019a52f85f71eae23a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "SVGGraphicsElement.getBBox-02.html": [
+ "0efd590710c693db36da4ebc4f9b948e875d6363",
+ [
+ null,
+ {}
+ ]
+ ],
"SVGGraphicsElement.svg": [
"8d5808f0db782984852f89289eda56973dde00d2",
[
@@ -537883,7 +538321,7 @@
},
"trusted-types": {
"DOMParser-parseFromString-regression.tentative.https.html": [
- "cc57ee7f8ea4cf42407868463e396cb2a4260d76",
+ "941d1750b4a3d4fd0c53a48c62689f9665e64dc3",
[
null,
{}
@@ -537897,7 +538335,7 @@
]
],
"DOMWindowTimers-setTimeout-setInterval.tentative.https.html": [
- "5bd4003cfdd7c9e2f3be395483ab827ee5b12ef3",
+ "2ad47555a92dd09f3d47e378be86e826c270d544",
[
null,
{}
@@ -537946,7 +538384,7 @@
]
],
"GlobalEventHandlers-onclick.tentative.https.html": [
- "6cbf680fa26d2e3aeea6152ecb22d3b8e2e1c098",
+ "0fdde778cc8863600ecdcc57a6d6281b52a777d4",
[
null,
{}
@@ -537960,7 +538398,7 @@
]
],
"HTMLScriptElement-internal-slot.tentative.https.html": [
- "2970e2a7ec6abd7b632a3fe36a1018a43f59f3a4",
+ "4f523bb4e4eec2c048d44b1beeab2a94b9e7bd31",
[
null,
{}
@@ -537981,7 +538419,7 @@
]
],
"TrustedType-AttributeNodes.tentative.https.html": [
- "77eef9cf39e42a842117e0910c1e398d2c22cb51",
+ "6b0066570043cf320a9b3a58c30d6afa88cc1ec6",
[
null,
{}
@@ -537995,21 +538433,21 @@
]
],
"TrustedTypePolicy-CSP-wildcard.tentative.https.html": [
- "0e97a4a245a9ef01e1c65f159a9bd300a93b903f",
+ "cdc683dad3b6d3028166f23ade82a8b8cd30d001",
[
null,
{}
]
],
"TrustedTypePolicy-createXXX.tentative.https.html": [
- "81ad053f5cd549c0175788929f270f1a5fdaff3b",
+ "112d1ae636aaa8f0ffafd68bd73aff11208874fb",
[
null,
{}
]
],
"TrustedTypePolicyFactory-constants.tentative.https.html": [
- "0ba2eb62375a57c78f1caba4592e880b92483599",
+ "551084ca4b6e001ce49213a3d12491a4aedaf8f4",
[
null,
{}
@@ -538030,7 +538468,7 @@
]
],
"TrustedTypePolicyFactory-createPolicy-cspTests-wildcard.tentative.https.html": [
- "f1b5f27e709bc1eb986f1a1160d0df0b5ec9a99d",
+ "9200708545c0420f8882a85fcfbfa8b4d464f6bf",
[
null,
{}
@@ -538065,21 +538503,21 @@
]
],
"TrustedTypePolicyFactory-getPropertyType.tentative.https.html": [
- "0e5a0f51c80bf91c21b37bf02645c70b26ecf374",
+ "861dd8bb7c6db20e59700f1d5a96af262b1d79bb",
[
null,
{}
]
],
"TrustedTypePolicyFactory-isXXX.tentative.https.html": [
- "89d4a8b4efcda19f4937855f4f880792bf274ddd",
+ "a7df477d00e26b65e72624edb9dd0fe4bb9ee90a",
[
null,
{}
]
],
"TrustedTypePolicyFactory-metadata.tentative.https.html": [
- "50f877cda07f05e6f9fc916637bc8c3ecaa9da3b",
+ "a5fe7864b12df24d4ca31df66eea7b471aa80f94",
[
null,
{
@@ -538095,84 +538533,84 @@
]
],
"WorkerGlobalScope-importScripts.https.html": [
- "0aa965e16e08e9ba90b63ef0ab9e731f6ebffbdf",
+ "9853b1bc44845155ef889b7b5ee93c877844e019",
[
null,
{}
]
],
"block-Node-multiple-arguments.tentative.https.html": [
- "d66b8c8f25b64e214312bb9cd507a5901ebde53c",
+ "e87c8fca238d4dfaa4e5ca4b70ef73290aa167a7",
[
null,
{}
]
],
"block-string-assignment-to-DOMParser-parseFromString.tentative.https.html": [
- "bd038635df73560e23bf7ad4a50c93cebf827822",
+ "dd912e6b8dea596141630d7b9d18ab6bbe8c9925",
[
null,
{}
]
],
"block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.https.html": [
- "d2764936675168b3d0ea052f3860bcd95c049024",
+ "f36ae94ea10ce95d7087ec22ef4a25f157f7e6a8",
[
null,
{}
]
],
"block-string-assignment-to-Document-write.tentative.https.html": [
- "fa87d119f79f69a020e75c9749e04b4f73d6a7dd",
+ "974203c1133a43afd87069b41b29ab1e5460a36d",
[
null,
{}
]
],
"block-string-assignment-to-Element-insertAdjacentHTML.tentative.https.html": [
- "c91e4e56acd483fe935839c3d95c712b6a1d76bc",
+ "228887d0423d3144afd684ace223bc16a7124f9f",
[
null,
{}
]
],
"block-string-assignment-to-Element-outerHTML.tentative.https.html": [
- "397606bc056a8dd7729c5eb9ef66aeef59dda9db",
+ "9b6cf72cb4017c86e0d0862f967c9b26cea0c149",
[
null,
{}
]
],
"block-string-assignment-to-Element-setAttribute.tentative.https.html": [
- "e6abf602fb08817bc3cdb9828ae4c490922389e5",
+ "1d39a804f39c0891bc59c0d08f14fd22ee278de1",
[
null,
{}
]
],
"block-string-assignment-to-Element-setAttributeNS.tentative.https.html": [
- "aa13d72ceb2f53d4fbf17ef80e6e66c4298f6ca3",
+ "346e077a666507d0a5eba4bed6893c8c16adad6a",
[
null,
{}
]
],
"block-string-assignment-to-HTMLElement-generic.tentative.https.html": [
- "b5745199f41c49d7aab63822c3138548907544f0",
+ "9e780c1ed23dccb92ea10eaa83613422a9e59a77",
[
null,
{}
]
],
"block-string-assignment-to-Range-createContextualFragment.tentative.https.html": [
- "b38e4f3da5f8728eb3b67e63b250d63734a1b0aa",
+ "79111204934e689d2ce56fbb010cc3b261537c6b",
[
null,
{}
]
],
"block-text-node-insertion-into-script-element.tentative.https.html": [
- "bc29f19f4c4a75da008dff5836573409fbd65e23",
+ "819753652a975247415d85cb77b65ba9a358bfa5",
[
null,
{}
@@ -538228,7 +538666,7 @@
]
],
"eval-csp-tt-no-default-policy.tentative.https.html": [
- "6d48ae48a01a1558e97efebc65ac9f42a893329a",
+ "2f1e2a281b8859c0bda41f78818da4b48a2b46b5",
[
null,
{}
@@ -538249,7 +538687,7 @@
]
],
"eval-with-permissive-csp.tentative.https.html": [
- "5a35561438ab93c5066c4191bfcf3db0ddb83977",
+ "abc698a46d31569cd105776b1c933d71c8bebf78",
[
null,
{}
@@ -538281,7 +538719,7 @@
]
],
"no-require-trusted-types-for.tentative.https.html": [
- "4e11b03617beb3716f51653843fd458c69274758",
+ "3630962ada9dbc230c2d6f9375b8273a6358778b",
[
null,
{}
@@ -538302,7 +538740,7 @@
]
],
"trusted-types-createHTMLDocument.tentative.https.html": [
- "440d2a88b9367daa42c6aeb6e747f58a1487ea6f",
+ "e4af2eb59029a11aaa5490023fbb942063cd3722",
[
null,
{}
@@ -538337,7 +538775,7 @@
]
],
"trusted-types-eval-reporting-report-only.tentative.https.html": [
- "8076ab40c839613c6495cd2192ffd073a381d9e2",
+ "3fd1c9ffa8d115a939348a149121103d7b97c2ae",
[
null,
{}
@@ -538379,7 +538817,7 @@
]
],
"tt-block-eval.tentative.https.html": [
- "f9c1a5d0b12365506fb62ec43a23d9bca4f61cf1",
+ "13178bd44bf17f06c6d6d46433dcad273367a364",
[
null,
{}
@@ -549062,7 +549500,7 @@
]
],
"NDEFReader_scan.https.html": [
- "581412ea35d5d1e25dcc638380aa7fac540c7b9e",
+ "db50b66f058c90511da15aa52ba435d6da2e483d",
[
null,
{}
@@ -549097,7 +549535,7 @@
]
],
"NDEFWriter_write.https.html": [
- "4ca7faa12bcde0174153953ef351c7ba094caac5",
+ "e2bbd57bbe97d380f33e76508081d0d18891980c",
[
null,
{}
@@ -549127,6 +549565,15 @@
null,
{}
]
+ ],
+ "nfc_permission.https.html": [
+ "af76d1b4e1f6c744ed90dc3aaecd74882ed2ea9c",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
]
},
"web-share": {
@@ -559095,6 +559542,13 @@
{}
]
],
+ "xrWebGLLayer_opaque_framebuffer_stencil.https.html": [
+ "8e3e60cca058a0d8eb87f235169927309b528770",
+ [
+ null,
+ {}
+ ]
+ ],
"xrWebGLLayer_viewports.https.html": [
"94a23dcdb427298722a989987a02f35a8d98d055",
[
diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini
new file mode 100644
index 00000000000..f64b45fea6b
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini
@@ -0,0 +1,4 @@
+[hit-test-floats-002.html]
+ [Hit test float]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini
new file mode 100644
index 00000000000..f29da48a2a0
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini
@@ -0,0 +1,4 @@
+[hit-test-floats-003.html]
+ [Miss float below something else]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini
new file mode 100644
index 00000000000..baa9f1a7541
--- /dev/null
+++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini
@@ -0,0 +1,4 @@
+[hit-test-floats-005.html]
+ [Miss clipped float]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-animations/CSSAnimation-compositeOrder.tentative.html.ini b/tests/wpt/metadata/css/css-animations/CSSAnimation-compositeOrder.tentative.html.ini
index 1925ea70ab5..61b5c9b8e0a 100644
--- a/tests/wpt/metadata/css/css-animations/CSSAnimation-compositeOrder.tentative.html.ini
+++ b/tests/wpt/metadata/css/css-animations/CSSAnimation-compositeOrder.tentative.html.ini
@@ -2,3 +2,6 @@
[Animations are composited by their order in the animation-name property.]
expected: FAIL
+ [Web-animation replaces CSS animation]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/css-images/conic-gradient-angle-negative.html.ini b/tests/wpt/metadata/css/css-images/conic-gradient-angle-negative.html.ini
new file mode 100644
index 00000000000..2d32aca2dd1
--- /dev/null
+++ b/tests/wpt/metadata/css/css-images/conic-gradient-angle-negative.html.ini
@@ -0,0 +1,2 @@
+[conic-gradient-angle-negative.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-images/conic-gradient-angle.html.ini b/tests/wpt/metadata/css/css-images/conic-gradient-angle.html.ini
new file mode 100644
index 00000000000..f5905bc26fd
--- /dev/null
+++ b/tests/wpt/metadata/css/css-images/conic-gradient-angle.html.ini
@@ -0,0 +1,2 @@
+[conic-gradient-angle.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-images/conic-gradient-center.html.ini b/tests/wpt/metadata/css/css-images/conic-gradient-center.html.ini
new file mode 100644
index 00000000000..52c7e1636ef
--- /dev/null
+++ b/tests/wpt/metadata/css/css-images/conic-gradient-center.html.ini
@@ -0,0 +1,2 @@
+[conic-gradient-center.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-images/normalization-conic-2.html.ini b/tests/wpt/metadata/css/css-images/normalization-conic-2.html.ini
new file mode 100644
index 00000000000..712f51069c5
--- /dev/null
+++ b/tests/wpt/metadata/css/css-images/normalization-conic-2.html.ini
@@ -0,0 +1,2 @@
+[normalization-conic-2.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-images/normalization-conic-degenerate.html.ini b/tests/wpt/metadata/css/css-images/normalization-conic-degenerate.html.ini
new file mode 100644
index 00000000000..7348a8278d8
--- /dev/null
+++ b/tests/wpt/metadata/css/css-images/normalization-conic-degenerate.html.ini
@@ -0,0 +1,2 @@
+[normalization-conic-degenerate.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-images/normalization-conic.html.ini b/tests/wpt/metadata/css/css-images/normalization-conic.html.ini
new file mode 100644
index 00000000000..a5ac414e610
--- /dev/null
+++ b/tests/wpt/metadata/css/css-images/normalization-conic.html.ini
@@ -0,0 +1,2 @@
+[normalization-conic.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/css-images/out-of-range-color-stop-conic.html.ini b/tests/wpt/metadata/css/css-images/out-of-range-color-stop-conic.html.ini
new file mode 100644
index 00000000000..fa1a353540c
--- /dev/null
+++ b/tests/wpt/metadata/css/css-images/out-of-range-color-stop-conic.html.ini
@@ -0,0 +1,2 @@
+[out-of-range-color-stop-conic.html]
+ expected: FAIL
diff --git a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini
deleted file mode 100644
index 4c79907309b..00000000000
--- a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[CaretPosition-001.html]
- [Element at (400, 100)]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
index c884dc82eab..628b1fab770 100644
--- a/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
@@ -2,6 +2,3 @@
[listeners are called when <iframe> is resized]
expected: FAIL
- [listeners are called correct number of times]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/css/cssom-view/cssom-getBoundingClientRect-003.html.ini b/tests/wpt/metadata/css/cssom-view/cssom-getBoundingClientRect-003.html.ini
new file mode 100644
index 00000000000..569f77a3a89
--- /dev/null
+++ b/tests/wpt/metadata/css/cssom-view/cssom-getBoundingClientRect-003.html.ini
@@ -0,0 +1,7 @@
+[cssom-getBoundingClientRect-003.html]
+ [{Element,Range}.prototype.getBoundingClientRect on SVG <tspan>, Element]
+ expected: FAIL
+
+ [{Element,Range}.prototype.getBoundingClientRect on SVG <tspan>, Range]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
index 85e94926cb3..5733d536fd3 100644
--- a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini
@@ -21,3 +21,6 @@
[test the top of layer]
expected: FAIL
+ [test some point of the element: top left corner]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini
index 6ef8bb1049f..171592fc08f 100644
--- a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini
+++ b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini
@@ -2,6 +2,3 @@
[elementsFromPoint on the root document for points in iframe elements]
expected: FAIL
- [elementsFromPoint on inner documents]
- 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 3ddb88c204f..a8ec4caf3c5 100644
--- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini
@@ -315,9 +315,18 @@
[<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html */*;charset=gbk]
+ [<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL
- [<iframe>: combined response Content-Type: text/html;x=" text/plain]
+ [<iframe>: combined response Content-Type: */* text/html]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/plain */*]
+ expected: FAIL
+
+ [<iframe>: separate response Content-Type: text/html;x=" text/plain]
+ expected: FAIL
+
+ [<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 c7413d589dc..5c001592859 100644
--- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini
+++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini
@@ -59,6 +59,3 @@
[separate text/javascript;charset=windows-1252 error text/javascript]
expected: FAIL
- [separate text/javascript;charset=windows-1252 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 aa6eb8f6085..30e1b851fd4 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,3 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL
- [X-Content-Type-Options%3A%20'NosniFF']
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
new file mode 100644
index 00000000000..87b07c3e670
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_1.html]
+ [Multiple history traversals from the same task]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini
new file mode 100644
index 00000000000..51f8272a6de
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_3.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_5.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
new file mode 100644
index 00000000000..dc2e45516de
--- /dev/null
+++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini
@@ -0,0 +1,4 @@
+[traverse_the_history_5.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 ee369c247a4..ced66541669 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
@@ -18,6 +18,3 @@
[Set HTTP URL frame location.protocol to ftp]
expected: FAIL
- [Set data URL frame location.protocol to data]
- expected: FAIL
-
diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/no-autofocus-on-changing-input-type.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/no-autofocus-on-changing-input-type.html.ini
new file mode 100644
index 00000000000..9983ae062ba
--- /dev/null
+++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/no-autofocus-on-changing-input-type.html.ini
@@ -0,0 +1,4 @@
+[no-autofocus-on-changing-input-type.html]
+ [Changing input type should not refocus on the element.]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
index dab21cae5d8..f1aa94c7ced 100644
--- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
+++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
@@ -13,5 +13,8 @@
expected: NOTRUN
[Host element with delegatesFocus should support autofocus]
+ expected: NOTRUN
+
+ [Non-HTMLElement should not support autofocus]
expected: TIMEOUT
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
index 4954c1c9c13..c8165f16750 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/audiobuffersource-multi-channels.html.ini
@@ -47,3 +47,6 @@
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44051 more errors.\n\tMax AbsError of 1.9986916780471802e+0 at index of 37840.\n\t[37840\]\t9.9994289875030518e-1\t-9.9874877929687500e-1\t1.9986916780471802e+0\t2.0011956154322119e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL
+ [X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 40513 more errors.\n\tMax AbsError of 1.9999977350234985e+0 at index of 36821.\n\t[36821\]\t9.9999773502349854e-1\t-1.0000000000000000e+0\t1.9999977350234985e+0\t1.9999977350234985e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
index 766568d66de..f41517f05c0 100644
--- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
+++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini
@@ -200,3 +200,6 @@
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t-7.7842698715429952e-27\t5.6332010030746460e-1\t5.6332010030746460e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[31081\]\t4.5752394860205277e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31080.\n]
expected: FAIL
+ [X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t1.9926784238063802e-24\t5.6332010030746460e-1\t5.6332010030746460e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[31081\]\t4.5629080595344693e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31080.\n]
+ expected: FAIL
+
diff --git a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini
deleted file mode 100644
index 064cf47545b..00000000000
--- a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[017.html]
- expected: TIMEOUT
- [origin of the script that invoked the method, about:blank]
- expected: TIMEOUT
-
diff --git a/tests/wpt/metadata/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https.html.ini b/tests/wpt/metadata/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https.html.ini
new file mode 100644
index 00000000000..4ac759d2ada
--- /dev/null
+++ b/tests/wpt/metadata/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https.html.ini
@@ -0,0 +1,7 @@
+[xrWebGLLayer_opaque_framebuffer_stencil.https.html]
+ [Ensure that the framebuffer given by the WebGL layer works with stencil for non-immersive]
+ expected: FAIL
+
+ [Ensure that the framebuffer given by the WebGL layer works with stencil for immersive]
+ expected: FAIL
+
diff --git a/tests/wpt/web-platform-tests/.well-known/origin-policy b/tests/wpt/web-platform-tests/.well-known/origin-policy
index df2b83256c2..15355ce0d91 100644
--- a/tests/wpt/web-platform-tests/.well-known/origin-policy
+++ b/tests/wpt/web-platform-tests/.well-known/origin-policy
@@ -5,6 +5,20 @@ import glob
def main(request, response):
host_piece = request.url_parts.hostname.split(".")[0]
+ # Default return code for manifests if found.
+ return_code = 200
+
+ # Reserve 'op99' for tests that should use return code 404.
+ if host_piece == "op99":
+ return_code = 404
+
+ # Default mime type for returned data.
+ content_type = "application/originpolicy+json"
+
+ # Reserve 'op100' for testing incorrect mime type for manifest file.
+ if host_piece == "op100":
+ content_type = "text/plain"
+
filepath_pattern = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(
__file__)), "../origin-policy/policies/", "{} *.json".format(host_piece)))
@@ -15,4 +29,4 @@ def main(request, response):
with open(matches[0]) as f:
data = f.read()
- return 200, [('Content-Type', 'application/originpolicy+json')], data
+ return return_code, [('Content-Type', content_type)], data
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-outside-001-ref.xht b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-outside-001-ref.xht
index 5ea97a40f51..20ae62757d4 100644
--- a/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-outside-001-ref.xht
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-outside-001-ref.xht
@@ -5,7 +5,7 @@
#wrap {width:600px; border:1px solid;position:relative}
.a {background:lime; color:#fff; width:80%;}
.b {position:absolute; right:0; width:18%; background: cyan; color: #000; height:10em;}
-textarea {width: 100%; height:10em;}
+textarea {box-sizing: border-box; width: 100%; height:10em;}
</style>
<title>test</title>
diff --git a/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-outside-001.xht b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-outside-001.xht
index 9ae6447f3c6..1dec29a5838 100644
--- a/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-outside-001.xht
+++ b/tests/wpt/web-platform-tests/css/CSS2/floats/floats-wrap-bfc-outside-001.xht
@@ -10,7 +10,7 @@
#wrap {width:600px; border:1px solid;}
.a {background:lime; color:#fff; width:80%;}
.b {float:right; width:18%; background: cyan; color: #000; height:10em;}
-textarea {width: 100%; height:10em;}
+textarea {box-sizing: border-box;width: 100%; height:10em;}
</style>
</head>
diff --git a/tests/wpt/web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html b/tests/wpt/web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html
index 225efd23add..ee204db7926 100644
--- a/tests/wpt/web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html
+++ b/tests/wpt/web-platform-tests/css/css-animations/CSSAnimation-compositeOrder.tentative.html
@@ -36,4 +36,18 @@ promise_test(async t => {
// in the animation list.
assert_equals(getComputedStyle(div).marginLeft, '100px');
}, "Animations are composited by their order in the animation-name property.");
+
+promise_test(async t => {
+ const div = addDiv(t);
+ const animA = div.animate({margin: ["100px","100px"]}, 100000);
+ assert_equals(getComputedStyle(div).marginLeft, '100px');
+ div.style.animation = 'margin50 100s';
+ assert_equals(getComputedStyle(div).marginLeft, '50px');
+ // Wait for animation starts
+ await waitForAnimationFrames(2);
+ assert_equals(getComputedStyle(div).marginLeft, '100px',
+ "A higher-priority animation is not overriden by a more recent"
+ + "one.");
+}, 'Web-animation replaces CSS animation');
+
</script>
diff --git a/tests/wpt/web-platform-tests/css/css-images/conic-gradient-angle-negative.html b/tests/wpt/web-platform-tests/css/css-images/conic-gradient-angle-negative.html
new file mode 100644
index 00000000000..ff8e20aafed
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/conic-gradient-angle-negative.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Conic gradient with negative angle parameter</title>
+<link rel="help" href="https://drafts.csswg.org/css-images-4/#conic-gradients">
+<meta name="assert" content="Rendering of conic-gradient with negative center parameter">
+<link rel="match" href="reference/200x200-blue-black-green-red.html">
+<style>
+ #gradient {
+ width: 200px;
+ height: 200px;
+ background-image: conic-gradient(from -90deg, blue 0 25%, black 25% 50%, red 50% 75%, green 75% 100%);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/conic-gradient-angle.html b/tests/wpt/web-platform-tests/css/css-images/conic-gradient-angle.html
new file mode 100644
index 00000000000..0b3404508d0
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/conic-gradient-angle.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Conic gradient with custom angle parameter</title>
+<link rel="help" href="https://drafts.csswg.org/css-images-4/#conic-gradients">
+<meta name="assert" content="Rendering of conic-gradient with custom center parameter">
+<link rel="match" href="reference/200x200-blue-black-green-red.html">
+<style>
+ #gradient {
+ width: 200px;
+ height: 200px;
+ background-image: conic-gradient(from 90deg, red 0 25%, green 25% 50%, blue 50% 75%, black 75% 100%);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/conic-gradient-center-ref.html b/tests/wpt/web-platform-tests/css/css-images/conic-gradient-center-ref.html
new file mode 100644
index 00000000000..6af682601ef
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/conic-gradient-center-ref.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<style>
+ #box {
+ width: 200px;
+ height: 200px;
+ }
+ #top {
+ border-left: 50px solid black;
+ border-right: 150px solid red;
+ height: 50px;
+ }
+ #bottom {
+ border-left: 50px solid blue;
+ border-right: 150px solid green;
+ height: 150px;
+ }
+</style>
+<div id="box">
+ <div id="top"></div>
+ <div id="bottom"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/conic-gradient-center.html b/tests/wpt/web-platform-tests/css/css-images/conic-gradient-center.html
new file mode 100644
index 00000000000..ecbc3ffa5c7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/conic-gradient-center.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Conic gradient with custom center parameter</title>
+<link rel="help" href="https://drafts.csswg.org/css-images-4/#conic-gradients">
+<meta name="assert" content="Rendering of conic-gradient with custom center parameter">
+<link rel="match" href="conic-gradient-center-ref.html">
+<style>
+ #gradient {
+ width: 200px;
+ height: 200px;
+ background-image: conic-gradient(at 25% 25%, red 0 25%, green 25% 50%, blue 50% 75%, black 75% 100%);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/linear-gradient-1.html b/tests/wpt/web-platform-tests/css/css-images/linear-gradient-1.html
index dcf590f3673..aa5a1310c50 100644
--- a/tests/wpt/web-platform-tests/css/css-images/linear-gradient-1.html
+++ b/tests/wpt/web-platform-tests/css/css-images/linear-gradient-1.html
@@ -1,23 +1,14 @@
<!doctype html>
-<html>
-
-<head>
- <meta charset="utf-8">
- <title>Linear gradient with some inferred positions</title>
- <link rel="help" href="https://drafts.csswg.org/css-images-3/#radial-color-stops">
- <meta name="assert" content="Calculation of implicit gradient stops.">
- <link rel="match" href="linear-gradient-ref.html">
- <style>
- #gradient {
- width: 400px;
- height: 300px;
- background-image: linear-gradient(to right, black 0%, red, gold);
- }
- </style>
-</head>
-
-<body>
- <div id="gradient"></div>
-</body>
-
-</html> \ No newline at end of file
+<meta charset="utf-8">
+<title>Linear gradient with some inferred positions</title>
+<link rel="help" href="https://drafts.csswg.org/css-images-3/#coloring-gradient-line">
+<meta name="assert" content="Calculation of implicit gradient stops.">
+<link rel="match" href="linear-gradient-ref.html">
+<style>
+ #gradient {
+ width: 400px;
+ height: 300px;
+ background-image: linear-gradient(to right, black 0%, red, gold);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/linear-gradient-2.html b/tests/wpt/web-platform-tests/css/css-images/linear-gradient-2.html
index bdfd96ea855..a9dca048b1a 100644
--- a/tests/wpt/web-platform-tests/css/css-images/linear-gradient-2.html
+++ b/tests/wpt/web-platform-tests/css/css-images/linear-gradient-2.html
@@ -1,23 +1,14 @@
<!doctype html>
-<html>
-
-<head>
- <meta charset="utf-8">
- <title>Linear gradient with all inferred positions</title>
- <link rel="help" href="https://drafts.csswg.org/css-images-3/#radial-color-stops">
- <meta name="assert" content="Calculation of implicit gradient stops.">
- <link rel="match" href="linear-gradient-ref.html">
- <style>
- #gradient {
- width: 400px;
- height: 300px;
- background-image: linear-gradient(to right, black, red, gold);
- }
- </style>
-</head>
-
-<body>
- <div id="gradient"></div>
-</body>
-
-</html> \ No newline at end of file
+<meta charset="utf-8">
+<title>Linear gradient with all inferred positions</title>
+<link rel="help" href="https://drafts.csswg.org/css-images-3/#coloring-gradient-line">
+<meta name="assert" content="Calculation of implicit gradient stops.">
+<link rel="match" href="linear-gradient-ref.html">
+<style>
+ #gradient {
+ width: 400px;
+ height: 300px;
+ background-image: linear-gradient(to right, black, red, gold);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/linear-gradient-ref.html b/tests/wpt/web-platform-tests/css/css-images/linear-gradient-ref.html
index 6643bb918b5..033f1767799 100644
--- a/tests/wpt/web-platform-tests/css/css-images/linear-gradient-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-images/linear-gradient-ref.html
@@ -1,19 +1,10 @@
<!doctype html>
-<html>
-
-<head>
- <meta charset="utf-8">
- <style>
- #gradient {
- width: 400px;
- height: 300px;
- background-image: linear-gradient(to right, black 0%, red 50%, gold 100%);
- }
- </style>
-</head>
-
-<body>
- <div id="gradient"></div>
-</body>
-
-</html> \ No newline at end of file
+<meta charset="utf-8">
+<style>
+ #gradient {
+ width: 400px;
+ height: 300px;
+ background-image: linear-gradient(to right, black 0%, red 50%, gold 100%);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-conic-2-ref.html b/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-conic-2-ref.html
new file mode 100644
index 00000000000..2ee92a11ee4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-conic-2-ref.html
@@ -0,0 +1,3 @@
+<!doctype html>
+<meta charset=utf-8>
+<div style="background: conic-gradient(red 0%, red 25%, blue 25%, blue 75%, green 75%, green 100%); width: 100px; height: 100px;"><br></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-conic-2.html b/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-conic-2.html
new file mode 100644
index 00000000000..5d4c6f0e17c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-conic-2.html
@@ -0,0 +1,7 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Conic gradient with two position color stops</title>
+<link rel="help" href="https://drafts.csswg.org/css-images-4/#color-stop-syntax">
+<meta name="assert" content="Color stops with two positions are equivalent to two color stops with the same color">
+<link rel="match" href="multiple-position-color-stop-conic-2-ref.html">
+<div style="background: conic-gradient(red 0% 25%, blue 25% 75%, green 75% 100%); width: 100px; height: 100px;"><br></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-radial-2-ref.html b/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-radial-2-ref.html
index 9b5bdfdf2cd..39850ad3412 100644
--- a/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-radial-2-ref.html
+++ b/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-radial-2-ref.html
@@ -1,5 +1,5 @@
<!doctype html>
-<meta charset=utf-8>
+<meta charset="utf-8">
<body>
- <div style="background: radial-gradient(center, red 0%, red 25%, blue 25%, blue 75%, red 75%, red 100%); width: 100px; height: 100px;"><br></div>
+ <div style="background: radial-gradient(red 0%, red 25%, blue 25%, blue 75%, red 75%, red 100%); width: 100px; height: 100px;"><br></div>
</body>
diff --git a/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-radial-2.html b/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-radial-2.html
index c66b0831626..339f5d4b33a 100644
--- a/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-radial-2.html
+++ b/tests/wpt/web-platform-tests/css/css-images/multiple-position-color-stop-radial-2.html
@@ -1,9 +1,7 @@
<!doctype html>
-<meta charset=utf-8>
+<meta charset="utf-8">
<title>Radial gradient with a two position color stops</title>
<link rel="help" href="https://drafts.csswg.org/css-images-4/#color-stop-syntax">
<meta name="assert" content="Color stops with two positions are equivalent to two color stops with the same color">
-<link rel=match href=/css/css-images/multiple-position-color-stop-radial-2-ref.html>
-<body>
- <div style="background: radial-gradient(center, red 0% 25%, blue 25% 75%, red 75% 100%); width: 100px; height: 100px;"><br></div>
-</body>
+<link rel="match" href=/css/css-images/multiple-position-color-stop-radial-2-ref.html>
+<div style="background: radial-gradient(red 0% 25%, blue 25% 75%, red 75% 100%); width: 100px; height: 100px;"><br></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/normalization-conic-2.html b/tests/wpt/web-platform-tests/css/css-images/normalization-conic-2.html
new file mode 100644
index 00000000000..7f5c3954f61
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/normalization-conic-2.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Conic gradient stop normalization</title>
+<link rel="help" href="https://drafts.csswg.org/css-images-4/#conic-gradients">
+<meta name="assert" content="Rendering of conic-gradient with normalized color stops">
+<link rel="match" href="reference/100x100-blue.html">
+<style>
+ #gradient {
+ width: 100px;
+ height: 100px;
+ background-image: conic-gradient(blue 150%, red 150%);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/normalization-conic-degenerate.html b/tests/wpt/web-platform-tests/css/css-images/normalization-conic-degenerate.html
new file mode 100644
index 00000000000..909fd54dcbd
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/normalization-conic-degenerate.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Conic gradient stop normalization</title>
+<link rel="help" href="https://www.w3.org/TR/css-images-3/#repeating-gradients">
+<meta name="assert" content="Rendering of repeating-conic-gradient w/ stops at the same place">
+<link rel="match" href="reference/100x100-blue.html">
+<style>
+ #gradient {
+ width: 100px;
+ height: 100px;
+ background-image: repeating-conic-gradient(orange 50%, blue 50%);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/normalization-conic.html b/tests/wpt/web-platform-tests/css/css-images/normalization-conic.html
new file mode 100644
index 00000000000..9c5e82d71cc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/normalization-conic.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Conic gradient stop normalization</title>
+<link rel="help" href="https://drafts.csswg.org/css-images-4/#conic-gradients">
+<meta name="assert" content="Rendering of conic-gradient with normalized color stops">
+<link rel="match" href="reference/100x100-blue.html">
+<style>
+ #gradient {
+ width: 100px;
+ height: 100px;
+ background-image: conic-gradient(green -50%, blue -50%);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/normalization-linear-2.html b/tests/wpt/web-platform-tests/css/css-images/normalization-linear-2.html
new file mode 100644
index 00000000000..e3feeeb49a6
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/normalization-linear-2.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Linear gradient stop normalization</title>
+<link rel="help" href="https://drafts.csswg.org/css-images-3/#linear-gradients">
+<meta name="assert" content="Rendering of linear-gradient with normalized color stops">
+<link rel="match" href="reference/100x100-blue.html">
+<style>
+ #gradient {
+ width: 100px;
+ height: 100px;
+ background-image: linear-gradient(blue 150%, red 150%);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/normalization-linear-degenerate.html b/tests/wpt/web-platform-tests/css/css-images/normalization-linear-degenerate.html
new file mode 100644
index 00000000000..26647290fb4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/normalization-linear-degenerate.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Linear gradient stop normalization</title>
+<link rel="help" href="https://www.w3.org/TR/css-images-3/#repeating-gradients">
+<meta name="assert" content="Rendering of repeating-linear-gradient w/ stops at the same place">
+<link rel="match" href="reference/100x100-blue.html">
+<style>
+ #gradient {
+ width: 100px;
+ height: 100px;
+ background-image: repeating-linear-gradient(orange 50%, blue 50%);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/normalization-linear.html b/tests/wpt/web-platform-tests/css/css-images/normalization-linear.html
new file mode 100644
index 00000000000..e46645631af
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/normalization-linear.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Linear gradient stop normalization</title>
+<link rel="help" href="https://drafts.csswg.org/css-images-3/#linear-gradients">
+<meta name="assert" content="Rendering of linear-gradient with normalized color stops">
+<link rel="match" href="reference/100x100-blue.html">
+<style>
+ #gradient {
+ width: 100px;
+ height: 100px;
+ background-image: linear-gradient(green -50%, blue -50%);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/normalization-radial-2.html b/tests/wpt/web-platform-tests/css/css-images/normalization-radial-2.html
new file mode 100644
index 00000000000..5ea50a5e035
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/normalization-radial-2.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Radial gradient stop normalization</title>
+<link rel="help" href="https://drafts.csswg.org/css-images-3/#radial-gradients">
+<meta name="assert" content="Rendering of radial-gradient with normalized color stops">
+<link rel="match" href="reference/100x100-blue.html">
+<style>
+ #gradient {
+ width: 100px;
+ height: 100px;
+ background-image: radial-gradient(blue 150%, red 150%);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/normalization-radial-degenerate.html b/tests/wpt/web-platform-tests/css/css-images/normalization-radial-degenerate.html
new file mode 100644
index 00000000000..4fff3ac909a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/normalization-radial-degenerate.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Radial gradient stop normalization</title>
+<link rel="help" href="https://www.w3.org/TR/css-images-3/#repeating-gradients">
+<meta name="assert" content="Rendering of repeating-radial-gradient w/ stops at the same place">
+<link rel="match" href="reference/100x100-blue.html">
+<style>
+ #gradient {
+ width: 100px;
+ height: 100px;
+ background-image: repeating-radial-gradient(orange 50%, blue 50%);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/normalization-radial.html b/tests/wpt/web-platform-tests/css/css-images/normalization-radial.html
new file mode 100644
index 00000000000..6a510aa52f3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/normalization-radial.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Radial gradient stop normalization</title>
+<link rel="help" href="https://drafts.csswg.org/css-images-3/#radial-gradients">
+<meta name="assert" content="Rendering of radial-gradient with normalized color stops">
+<link rel="match" href="reference/100x100-blue.html">
+<style>
+ #gradient {
+ width: 100px;
+ height: 100px;
+ background-image: linear-gradient(green -50%, blue -50%);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/out-of-range-color-stop-conic.html b/tests/wpt/web-platform-tests/css/css-images/out-of-range-color-stop-conic.html
new file mode 100644
index 00000000000..be0c73a3bac
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/out-of-range-color-stop-conic.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Conic gradient with out-of-range stops</title>
+<link rel="help" href="https://drafts.csswg.org/css-images-4/#conic-gradients">
+<meta name="assert" content="Rendering of conic-gradient with stops positioned outside of [0, 1]">
+<link rel="match" href="reference/200x200-blue-black-green-red.html">
+<style>
+ #gradient {
+ width: 200px;
+ height: 200px;
+ background-image: conic-gradient(orange -50% -25%, black -25% 25%, red 25% 50%, green 50% 75%, blue 75% 125%, purple 125% 150%);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/reference/100x100-blue.html b/tests/wpt/web-platform-tests/css/css-images/reference/100x100-blue.html
new file mode 100644
index 00000000000..60015b014d7
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/reference/100x100-blue.html
@@ -0,0 +1,2 @@
+<!doctype html>
+<div style="width: 100px;height: 100px;background-color: blue;"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/reference/200x200-blue-black-green-red.html b/tests/wpt/web-platform-tests/css/css-images/reference/200x200-blue-black-green-red.html
new file mode 100644
index 00000000000..04322b066c3
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/reference/200x200-blue-black-green-red.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset="utf-8">
+<style>
+ #box {
+ width: 200px;
+ height: 200px;
+ }
+ #top {
+ border-left: 100px solid blue;
+ border-right: 100px solid black;
+ height: 100px;
+ }
+ #bottom {
+ border-left: 100px solid green;
+ border-right: 100px solid red;
+ height: 100px;
+ }
+</style>
+<div id="box">
+ <div id="top"></div>
+ <div id="bottom"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/repeating-conic-gradient-ref.html b/tests/wpt/web-platform-tests/css/css-images/repeating-conic-gradient-ref.html
new file mode 100644
index 00000000000..0271bc30185
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/repeating-conic-gradient-ref.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<meta charset="utf-8">
+<style>
+ #gradient {
+ width: 200px;
+ height: 200px;
+ background-image: conic-gradient(black 25%, white 0 50%, black 0 75%, white 0);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/repeating-conic-gradient.html b/tests/wpt/web-platform-tests/css/css-images/repeating-conic-gradient.html
new file mode 100644
index 00000000000..69c3bf4bacc
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/repeating-conic-gradient.html
@@ -0,0 +1,14 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Repeating conic gradient</title>
+<link rel="help" href="https://drafts.csswg.org/css-images-4/#conic-gradients">
+<meta name="assert" content="Rendering of repeating-conic-gradient">
+<link rel="match" href="repeating-conic-gradient-ref.html">
+<style>
+ #gradient {
+ width: 200px;
+ height: 200px;
+ background-image: repeating-conic-gradient(black 0 25%, white 25% 50%);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/tiled-conic-gradients-ref.html b/tests/wpt/web-platform-tests/css/css-images/tiled-conic-gradients-ref.html
new file mode 100644
index 00000000000..95a4122bc0d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/tiled-conic-gradients-ref.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<meta charset="utf-8">
+<style>
+ .bar {
+ width: 200px;
+ height: 40px;
+ }
+ .box {
+ display: inline-block;
+ width: 40px;
+ height: 40px;
+ background-image: conic-gradient(black 0 25%, white 0 50%, black 0 75%, white 0);
+ }
+</style>
+<div class="bar">
+ <div class="box"></div><div class="box"></div><div class="box"></div><div class="box"></div><div class="box"></div>
+</div>
+<div class="bar">
+ <div class="box"></div><div class="box"></div><div class="box"></div><div class="box"></div><div class="box"></div>
+</div>
+<div class="bar">
+ <div class="box"></div><div class="box"></div><div class="box"></div><div class="box"></div><div class="box"></div>
+</div>
+<div class="bar">
+ <div class="box"></div><div class="box"></div><div class="box"></div><div class="box"></div><div class="box"></div>
+</div>
+<div class="bar">
+ <div class="box"></div><div class="box"></div><div class="box"></div><div class="box"></div><div class="box"></div>
+</div>
diff --git a/tests/wpt/web-platform-tests/css/css-images/tiled-conic-gradients.html b/tests/wpt/web-platform-tests/css/css-images/tiled-conic-gradients.html
new file mode 100644
index 00000000000..07e1540f2a4
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-images/tiled-conic-gradients.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Checkerboard using conic gradients</title>
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#propdef-background-size">
+<meta name="assert" content="Gradients are correctly repeated.">
+<link rel="match" href="tiled-conic-gradients-ref.html">
+<style>
+ #gradient {
+ width: 200px;
+ height: 200px;
+ background-size: 20% 20%;
+ background-image: conic-gradient(black 0 25%, white 0 50%, black 0 75%, white 0);
+ }
+</style>
+<div id="gradient"></div>
diff --git a/tests/wpt/web-platform-tests/css/css-lists/change-list-style-position-003-ref.html b/tests/wpt/web-platform-tests/css/css-lists/change-list-style-position-003-ref.html
new file mode 100644
index 00000000000..01494b4dd1f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-lists/change-list-style-position-003-ref.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Lists: test the change of list-style-position</title>
+<style>
+div {
+ border: 5px solid orange;
+ display: list-item;
+ list-style-position: inside;
+ margin-left: 40px;
+}
+div > div {
+ list-style-type: decimal;
+}
+</style>
+<div><div>text</div></div>
diff --git a/tests/wpt/web-platform-tests/css/css-lists/change-list-style-position-003.html b/tests/wpt/web-platform-tests/css/css-lists/change-list-style-position-003.html
new file mode 100644
index 00000000000..8af360f0b09
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-lists/change-list-style-position-003.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Lists: test the change of list-style-position</title>
+<link rel="author" title="Oriol Brufau" href="mailto:obrufau@igalia.com">
+<link rel="match" href="change-list-style-position-003-ref.html">
+<link rel="help" href="https://www.w3.org/TR/CSS22/generate.html#lists">
+<style>
+div {
+ border: 5px solid orange;
+ display: list-item;
+ margin-left: 40px;
+}
+div > div {
+ list-style-type: decimal;
+}
+</style>
+<div><div>text</div></div>
+<script>
+document.body.offsetHeight;
+document.body.style.listStylePosition = "inside";
+</script>
diff --git a/tests/wpt/web-platform-tests/css/css-shadow-parts/exportparts-multiple.html b/tests/wpt/web-platform-tests/css/css-shadow-parts/exportparts-multiple.html
new file mode 100644
index 00000000000..a6773a8fb65
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/css-shadow-parts/exportparts-multiple.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<title>CSS Shadow Parts - Exporting multiple shadow parts</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="author" href="https://mozilla.org" title="Mozilla">
+<link rel="help" href="https://drafts.csswg.org/css-shadow-parts/">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1618509">
+<style>
+::part(inner-part) {
+ color: red;
+ background: blue;
+ width: 100px;
+ height: 100px;
+}
+::part(inner-part-alias) {
+ color: green;
+}
+.change-1::part(inner-part) {
+ background: green;
+}
+
+.change-2::part(inner-part-alias) {
+ color: blue;
+}
+</style>
+<div id="outer"></div>
+<script>
+test(function() {
+ let outer = document.getElementById("outer");
+ outer.attachShadow({ mode: "open" }).innerHTML = `
+ <div exportparts="inner-part, inner-part: inner-part-alias"></div>
+ `;
+
+ let inner = outer.shadowRoot.querySelector("div");
+ inner.attachShadow({ mode: "open" }).innerHTML = `
+ <div part="inner-part"></div>
+ `;
+
+ let innerPart = inner.shadowRoot.querySelector("div");
+ assert_equals(
+ getComputedStyle(innerPart).color,
+ "rgb(0, 128, 0)",
+ "color should be green from ::part(inner-part-alias) rule"
+ );
+ assert_equals(
+ getComputedStyle(innerPart).backgroundColor,
+ "rgb(0, 0, 255)",
+ "background should be blue from ::part(inner-part) rule"
+ );
+
+ outer.classList.add("change-1");
+ assert_equals(
+ getComputedStyle(innerPart).color,
+ "rgb(0, 128, 0)",
+ "color should be green from ::part(inner-part-alias) rule"
+ );
+ assert_equals(
+ getComputedStyle(innerPart).backgroundColor,
+ "rgb(0, 128, 0)",
+ "background should be green from .change-1::part(inner-part) rule"
+ );
+
+ outer.classList.add("change-2");
+ assert_equals(
+ getComputedStyle(innerPart).color,
+ "rgb(0, 0, 255)",
+ "color should be blue from .change-2::part(inner-part-alias) rule"
+ );
+ assert_equals(
+ getComputedStyle(innerPart).backgroundColor,
+ "rgb(0, 128, 0)",
+ "background should be green from .change-1::part(inner-part) rule"
+ );
+}, "Forwarding part under multiple names should work");
+</script>
diff --git a/tests/wpt/web-platform-tests/css/cssom-view/cssom-getBoundingClientRect-003.html b/tests/wpt/web-platform-tests/css/cssom-view/cssom-getBoundingClientRect-003.html
new file mode 100644
index 00000000000..5eb9448f676
--- /dev/null
+++ b/tests/wpt/web-platform-tests/css/cssom-view/cssom-getBoundingClientRect-003.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<title>{Element,Range}.prototype.getBoundingClientRect on SVG &lt;tspan&gt;</title>
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-getboundingclientrect">
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-range-getboundingclientrect">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<svg>
+ <text y="180" font-size="100" font-family="Ahem"
+ fill="lightblue">X<tspan fill="blue">XX</tspan></text>
+</svg>
+<script>
+ function check(object) {
+ let rect = object.getBoundingClientRect();
+ assert_equals(rect.left, 108, 'left');
+ assert_equals(rect.top, 108, 'top');
+ assert_equals(rect.width, 200, 'width');
+ assert_equals(rect.height, 100, 'height');
+ }
+ async_test(t => {
+ window.addEventListener("load", t.step_func_done(() => {
+ let tspan = document.querySelector('tspan');
+ check(tspan);
+ }));
+ }, document.title + ', Element');
+ async_test(t => {
+ window.addEventListener("load", t.step_func_done(() => {
+ let tspan = document.querySelector('tspan');
+ let range = new Range();
+ range.selectNode(tspan);
+ check(range);
+ }));
+ }, document.title + ', Range');
+</script>
diff --git a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-mode.any.js b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-mode.any.js
index 557c249ff9d..eed44e0414c 100644
--- a/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-mode.any.js
+++ b/tests/wpt/web-platform-tests/fetch/api/redirect/redirect-mode.any.js
@@ -6,6 +6,7 @@ function testRedirect(origin, redirectStatus, redirectMode, corsMode) {
var url = new URL("../resources/redirect.py", self.location);
if (origin === "cross-origin") {
url.host = get_host_info().REMOTE_HOST;
+ url.port = get_host_info().HTTP_PORT;
}
var urlParameters = "?redirect_status=" + redirectStatus;
diff --git a/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/no-autofocus-on-changing-input-type.html b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/no-autofocus-on-changing-input-type.html
new file mode 100644
index 00000000000..79a39ef2f9d
--- /dev/null
+++ b/tests/wpt/web-platform-tests/html/interaction/focus/the-autofocus-attribute/no-autofocus-on-changing-input-type.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+<body>
+
+<input id="input1" autofocus>
+<select><option>o1</option></select>
+
+<script>
+"use strict";
+
+// WebKit had a bug that reattaching RenderObject triggered autofocus again.
+// https://bugs.webkit.org/show_bug.cgi?id=68513
+promise_test(async () => {
+ const input1 = document.querySelector('input');
+ const select = document.querySelector('select');
+
+ await waitUntilStableAutofocusState();
+ assert_equals(document.activeElement, input1);
+ input1.onblur = () => { input1.type = 'password'; };
+ select.focus();
+ await waitUntilStableAutofocusState();
+ assert_equals(document.activeElement, select);
+}, 'Changing input type should not refocus on the element.');
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/html/rendering/widgets/baseline-alignment-and-overflow.tentative.html b/tests/wpt/web-platform-tests/html/rendering/widgets/baseline-alignment-and-overflow.tentative.html
index 9ff6662002e..1c0b312eb45 100644
--- a/tests/wpt/web-platform-tests/html/rendering/widgets/baseline-alignment-and-overflow.tentative.html
+++ b/tests/wpt/web-platform-tests/html/rendering/widgets/baseline-alignment-and-overflow.tentative.html
@@ -213,6 +213,8 @@ This table gets populated by the script.
for (const row of testTBody.children) {
const input = row.firstChild.lastElementChild;
+ // FIXME: This test makes assumptions about default form control styling
+ // that don't hold in all platforms.
const allowedDelta = 3;
// This is not using test() because promise_setup() only allows promise_test().
promise_test(async () => {
diff --git a/tests/wpt/web-platform-tests/interfaces/trusted-types.tentative.idl b/tests/wpt/web-platform-tests/interfaces/trusted-types.tentative.idl
index 29a1822465f..18a8bfeb3cb 100644
--- a/tests/wpt/web-platform-tests/interfaces/trusted-types.tentative.idl
+++ b/tests/wpt/web-platform-tests/interfaces/trusted-types.tentative.idl
@@ -1,8 +1,8 @@
// https://github.com/wicg/trusted-types
-typedef (DOMString or TrustedHTML) HTMLString;
-typedef (DOMString or TrustedScript) ScriptString;
-typedef (DOMString or TrustedScriptURL) ScriptURLString;
+typedef [StringContext=TrustedHTML] DOMString HTMLString;
+typedef [StringContext=TrustedScript] DOMString ScriptString;
+typedef [StringContext=TrustedScriptURL] USVString ScriptURLString;
[
Exposed=(Window, Worker),
@@ -40,7 +40,7 @@ typedef (DOMString or TrustedScriptURL) ScriptURLString;
readonly attribute DOMString name;
TrustedHTML createHTML(DOMString input);
TrustedScript createScript(DOMString input);
- TrustedScriptURL createScriptURL(DOMString input);
+ TrustedScriptURL createScriptURL(USVString input);
};
dictionary TrustedTypePolicyOptions {
diff --git a/tests/wpt/web-platform-tests/native-file-system/native_FileSystemBaseHandle-isSameEntry-manual.https.tentative.html b/tests/wpt/web-platform-tests/native-file-system/native_FileSystemBaseHandle-isSameEntry-manual.https.tentative.html
new file mode 100644
index 00000000000..1d13d8bab66
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/native_FileSystemBaseHandle-isSameEntry-manual.https.tentative.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<meta charset=utf-8>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="resources/test-helpers.js"></script>
+<script src="resources/native-fs-test-helpers.js"></script>
+<script src="script-tests/FileSystemBaseHandle-isSameEntry.js"></script>
diff --git a/tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-resolve-manual.https.tentative.html b/tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-resolve-manual.https.tentative.html
new file mode 100644
index 00000000000..9c001b366b9
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/native_FileSystemDirectoryHandle-resolve-manual.https.tentative.html
@@ -0,0 +1,10 @@
+<!doctype html>
+<meta charset=utf-8>
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="resources/test-helpers.js"></script>
+<script src="resources/native-fs-test-helpers.js"></script>
+<script src="script-tests/FileSystemDirectoryHandle-resolve.js"></script>
diff --git a/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemBaseHandle-isSameEntry.tentative.https.any.js b/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemBaseHandle-isSameEntry.tentative.https.any.js
new file mode 100644
index 00000000000..67d36dfae8a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemBaseHandle-isSameEntry.tentative.https.any.js
@@ -0,0 +1,3 @@
+// META: script=resources/test-helpers.js
+// META: script=resources/sandboxed-fs-test-helpers.js
+// META: script=script-tests/FileSystemBaseHandle-isSameEntry.js
diff --git a/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-resolve.tentative.https.any.js b/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-resolve.tentative.https.any.js
new file mode 100644
index 00000000000..6ee32709307
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/sandboxed_FileSystemDirectoryHandle-resolve.tentative.https.any.js
@@ -0,0 +1,3 @@
+// META: script=resources/test-helpers.js
+// META: script=resources/sandboxed-fs-test-helpers.js
+// META: script=script-tests/FileSystemDirectoryHandle-resolve.js
diff --git a/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemBaseHandle-isSameEntry.js b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemBaseHandle-isSameEntry.js
new file mode 100644
index 00000000000..e8a8725b95e
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemBaseHandle-isSameEntry.js
@@ -0,0 +1,62 @@
+'use strict';
+
+directory_test(async (t, root_dir) => {
+ assert_true(await root_dir.isSameEntry(root_dir));
+
+ const subdir = await createDirectory(t, 'subdir-name', root_dir);
+ assert_true(await subdir.isSameEntry(subdir));
+}, 'isSameEntry for identical directory handles returns true');
+
+directory_test(async (t, root_dir) => {
+ const subdir = await createDirectory(t, 'subdir-name', root_dir);
+
+ assert_false(await root_dir.isSameEntry(subdir));
+ assert_false(await subdir.isSameEntry(root_dir));
+}, 'isSameEntry for different directories returns false');
+
+directory_test(async (t, root_dir) => {
+ const subdir = await createDirectory(t, 'subdir-name', root_dir);
+ const subdir2 = await root_dir.getDirectory('subdir-name');
+
+ assert_true(await subdir.isSameEntry(subdir2));
+ assert_true(await subdir2.isSameEntry(subdir));
+}, 'isSameEntry for different handles for the same directory');
+
+directory_test(async (t, root_dir) => {
+ const handle = await createEmptyFile(t, 'mtime.txt', root_dir);
+
+ assert_true(await handle.isSameEntry(handle));
+}, 'isSameEntry for identical file handles returns true');
+
+directory_test(async (t, root_dir) => {
+ const handle1 = await createEmptyFile(t, 'mtime.txt', root_dir);
+ const handle2 = await createEmptyFile(t, 'foo.txt', root_dir);
+
+ assert_false(await handle1.isSameEntry(handle2));
+ assert_false(await handle2.isSameEntry(handle1));
+}, 'isSameEntry for different files returns false');
+
+directory_test(async (t, root_dir) => {
+ const handle1 = await createEmptyFile(t, 'mtime.txt', root_dir);
+ const handle2 = await root_dir.getFile('mtime.txt');
+
+ assert_true(await handle1.isSameEntry(handle2));
+ assert_true(await handle2.isSameEntry(handle1));
+}, 'isSameEntry for different handles for the same file');
+
+directory_test(async (t, root_dir) => {
+ const handle1 = await createEmptyFile(t, 'mtime.txt', root_dir);
+ const subdir = await createDirectory(t, 'subdir-name', root_dir);
+ const handle2 = await createEmptyFile(t, 'mtime.txt', subdir);
+
+ assert_false(await handle1.isSameEntry(handle2));
+ assert_false(await handle2.isSameEntry(handle1));
+}, 'isSameEntry comparing a file to a file in a different directory returns false');
+
+directory_test(async (t, root_dir) => {
+ const handle1 = await createEmptyFile(t, 'mtime.txt', root_dir);
+ const handle2 = await createDirectory(t, 'subdir-name', root_dir);
+
+ assert_false(await handle1.isSameEntry(handle2));
+ assert_false(await handle2.isSameEntry(handle1));
+}, 'isSameEntry comparing a file to a directory returns false');
diff --git a/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-resolve.js b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-resolve.js
new file mode 100644
index 00000000000..a8900f97e54
--- /dev/null
+++ b/tests/wpt/web-platform-tests/native-file-system/script-tests/FileSystemDirectoryHandle-resolve.js
@@ -0,0 +1,27 @@
+'use strict';
+
+directory_test(async (t, root_dir) => {
+ assert_array_equals(await root_dir.resolve(root_dir), []);
+}, 'Resolve returns empty array for same directory');
+
+directory_test(async (t, root_dir) => {
+ const subdir = await createDirectory(t, 'subdir-name', root_dir);
+ const file = await createEmptyFile(t, 'file-name', subdir);
+
+ assert_array_equals(await root_dir.resolve(file), ['subdir-name', 'file-name']);
+}, 'Resolve returns correct path');
+
+directory_test(async (t, root_dir) => {
+ const subdir = await createDirectory(t, 'subdir😊', root_dir);
+ const file = await createEmptyFile(t, 'file-name', subdir);
+
+ assert_array_equals(await root_dir.resolve(file), ['subdir😊', 'file-name']);
+ assert_array_equals(await root_dir.resolve(subdir), ['subdir😊']);
+}, 'Resolve returns correct path with non-ascii characters');
+
+directory_test(async (t, root_dir) => {
+ const subdir = await createDirectory(t, 'subdir-name', root_dir);
+ const file = await createEmptyFile(t, 'file-name', root_dir);
+
+ assert_equals(await subdir.resolve(file), null);
+}, 'Resolve returns null when entry is not a child');
diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/manifest-404.https.html b/tests/wpt/web-platform-tests/origin-policy/content-security/manifest-404.https.html
new file mode 100644
index 00000000000..be738cc1445
--- /dev/null
+++ b/tests/wpt/web-platform-tests/origin-policy/content-security/manifest-404.https.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML>
+<meta charset="utf-8">
+<title>Missing manifest file.</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../resources/origin-policy-test-runner.js"></script>
+
+<div id="log"></div>
+
+<script>
+"use strict";
+<!-- Manifests delivered with 404 status code must be ignored. -->
+runTestsInSubframe({
+ hostname: "op99",
+ testJS: "resources/allow-unsafe-eval.mjs"
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/origin-policy/content-security/manifest-mimetype.https.html b/tests/wpt/web-platform-tests/origin-policy/content-security/manifest-mimetype.https.html
new file mode 100644
index 00000000000..1a450776022
--- /dev/null
+++ b/tests/wpt/web-platform-tests/origin-policy/content-security/manifest-mimetype.https.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML>
+<meta charset="utf-8">
+<title>Valid "content_security/policies" member must be ignored</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../resources/origin-policy-test-runner.js"></script>
+
+<div id="log"></div>
+
+<script>
+"use strict";
+runTestsInSubframe({
+ hostname: "op100",
+ testJS: "resources/allow-unsafe-eval.mjs"
+});
+</script>
diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op100 manifest-mimetype.json b/tests/wpt/web-platform-tests/origin-policy/policies/op100 manifest-mimetype.json
new file mode 100644
index 00000000000..3d906d500ba
--- /dev/null
+++ b/tests/wpt/web-platform-tests/origin-policy/policies/op100 manifest-mimetype.json
@@ -0,0 +1,6 @@
+{
+ "ids" : ["csp-valid-but-served-with-invalid-mimetype"],
+ "content_security" : {
+ "policies" : ["script-src 'self' 'unsafe-inline'"]
+ }
+}
diff --git a/tests/wpt/web-platform-tests/origin-policy/policies/op99 csp-valid-manifest-with-404.json b/tests/wpt/web-platform-tests/origin-policy/policies/op99 csp-valid-manifest-with-404.json
new file mode 100644
index 00000000000..d0870331b43
--- /dev/null
+++ b/tests/wpt/web-platform-tests/origin-policy/policies/op99 csp-valid-manifest-with-404.json
@@ -0,0 +1,6 @@
+{
+ "ids" : ["csp-valid-but-served-as-404"],
+ "content_security" : {
+ "policies" : ["script-src 'self' 'unsafe-inline'"]
+ }
+}
diff --git a/tests/wpt/web-platform-tests/paint-timing/input-text.html b/tests/wpt/web-platform-tests/paint-timing/input-text.html
new file mode 100644
index 00000000000..38527a4c667
--- /dev/null
+++ b/tests/wpt/web-platform-tests/paint-timing/input-text.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/utils.js"></script>
+<form>
+ <input type="text" id='myInput'>
+</form>
+<script>
+promise_test(async () => {
+ const onload = new Promise(r => window.addEventListener('load', r));
+ await onload;
+ return assertNoFirstContentfulPaint().then(() => {
+ document.getElementById('myInput').value = 'default text';
+ return assertFirstContentfulPaint();
+ })
+});
+</script>
+</body>
diff --git a/tests/wpt/web-platform-tests/paint-timing/resources/utils.js b/tests/wpt/web-platform-tests/paint-timing/resources/utils.js
new file mode 100644
index 00000000000..6ccb5f6d731
--- /dev/null
+++ b/tests/wpt/web-platform-tests/paint-timing/resources/utils.js
@@ -0,0 +1,53 @@
+// We use requestAnimationFrame() calls to force the user agent to paint. Hence, set
+// |numFramesWaiting| to 3 and use that constant whenever the test needs to wait for
+// the next paint to occur.
+const numFramesWaiting = 3;
+
+function waitForAnimationFrames(count) {
+ return new Promise(resolve => {
+ if (count-- <= 0) {
+ resolve();
+ } else {
+ requestAnimationFrame(() => {
+ waitForAnimationFrames(count).then(resolve);
+ });
+ }
+ });
+}
+
+function assertNoFirstContentfulPaint() {
+ return waitForAnimationFrames(numFramesWaiting).then(() => {
+ return new Promise((resolve, reject) => {
+ const observer = new PerformanceObserver(entryList =>{
+ const entries = entryList.getEntriesByName('first-contentful-paint');
+ observer.disconnect();
+ if (entries.length > 0)
+ reject('Received a first contentful paint entry.');
+ else
+ resolve();
+ });
+ observer.observe({type: 'paint', buffered: true});
+ observer.observe({type: 'mark'});
+ performance.mark('flush');
+ });
+ });
+}
+
+function assertFirstContentfulPaint() {
+ return waitForAnimationFrames(numFramesWaiting).then(() => {
+ return new Promise((resolve, reject) => {
+ const observer = new PerformanceObserver(entryList =>{
+ const entries = entryList.getEntriesByName('first-contentful-paint');
+ observer.disconnect();
+ if (entries.length === 0)
+ reject('Did not receive a first contentful paint entry.');
+ else {
+ resolve();
+ }
+ });
+ observer.observe({type: 'paint', buffered: true});
+ observer.observe({type: 'mark'});
+ performance.mark('flush');
+ });
+ });
+}
diff --git a/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js b/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js
index 14bb8fdada3..1a7e15819e6 100644
--- a/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js
+++ b/tests/wpt/web-platform-tests/resources/chromium/nfc-mock.js
@@ -398,15 +398,12 @@ var WebNFCTest = (() => {
Object.freeze(this); // Makes it immutable.
}
- initialize() {
+ async initialize() {
if (testInternal.initialized)
throw new Error('Call reset() before initialize().');
- if (window.testRunner) {
- // Grant nfc permissions for Chromium testrunner.
- window.testRunner.setPermission('nfc', 'granted',
- location.origin, location.origin);
- }
+ // Grant nfc permissions for Chromium testdriver.
+ await test_driver.set_permission({ name: 'nfc' }, 'granted', false);
if (testInternal.mockNFC == null) {
testInternal.mockNFC = new MockNFC();
diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/windowclient-navigate.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/windowclient-navigate.https.html
index b959ffd99e1..4fd2aa1d06f 100644
--- a/tests/wpt/web-platform-tests/service-workers/service-worker/windowclient-navigate.https.html
+++ b/tests/wpt/web-platform-tests/service-workers/service-worker/windowclient-navigate.https.html
@@ -106,7 +106,9 @@ function navigate_test(override_parameters) {
script_url += '?' + parameters.wait_state;
navigator.serviceWorker.addEventListener('message', function(event) {
- pausedLifecyclePort = event.data.port;
+ if (event.data.port) {
+ pausedLifecyclePort = event.data.port;
+ }
});
}
diff --git a/tests/wpt/web-platform-tests/svg/types/scripted/SVGGraphicsElement.getBBox-01.html b/tests/wpt/web-platform-tests/svg/types/scripted/SVGGraphicsElement.getBBox-01.html
new file mode 100644
index 00000000000..a56dc409320
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/types/scripted/SVGGraphicsElement.getBBox-01.html
@@ -0,0 +1,129 @@
+<!doctype html>
+<title>SVGGraphicsElement.prototype.getBBox</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="testcontainer">
+<svg width="1" height="1" visibility="hidden">
+<g id="g1">
+ <polygon id="p1" fill="none" stroke="red"/>
+ <rect id="r1" x="50" y="50" width="50" height="50" fill="green"/>
+</g>
+<g id="g2">
+ <rect id="r2" x="50" y="50" width="50" height="50" fill="green"/>
+ <rect id="r3" x="20" y="20" width="20" height="0" fill="red"/>
+ <rect id="r4" x="120" y="20" width="20" height="20" fill="blue" style="display:none"/>
+ <ellipse id="c1" cx="20" cy="120" rx="0" ry="20" fill="black"/>
+ <g>
+ <rect id="r5" x="120" y="120" width="-1" height="100" fill="cyan"/>
+ </g>
+</g>
+<g id="g3">
+ <path id="p2" fill="none" stroke="red"/>
+ <rect id="r6" x="50" y="50" width="50" height="50" fill="green"/>
+ <!-- The following path should be included in the bbox. -->
+ <path d=""/>
+</g>
+<g id="g4">
+ <polyline id="p3" fill="none" stroke="red"/>
+ <rect id="r7" x="50" y="50" width="50" height="50" fill="green"/>
+</g>
+<g id="g5">
+ <path id="p4" d="M3"/>
+ <rect id="r8" x="50" y="50" width="50" height="50" fill="green"/>
+</g>
+<g id="g6">
+ <polygon id="p5" points="47" fill="none" stroke="red"/>
+ <rect id="r9" x="50" y="50" width="50" height="50" fill="green"/>
+</g>
+<g id="g7">
+ <polyline id="p6" points="47" fill="none" stroke="red"/>
+ <rect id="r10" x="50" y="50" width="50" height="50" fill="green"/>
+</g>
+<g id="g8">
+ <path id="p7" d="M40 20h0" fill="none" stroke="red"/>
+ <rect id="r11" x="50" y="50" width="50" height="50" fill="green"/>
+</g>
+<g id="g9">
+ <rect width="1" height="1"/>
+ <path d="M 0.5 0.5 0.5 0 A 0.5 0.5 0 0 1 0.9296658068966942 0.7557093943988227 z"/>
+</g>
+<g id="g10">
+ <rect id="r12" x="5" y="5" width="10" height="10"/>
+ <foreignObject/>
+</g>
+<g id="g11">
+ <rect id="r13" x="5" y="5" width="10" height="10"/>
+ <image/>
+</g>
+</svg>
+</div>
+<div id=log></div>
+<script>
+const EPSILON = Math.pow(2, -24); // float epsilon
+
+function assert_rect_approx_equals(rect, expected, epsilon) {
+ assert_approx_equals(rect.x, expected.x, epsilon, "x");
+ assert_approx_equals(rect.y, expected.y, epsilon, "y");
+ assert_approx_equals(rect.width, expected.width, epsilon, "width");
+ assert_approx_equals(rect.height, expected.height, epsilon, "height");
+}
+
+test(function() {
+ assert_rect_approx_equals(document.getElementById("p1").getBBox(), {"x":0, "y":0, "width":0, "height":0 }, EPSILON);
+}, "getBBox on polygon with no points attribute");
+test(function() {
+ assert_rect_approx_equals(document.getElementById("p3").getBBox(), {"x":0, "y":0, "width":0, "height":0}, EPSILON);
+}, "getBBox on polyline with no points attribute");
+test(function() {
+ assert_rect_approx_equals(document.getElementById("p2").getBBox(), {"x":0, "y":0, "width":0, "height":0 }, EPSILON);
+}, "getBBox on path with no d attribute");
+test(function() {
+ assert_rect_approx_equals(document.getElementById("p4").getBBox(), {"x":0, "y":0, "width":0, "height":0 }, EPSILON);
+}, "getBBox on path with no valid path segments in d attribute");
+test(function() {
+ assert_rect_approx_equals(document.getElementById("p5").getBBox(), {"x":0, "y":0, "width":0, "height":0 }, EPSILON);
+}, "getBBox on polygon with no valid point in the points attribute");
+test(function() {
+ assert_rect_approx_equals(document.getElementById("p6").getBBox(), {"x":0, "y":0, "width":0, "height":0 }, EPSILON);
+}, "getBBox on polyline with no valid point in the points attribute");
+test(function() {
+ assert_rect_approx_equals(document.getElementById("g1").getBBox(), document.getElementById("r1").getBBox(), EPSILON);
+}, "polygon doesn't contribute to parent bbox");
+test(function() {
+ assert_rect_approx_equals(document.getElementById("g1").getBBox(), document.getElementById("r2").getBBox(), EPSILON);
+}, "group with hidden child");
+test(function() {
+ assert_rect_approx_equals(document.getElementById("g3").getBBox(), document.getElementById("r6").getBBox(), EPSILON);
+}, "path doesn't contribute to parent bbox");
+test(function() {
+ assert_rect_approx_equals(document.getElementById("g5").getBBox(), document.getElementById("r8").getBBox(), EPSILON);
+}, "path with only invalid segments doesn't contribute to parent bbox");
+test(function() {
+ assert_rect_approx_equals(document.getElementById("g4").getBBox(), document.getElementById("r7").getBBox(), EPSILON);
+}, "polyline doesn't contribute to parent bbox");
+test(function() {
+ assert_rect_approx_equals(document.getElementById("g6").getBBox(), document.getElementById("r9").getBBox(), EPSILON);
+}, "polygon with no valid points doesn't contribute to parent bbox");
+test(function() {
+ assert_rect_approx_equals(document.getElementById("g7").getBBox(), document.getElementById("r10").getBBox(), EPSILON);
+}, "polyline with no valid points doesn't contribute to parent bbox");
+test(function() {
+ assert_rect_approx_equals(document.getElementById("p7").getBBox(), {"x":40, "y":20, "width":0, "height":0 }, EPSILON);
+}, "getBBox on path with no height");
+test(function() {
+ assert_rect_approx_equals(document.getElementById("g8").getBBox(), {"x":40, "y":20, "width":60, "height":80 }, EPSILON);
+}, "path with no height should contribute to parent bbox");
+test(function() {
+ assert_rect_approx_equals(document.getElementById("g9").getBBox(), {"x":0, "y":0, "width":1, "height":1 }, EPSILON);
+}, "arc bbox should be tight");
+test(function() {
+ let g10 = document.getElementById("g10");
+ let r12 = document.getElementById("r12");
+ assert_rect_approx_equals(g10.getBBox(), r12.getBBox(), EPSILON);
+}, "empty foreignObject does not contribute to parent bbox");
+test(function() {
+ let g11 = document.getElementById("g11");
+ let r13 = document.getElementById("r13");
+ assert_rect_approx_equals(g11.getBBox(), r13.getBBox(), EPSILON);
+}, "empty image does not contribute to parent bbox");
+</script>
diff --git a/tests/wpt/web-platform-tests/svg/types/scripted/SVGGraphicsElement.getBBox-02.html b/tests/wpt/web-platform-tests/svg/types/scripted/SVGGraphicsElement.getBBox-02.html
new file mode 100644
index 00000000000..0efd590710c
--- /dev/null
+++ b/tests/wpt/web-platform-tests/svg/types/scripted/SVGGraphicsElement.getBBox-02.html
@@ -0,0 +1,19 @@
+<!doctype html>
+<title>SVGGraphicsElement.prototype.getBBox on &lt;tspan&gt;</title>
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<svg height="100">
+ <text y="180" font-size="100" font-family="Ahem" fill="lightblue"
+ transform="translate(0, -100)">X<tspan fill="blue">X</tspan></text>
+</svg>
+<script>
+ async_test(t => {
+ onload = t.step_func_done(() => {
+ let tspan = document.querySelector('tspan');
+ let bbox = tspan.getBBox();
+ for (let property of ['x', 'y', 'width', 'height'])
+ assert_equals(bbox[property], 100, property);
+ });
+ });
+</script>
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestexpected.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestexpected.py
index 335b0da5c90..63ebbe50d00 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestexpected.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestexpected.py
@@ -17,6 +17,7 @@ Each TestNode has zero or more SubtestNode children, one for each
known subtest of the test.
"""
+
def data_cls_getter(output_node, visited_node):
# visited_node is intentionally unused
if output_node is None:
@@ -55,6 +56,16 @@ def list_prop(name, node):
return []
+def str_prop(name, node):
+ try:
+ prop = node.get(name)
+ if not isinstance(prop, string_types):
+ raise ValueError
+ return prop
+ except KeyError:
+ return None
+
+
def tags(node):
"""Set of tags that have been applied to the test"""
try:
@@ -309,6 +320,10 @@ class ExpectedManifest(ManifestItem):
def known_intermittent(self):
return list_prop("expected", self)[1:]
+ @property
+ def implementation_status(self):
+ return str_prop("implementation-status", self)
+
class DirectoryManifest(ManifestItem):
@property
@@ -359,6 +374,10 @@ class DirectoryManifest(ManifestItem):
def fuzzy(self):
return fuzzy_prop(self)
+ @property
+ def implementation_status(self):
+ return str_prop("implementation-status", self)
+
class TestNode(ManifestItem):
def __init__(self, node, **kwargs):
@@ -444,6 +463,10 @@ class TestNode(ManifestItem):
def known_intermittent(self):
return list_prop("expected", self)[1:]
+ @property
+ def implementation_status(self):
+ return str_prop("implementation-status", self)
+
def append(self, node):
"""Add a subtest to the current test
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py
index 86d9de88221..c559c94debc 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py
@@ -17,6 +17,7 @@ manifest = None
manifest_update = None
download_from_github = None
+
def do_delayed_imports():
# This relies on an already loaded module having set the sys.path correctly :(
global manifest, manifest_update, download_from_github
@@ -168,6 +169,7 @@ class TestLoader(object):
chunk_number=1,
include_https=True,
skip_timeout=False,
+ skip_implementation_status=None,
chunker_kwargs=None):
self.test_types = test_types
@@ -180,6 +182,7 @@ class TestLoader(object):
self.disabled_tests = None
self.include_https = include_https
self.skip_timeout = skip_timeout
+ self.skip_implementation_status = skip_implementation_status
self.chunk_type = chunk_type
self.total_chunks = total_chunks
@@ -266,6 +269,8 @@ class TestLoader(object):
enabled = False
if self.skip_timeout and test.expected() == "TIMEOUT":
enabled = False
+ if self.skip_implementation_status and test.implementation_status() in self.skip_implementation_status:
+ enabled = False
key = "enabled" if enabled else "disabled"
tests[key][test_type].append(test)
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 5f07e7e6520..59a8c55b4ef 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptcommandline.py
@@ -137,6 +137,10 @@ scheme host and port.""")
help="Path to manifest listing tests to include")
test_selection_group.add_argument("--skip-timeout", action="store_true",
help="Skip tests that are expected to time out")
+ test_selection_group.add_argument("--skip-implementation-status",
+ action="append",
+ choices=["not-implementing", "backlog", "implementing"],
+ help="Skip tests that have the given implementation status")
test_selection_group.add_argument("--tag", action="append", dest="tags",
help="Labels applied to tests to include in the run. "
"Labels starting dir: are equivalent to top-level directories.")
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
index 3d15c6e5418..5ebc43d884d 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wptrunner.py
@@ -79,6 +79,7 @@ def get_loader(test_paths, product, debug=None, run_info_extras=None, chunker_kw
chunk_number=kwargs["this_chunk"],
include_https=ssl_enabled,
skip_timeout=kwargs["skip_timeout"],
+ skip_implementation_status=kwargs["skip_implementation_status"],
chunker_kwargs=chunker_kwargs)
return run_info, test_loader
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py
index e8c26746066..1e27f90d91a 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/wpttest.py
@@ -342,6 +342,13 @@ class Test(object):
except KeyError:
return default
+ def implementation_status(self):
+ implementation_status = None
+ for meta in self.itermeta():
+ implementation_status = meta.implementation_status
+ if implementation_status:
+ return implementation_status
+
def known_intermittent(self, subtest=None):
metadata = self._get_metadata(subtest)
if metadata is None:
diff --git a/tests/wpt/web-platform-tests/trusted-types/DOMParser-parseFromString-regression.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/DOMParser-parseFromString-regression.tentative.https.html
index cc57ee7f8ea..941d1750b4a 100644
--- a/tests/wpt/web-platform-tests/trusted-types/DOMParser-parseFromString-regression.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/DOMParser-parseFromString-regression.tentative.https.html
@@ -17,7 +17,6 @@ test(t => {
probe.innerHTML = "probe";
const doc = new DOMParser().parseFromString(`
- <meta http-equiv="Content-Security-Policy" content="trusted-types *">
<body><div id="probe"></div></body>"`, "text/html");
probe.innerHTML = "probe";
diff --git a/tests/wpt/web-platform-tests/trusted-types/DOMWindowTimers-setTimeout-setInterval.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/DOMWindowTimers-setTimeout-setInterval.tentative.https.html
index 5bd4003cfdd..2ad47555a92 100644
--- a/tests/wpt/web-platform-tests/trusted-types/DOMWindowTimers-setTimeout-setInterval.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/DOMWindowTimers-setTimeout-setInterval.tentative.https.html
@@ -2,19 +2,46 @@
<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="require-trusted-types-for 'script'">
<body>
<script>
async_test(t => {
- window.timeoutTest = t;
+ window.timeoutTrustedTest = t;
let policy = createScript_policy(window, 'timeout');
- let script = policy.createScript("window.timeoutTest.done();");
+ let script = policy.createScript("window.timeoutTrustedTest.done();");
setTimeout(script);
}, "window.setTimeout assigned via policy (successful Script transformation).");
async_test(t => {
- window.intervalTest = t;
+ window.intervalTrustedTest = t;
let policy = createScript_policy(window, 'script');
- let script = policy.createScript("window.intervalTest.done();");
+ let script = policy.createScript("window.intervalTrustedTest.done();");
setInterval(script);
}, "window.setInterval assigned via policy (successful Script transformation).");
+
+ trustedTypes.createPolicy("default", {createScript: s => "window." + s + ".done()"});
+
+ async_test(t => {
+ window.timeoutStringTest = t;
+ let script = "timeoutStringTest";
+ setTimeout(script);
+ }, "window.setTimeout assigned via default policy (successful Script transformation).");
+
+ async_test(t => {
+ window.intervalStringTest = t;
+ let script = "intervalStringTest";
+ setInterval(script);
+ }, "window.setInterval assigned via default policy (successful Script transformation).");
+
+ async_test(t => {
+ window.timeoutFunctionTest = t;
+ let script = () => window.timeoutFunctionTest.done();
+ setTimeout(script);
+ }, "window.setTimeout assigned with a function handler shouldn't go through default policy.");
+
+ async_test(t => {
+ window.intervalFunctionTest = t;
+ let script = () => window.intervalFunctionTest.done();
+ setInterval(script);
+ }, "window.setInterval assigned with a function handler shouldn't go through default policy.");
</script>
diff --git a/tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.tentative.https.html
index 6cbf680fa26..0fdde778cc8 100644
--- a/tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/GlobalEventHandlers-onclick.tentative.https.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 *; require-trusted-types-for 'script'">
+<meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script'">
<body>
<div id="container"></div>
<script>
diff --git a/tests/wpt/web-platform-tests/trusted-types/HTMLScriptElement-internal-slot.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/HTMLScriptElement-internal-slot.tentative.https.html
index 2970e2a7ec6..4f523bb4e4e 100644
--- a/tests/wpt/web-platform-tests/trusted-types/HTMLScriptElement-internal-slot.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/HTMLScriptElement-internal-slot.tentative.https.html
@@ -3,8 +3,7 @@
<head>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
- <meta http-equiv="Content-Security-Policy"
- content="trusted-types *; require-trusted-types-for 'script'">
+ <meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script'">
</head>
<body>
<script>
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedType-AttributeNodes.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedType-AttributeNodes.tentative.https.html
index 77eef9cf39e..6b006657004 100644
--- a/tests/wpt/web-platform-tests/trusted-types/TrustedType-AttributeNodes.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedType-AttributeNodes.tentative.https.html
@@ -2,7 +2,6 @@
<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>
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.https.html
index 0e97a4a245a..cdc683dad3b 100644
--- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-CSP-wildcard.tentative.https.html
@@ -3,7 +3,6 @@
<script src="/resources/testharnessreport.js"></script>
<script src="support/helper.sub.js"></script>
-<meta http-equiv="Content-Security-Policy" content="trusted-types *">
<body>
<script>
test(t => {
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-createXXX.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-createXXX.tentative.https.html
index 81ad053f5cd..112d1ae636a 100644
--- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-createXXX.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicy-createXXX.tentative.https.html
@@ -3,7 +3,6 @@
<script src="/resources/testharnessreport.js"></script>
<script src="support/helper.sub.js"></script>
-<meta http-equiv="Content-Security-Policy" content="trusted-types *">
<body>
<script>
test(t => {
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-constants.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-constants.tentative.https.html
index 0ba2eb62375..551084ca4b6 100644
--- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-constants.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-constants.tentative.https.html
@@ -3,7 +3,6 @@
<script src="/resources/testharnessreport.js"></script>
<script src="support/helper.sub.js"></script>
-<meta http-equiv="Content-Security-Policy" content="trusted-types *">
<body>
<script>
test(t => {
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests-wildcard.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests-wildcard.tentative.https.html
index f1b5f27e709..9200708545c 100644
--- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests-wildcard.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-createPolicy-cspTests-wildcard.tentative.https.html
@@ -2,7 +2,6 @@
<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 *">
<body>
<script>
//No name given test
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-getPropertyType.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-getPropertyType.tentative.https.html
index 0e5a0f51c80..861dd8bb7c6 100644
--- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-getPropertyType.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-getPropertyType.tentative.https.html
@@ -3,7 +3,6 @@
<script src="/resources/testharnessreport.js"></script>
<script src="support/helper.sub.js"></script>
-<meta http-equiv="Content-Security-Policy" content="trusted-types *">
<body>
<div id="target"></div>
<script>
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.https.html
index 89d4a8b4efc..a7df477d00e 100644
--- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-isXXX.tentative.https.html
@@ -3,7 +3,6 @@
<script src="/resources/testharnessreport.js"></script>
<script src="support/helper.sub.js"></script>
-<meta http-equiv="Content-Security-Policy" content="trusted-types *">
<body>
<script>
// Policy settings for all tests
diff --git a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-metadata.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-metadata.tentative.https.html
index 50f877cda07..a5fe7864b12 100644
--- a/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-metadata.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/TrustedTypePolicyFactory-metadata.tentative.https.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 *; require-trusted-types-for 'script';">
+<meta http-equiv="Content-Security-Policy" content="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 0aa965e16e0..9853b1bc448 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 *; require-trusted-types-for 'script';">
+ <meta http-equiv="Content-Security-Policy" content="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.https.html b/tests/wpt/web-platform-tests/trusted-types/block-Node-multiple-arguments.tentative.https.html
index d66b8c8f25b..e87c8fca238 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-Node-multiple-arguments.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-Node-multiple-arguments.tentative.https.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 *; require-trusted-types-for 'script';">
+ <meta http-equiv="Content-Security-Policy" content="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.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.https.html
index bd038635df7..dd912e6b8de 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMParser-parseFromString.tentative.https.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 *; require-trusted-types-for 'script';">
+<meta http-equiv="Content-Security-Policy" content="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.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.https.html
index d2764936675..f36ae94ea10 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-DOMWindowTimers-setTimeout-setInterval.tentative.https.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 *; require-trusted-types-for 'script';">
+<meta http-equiv="Content-Security-Policy" content="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.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.https.html
index fa87d119f79..974203c1133 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Document-write.tentative.https.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 *; require-trusted-types-for 'script';">
+ <meta http-equiv="Content-Security-Policy" content="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.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.tentative.https.html
index c91e4e56acd..228887d0423 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-insertAdjacentHTML.tentative.https.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 *; require-trusted-types-for 'script';">
+ <meta http-equiv="Content-Security-Policy" content="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.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-outerHTML.tentative.https.html
index 397606bc056..9b6cf72cb40 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-outerHTML.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-outerHTML.tentative.https.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 *; require-trusted-types-for 'script';">
+ <meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script';">
</head>
<body>
<div id="container"></div>
@@ -68,7 +68,7 @@
var d = document.createElement('div');
container.appendChild(d);
d.outerHTML = null;
- assert_equals(container.innerText, "null");
+ assert_equals(container.innerText, "");
while (container.firstChild)
container.firstChild.remove();
diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.https.html
index e6abf602fb0..1d39a804f39 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttribute.tentative.https.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 *; require-trusted-types-for 'script';">
+ <meta http-equiv="Content-Security-Policy" content="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.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.https.html
index aa13d72ceb2..346e077a666 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Element-setAttributeNS.tentative.https.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 *; require-trusted-types-for 'script';">
+ <meta http-equiv="Content-Security-Policy" content="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.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLElement-generic.tentative.https.html
index b5745199f41..9e780c1ed23 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLElement-generic.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-HTMLElement-generic.tentative.https.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 *; require-trusted-types-for 'script';">
+ <meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script';">
</head>
<body>
<script>
@@ -56,7 +56,7 @@
HTMLTestCases.forEach(c => {
test(t => {
assert_element_accepts_trusted_type(c[0], c[1], INPUTS.HTML, RESULTS.HTML);
- assert_element_accepts_trusted_type(c[0], c[1], null, "null");
+ assert_element_accepts_trusted_type(c[0], c[1], null, c[1] === 'innerHTML'? "" : "null");
}, c[0] + "." + c[1] + " accepts string and null after default policy was created");
});
diff --git a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Range-createContextualFragment.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Range-createContextualFragment.tentative.https.html
index b38e4f3da5f..79111204934 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Range-createContextualFragment.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-string-assignment-to-Range-createContextualFragment.tentative.https.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 *; require-trusted-types-for 'script';">
+<meta http-equiv="Content-Security-Policy" content="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.https.html b/tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.https.html
index bc29f19f4c4..819753652a9 100644
--- a/tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/block-text-node-insertion-into-script-element.tentative.https.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 *; require-trusted-types-for 'script';">
+ <meta http-equiv="Content-Security-Policy" content="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.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/default-policy-report-only.tentative.https.html.headers
index 67b9ef7a3c5..4c1ff15e167 100644
--- a/tests/wpt/web-platform-tests/trusted-types/default-policy-report-only.tentative.https.html.headers
+++ b/tests/wpt/web-platform-tests/trusted-types/default-policy-report-only.tentative.https.html.headers
@@ -1 +1 @@
-Content-Security-Policy-Report-Only: trusted-types *; require-trusted-types-for 'script';
+Content-Security-Policy-Report-Only: require-trusted-types-for 'script';
diff --git a/tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.https.html.headers
index 6a40e40a586..604e765da46 100644
--- a/tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.https.html.headers
+++ b/tests/wpt/web-platform-tests/trusted-types/default-policy.tentative.https.html.headers
@@ -1 +1 @@
-Content-Security-Policy: trusted-types *; require-trusted-types-for 'script';
+Content-Security-Policy: require-trusted-types-for 'script';
diff --git a/tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.https.html.headers
index 67b9ef7a3c5..4c1ff15e167 100644
--- a/tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.https.html.headers
+++ b/tests/wpt/web-platform-tests/trusted-types/empty-default-policy-report-only.tentative.https.html.headers
@@ -1 +1 @@
-Content-Security-Policy-Report-Only: trusted-types *; require-trusted-types-for 'script';
+Content-Security-Policy-Report-Only: require-trusted-types-for 'script';
diff --git a/tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.https.html.headers
index 6a40e40a586..604e765da46 100644
--- a/tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.https.html.headers
+++ b/tests/wpt/web-platform-tests/trusted-types/empty-default-policy.tentative.https.html.headers
@@ -1 +1 @@
-Content-Security-Policy: trusted-types *; require-trusted-types-for 'script';
+Content-Security-Policy: require-trusted-types-for 'script';
diff --git a/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-no-default-policy.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-no-default-policy.tentative.https.html
index 6d48ae48a01..2f1e2a281b8 100644
--- a/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-no-default-policy.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/eval-csp-tt-no-default-policy.tentative.https.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 *; require-trusted-types-for 'script';">
+ <meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script';">
</head>
<body>
<script>
diff --git a/tests/wpt/web-platform-tests/trusted-types/eval-with-permissive-csp.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/eval-with-permissive-csp.tentative.https.html
index 5a35561438a..abc698a46d3 100644
--- a/tests/wpt/web-platform-tests/trusted-types/eval-with-permissive-csp.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/eval-with-permissive-csp.tentative.https.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 *; require-trusted-types-for 'script'">
+ content="script-src 'nonce-abc' 'unsafe-eval'; 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.https.html.headers b/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.https.html.headers
index fa87952ae48..aa00fcc15a3 100644
--- a/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.https.html.headers
+++ b/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for-report-only.tentative.https.html.headers
@@ -1 +1 @@
-Content-Security-Policy-Report-Only: trusted-types *
+Content-Security-Policy-Report-Only: require-trusted-types-for 'script'
diff --git a/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for.tentative.https.html
index 4e11b03617b..3630962ada9 100644
--- a/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/no-require-trusted-types-for.tentative.https.html
@@ -2,7 +2,6 @@
<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>
@@ -42,4 +41,4 @@
assert_equals(s.innerText.toString(), "1");
}, name + "empty default");
});
-</script> \ No newline at end of file
+</script>
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 6a40e40a586..604e765da46 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 *; require-trusted-types-for 'script';
+Content-Security-Policy: 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 67b9ef7a3c5..4c1ff15e167 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 *; require-trusted-types-for 'script';
+Content-Security-Policy-Report-Only: 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 6a40e40a586..604e765da46 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 *; require-trusted-types-for 'script';
+Content-Security-Policy: require-trusted-types-for 'script';
diff --git a/tests/wpt/web-platform-tests/trusted-types/trusted-types-createHTMLDocument.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/trusted-types-createHTMLDocument.tentative.https.html
index 440d2a88b93..e4af2eb5902 100644
--- a/tests/wpt/web-platform-tests/trusted-types/trusted-types-createHTMLDocument.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/trusted-types-createHTMLDocument.tentative.https.html
@@ -2,7 +2,8 @@
<head>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
- <meta http-equiv="Content-Security-Policy" content="trusted-types * 'allow-duplicates'; require-trusted-types-for 'script'">
+ <meta http-equiv="Content-Security-Policy"
+ content="trusted-types policy default 'allow-duplicates'; require-trusted-types-for 'script'">
</head>
<body>
<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 8076ab40c83..3fd1c9ffa8d 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
@@ -10,9 +10,9 @@
// (rather than as "<meta http-equiv" tags). This test assumes the following
// headers are set in the .headers file:
//
- // Content-Security-Policy: trusted-types *
// Content-Security-Policy: script-src 'unsafe-inline' 'unsafe-eval'; report-uri ...
// Content-Security-Policy: plugin-types bla/blubb
+ // Content-Security-Policy-Report-Only: require-trusted-types-for 'script'
//
// The last rule is there so we can provoke a CSP violation report at will.
// The intent is that in order to test that a violation has *not* been thrown
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 1d7033658c1..b5e94c400bb 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,3 @@
-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/tt-block-eval.tentative.https.html b/tests/wpt/web-platform-tests/trusted-types/tt-block-eval.tentative.https.html
index f9c1a5d0b12..13178bd44bf 100644
--- a/tests/wpt/web-platform-tests/trusted-types/tt-block-eval.tentative.https.html
+++ b/tests/wpt/web-platform-tests/trusted-types/tt-block-eval.tentative.https.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 *; require-trusted-types-for 'script'">
+ <meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script'">
</head>
<body>
<script>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/infinite-duration-animation-ref.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/infinite-duration-animation-ref.html
new file mode 100644
index 00000000000..6b358bd4e7f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/infinite-duration-animation-ref.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<title>Reference for infinite duration animation</title>
+<style>
+ #notes {
+ position: absolute;
+ left: 0px;
+ top: 100px;
+ }
+ body {
+ background: white;
+ }
+</style>
+<body>
+ <p id="notes">
+ This test creates an infinite duration animations, which should be stuck at
+ a progress of 0. If any blue pixels appear in the screenshot, the test
+ fails.
+ </p>
+</body>
diff --git a/tests/wpt/web-platform-tests/web-animations/timing-model/animations/infinite-duration-animation.html b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/infinite-duration-animation.html
new file mode 100644
index 00000000000..c641e5afa2a
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-animations/timing-model/animations/infinite-duration-animation.html
@@ -0,0 +1,64 @@
+
+<!DOCTYPE html>
+<html class="reftest-wait">
+<meta charset="UTF-8">
+<title>Infinite duration animation</title>
+<link rel="match" href="infinite-duration-animation-ref.html">
+<script src="/common/reftest-wait.js"></script>
+<script src="../../testcommon.js"></script>
+<style>
+ #box-1, #box-2 {
+ border: 1px solid white;
+ height: 40px;
+ position: absolute;
+ top: 40px;
+ width: 40px;
+ }
+ #box-1 {
+ background: blue;
+ z-index: 1;
+ }
+ #box-2 {
+ background: white;
+ z-index: 2;
+ }
+ #notes {
+ position: absolute;
+ left: 0px;
+ top: 100px;
+ }
+ body {
+ background: white;
+ }
+</style>
+
+<body>
+ <div id="box-1"></div>
+ <div id="box-2"></div>
+ <p id="notes">
+ This test creates an infinite duration animations, which should be stuck at
+ a progress of 0. If any blue pixels appear in the screenshot, the test
+ fails.
+ </p>
+</body>
+<script>
+ onload = async function() {
+ // Double rAF to ensure that we are not bogged down during initialization
+ // and the compositor is ready.
+ waitForAnimationFrames(2).then(() => {
+ const elem = document.getElementById('box-1');
+ const keyframes = [
+ { transform: 'translateX(0px)' },
+ { transform: 'translateX(100px)' }
+ ];
+ const effect =
+ new KeyframeEffect(elem, keyframes,
+ {iterations: 3, duration: Infinity});
+ const animation = new Animation(effect);
+ animation.play();
+ animation.ready.then(() => {
+ takeScreenshotDelayed(100);
+ });
+ });
+ };
+</script>
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFReader-document-hidden-manual.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFReader-document-hidden-manual.https.html
index 10ce53e4a4f..f2027dc99d1 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFReader-document-hidden-manual.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFReader-document-hidden-manual.https.html
@@ -16,11 +16,6 @@ nfc_test(async (t, mockNFC) => {
if (document.hidden) reject();
resolve();
});
- if (window.testRunner) {
- // Grant nfc permissions for Chromium testrunner.
- window.testRunner.setPermission('nfc', 'granted',
- location.origin, location.origin);
- }
await reader.scan();
await promise;
}, "Test NDEFReader.onreading is not fired when document is hidden");
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html
index 581412ea35d..db50b66f058 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFReader_scan.https.html
@@ -25,7 +25,7 @@ function waitSyntaxErrorPromise(t, scan_options) {
return promise_rejects_dom(t, 'SyntaxError', reader.scan(scan_options));
}
-promise_test(async t => {
+nfc_test(async t => {
const reader = new NDEFReader();
const promises = [];
invalid_signals.forEach(invalid_signal => {
@@ -35,12 +35,8 @@ promise_test(async t => {
await Promise.all(promises);
}, "Test that NDEFReader.scan rejects if signal is not an AbortSignal.");
-promise_test(async t => {
- if (window.testRunner) {
- // Deny nfc permissions for Chromium testrunner.
- window.testRunner.setPermission('nfc', 'denied',
- location.origin, location.origin);
- }
+nfc_test(async t => {
+ await test_driver.set_permission({ name: 'nfc' }, 'denied', false);
const reader = new NDEFReader();
await promise_rejects_dom(t, 'NotAllowedError', reader.scan());
}, "NDEFReader.scan should fail if user permission is not granted.");
@@ -49,10 +45,6 @@ promise_test(async t => {
// implementation for NFC Mojo interface.
nfc_test(async (t, mockNFC) => {
mockNFC.simulateClosedPipe();
- if (window.testRunner) {
- window.testRunner.setPermission('nfc', 'granted',
- location.origin, location.origin);
- }
const reader = new NDEFReader();
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
const promise = readerWatcher.wait_for("error").then(event => {
diff --git a/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_write.https.html b/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_write.https.html
index 4ca7faa12bc..e2bbd57bbe9 100644
--- a/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_write.https.html
+++ b/tests/wpt/web-platform-tests/web-nfc/NDEFWriter_write.https.html
@@ -123,7 +123,7 @@ const invalid_signals = [
self
];
-promise_test(async t => {
+nfc_test(async t => {
const writer = new NDEFWriter();
const promises = [];
invalid_type_messages.forEach(message => {
@@ -133,7 +133,7 @@ promise_test(async t => {
await Promise.all(promises);
}, "Test that promise is rejected with TypeError if NDEFMessageSource is invalid.");
-promise_test(async t => {
+nfc_test(async t => {
const writer = new NDEFWriter();
const promises = [];
invalid_syntax_messages.forEach(message => {
@@ -144,12 +144,8 @@ promise_test(async t => {
}, "Test that promise is rejected with SyntaxError if NDEFMessageSource contains\
invalid records.");
-promise_test(async t => {
- if (window.testRunner) {
- // Deny nfc permissions for Chromium testrunner.
- window.testRunner.setPermission('nfc', 'denied',
- location.origin, location.origin);
- }
+nfc_test(async t => {
+ await test_driver.set_permission({ name: 'nfc' }, 'denied', false);
const writer = new NDEFWriter();
await promise_rejects_dom(t, 'NotAllowedError', writer.write(test_text_data));
}, 'NDEFWriter.write should fail if user permission is not granted.');
@@ -158,11 +154,6 @@ promise_test(async t => {
// implementation for NFC Mojo interface.
nfc_test(async (t, mockNFC) => {
mockNFC.simulateClosedPipe();
- if (window.testRunner) {
- // Deny nfc permissions for Chromium testrunner.
- window.testRunner.setPermission('nfc', 'granted',
- location.origin, location.origin);
- }
const writer = new NDEFWriter();
await promise_rejects_dom(t, 'NotSupportedError', writer.write(test_text_data));
}, 'NDEFWriter.write should fail if no implementation for NFC Mojo interface is available.');
@@ -187,7 +178,7 @@ nfc_test(async (t, mockNFC) => {
assert_true(callback_called, 'timeout should have caused the abort');
}, "NDEFWriter.write should fail if abort write request before write happends.");
-promise_test(async t => {
+nfc_test(async t => {
const writer = new NDEFWriter();
const controller = new AbortController();
assert_false(controller.signal.aborted);
@@ -197,7 +188,7 @@ promise_test(async t => {
writer.write(test_text_data, { signal: controller.signal }));
}, "NDEFWriter.write should fail if signal's aborted flag is set.");
-promise_test(async t => {
+nfc_test(async t => {
const writer = new NDEFWriter();
const promises = [];
invalid_signals.forEach(invalid_signal => {
@@ -234,15 +225,10 @@ nfc_test(async (t, mockNFC) => {
await promise_rejects_dom(t, 'NotSupportedError', writer.write(test_text_data));
}, "NDEFWriter.write should fail when NFC HW is not supported.");
-promise_test(async () => {
+nfc_test(async () => {
await new Promise((resolve,reject) => {
const iframe = document.createElement('iframe');
iframe.srcdoc = `<script>
- if (window.testRunner) {
- // Grant nfc permissions for Chromium testrunner.
- window.testRunner.setPermission('nfc', 'granted',
- location.origin, location.origin);
- }
window.onmessage = message => {
if (message.data === "Ready") {
const onSuccess = () => {
diff --git a/tests/wpt/web-platform-tests/web-nfc/nfc_permission.https.html b/tests/wpt/web-platform-tests/web-nfc/nfc_permission.https.html
new file mode 100644
index 00000000000..af76d1b4e1f
--- /dev/null
+++ b/tests/wpt/web-platform-tests/web-nfc/nfc_permission.https.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<meta charset=utf-8>
+<title>Web NFC: permission</title>
+<link rel="help" href="https://w3c.github.io/web-nfc/"/>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script>
+
+"use strict";
+
+promise_test(async t => {
+ await test_driver.set_permission({ name: 'nfc' }, 'denied', false);
+
+ const status = await navigator.permissions.query({ name:'nfc' });
+ assert_class_string(status, "PermissionStatus");
+ assert_equals(status.state, "denied");
+}, "Deny nfc permission should work.");
+
+promise_test(async t => {
+ await test_driver.set_permission({ name: 'nfc' }, 'granted', false);
+
+ const status = await navigator.permissions.query({ name: 'nfc' });
+ assert_class_string(status, "PermissionStatus");
+ assert_equals(status.state, "granted");
+}, "Grant nfc permission should work.");
+
+</script>
diff --git a/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js b/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
index b1753ddd1b3..afe101d36aa 100644
--- a/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
+++ b/tests/wpt/web-platform-tests/web-nfc/resources/nfc-helpers.js
@@ -18,6 +18,8 @@ let loadChromiumResources = Promise.resolve().then(() => {
[
'/gen/layout_test_data/mojo/public/js/mojo_bindings.js',
'/gen/services/device/public/mojom/nfc.mojom.js',
+ '/resources/testdriver.js',
+ '/resources/testdriver-vendor.js',
'/resources/chromium/nfc-mock.js',
].forEach(path => {
let script = document.createElement('script');
diff --git a/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js b/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js
index 25652b8646e..d92da3d8f34 100644
--- a/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js
+++ b/tests/wpt/web-platform-tests/webxr/resources/webxr_test_constants.js
@@ -85,8 +85,8 @@ const VALID_BOUNDS = [
];
const VALID_RESOLUTION = {
- width: 20,
- height: 20
+ width: 200,
+ height: 200
};
const LEFT_OFFSET = {
diff --git a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js
index dbe1585929f..72a21c0ff29 100644
--- a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js
+++ b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js
@@ -34,10 +34,12 @@ function xr_promise_test(name, func, properties) {
// device, and the test object.
// Requires a webglCanvas on the page.
function xr_session_promise_test(
- name, func, fakeDeviceInit, sessionMode, sessionInit, properties) {
+ name, func, fakeDeviceInit, sessionMode, sessionInit, properties, glcontextPropertiesParam, gllayerPropertiesParam) {
let testDeviceController;
let testSession;
let sessionObjects = {};
+ const glcontextProperties = (glcontextPropertiesParam) ? glcontextPropertiesParam : {};
+ const gllayerProperties = (gllayerPropertiesParam) ? gllayerPropertiesParam : {};
const webglCanvas = document.getElementsByTagName('canvas')[0];
// We can't use assert_true here because it causes the wpt testharness to treat
@@ -47,7 +49,7 @@ function xr_session_promise_test(
Promise.reject('xr_session_promise_test requires a canvas on the page!');
}, name, properties);
}
- let gl = webglCanvas.getContext('webgl', {alpha: false, antialias: false});
+ let gl = webglCanvas.getContext('webgl', {alpha: false, antialias: false, ...glcontextProperties});
sessionObjects.gl = gl;
xr_promise_test(
@@ -77,7 +79,7 @@ function xr_session_promise_test(
.then((session) => {
testSession = session;
session.mode = sessionMode;
- let glLayer = new XRWebGLLayer(session, gl);
+ let glLayer = new XRWebGLLayer(session, gl, gllayerProperties);
glLayer.context = gl;
// Session must have a baseLayer or frame requests
// will be ignored.
diff --git a/tests/wpt/web-platform-tests/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https.html b/tests/wpt/web-platform-tests/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https.html
new file mode 100644
index 00000000000..8e3e60cca05
--- /dev/null
+++ b/tests/wpt/web-platform-tests/webxr/xrWebGLLayer_opaque_framebuffer_stencil.https.html
@@ -0,0 +1,224 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/webxr_util.js"></script>
+<script src="resources/webxr_test_constants.js"></script>
+<canvas />
+
+<script>
+let immersiveTestName = "Ensure that the framebuffer given by the WebGL layer" +
+ " works with stencil for immersive";
+let nonImmersiveTestName = "Ensure that the framebuffer given by the WebGL layer" +
+ " works with stencil for non-immersive";
+
+let fakeDeviceInitParams = TRACKED_IMMERSIVE_DEVICE;
+
+function createShader(gl, type, source) {
+ var shader = gl.createShader(type);
+ gl.shaderSource(shader, source);
+ gl.compileShader(shader);
+ var success = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
+ if (success) {
+ return shader;
+ }
+
+ gl.deleteShader(shader);
+}
+
+function createProgram(gl, vertexShader, fragmentShader) {
+ var program = gl.createProgram();
+ gl.attachShader(program, vertexShader);
+ gl.attachShader(program, fragmentShader);
+ gl.linkProgram(program);
+ var success = gl.getProgramParameter(program, gl.LINK_STATUS);
+ if (success) {
+ return program;
+ }
+
+ gl.deleteProgram(program);
+}
+
+let testFunction =
+ (session, fakeDeviceController, t, sessionObjects) => new Promise((resolve, reject) => {
+ const gl = sessionObjects.gl;
+ const webglLayer = sessionObjects.glLayer;
+ const xrFramebuffer = webglLayer.framebuffer;
+ const webglCanvas = document.getElementsByTagName('canvas')[0];
+
+ session.requestAnimationFrame((time, xrFrame) => {
+ t.step(() => {
+ // Make sure we're starting with a clean error slate.
+ gl.getError();
+ assert_equals(gl.getError(), gl.NO_ERROR, "Should not initially have any errors");
+
+ if (session.mode === 'inline') {
+ // Creating a layer with an inline session should return a framebuffer of
+ // null, and as such most of these tests won't apply.
+ assert_equals(xrFramebuffer, null, 'inline, fbo = null');
+ // We need to set canvas size here for inline session testing, since
+ // xrFramebuffer is null.
+ webglCanvas.width = webglCanvas.height = 300;
+ gl.bindFramebuffer(gl.FRAMEBUFFER, xrFramebuffer);
+ assert_equals(gl.getError(), gl.NO_ERROR, "Binding default framebuffer for inline session");
+ } else {
+ assert_not_equals(xrFramebuffer, null, 'immersive, fbo != null');
+ gl.bindFramebuffer(gl.FRAMEBUFFER, xrFramebuffer);
+ assert_equals(gl.getError(), gl.NO_ERROR, "Binding WebGLLayer framebuffer");
+ }
+
+ // Framebuffer status must be complete inside of a XR frame callback.
+ assert_equals(gl.checkFramebufferStatus(gl.FRAMEBUFFER), gl.FRAMEBUFFER_COMPLETE, "FBO complete");
+ });
+ gl.clearColor(1, 1, 1, 1);
+
+ const vs = `
+ attribute vec4 position;
+ uniform mat4 matrix;
+ void main() {
+ gl_Position = matrix * position;
+ }
+ `;
+
+ const fs = `
+ precision mediump float;
+ uniform vec4 color;
+ void main() {
+ gl_FragColor = color;
+ }
+ `;
+ const vertexShader = createShader(gl, gl.VERTEX_SHADER, vs);
+ const fragmentShader = createShader(gl, gl.FRAGMENT_SHADER, fs);
+ const program = createProgram(gl, vertexShader, fragmentShader);
+
+ const posLoc = gl.getAttribLocation(program, 'position');
+ const matLoc = gl.getUniformLocation(program, 'matrix');
+ const colorLoc = gl.getUniformLocation(program, 'color');
+
+ const buf = gl.createBuffer();
+ gl.bindBuffer(gl.ARRAY_BUFFER, buf);
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([
+ 0, -1,
+ 1, 1,
+ -1, 1,
+ ]), gl.STATIC_DRAW);
+
+ gl.enableVertexAttribArray(posLoc);
+ gl.vertexAttribPointer(
+ posLoc, // attribute location
+ 2, // 2 value per vertex
+ gl.FLOAT, // 32bit floating point values
+ false, // don't normalize
+ 0, // stride (0 = base on type and size)
+ 0, // offset into buffer
+ );
+
+ let xrViewport;
+ if (session.mode == 'inline') {
+ xrViewport = { x: 0, y: 0, width: webglCanvas.width, height: webglCanvas.height };
+ } else {
+ xrViewport = { x: 0, y: 0, width: webglLayer.framebufferWidth, height: webglLayer.framebufferHeight };
+ }
+
+ gl.viewport(xrViewport.x, xrViewport.y, xrViewport.width, xrViewport.height);
+ gl.scissor(xrViewport.x, xrViewport.y, xrViewport.width, xrViewport.height);
+
+ // clear the stencil to 0 (the default)
+ gl.stencilMask(0xFF);
+ gl.clearStencil(0x0);
+ gl.disable( gl.SCISSOR_TEST );
+ gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
+
+ gl.useProgram(program);
+ let m4 = [1, 0, 0, 0,
+ 0, 1, 0, 0,
+ 0, 0, 1, 0,
+ 0, 0, 0, 1];
+
+ // turn on the stencil
+ gl.enable(gl.STENCIL_TEST);
+
+ // Drawing into a stencil, always passes, ref val 1, mask 0xFF
+ gl.stencilFunc(
+ gl.ALWAYS,
+ 1,
+ 0xFF,
+ );
+ // Set it to replace with the ref val (which is 1)
+ gl.stencilOp(
+ gl.KEEP, // stencil test fails
+ gl.KEEP, // depth test fails
+ gl.REPLACE, // both tests pass
+ );
+
+ m4[0] = 0.2; m4[5] = 0.2; // scale x and y
+ // draw a white triangle
+ gl.uniform4fv(colorLoc, [1, 1, 1, 1]); // white
+ gl.uniformMatrix4fv(matLoc, false, m4);
+ gl.colorMask(false, false, false, false);
+ gl.drawArrays(gl.TRIANGLES, 0, 3);
+
+ gl.colorMask(true, true, true, true);
+
+ // Stencil must be 0
+ gl.stencilFunc(
+ gl.EQUAL,
+ 0,
+ 0xFF,
+ );
+ // keep stencil unmodified during the draw pass
+ gl.stencilOp(
+ gl.KEEP, // stencil test fails
+ gl.KEEP, // depth test fails
+ gl.KEEP, // both tests pass
+ );
+
+ m4[0] = 0.9; m4[5] = -0.9; // scale x and y
+ // draw a large green triangle
+ gl.uniform4fv(colorLoc, [0, 1, 0, 1]); // green
+ gl.uniformMatrix4fv(matLoc, false, m4);
+ gl.drawArrays(gl.TRIANGLES, 0, 3);
+
+ gl.flush();
+ gl.finish();
+ let pixels = new Uint8Array(4);
+
+ // check that the main color is used correctly (green)
+ pixels[0] = pixels[1] = pixels[2] = pixels[3] = 30;
+ gl.readPixels(xrViewport.x + xrViewport.width / 2, xrViewport.y + xrViewport.height/4, 1, 1, gl.RGB, gl.UNSIGNED_BYTE, pixels);
+ if (pixels[0] == 0x0 && pixels[1] == 0xFF && pixels[2] == 0x0) { // green?
+ // PASSED.
+ } else if (pixels[0] == 0xFF && pixels[1] == 0xFF && pixels[2] == 0xFF) { // white?
+ reject("Failed, white detected, must be green");
+ } else {
+ reject("Failed, readPixels (1) didn't work, gl error = " + gl.getError() + ", pixel = " +pixels[0] + " " +pixels[1] + " " +pixels[2]);
+ }
+
+ // check if stencil worked, i.e. white pixels in the center
+ pixels[0] = pixels[1] = pixels[2] = pixels[3] = 20;
+ gl.readPixels(xrViewport.x + xrViewport.width / 2, xrViewport.y + xrViewport.height/2, 1, 1, gl.RGB, gl.UNSIGNED_BYTE, pixels);
+ if (pixels[0] == 0xFF && pixels[1] == 0xFF && pixels[2] == 0xFF) { // white?
+ // PASSED.
+ } else if (pixels[0] == 0x0 && pixels[1] == 0xFF && pixels[2] == 0x0) { // green?
+ reject("Failed, green detected, must be white");
+ } else {
+ reject("Failed, readPixels (2) didn't work, gl error = " + gl.getError() + ", pixel = " +pixels[0] + " " +pixels[1] + " " +pixels[2]);
+ }
+
+ // Finished.
+ resolve();
+ });
+});
+
+const gl_props = { antialias: false, alpha: false, stencil: true, depth: true };
+
+// mac has issues with readPixels from the default fbo.
+// skipping this test for Mac.
+if (navigator.platform.indexOf("Mac") == -1) {
+ xr_session_promise_test(
+ nonImmersiveTestName, testFunction, fakeDeviceInitParams, 'inline', {}, {}, gl_props, gl_props);
+}
+
+xr_session_promise_test(
+ immersiveTestName, testFunction, fakeDeviceInitParams, 'immersive-vr', {}, {}, gl_props, gl_props);
+
+</script>