diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2020-03-10 12:32:28 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-10 12:32:28 -0400 |
commit | e3c91f7c4919e96e80c5d0ef8e9acb3e4461b1c3 (patch) | |
tree | 9793eb3f27d45e2b783870d84046d49171f65f66 | |
parent | 30fafdca19fd1eeb624c661b4c90c68482a43c05 (diff) | |
parent | 6f72329513ce9aecbcfbca4984d0317585c5f578 (diff) | |
download | servo-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
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 <tspan></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 <tspan></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> |