diff options
47 files changed, 874 insertions, 149 deletions
diff --git a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini index 3b874fc1748..3a3d15b8406 100644 --- a/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-with-fetch.any.js.ini @@ -14,6 +14,9 @@ [Revoke blob URL after creating Request, will fetch] expected: FAIL + [Revoke blob URL after calling fetch, fetch should succeed] + expected: FAIL + [url-with-fetch.any.html] [Untitled] diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 53f7c6ecab5..2d4dd5edc57 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -178473,6 +178473,30 @@ {} ] ], + "css/css-writing-modes/wm-propagation-001.html": [ + [ + "css/css-writing-modes/wm-propagation-001.html", + [ + [ + "/css/css-writing-modes/wm-propagation-001-ref.html", + "==" + ] + ], + {} + ] + ], + "css/css-writing-modes/wm-propagation-002.html": [ + [ + "css/css-writing-modes/wm-propagation-002.html", + [ + [ + "/css/css-writing-modes/wm-propagation-002-ref.html", + "==" + ] + ], + {} + ] + ], "css/css-writing-modes/wm-propagation-body-006.xht": [ [ "css/css-writing-modes/wm-propagation-body-006.xht", @@ -259062,6 +259086,12 @@ "css/css-writing-modes/vertical-alignment-vrl-026-ref.xht": [ [] ], + "css/css-writing-modes/wm-propagation-001-ref.html": [ + [] + ], + "css/css-writing-modes/wm-propagation-002-ref.html": [ + [] + ], "css/css-writing-modes/wm-propagation-body-003-ref.xht": [ [] ], @@ -273582,6 +273612,9 @@ "mathml/support/feature-detection.js": [ [] ], + "mathml/support/mathml-fragments.js": [ + [] + ], "mathml/tools/axisheight.py": [ [] ], @@ -308588,6 +308621,12 @@ {} ] ], + "cookies/cookie-enabled-noncookie-frame.html": [ + [ + "cookies/cookie-enabled-noncookie-frame.html", + {} + ] + ], "cookies/http-state/attribute-tests.html": [ [ "cookies/http-state/attribute-tests.html", @@ -329144,6 +329183,12 @@ {} ] ], + "dom/nodes/remove-and-adopt-crash.html": [ + [ + "dom/nodes/remove-and-adopt-crash.html", + {} + ] + ], "dom/nodes/remove-unscopable.html": [ [ "dom/nodes/remove-unscopable.html", @@ -360783,6 +360828,12 @@ {} ] ], + "largest-contentful-paint/image-TAO.sub.html": [ + [ + "largest-contentful-paint/image-TAO.sub.html", + {} + ] + ], "largest-contentful-paint/image-src-change.html": [ [ "largest-contentful-paint/image-src-change.html", @@ -361283,6 +361334,18 @@ {} ] ], + "mathml/relations/css-styling/attribute-mapping-001.html": [ + [ + "mathml/relations/css-styling/attribute-mapping-001.html", + {} + ] + ], + "mathml/relations/css-styling/attribute-mapping-002.html": [ + [ + "mathml/relations/css-styling/attribute-mapping-002.html", + {} + ] + ], "mathml/relations/css-styling/displaystyle-1.html": [ [ "mathml/relations/css-styling/displaystyle-1.html", @@ -391357,12 +391420,62 @@ {} ] ], - "shape-detection/idlharness.any.js": [ + "shape-detection/idlharness.https.any.js": [ + [ + "shape-detection/idlharness.https.any.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "/resources/WebIDLParser.js" + ], + [ + "script", + "/resources/idlharness.js" + ], + [ + "script", + "/shape-detection/resources/shapedetection-helpers.js" + ] + ] + } + ], + [ + "shape-detection/idlharness.https.any.serviceworker.html", + { + "script_metadata": [ + [ + "global", + "window,worker" + ], + [ + "script", + "/resources/WebIDLParser.js" + ], + [ + "script", + "/resources/idlharness.js" + ], + [ + "script", + "/shape-detection/resources/shapedetection-helpers.js" + ] + ] + } + ], [ - "shape-detection/idlharness.any.html", + "shape-detection/idlharness.https.any.sharedworker.html", { "script_metadata": [ [ + "global", + "window,worker" + ], + [ "script", "/resources/WebIDLParser.js" ], @@ -391378,10 +391491,14 @@ } ], [ - "shape-detection/idlharness.any.worker.html", + "shape-detection/idlharness.https.any.worker.html", { "script_metadata": [ [ + "global", + "window,worker" + ], + [ "script", "/resources/WebIDLParser.js" ], @@ -469914,6 +470031,10 @@ "ed86aebf1837646e2808619e446d03bfe5b86000", "support" ], + "cookies/cookie-enabled-noncookie-frame.html": [ + "539d715ebd5344de4cf02b6485462b31bc167525", + "testharness" + ], "cookies/http-state/attribute-tests.html": [ "8cb820564f455ea545ce0124bb477a211141bc5d", "testharness" @@ -593890,6 +594011,22 @@ "35560e940b3abdad4e67f92e173798f634b00785", "reftest" ], + "css/css-writing-modes/wm-propagation-001-ref.html": [ + "2e8df84f21ef494f99f356b056396c7d6d39d940", + "support" + ], + "css/css-writing-modes/wm-propagation-001.html": [ + "d313cacf38dac06ec5be6377a7cc9055dc4e2d07", + "reftest" + ], + "css/css-writing-modes/wm-propagation-002-ref.html": [ + "cd692dbffdf397bf362cd17602131a506ae6f75a", + "support" + ], + "css/css-writing-modes/wm-propagation-002.html": [ + "42f5b1b3fdc903d9f6812bcab81866e6029eee69", + "reftest" + ], "css/css-writing-modes/wm-propagation-body-003-ref.xht": [ "1f83fdaea6ef98786ce7c9769dcb4cd8dd4750a5", "support" @@ -610746,6 +610883,10 @@ "7eb1baf15f05f95545a563fe216eac0655c38a74", "support" ], + "dom/nodes/remove-and-adopt-crash.html": [ + "d37015ec9f923bfc74319631723defa0b222654d", + "testharness" + ], "dom/nodes/remove-unscopable.html": [ "0238b0fa97a40dd9e5058d4153d1483553552033", "testharness" @@ -611731,7 +611872,7 @@ "testharness" ], "element-timing/image-TAO.sub.html": [ - "032ae6b12198b76107ab3dfcc2ab3b7f92b13c00", + "0906b361394ae74cef3f8f2720844a7365ea5926", "testharness" ], "element-timing/image-carousel.html": [ @@ -611827,7 +611968,7 @@ "testharness" ], "element-timing/resources/TAOImage.py": [ - "1e0afb3827898d4aad7d29ce5649ac00948ff492", + "6969166c67ce367b5c35626d5695d543f60bb20f", "support" ], "element-timing/resources/circle.svg": [ @@ -638915,7 +639056,7 @@ "support" ], "interfaces/shape-detection-api.idl": [ - "72fce2001cad5a465440ef996150e38ddee609cf", + "83b7f893552e8f290f677e63547b2c133abf1404", "support" ], "interfaces/speech-api.idl": [ @@ -639515,11 +639656,11 @@ "testharness" ], "largest-contentful-paint/contracted-image.html": [ - "7dc9e7a899d4d81074e842396b494a733668e278", + "e099a5e42f6d3fd7982a7e298c53b860258f8c70", "testharness" ], "largest-contentful-paint/cross-origin-image.sub.html": [ - "88775b861a6b98b1af0fb5163222a1025a6df02e", + "7669d4647802f54f4d04b7b7a6b0a9ccc19b9f11", "testharness" ], "largest-contentful-paint/element-only-when-fully-active.html": [ @@ -639527,19 +639668,23 @@ "testharness" ], "largest-contentful-paint/expanded-image.html": [ - "766b61d013da2cefddb9e35398648d4fa2a2bded", + "9f64189eda60bc74b41d2526e577dcd0e0cf88d2", "testharness" ], "largest-contentful-paint/idlharness.html": [ "273fef80ce2d855075781512a9a8ab0a736af420", "testharness" ], + "largest-contentful-paint/image-TAO.sub.html": [ + "9409fd8fc05c338dc74a3c7bf8fe94d356679633", + "testharness" + ], "largest-contentful-paint/image-src-change.html": [ - "3e083625bdc1812a2c344b8eefaaa10d3b31e623", + "84a49f7ea2220c43c083f91057763ae161035532", "testharness" ], "largest-contentful-paint/loadTime-after-appendChild.html": [ - "fb0eddb220ec660d529a43b112c576bf146a87e8", + "43ec9f6085d605098faeddce311b5ccbc626b073", "testharness" ], "largest-contentful-paint/observe-after-untrusted-scroll.html": [ @@ -639547,15 +639692,15 @@ "testharness" ], "largest-contentful-paint/observe-image.html": [ - "16b3502eb340cbce179bf440c245cafafe4beea4", + "a9556ebaa60d04c154c8043fe7c48fbd7ec38700", "testharness" ], "largest-contentful-paint/observe-text.html": [ - "2cf1344f2557d5bddd22eaf4ae4fed99d89267a1", + "a2a376fde335cb2b9e05c8923998bfc15c2695f1", "testharness" ], "largest-contentful-paint/repeated-image.html": [ - "94406b20d62b417a690ce6a96d909bb29c791081", + "d25d4735c9747cb27bffdd640e1127f9fb9c075c", "testharness" ], "largest-contentful-paint/resources/iframe-stores-entry.html": [ @@ -640206,6 +640351,14 @@ "3eaf9c8fff483232eb6794b603f270bb86c47d3d", "testharness" ], + "mathml/relations/css-styling/attribute-mapping-001.html": [ + "347b571b1d681640cabec6c0ce7e940e523fa66b", + "testharness" + ], + "mathml/relations/css-styling/attribute-mapping-002.html": [ + "1a8b7ca16d10ef191276f3dcbbe209eda14111f0", + "testharness" + ], "mathml/relations/css-styling/color-001-ref.html": [ "0efca480eec5a3da684fe79a429982b139b202e4", "support" @@ -640423,7 +640576,7 @@ "reftest" ], "mathml/relations/css-styling/padding-border-margin/border-001.html": [ - "38922118edd8f22596f388aceab7af63192577b0", + "8efb6a5ab0e6759fccbd9775da700d5065a3fdd7", "testharness" ], "mathml/relations/css-styling/padding-border-margin/helper.js": [ @@ -640594,6 +640747,10 @@ "50ca926d25ea810177068a5f5de29f39749db7e6", "support" ], + "mathml/support/mathml-fragments.js": [ + "5de537ca42af4a4763c5acf9307d2017214680db", + "support" + ], "mathml/tools/axisheight.py": [ "43827e7031665bdd57ee54e208ea0f875a9a60ec", "support" @@ -641347,7 +641504,7 @@ "testharness" ], "mediacapture-image/ImageCapture-MediaTrackSupportedConstraints.https.html": [ - "9ec5261b9dc48ea143c60946d72233a9eb5d7261", + "fddeb60d0c24d9ceebd8f9df324467ae1cc32550", "testharness" ], "mediacapture-image/ImageCapture-creation.https.html": [ @@ -641371,7 +641528,7 @@ "testharness" ], "mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.html": [ - "4900336549f4a92f449233d24abf97f84f055102", + "9d985de66de4a476ddb68802603b212efd7c40b6", "testharness" ], "mediacapture-image/MediaStreamTrack-applyConstraints-reject.html": [ @@ -641379,7 +641536,7 @@ "testharness" ], "mediacapture-image/MediaStreamTrack-applyConstraints.html": [ - "c87f954c682cb6869040ebc67f6245902cec1267", + "da3de3ec0f90cbad2563e41c9aa228c1297945e6", "testharness" ], "mediacapture-image/MediaStreamTrack-getCapabilities-fast.html": [ @@ -641387,11 +641544,11 @@ "testharness" ], "mediacapture-image/MediaStreamTrack-getCapabilities.html": [ - "9e34f2389cc4e446767df2aa4991cb43b8c95c7a", + "e7b196f510a0baee4096f58f0fce7d868a977d88", "testharness" ], "mediacapture-image/MediaStreamTrack-getConstraints-fast.html": [ - "16f869cf119faa7eaa043ff6d65fa31b2998315b", + "3b1e2e0f2ca51e74222b36cb1d98a32a67e2a20b", "testharness" ], "mediacapture-image/MediaStreamTrack-getSettings-fast.html": [ @@ -641399,7 +641556,7 @@ "testharness" ], "mediacapture-image/MediaStreamTrack-getSettings.html": [ - "8535f298bfab2ebca9dd3b37a0cc4f8538623203", + "a1a864c2445d844c5d6fd88dd48e1f6839ae9528", "testharness" ], "mediacapture-image/detached-HTMLCanvasElement.html": [ @@ -652683,7 +652840,7 @@ "testharness" ], "pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html": [ - "b2251d660e7176627204e4d48dc591033501554e", + "5ad3de354574d4bde5668dfc3dec479fe252a385", "testharness" ], "pointerevents/pointerlock/pointerevent_pointermove_on_chorded_mouse_button_when_locked.html": [ @@ -663191,7 +663348,7 @@ "support" ], "resources/chromium/image_capture.mojom.js": [ - "50428ffcb80c736c1f63f8a91e0c65ff472ef463", + "f145d7a3402543a18229629da0133dea81dd3755", "support" ], "resources/chromium/mock-barcodedetection.js": [ @@ -663211,7 +663368,7 @@ "support" ], "resources/chromium/mock-imagecapture.js": [ - "329cbc3a761dc5720b7a67ed09ef68aec6a8bc3d", + "eec414bd032a2dd01f27e18de64df0bde4e4a459", "support" ], "resources/chromium/mojo_bindings.js": [ @@ -668038,12 +668195,12 @@ "52540271d27ecf76cfe68ca0502630eac8c5d0a3", "testharness" ], - "shape-detection/idlharness.any.js": [ - "dab7de99d2d1f15ed72f562a0fb7fbfb3367eeac", + "shape-detection/idlharness.https.any.js": [ + "8886e356baa94b4a0a3b320efd3d14405efb4189", "testharness" ], "shape-detection/resources/shapedetection-helpers.js": [ - "91d36658aab0bf9435cfc9d283be45ef1292e2ed", + "de1e681de9fb8520d97381b3e6a844bcfc84b1f2", "support" ], "shape-detection/shapedetection-cross-origin.sub.html": [ @@ -690183,7 +690340,7 @@ "support" ], "webxr/resources/webxr_util.js": [ - "022aca8c93e232f00c2d76de5580231af59ff487", + "f8c7f0f81c7014dad1f5292836f3ee208a5b6830", "support" ], "webxr/webGLCanvasContext_create_xrcompatible.https.html": [ diff --git a/tests/wpt/metadata/dom/nodes/remove-and-adopt-crash.html.ini b/tests/wpt/metadata/dom/nodes/remove-and-adopt-crash.html.ini new file mode 100644 index 00000000000..7e40b92dee4 --- /dev/null +++ b/tests/wpt/metadata/dom/nodes/remove-and-adopt-crash.html.ini @@ -0,0 +1,4 @@ +[remove-and-adopt-crash.html] + [Check that removing a node and then adopting its parent into a different window/document doesn't crash.] + 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 8c3f8f31612..1b4ae9a29da 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -312,9 +312,6 @@ [<iframe>: separate response Content-Type: */* text/html] expected: FAIL - [<iframe>: combined response Content-Type: text/html */*] - expected: FAIL - [<iframe>: combined response Content-Type: text/html;" text/plain] expected: FAIL @@ -324,12 +321,15 @@ [<iframe>: combined response Content-Type: */* text/html] expected: FAIL - [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html] + [<iframe>: separate response Content-Type: text/html */*;charset=gbk] + expected: FAIL + + [<iframe>: separate response Content-Type: text/plain */*] expected: FAIL - [<iframe>: separate response Content-Type: text/html;" text/plain] + [<iframe>: combined response Content-Type: text/html */*;charset=gbk] expected: FAIL - [<iframe>: separate response Content-Type: text/html;x=" text/plain] + [<iframe>: combined response Content-Type: text/html;" \\" text/plain] 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 279734168dc..5c001592859 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -56,6 +56,6 @@ [separate text/javascript x/x] expected: FAIL - [separate text/javascript;charset=windows-1252 text/javascript] + [separate text/javascript;charset=windows-1252 error text/javascript] expected: FAIL diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini index b2cd43ef76c..536384f36e1 100644 --- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini @@ -11,9 +11,6 @@ [X-Content-Type-Options%3A%20nosniff%0C] expected: FAIL - [X-Content-Type-Options%3A%20'NosniFF'] - expected: FAIL - - [X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff] + [X-Content-Type-Options%3A%20%2Cnosniff] 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_2.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini new file mode 100644 index 00000000000..75d75b4cda2 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_2.html.ini @@ -0,0 +1,4 @@ +[traverse_the_history_2.html] + [Multiple history traversals, last would be aborted] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini index 16fa2c5cfc1..dec4c579137 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini @@ -1,4 +1,5 @@ [creating_browsing_context_test_01.html] + expected: TIMEOUT [first argument: absolute url] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini deleted file mode 100644 index a9677391662..00000000000 --- a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[DOMContentLoaded-defer.html] - [The end: DOMContentLoaded and defer scripts] - expected: FAIL - diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini index 69bd952d756..910c88d3e81 100644 --- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini +++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/opening-the-input-stream/ignore-opens-during-unload.window.js.ini @@ -1,5 +1,5 @@ [ignore-opens-during-unload.window.html] - expected: TIMEOUT + expected: CRASH [ignore-opens-during-unload] expected: FAIL diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini index a56bad443a2..66bd350083b 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini @@ -1,5 +1,4 @@ [realtimeanalyser-fft-scaling.html] - expected: TIMEOUT [X 2048-point FFT peak position is not equal to 64. Got 0.] 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 134db732f78..6da130a36a4 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 @@ -134,3 +134,9 @@ [X SNR (-195.93871551689728 dB) is not greater than or equal to 65.737. Got -195.93871551689728.] expected: FAIL + [X Stitched sine-wave buffers at sample rate 43800 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.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t9.4836157560348511e-1\t9.5236867666244507e-1\t4.0071010589599609e-3\t4.2075103446311962e-3\t3.8985999999999999e-3\n\t[31\]\t9.2646563053131104e-1\t9.3139332532882690e-1\t4.9276947975158691e-3\t5.2906700783754857e-3\t3.8985999999999999e-3\n\t[32\]\t9.0087991952896118e-1\t9.0675884485244751e-1\t5.8789253234863281e-3\t6.4834496590358351e-3\t3.8985999999999999e-3\n\t[33\]\t8.7170630693435669e-1\t8.7856203317642212e-1\t6.8557262420654297e-3\t7.8033490899654511e-3\t3.8985999999999999e-3\n\t[34\]\t8.3906102180480957e-1\t8.4691369533538818e-1\t7.8526735305786133e-3\t9.2721059699818163e-3\t3.8985999999999999e-3\n\t...and 31037 more errors.\n\tMax AbsError of 3.5199477452039719e+2 at index of 39267.\n\t[39267\]\t-3.5297753906250000e+2\t-9.8276454210281372e-1\t3.5199477452039719e+2\t3.5816796337323757e+2\t3.8985999999999999e-3\n\tMax RelError of 3.5816796337323757e+2 at index of 39267.\n\t[39267\]\t-3.5297753906250000e+2\t-9.8276454210281372e-1\t3.5199477452039719e+2\t3.5816796337323757e+2\t3.8985999999999999e-3\n] + expected: FAIL + + [X SNR (-7.533841891306955 dB) is not greater than or equal to 65.737. Got -7.533841891306955.] + expected: FAIL + diff --git a/tests/wpt/web-platform-tests/cookies/cookie-enabled-noncookie-frame.html b/tests/wpt/web-platform-tests/cookies/cookie-enabled-noncookie-frame.html new file mode 100644 index 00000000000..539d715ebd5 --- /dev/null +++ b/tests/wpt/web-platform-tests/cookies/cookie-enabled-noncookie-frame.html @@ -0,0 +1,31 @@ +<!DOCTYPE html> +<head> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> +</head> +<body> + <script> + var t = async_test("navigator.cookieEnabled behavior on frames without cookie access"); + window.onmessage = function(ev) { + // Surprisingly, the legacy behavior here is to return true; this actually + // does match the spec definition since false is supposed to be returned + // when a document.cookie write is ignored --- and here it would throw + // a security exception, not be ignored. + assert_equals(ev.data, true); + t.done(); + } + + t.step(function() { + var iframe = document.createElement("iframe"); + iframe.sandbox = "allow-scripts"; + iframe.srcdoc = "<scr" + "ipt>" + + "window.onmessage = function() {" + + " parent.postMessage(navigator.cookieEnabled, '*'); " + + "}</scr" + "ipt>"; + iframe.onload = function() { + iframe.contentWindow.postMessage({}, "*"); + } + document.body.appendChild(iframe); + }); + </script> +</body> diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-001-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-001-ref.html new file mode 100644 index 00000000000..2e8df84f21e --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-001-ref.html @@ -0,0 +1,22 @@ +<html> + <meta chartset=utf-8> + <title>Test Reference</title> + <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net"> +<style> +html { + writing-mode: vertical-rl; +} +body { + writing-mode: vertical-rl; + width: 0; height: 0; +} +html::before { + content: "This text must be vertical."; +} +html::after { + content: "This text must be horizontal."; + display: block; + writing-mode: horizontal-tb; +} +</style> +<body></body> diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-001.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-001.html new file mode 100644 index 00000000000..d313cacf38d --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-001.html @@ -0,0 +1,30 @@ +<html> + <meta chartset=utf-8> + <title>CSS-Writing Modes Test: propagation of the writing-mode property from body to root</title> + <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net"> + <link rel=help href="https://drafts.csswg.org/css-writing-modes-3/#principal-flow"> + <link rel="match" href="wm-propagation-001-ref.html"> + <meta name=assert content="the writing mode of the body must be propagated to the root, but the computed value must not change."> +<style> +html { + writing-mode: horizontal-tb; +} +body { + writing-mode: vertical-rl; + width: 0; height: 0; +} +html::before { + content: "This text must be vertical."; + /* This is inline content of the root, + and should therefore be vertical, + as the root's used value is vertical */ +} +html::after { + content: "This text must be horizontal."; + display: block; + /* This is a block level element, + with it's own writing mode inherited from the root, + horizontal since the root's computed value should be horizontal*/ +} +</style> +<body></body> diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-002-ref.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-002-ref.html new file mode 100644 index 00000000000..cd692dbffdf --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-002-ref.html @@ -0,0 +1,21 @@ +<html> + <meta chartset=utf-8> + <title>Test reference</title> + <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net"> +<style> +html { + direction: rtl; +} +body { + height: 0; +} +html::before { + content: "This text must be on the right"; +} +html::after { + content: "This text must be on the left"; + display: block; + direction: ltr; +} +</style> +<body></body> diff --git a/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-002.html b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-002.html new file mode 100644 index 00000000000..42f5b1b3fdc --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-writing-modes/wm-propagation-002.html @@ -0,0 +1,21 @@ +<html> + <meta chartset=utf-8> + <title>CSS-Writing Modes Test: propagation of the direction property from body to root</title> + <link rel="author" title="Florian Rivoal" href="https://florian.rivoal.net"> + <link rel=help href="https://drafts.csswg.org/css-writing-modes-3/#principal-flow"> + <link rel="match" href="wm-propagation-002-ref.html"> + <meta name=assert content="the 'direction' of the body must be propagated to the root, but the computed value must not change."> +<style> +body { + direction: rtl; + height: 0; +} +html::before { + content: "This text must be on the right"; +} +html::after { + content: "This text must be on the left"; + display: block; +} +</style> +<body></body> diff --git a/tests/wpt/web-platform-tests/dom/nodes/remove-and-adopt-crash.html b/tests/wpt/web-platform-tests/dom/nodes/remove-and-adopt-crash.html new file mode 100644 index 00000000000..d37015ec9f9 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/nodes/remove-and-adopt-crash.html @@ -0,0 +1,18 @@ +<!doctype html> +<title>Test for a Chrome crash when adopting a node into another document</title> +<link rel="help" href="https://crbug.com/981384"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="d1"></div> +<div id="d2"></div> +<script> + test(() => { + d1.appendChild(document.createElement("iframe")); + d2.remove(); + const adopted_div = d1; + const popup = window.open(); + assert_equals(adopted_div.ownerDocument, document); + popup.document.body.appendChild(document.body); + assert_equals(adopted_div.ownerDocument, popup.document); + }, "Check that removing a node and then adopting its parent into a different window/document doesn't crash."); +</script> diff --git a/tests/wpt/web-platform-tests/element-timing/image-TAO.sub.html b/tests/wpt/web-platform-tests/element-timing/image-TAO.sub.html index 032ae6b1219..0906b361394 100644 --- a/tests/wpt/web-platform-tests/element-timing/image-TAO.sub.html +++ b/tests/wpt/web-platform-tests/element-timing/image-TAO.sub.html @@ -45,7 +45,7 @@ else { assert_unreached('Should be in one of valid_tao OR invalid_tao'); } - checkNaturalSize(entry, 20, 20); + checkNaturalSize(entry, 100, 100); if (img_count == total_images) t.done(); }); diff --git a/tests/wpt/web-platform-tests/element-timing/resources/TAOImage.py b/tests/wpt/web-platform-tests/element-timing/resources/TAOImage.py index 1e0afb38278..6969166c67c 100644 --- a/tests/wpt/web-platform-tests/element-timing/resources/TAOImage.py +++ b/tests/wpt/web-platform-tests/element-timing/resources/TAOImage.py @@ -41,5 +41,5 @@ def main(request, response): else: pass response.headers.set("Cache-Control", "no-cache, must-revalidate"); - image_path = os.path.join(os.path.dirname(__file__), "square20.png"); + image_path = os.path.join(os.path.dirname(__file__), "square100.png"); response.content = open(image_path, mode='rb').read(); diff --git a/tests/wpt/web-platform-tests/interfaces/shape-detection-api.idl b/tests/wpt/web-platform-tests/interfaces/shape-detection-api.idl index 72fce2001ca..83b7f893552 100644 --- a/tests/wpt/web-platform-tests/interfaces/shape-detection-api.idl +++ b/tests/wpt/web-platform-tests/interfaces/shape-detection-api.idl @@ -4,6 +4,7 @@ // Source: Accelerated Shape Detection in Images (https://wicg.github.io/shape-detection-api/) [Exposed=(Window,Worker), + SecureContext, Constructor(optional FaceDetectorOptions faceDetectorOptions)] interface FaceDetector { Promise<sequence<DetectedFace>> detect(ImageBitmapSource image); @@ -14,7 +15,9 @@ dictionary FaceDetectorOptions { boolean fastMode; }; -[Serializable] +[Exposed=(Window,Worker), + SecureContext, + Serializable] interface DetectedFace { [SameObject] readonly attribute DOMRectReadOnly boundingBox; [SameObject] readonly attribute FrozenArray<Landmark>? landmarks; @@ -32,6 +35,7 @@ enum LandmarkType { }; [Exposed=(Window,Worker), + SecureContext, Constructor(optional BarcodeDetectorOptions barcodeDetectorOptions)] interface BarcodeDetector { static Promise<sequence<BarcodeFormat>> getSupportedFormats(); @@ -43,7 +47,9 @@ dictionary BarcodeDetectorOptions { sequence<BarcodeFormat> formats; }; -[Serializable] +[Exposed=(Window,Worker), + SecureContext, + Serializable] interface DetectedBarcode { [SameObject] readonly attribute DOMRectReadOnly boundingBox; [SameObject] readonly attribute DOMString rawValue; diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/contracted-image.html b/tests/wpt/web-platform-tests/largest-contentful-paint/contracted-image.html index 7dc9e7a899d..e099a5e42f6 100644 --- a/tests/wpt/web-platform-tests/largest-contentful-paint/contracted-image.html +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/contracted-image.html @@ -25,7 +25,7 @@ 'The rendering timestamp should occur after script starts running.'); assert_greater_than_equal(performance.now(), entry.renderTime, 'The rendering timestamp should occur before the entry is dispatched to the observer.'); - assert_equals(entry.startTime, 0); + assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime'); assert_equals(entry.duration, 0); // black-rectangle.png is 100 x 50. It occupies 50 x 50 so size will be bounded by the displayed size. assert_equals(entry.size, 2500); diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/cross-origin-image.sub.html b/tests/wpt/web-platform-tests/largest-contentful-paint/cross-origin-image.sub.html index 88775b861a6..7669d464780 100644 --- a/tests/wpt/web-platform-tests/largest-contentful-paint/cross-origin-image.sub.html +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/cross-origin-image.sub.html @@ -16,7 +16,7 @@ const entry = entryList.getEntries()[0]; assert_equals(entry.entryType, 'largest-contentful-paint'); assert_equals(entry.renderTime, 0, 'The renderTime value should be 0 for a cross origin image.'); - assert_equals(entry.startTime, 0); + assert_equals(entry.startTime, entry.loadTime, 'startTime should equal loadTime'); assert_equals(entry.duration, 0); // blue.png is 133 x 106. assert_equals(entry.size, 14098); diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/expanded-image.html b/tests/wpt/web-platform-tests/largest-contentful-paint/expanded-image.html index 766b61d013d..9f64189eda6 100644 --- a/tests/wpt/web-platform-tests/largest-contentful-paint/expanded-image.html +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/expanded-image.html @@ -25,7 +25,7 @@ 'The rendering timestamp should occur after script starts running.'); assert_greater_than_equal(performance.now(), entry.renderTime, 'The rendering timestamp should occur before the entry is dispatched to the observer.'); - assert_equals(entry.startTime, 0); + assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime'); assert_equals(entry.duration, 0); // black-rectangle.png is 100 x 50. It occupies 300 x 300 so size will be bounded by the intrinsic size. assert_equals(entry.size, 5000); diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/image-TAO.sub.html b/tests/wpt/web-platform-tests/largest-contentful-paint/image-TAO.sub.html new file mode 100644 index 00000000000..9409fd8fc05 --- /dev/null +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/image-TAO.sub.html @@ -0,0 +1,60 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Largest Contentful Paint: observe cross origin images with various Timing-Allow-Origin headers</title> +<body> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/element-timing-helpers.js"></script> +<div id='my_div'></div> +<script> + async_test(t => { + if (!window.PerformanceElementTiming) { + assert_unreached("PerformanceElementTiming is not implemented"); + } + const remote_img = 'http://{{domains[www]}}:{{ports[http][1]}}/element-timing/resources/TAOImage.py?' + + 'origin=' + window.location.origin +'&tao='; + const valid_tao = ['wildcard', 'origin', 'multi', 'multi_wildcard', 'match_origin', 'match_wildcard']; + const invalid_tao = ['null', 'space', 'uppercase']; + const div = document.getElementById('my_div'); + let img_size = 20; + function addImage(tao) { + const img = document.createElement('img'); + img.src = remote_img + tao; + img.id = tao; + img.height = img_size; + img.width = img_size; + // Set increasing size so that largest-contentful-paint captures all of them. + img_size += 1; + div.appendChild(img); + } + let img_count = 0; + const total_images = valid_tao.length + invalid_tao.length; + new PerformanceObserver( + t.step_func(entryList => { + assert_equals(entryList.getEntries().length, 1); + const entry = entryList.getEntries()[0]; + assert_greater_than(entry.loadTime, 0); + const tao = entry.id; + if (valid_tao.includes(tao)) + assert_greater_than(entry.renderTime, 0, 'Image with valid TAO should have renderTime'); + else if (invalid_tao.includes(tao)) + assert_equals(entry.renderTime, 0, 'Image with invalid TAO should not have renderTime'); + else + assert_unreached('Should be in one of valid_tao OR invalid_tao'); + img_count++; + // Process valid TAO images first. + if (img_count < valid_tao.length) + addImage(valid_tao[img_count]); + // Then add invalid TAO images. + else if (img_count < total_images) + addImage(invalid_tao[img_count - valid_tao.length]); + // Once we've seen all the images, end the test. + else + t.done(); + }) + ).observe({type: 'largest-contentful-paint'}); + // Add first image, the rest will be added on each observer callback. + addImage(valid_tao[0]); + }, 'Cross-origin elements with valid TAO have correct renderTime, with invalid TAO have renderTime set to 0.'); +</script> +</body> diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/image-src-change.html b/tests/wpt/web-platform-tests/largest-contentful-paint/image-src-change.html index 3e083625bdc..84a49f7ea22 100644 --- a/tests/wpt/web-platform-tests/largest-contentful-paint/image-src-change.html +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/image-src-change.html @@ -21,7 +21,7 @@ 'The rendering timestamp should occur after script starts running.'); assert_greater_than_equal(performance.now(), entry.renderTime, 'The rendering timestamp should occur before the entry is dispatched to the observer.'); - assert_equals(entry.startTime, 0); + assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime'); assert_equals(entry.duration, 0); if (firstCallback) { // blue.png is 133 x 106. diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/loadTime-after-appendChild.html b/tests/wpt/web-platform-tests/largest-contentful-paint/loadTime-after-appendChild.html index fb0eddb220e..43ec9f6085d 100644 --- a/tests/wpt/web-platform-tests/largest-contentful-paint/loadTime-after-appendChild.html +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/loadTime-after-appendChild.html @@ -15,7 +15,7 @@ assert_equals(entryList.getEntries().length, 1); const entry = entryList.getEntries()[0]; assert_equals(entry.entryType, 'largest-contentful-paint'); - assert_equals(entry.startTime, 0); + assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime'); assert_equals(entry.duration, 0); assert_equals(entry.url, window.location.origin + '/images/black-rectangle.png'); assert_greater_than(entry.renderTime, entry.loadTime, diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/observe-image.html b/tests/wpt/web-platform-tests/largest-contentful-paint/observe-image.html index 16b3502eb34..a9556ebaa60 100644 --- a/tests/wpt/web-platform-tests/largest-contentful-paint/observe-image.html +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/observe-image.html @@ -19,7 +19,7 @@ 'The rendering timestamp should occur after script starts running.'); assert_greater_than_equal(performance.now(), entry.renderTime, 'The rendering timestamp should occur before the entry is dispatched to the observer.'); - assert_equals(entry.startTime, 0); + assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime'); assert_equals(entry.duration, 0); // blue.png is 133 x 106. assert_equals(entry.size, 14098); diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/observe-text.html b/tests/wpt/web-platform-tests/largest-contentful-paint/observe-text.html index 2cf1344f255..a2a376fde33 100644 --- a/tests/wpt/web-platform-tests/largest-contentful-paint/observe-text.html +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/observe-text.html @@ -22,7 +22,7 @@ p { assert_equals(entry.entryType, 'largest-contentful-paint'); assert_greater_than_equal(entry.renderTime, beforeRender); assert_greater_than_equal(performance.now(), entry.renderTime); - assert_equals(entry.startTime, 0); + assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime'); assert_equals(entry.duration, 0); // Some lower bound: height of at least 12 px. // Width of at least 100 px. diff --git a/tests/wpt/web-platform-tests/largest-contentful-paint/repeated-image.html b/tests/wpt/web-platform-tests/largest-contentful-paint/repeated-image.html index 94406b20d62..d25d4735c97 100644 --- a/tests/wpt/web-platform-tests/largest-contentful-paint/repeated-image.html +++ b/tests/wpt/web-platform-tests/largest-contentful-paint/repeated-image.html @@ -24,7 +24,7 @@ assert_equals(entryList.getEntries().length, 1); const entry = entryList.getEntries()[0]; assert_equals(entry.entryType, 'largest-contentful-paint'); - assert_equals(entry.startTime, 0); + assert_equals(entry.startTime, entry.renderTime, 'startTime should equal renderTime'); assert_equals(entry.duration, 0); assert_equals(entry.url, path); assert_less_than(entry.renderTime, performance.now(), diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html new file mode 100644 index 00000000000..347b571b1d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-001.html @@ -0,0 +1,65 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Attribute mapping</title> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#legacy-mathml-style-attributes"> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#attributes-common-to-html-and-mathml-elements"> +<meta name="assert" content="Verify that dir, mathcolor, mathbackground and mathsize are mapped to CSS"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/mathml/support/mathml-fragments.js"></script> +<style> + #container { + color: blue; + font-size: 50px; + } +</style> +<script> + setup({ explicit_done: true }); + window.addEventListener("load", runTests); + function runTests() { + var container = document.getElementById("container"); + for (tag in MathMLFragments) { + container.insertAdjacentHTML("beforeend", `<math>${MathMLFragments[tag]}</math>`); + } + Array.from(document.getElementsByClassName("element")).forEach(element => { + var tag = element.tagName; + var style = window.getComputedStyle(element); + + test(function() { + assert_equals(style.getPropertyValue("direction"), "ltr", "no attribute"); + element.setAttribute("dir", "rtl"); + assert_equals(style.getPropertyValue("direction"), "rtl", "attribute specified"); + }, `dir on the ${tag} element is mapped to CSS direction`) + + test(function() { + assert_equals(style.getPropertyValue("color"), "rgb(0, 0, 255)", "no attribute"); + element.setAttribute("mathcolor", "black"); + assert_equals(style.getPropertyValue("color"), "rgb(0, 0, 0)", "attribute specified"); + }, `mathcolor on the ${tag} element is mapped to CSS color`); + + test(function() { + assert_equals(style.getPropertyValue("background-color"), "rgba(0, 0, 0, 0)", "no attribute"); + element.setAttribute("mathbackground", "lightblue"); + assert_equals(style.getPropertyValue("background-color"), "rgb(173, 216, 230)", "attribute specified"); + }, `mathbackground on the ${tag} element is mapped to CSS background-color`); + + test(function() { + assert_equals(style.getPropertyValue("font-size"), "50px", "no attribute"); + element.setAttribute("mathsize", "20px"); + assert_equals(style.getPropertyValue("font-size"), "20px", "attribute specified"); + }, `mathsize on the ${tag} element is mapped to CSS font-size`); + }); + + done(); + } +</script> +</head> +<body> + <div id="log"></div> + <div id="container"> + <math class="element"></math> + </div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002.html new file mode 100644 index 00000000000..1a8b7ca16d1 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/attribute-mapping-002.html @@ -0,0 +1,53 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Attribute mapping</title> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-mathvariant-attribute"> +<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#the-displaystyle-and-scriptlevel-attributes"> +<meta name="assert" content="Verify that mathvariant, scriptlevel, displaystyle are mapped to CSS"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/mathml/support/mathml-fragments.js"></script> +<script> + setup({ explicit_done: true }); + window.addEventListener("load", runTests); + function runTests() { + var container = document.getElementById("container"); + for (tag in MathMLFragments) { + container.insertAdjacentHTML("beforeend", `<math>${MathMLFragments[tag]}</math>`); + } + Array.from(document.getElementsByClassName("element")).forEach(element => { + var tag = element.tagName; + var style = window.getComputedStyle(element); + + test(function() { + assert_equals(style.getPropertyValue("text-transform"), "none", "no attribute"); + element.setAttribute("mathvariant", "fraktur"); + assert_equals(style.getPropertyValue("text-transform"), "math-fraktur", "attribute specified"); + }, `mathvariant on the ${tag} element is mapped to CSS text-transform`) + + test(function() { + assert_equals(style.getPropertyValue("math-script-level"), "0", "no attribute"); + element.setAttribute("scriptlevel", "10"); + assert_equals(style.getPropertyValue("math-script-level"), "10", "attribute specified"); + }, `scriptlevel on the ${tag} element is mapped to CSS math-script-level`); + + test(function() { + assert_equals(style.getPropertyValue("math-style"), "inline", "no attribute"); + element.setAttribute("displaystyle", "true"); + assert_equals(style.getPropertyValue("math-style"), "display", "attribute specified"); + }, `displaystyle on the ${tag} element is mapped to CSS math-style`); + }); + + done(); + } +</script> +</head> +<body> + <div id="log"></div> + <div id="container"> + <math class="element"></math> + </div> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-001.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-001.html index 38922118edd..8efb6a5ab0e 100644 --- a/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-001.html +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/padding-border-margin/border-001.html @@ -57,10 +57,10 @@ <math> <mrow> <mrow id="mrow-border" - style="border-left: 20px; - border-right: 30px; - border-top: 40px; - border-bottom: 50px;"> + style="border-left: 20px solid transparent; + border-right: 30px solid transparent; + border-top: 40px solid transparent; + border-bottom: 50px solid transparent;"> <mspace width="50px" height="50px"></mspace> </mrow> </mrow> @@ -70,7 +70,7 @@ <math> <mrow> <mrow id="mrow-border-shorthand" - style="border: 20px;"> + style="border: 20px solid transparent;"> <mspace width="50px" height="50px"></mspace> </mrow> </mrow> @@ -80,10 +80,10 @@ <math> <mrow> <mrow id="mrow-border-logical" - style="border-inline-start: 20px; - border-inline-end: 30px; - border-block-start: 40px; - border-block-end: 50px;"> + style="border-inline-start: 20px solid transparent; + border-inline-end: 30px solid transparent; + border-block-start: 40px solid transparent; + border-block-end: 50px solid transparent;"> <mspace width="50px" height="50px"></mspace> </mrow> </mrow> @@ -93,8 +93,8 @@ <math> <mrow> <mrow id="mrow-border-logical-shorthand" - style="border-inline: 20px; - border-block: 30px;"> + style="border-inline: 20px solid transparent; + border-block: 30px solid transparent;"> <mspace width="50px" height="50px"></mspace> </mrow> </mrow> diff --git a/tests/wpt/web-platform-tests/mathml/support/mathml-fragments.js b/tests/wpt/web-platform-tests/mathml/support/mathml-fragments.js new file mode 100644 index 00000000000..5de537ca42a --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/support/mathml-fragments.js @@ -0,0 +1,117 @@ +var MathMLFragments = { + "annotation": "\ +<semantics>\ + <mrow></mrow>\ + <annotation class='element text-container'></annotation>\ +</semantics>", + "annotation-xml": "\ +<semantics>\ + <mrow></mrow>\ + <annotation-xml class='element text-container foreign-container'></annotation-xml>\ +</semantics>", + "maction": "\ +<maction class='element' actiontype='statusline'>\ + <mrow class='mathml-container'></mrow>\ + <mtext class='text-container'></mtext>\ +</maction>", + "menclose": "<menclose class='element mathml-container'></menclose>", + "merror": "<merror class='element mathml-container'></merror>", + "mfrac": "\ +<mfrac class='element'>\ + <mrow class='mathml-container'></mrow>\ + <mrow class='mathml-container'></mrow>\ +</mfrac>", + "mi": "<mi class='element text-container foreign-container'></mi>", + "mmultiscripts": "\ +<mmultiscripts class='element'>\ + <mrow class='mathml-container'></mrow>\ + <mrow class='mathml-container'></mrow>\ + <mrow class='mathml-container'></mrow>\ +</mmultiscripts>", + "mn": "<mn class='element text-container foreign-container'></mn>", + "mo": "<mo class='element text-container foreign-container'></mo>", + "mover": "\ +<mover class='element'>\ + <mrow class='mathml-container'></mrow>\ + <mrow class='mathml-container'></mrow>\ +</mover>", + "mpadded": "<mpadded class='element mathml-container'></mpadded>", + "mphantom": "<mphantom class='element mathml-container'></mphantom>", + "mprescripts": "\ +<mmultiscripts>\ + <mrow class='mathml-container'></mrow>\ + <mprescripts class='element'/>\ + <mrow class='mathml-container'></mrow>\ + <mrow class='mathml-container'></mrow>\ +</mmultiscripts>", + "mroot": "\ +<mroot class='element'>\ + <mrow class='mathml-container'></mrow>\ + <mrow class='mathml-container'></mrow>\ +</mroot>", + "mrow": "<mrow class='element mathml-container'></mrow>", + "ms": "<ms class='element text-container foreign-container'></ms>", + "mspace": "<mspace class='element'></mspace>", + "msqrt": "<msqrt class='element mathml-container'></msqrt>", + "mstyle": "<mstyle class='element mathml-container'></mstyle>", + "msub": "\ +<msub class='element mathml-container'>\ + <mrow class='mathml-container'></mrow>\ + <mrow class='mathml-container'></mrow>\ +</msub>", + "msubsup": "\ +<msubsup class='element mathml-container'>\ + <mrow class='mathml-container'></mrow>\ + <mrow class='mathml-container'></mrow>\ + <mrow class='mathml-container'></mrow>\ +</msubsup>", + "msup": "\ +<msup class='element mathml-container'>\ + <mrow class='mathml-container'></mrow>\ + <mrow class='mathml-container'></mrow>\ +</msup>", + "mtable": "\ +<mtable class='element'>\ + <mtr>\ + <mtd class='mathml-container'>\ + </mtd>\ + </mtr>\ +</mtable>", + "mtd": "\ +<mtable>\ + <mtr>\ + <mtd class='element mathml-container'>\ + </mtd>\ + </mtr>\ +</mtable>", + "mtext": "<mtext class='element text-container foreign-container'></mtext>", + "mtr": "\ +<mtable>\ + <mtr class='element'>\ + <mtd class='mathml-container'>\ + </mtd>\ + </mtr>\ +</mtable>", + "munder": "\ +<munder class='element'>\ + <mrow class='mathml-container'></mrow>\ + <mrow class='mathml-container'></mrow>\ +</munder>", + "munderover": "\ +<munderover class='element'>\ + <mrow class='mathml-container'></mrow>\ + <mrow class='mathml-container'></mrow>\ + <mrow class='mathml-container'></mrow>\ +</munderover>", + "none": "\ +<mmultiscripts>\ + <mrow class='mathml-container'></mrow>\ + <none class='element'/>\ + <mrow class='mathml-container'></mrow>\ +</mmultiscripts>", + "semantics": "\ +<semantics class='element>\ + <mrow class='mathml-container'></mrow>\ + <annotation class='text-container'></annotation>\ +</semantics>" +}; diff --git a/tests/wpt/web-platform-tests/mediacapture-image/ImageCapture-MediaTrackSupportedConstraints.https.html b/tests/wpt/web-platform-tests/mediacapture-image/ImageCapture-MediaTrackSupportedConstraints.https.html index 9ec5261b9dc..fddeb60d0c2 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/ImageCapture-MediaTrackSupportedConstraints.https.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/ImageCapture-MediaTrackSupportedConstraints.https.html @@ -20,6 +20,8 @@ test(function() { assert_true(supported_constraints.saturation); assert_true(supported_constraints.sharpness); assert_true(supported_constraints.focusDistance); + assert_true(supported_constraints.pan); + assert_true(supported_constraints.tilt); assert_true(supported_constraints.zoom); assert_true(supported_constraints.torch); }, 'Image Capture supported constraints'); diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.html index 4900336549f..9d985de66de 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints-getSettings.html @@ -35,6 +35,8 @@ image_capture_test(async t => { sharpness : 6, focusDistance : 7, + pan : 8, + tilt : 9, zoom : 3.141592, torch : true @@ -89,6 +91,9 @@ image_capture_test(async t => { assert_equals(constraints.advanced[0].focusDistance, settings.focusDistance, 'focusDistance'); + + assert_equals(constraints.advanced[0].pan, settings.pan, 'pan'); + assert_equals(constraints.advanced[0].tilt, settings.tilt, 'tilt'); assert_equals(constraints.advanced[0].zoom, settings.zoom, 'zoom'); assert_equals(constraints.advanced[0].torch, settings.torch, 'torch'); diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints.html index c87f954c682..da3de3ec0f9 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-applyConstraints.html @@ -36,6 +36,8 @@ image_capture_test(async (t, imageCaptureTest) => { sharpness : 6, focusDistance : 7, + pan : 8, + tilt : 9, zoom : 3.141592, torch : true @@ -109,6 +111,8 @@ image_capture_test(async (t, imageCaptureTest) => { assert_equals(constraintsDict.focusDistance, theMock.options().focusDistance ,'focusDistance'); + assert_equals(constraintsDict.pan, theMock.options().pan, 'pan'); + assert_equals(constraintsDict.tilt, theMock.options().tilt, 'tilt'); assert_equals(constraintsDict.torch, theMock.options().torch, 'torch'); diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getCapabilities.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getCapabilities.html index 9e34f2389cc..e7b196f510a 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getCapabilities.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getCapabilities.html @@ -141,6 +141,16 @@ image_capture_test(async (t, imageCaptureTest) => { assert_equals(capabilities.focusDistance.step, mockCapabilities.focusDistance.step); + assert_true(capabilities.pan instanceof MediaSettingsRange); + assert_equals(capabilities.pan.max, mockCapabilities.pan.max); + assert_equals(capabilities.pan.min, mockCapabilities.pan.min); + assert_equals(capabilities.pan.step, mockCapabilities.pan.step); + + assert_true(capabilities.tilt instanceof MediaSettingsRange); + assert_equals(capabilities.tilt.max, mockCapabilities.tilt.max); + assert_equals(capabilities.tilt.min, mockCapabilities.tilt.min); + assert_equals(capabilities.tilt.step, mockCapabilities.tilt.step); + assert_true(capabilities.zoom instanceof MediaSettingsRange); assert_equals(capabilities.zoom.max, mockCapabilities.zoom.max); assert_equals(capabilities.zoom.min, mockCapabilities.zoom.min); diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getConstraints-fast.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getConstraints-fast.html index 16f869cf119..3b1e2e0f2ca 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getConstraints-fast.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getConstraints-fast.html @@ -21,6 +21,9 @@ const constraints = { whiteBalanceMode : "manual", sharpness : 6, focusDistance : 7, + pan : 8, + tilt : 9, + zoom : 3.141592 // TODO: torch https://crbug.com/700607. }; diff --git a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getSettings.html b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getSettings.html index 8535f298bfa..a1a864c2445 100644 --- a/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getSettings.html +++ b/tests/wpt/web-platform-tests/mediacapture-image/MediaStreamTrack-getSettings.html @@ -61,6 +61,9 @@ image_capture_test(async (t, imageCaptureTest) => { assert_equals(settings.sharpness, mockSettings.sharpness.current); assert_equals(settings.focusDistance, mockSettings.focusDistance.current); + + assert_equals(settings.pan, mockSettings.pan.current); + assert_equals(settings.tilt, mockSettings.tilt.current); assert_equals(settings.zoom, mockSettings.zoom.current); assert_equals(settings.torch, mockSettings.torch, 'torch'); diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html b/tests/wpt/web-platform-tests/pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html index b2251d660e7..5ad3de35457 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerlock/pointerevent_pointermove_in_pointerlock.html @@ -27,61 +27,76 @@ <script> window.name="outerframe"; var test_pointermove = async_test("pointermove event received"); + PhaseEnum = { + Start: 0, + Lock1: 1, + Lock2: 2, + Done: 3, + }; function run() { var target0 = document.getElementById("target0"); var innerframe = document.getElementById('innerframe'); var target1 = innerframe.contentDocument.getElementById('target1'); innerframe.contentWindow.name = "innerframe"; + phase = PhaseEnum.Start; - on_event(document, "pointerlockchange", function(event) { - if (document.pointerLockElement == target0) { - on_event(target0, "pointermove", function (event) { - test_pointermove.step(function() { - assert_equals(event.view.name, "outerframe", "View attribute of pointermove should be the target frame."); - }, "View attribute of pointermove should be the target frame."); - document.exitPointerLock(); + on_event(target0, "click", function(event) { + target0.requestPointerLock(); + }); - on_event(target1, "click", function(event) { - target1.requestPointerLock(); - }); + on_event(target1, "click", function(event) { + target1.requestPointerLock(); + }); - on_event(innerframe.contentDocument, "pointerlockchange", function(event) { - if (innerframe.contentDocument.pointerLockElement == target1) { - on_event(target1, "pointermove", function (event) { - innerframe_pointermoveReceived = true; - test_pointermove.step(function() { - assert_equals(event.view.name, "innerframe", "View attribute of pointermove should be the target frame."); - }, "View attribute of pointermove should be the target frame."); - innerframe.contentDocument.exitPointerLock(); - test_pointermove.done(); - }); - } - }); - }); + on_event(target0, "pointermove", function (event) { + if (phase == PhaseEnum.Lock1) { + assert_equals(document.pointerLockElement, target0); + test_pointermove.step(function() { + assert_equals(event.view.name, "outerframe", "View attribute of pointermove should be the target frame."); + }, "View attribute of pointermove should be the target frame."); + document.exitPointerLock(); + // Click the inner frame target to lock. + clickInTarget("mouse", target1); } }); - on_event(target0, "click", function(event) { - target0.requestPointerLock(); + on_event(target1, "pointermove", function (event) { + if (phase == PhaseEnum.Lock2) { + assert_equals(innerframe.contentDocument.pointerLockElement, target1); + test_pointermove.step(function() { + assert_equals(event.view.name, "innerframe", "View attribute of pointermove should be the target frame."); + }, "View attribute of pointermove should be the target frame."); + innerframe.contentDocument.exitPointerLock(); + test_pointermove.done(); + } }); - var x = innerframe.getBoundingClientRect().x + target1.getBoundingClientRect().x; - var y = innerframe.getBoundingClientRect().y + target1.getBoundingClientRect().y; - // Inject mouse input - new test_driver.Actions() - .pointerMove(5, 5, {origin: target0}) - .pointerDown() - .pointerUp() - .pointerMove(100, 300, {origin: target0}) - .pointerMove(x+10, y+10) - .pointerDown() - .pointerUp() - .pointerMove(5, 5, {origin: target0}) - .send(); + on_event(document, "pointerlockchange", function(event) { + if (phase == PhaseEnum.Start) { + assert_equals(document.pointerLockElement, target0); + phase++; + // Send moves in main frame target + new test_driver.Actions() + .pointerMove(10, 30, {origin: target0}) + .send(); + } + }); - } + on_event(innerframe.contentDocument, "pointerlockchange", function(event) { + if (phase == PhaseEnum.Lock1) { + assert_equals(innerframe.contentDocument.pointerLockElement, target1); + phase++; + // Send moves in inner frame target + new test_driver.Actions() + .pointerMove(10, 30, {origin: target0}) + .send(); + } + }); + // Click the outer frame target to lock. + clickInTarget("mouse", target0); + } </script> <div id="complete-notice"> </div> diff --git a/tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js b/tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js index 50428ffcb80..f145d7a3402 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js +++ b/tests/wpt/web-platform-tests/resources/chromium/image_capture.mojom.js @@ -24,6 +24,8 @@ MeteringMode.MANUAL = MeteringMode.NONE + 1; MeteringMode.SINGLE_SHOT = MeteringMode.MANUAL + 1; MeteringMode.CONTINUOUS = MeteringMode.SINGLE_SHOT + 1; + MeteringMode.MIN_VALUE = 0, + MeteringMode.MAX_VALUE = 3, MeteringMode.isKnownEnumValue = function(value) { switch (value) { @@ -47,6 +49,8 @@ RedEyeReduction.NEVER = 0; RedEyeReduction.ALWAYS = RedEyeReduction.NEVER + 1; RedEyeReduction.CONTROLLABLE = RedEyeReduction.ALWAYS + 1; + RedEyeReduction.MIN_VALUE = 0, + RedEyeReduction.MAX_VALUE = 2, RedEyeReduction.isKnownEnumValue = function(value) { switch (value) { @@ -69,6 +73,8 @@ FillLightMode.OFF = 0; FillLightMode.AUTO = FillLightMode.OFF + 1; FillLightMode.FLASH = FillLightMode.AUTO + 1; + FillLightMode.MIN_VALUE = 0, + FillLightMode.MAX_VALUE = 2, FillLightMode.isKnownEnumValue = function(value) { switch (value) { @@ -175,6 +181,8 @@ this.saturation = null; this.sharpness = null; this.focusDistance = null; + this.pan = null; + this.tilt = null; this.zoom = null; this.redEyeReduction = 0; this.height = null; @@ -195,7 +203,7 @@ return err; var kVersionSizes = [ - {version: 0, numBytes: 168} + {version: 0, numBytes: 184} ]; err = messageValidator.validateStructVersion(offset, kVersionSizes); if (err !== validator.validationError.NONE) @@ -298,41 +306,53 @@ return err; - // validate PhotoState.zoom + // validate PhotoState.pan err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 120, Range, false); if (err !== validator.validationError.NONE) return err; + // validate PhotoState.tilt + err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 128, Range, false); + if (err !== validator.validationError.NONE) + return err; + + + // validate PhotoState.zoom + err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 136, Range, false); + if (err !== validator.validationError.NONE) + return err; + + // validate PhotoState.redEyeReduction - err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 128, RedEyeReduction); + err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 144, RedEyeReduction); if (err !== validator.validationError.NONE) return err; // validate PhotoState.height - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 136, Range, false); + err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 152, Range, false); if (err !== validator.validationError.NONE) return err; // validate PhotoState.width - err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 144, Range, false); + err = messageValidator.validateStructPointer(offset + codec.kStructHeaderSize + 160, Range, false); if (err !== validator.validationError.NONE) return err; // validate PhotoState.fillLightMode - err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 152, 4, new codec.Enum(FillLightMode), false, [0], 0); + err = messageValidator.validateArrayPointer(offset + codec.kStructHeaderSize + 168, 4, new codec.Enum(FillLightMode), false, [0], 0); if (err !== validator.validationError.NONE) return err; return validator.validationError.NONE; }; - PhotoState.encodedSize = codec.kStructHeaderSize + 160; + PhotoState.encodedSize = codec.kStructHeaderSize + 176; PhotoState.decode = function(decoder) { var packed; @@ -361,6 +381,8 @@ val.saturation = decoder.decodeStructPointer(Range); val.sharpness = decoder.decodeStructPointer(Range); val.focusDistance = decoder.decodeStructPointer(Range); + val.pan = decoder.decodeStructPointer(Range); + val.tilt = decoder.decodeStructPointer(Range); val.zoom = decoder.decodeStructPointer(Range); val.redEyeReduction = decoder.decodeStruct(codec.Int32); decoder.skip(1); @@ -400,6 +422,8 @@ encoder.encodeStructPointer(Range, val.saturation); encoder.encodeStructPointer(Range, val.sharpness); encoder.encodeStructPointer(Range, val.focusDistance); + encoder.encodeStructPointer(Range, val.pan); + encoder.encodeStructPointer(Range, val.tilt); encoder.encodeStructPointer(Range, val.zoom); encoder.encodeStruct(codec.Int32, val.redEyeReduction); encoder.skip(1); @@ -483,6 +507,8 @@ this.hasSaturation = false; this.hasSharpness = false; this.hasFocusDistance = false; + this.hasPan = false; + this.hasTilt = false; this.hasZoom = false; this.hasTorch = false; this.torch = false; @@ -504,6 +530,8 @@ this.saturation = 0; this.sharpness = 0; this.focusDistance = 0; + this.pan = 0; + this.tilt = 0; this.zoom = 0; this.fillLightMode = 0; this.width = 0; @@ -523,7 +551,7 @@ return err; var kVersionSizes = [ - {version: 0, numBytes: 136} + {version: 0, numBytes: 152} ]; err = messageValidator.validateStructVersion(offset, kVersionSizes); if (err !== validator.validationError.NONE) @@ -580,8 +608,12 @@ + + + + // validate PhotoSettings.fillLightMode - err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 104, FillLightMode); + err = messageValidator.validateEnum(offset + codec.kStructHeaderSize + 120, FillLightMode); if (err !== validator.validationError.NONE) return err; @@ -594,7 +626,7 @@ return validator.validationError.NONE; }; - PhotoSettings.encodedSize = codec.kStructHeaderSize + 128; + PhotoSettings.encodedSize = codec.kStructHeaderSize + 144; PhotoSettings.decode = function(decoder) { var packed; @@ -615,15 +647,17 @@ val.hasSaturation = (packed >> 1) & 1 ? true : false; val.hasSharpness = (packed >> 2) & 1 ? true : false; val.hasFocusDistance = (packed >> 3) & 1 ? true : false; - val.hasZoom = (packed >> 4) & 1 ? true : false; - val.hasTorch = (packed >> 5) & 1 ? true : false; - val.torch = (packed >> 6) & 1 ? true : false; - val.hasFillLightMode = (packed >> 7) & 1 ? true : false; + val.hasPan = (packed >> 4) & 1 ? true : false; + val.hasTilt = (packed >> 5) & 1 ? true : false; + val.hasZoom = (packed >> 6) & 1 ? true : false; + val.hasTorch = (packed >> 7) & 1 ? true : false; packed = decoder.readUint8(); - val.hasWidth = (packed >> 0) & 1 ? true : false; - val.hasHeight = (packed >> 1) & 1 ? true : false; - val.hasRedEyeReduction = (packed >> 2) & 1 ? true : false; - val.redEyeReduction = (packed >> 3) & 1 ? true : false; + val.torch = (packed >> 0) & 1 ? true : false; + val.hasFillLightMode = (packed >> 1) & 1 ? true : false; + val.hasWidth = (packed >> 2) & 1 ? true : false; + val.hasHeight = (packed >> 3) & 1 ? true : false; + val.hasRedEyeReduction = (packed >> 4) & 1 ? true : false; + val.redEyeReduction = (packed >> 5) & 1 ? true : false; decoder.skip(1); val.whiteBalanceMode = decoder.decodeStruct(codec.Int32); val.exposureMode = decoder.decodeStruct(codec.Int32); @@ -638,6 +672,8 @@ val.saturation = decoder.decodeStruct(codec.Double); val.sharpness = decoder.decodeStruct(codec.Double); val.focusDistance = decoder.decodeStruct(codec.Double); + val.pan = decoder.decodeStruct(codec.Double); + val.tilt = decoder.decodeStruct(codec.Double); val.zoom = decoder.decodeStruct(codec.Double); val.fillLightMode = decoder.decodeStruct(codec.Int32); decoder.skip(1); @@ -668,16 +704,18 @@ packed |= (val.hasSaturation & 1) << 1 packed |= (val.hasSharpness & 1) << 2 packed |= (val.hasFocusDistance & 1) << 3 - packed |= (val.hasZoom & 1) << 4 - packed |= (val.hasTorch & 1) << 5 - packed |= (val.torch & 1) << 6 - packed |= (val.hasFillLightMode & 1) << 7 + packed |= (val.hasPan & 1) << 4 + packed |= (val.hasTilt & 1) << 5 + packed |= (val.hasZoom & 1) << 6 + packed |= (val.hasTorch & 1) << 7 encoder.writeUint8(packed); packed = 0; - packed |= (val.hasWidth & 1) << 0 - packed |= (val.hasHeight & 1) << 1 - packed |= (val.hasRedEyeReduction & 1) << 2 - packed |= (val.redEyeReduction & 1) << 3 + packed |= (val.torch & 1) << 0 + packed |= (val.hasFillLightMode & 1) << 1 + packed |= (val.hasWidth & 1) << 2 + packed |= (val.hasHeight & 1) << 3 + packed |= (val.hasRedEyeReduction & 1) << 4 + packed |= (val.redEyeReduction & 1) << 5 encoder.writeUint8(packed); encoder.skip(1); encoder.encodeStruct(codec.Int32, val.whiteBalanceMode); @@ -693,6 +731,8 @@ encoder.encodeStruct(codec.Double, val.saturation); encoder.encodeStruct(codec.Double, val.sharpness); encoder.encodeStruct(codec.Double, val.focusDistance); + encoder.encodeStruct(codec.Double, val.pan); + encoder.encodeStruct(codec.Double, val.tilt); encoder.encodeStruct(codec.Double, val.zoom); encoder.encodeStruct(codec.Int32, val.fillLightMode); encoder.skip(1); diff --git a/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js b/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js index 329cbc3a761..eec414bd032 100644 --- a/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js +++ b/tests/wpt/web-platform-tests/resources/chromium/mock-imagecapture.js @@ -91,6 +91,20 @@ var ImageCaptureTest = (() => { step: 1.0 }, + pan: { + min: 0.0, + max: 10.0, + current: 5.0, + step: 2.0 + }, + + tilt: { + min: 0.0, + max: 10.0, + current: 5.0, + step: 2.0 + }, + zoom: { min: 0.0, max: 10.0, @@ -140,6 +154,10 @@ var ImageCaptureTest = (() => { this.state_.state.height.current = settings.height; if (settings.hasWidth) this.state_.state.width.current = settings.width; + if (settings.hasPan) + this.state_.state.pan.current = settings.pan; + if (settings.hasTilt) + this.state_.state.tilt.current = settings.tilt; if (settings.hasZoom) this.state_.state.zoom.current = settings.zoom; if (settings.hasFocusMode) diff --git a/tests/wpt/web-platform-tests/shape-detection/idlharness.any.js b/tests/wpt/web-platform-tests/shape-detection/idlharness.https.any.js index dab7de99d2d..8886e356baa 100644 --- a/tests/wpt/web-platform-tests/shape-detection/idlharness.any.js +++ b/tests/wpt/web-platform-tests/shape-detection/idlharness.https.any.js @@ -1,3 +1,4 @@ +// META: global=window,worker // META: script=/resources/WebIDLParser.js // META: script=/resources/idlharness.js // META: script=/shape-detection/resources/shapedetection-helpers.js @@ -10,36 +11,45 @@ idl_test( ['shape-detection-api'], ['dom', 'geometry'], async idl_array => { - let faceDetectionTest, barcodeDetectionTest; + idl_array.add_objects({ + FaceDetector: ['faceDetector'], + DetectedFace: ['detectedFace'], + BarcodeDetector: ['barcodeDetector'], + DetectedBarcode: ['detectedBarcode'] + }); + + let faceDetectionTest; try { faceDetectionTest = await initialize_detection_tests("FaceDetectionTest"); - barcodeDetectionTest = - await initialize_detection_tests("BarcodeDetectionTest"); const img = createTestImage(); const theImageBitmap = await createImageBitmap(img); self.faceDetector = new FaceDetector(); const faceDetectionResult = await faceDetector.detect(theImageBitmap); self.detectedFace = faceDetectionResult[0]; + } catch (e) { + // Surfaced in idlharness.js's test_object. + } finally { + faceDetectionTest && faceDetectionTest.reset(); + } + + let barcodeDetectionTest; + try { + barcodeDetectionTest = + await initialize_detection_tests("BarcodeDetectionTest"); + const img = createTestImage(); + const theImageBitmap = await createImageBitmap(img); self.barcodeDetector = new BarcodeDetector(); const barcodeDetectionResult = await barcodeDetector.detect(theImageBitmap); self.detectedBarcode = barcodeDetectionResult[0]; } catch (e) { - // Surfaced in idlharness.js's test_object below. + // Surface in idlharness.js's test_object. } finally { - faceDetectionTest.reset(); - barcodeDetectionTest.reset(); + barcodeDetectionTest && barcodeDetectionTest.reset(); } - - idl_array.add_objects({ - FaceDetector: ['faceDetector'], - DetectedFace: ['detectedFace'], - BarcodeDetector: ['barcodeDetector'], - DetectedBarcode: ['detectedBarcode'] - }); } ); diff --git a/tests/wpt/web-platform-tests/shape-detection/resources/shapedetection-helpers.js b/tests/wpt/web-platform-tests/shape-detection/resources/shapedetection-helpers.js index 91d36658aab..de1e681de9f 100644 --- a/tests/wpt/web-platform-tests/shape-detection/resources/shapedetection-helpers.js +++ b/tests/wpt/web-platform-tests/shape-detection/resources/shapedetection-helpers.js @@ -23,7 +23,7 @@ let loadChromiumResources = Promise.resolve().then(() => { '/gen/mojo/public/mojom/base/big_buffer.mojom.js', '/gen/skia/public/interfaces/image_info.mojom.js', '/gen/skia/public/interfaces/bitmap.mojom.js', - '/gen/ui/gfx/geometry/mojo/geometry.mojom.js', + '/gen/ui/gfx/geometry/mojom/geometry.mojom.js', `${prefix}/barcodedetection.mojom.js`, `${prefix}/barcodedetection_provider.mojom.js`, `${prefix}/facedetection.mojom.js`, 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 022aca8c93e..f8c7f0f81c7 100644 --- a/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js +++ b/tests/wpt/web-platform-tests/webxr/resources/webxr_util.js @@ -137,7 +137,7 @@ let loadChromiumResources = Promise.resolve().then(() => { '/gen/gpu/ipc/common/mailbox_holder.mojom.js', '/gen/gpu/ipc/common/sync_token.mojom.js', '/gen/ui/display/mojom/display.mojom.js', - '/gen/ui/gfx/geometry/mojo/geometry.mojom.js', + '/gen/ui/gfx/geometry/mojom/geometry.mojom.js', '/gen/ui/gfx/mojo/gpu_fence_handle.mojom.js', '/gen/ui/gfx/mojo/transform.mojom.js', '/gen/device/vr/public/mojom/vr_service.mojom.js', |