mirror of
https://github.com/servo/servo.git
synced 2025-07-23 15:23:42 +01:00
Auto merge of #23871 - servo-wpt-sync:wpt_update_27-07-2019, r=servo-wpt-sync
Sync WPT with upstream (27-07-2019) Automated downstream sync of changes from upstream as of 27-07-2019. [no-wpt-sync] <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23871) <!-- Reviewable:end -->
This commit is contained in:
commit
b52bfbe68a
47 changed files with 888 additions and 163 deletions
|
@ -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]
|
||||
|
|
|
@ -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,11 +391420,15 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"shape-detection/idlharness.any.js": [
|
||||
"shape-detection/idlharness.https.any.js": [
|
||||
[
|
||||
"shape-detection/idlharness.any.html",
|
||||
"shape-detection/idlharness.https.any.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"window,worker"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/resources/WebIDLParser.js"
|
||||
|
@ -391378,9 +391445,59 @@
|
|||
}
|
||||
],
|
||||
[
|
||||
"shape-detection/idlharness.any.worker.html",
|
||||
"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.https.any.sharedworker.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.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": [
|
||||
|
|
|
@ -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
|
||||
|
|
@ -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/html;" text/plain]
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_2.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
[creating_browsing_context_test_01.html]
|
||||
expected: TIMEOUT
|
||||
[first argument: absolute url]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[DOMContentLoaded-defer.html]
|
||||
[The end: DOMContentLoaded and defer scripts]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
[ignore-opens-during-unload.window.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[ignore-opens-during-unload]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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();
|
||||
});
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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>
|
|
@ -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.
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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(),
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
||||
|
|
117
tests/wpt/web-platform-tests/mathml/support/mathml-fragments.js
Normal file
117
tests/wpt/web-platform-tests/mathml/support/mathml-fragments.js
Normal file
|
@ -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>"
|
||||
};
|
|
@ -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');
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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');
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
};
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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";
|
||||
|
||||
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(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();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
phase = PhaseEnum.Start;
|
||||
|
||||
on_event(target0, "click", function(event) {
|
||||
target0.requestPointerLock();
|
||||
});
|
||||
|
||||
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(target1, "click", function(event) {
|
||||
target1.requestPointerLock();
|
||||
});
|
||||
|
||||
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(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();
|
||||
}
|
||||
});
|
||||
|
||||
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>
|
||||
|
|
|
@ -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)
|
||||
|
@ -575,13 +603,17 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 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);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
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];
|
||||
|
||||
self.barcodeDetector = new BarcodeDetector();
|
||||
const barcodeDetectionResult =
|
||||
await barcodeDetector.detect(theImageBitmap);
|
||||
self.detectedBarcode = barcodeDetectionResult[0];
|
||||
} catch (e) {
|
||||
// Surfaced in idlharness.js's test_object below.
|
||||
} finally {
|
||||
faceDetectionTest.reset();
|
||||
barcodeDetectionTest.reset();
|
||||
}
|
||||
|
||||
idl_array.add_objects({
|
||||
FaceDetector: ['faceDetector'],
|
||||
DetectedFace: ['detectedFace'],
|
||||
BarcodeDetector: ['barcodeDetector'],
|
||||
DetectedBarcode: ['detectedBarcode']
|
||||
});
|
||||
|
||||
let faceDetectionTest;
|
||||
try {
|
||||
faceDetectionTest =
|
||||
await initialize_detection_tests("FaceDetectionTest");
|
||||
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) {
|
||||
// Surface in idlharness.js's test_object.
|
||||
} finally {
|
||||
barcodeDetectionTest && barcodeDetectionTest.reset();
|
||||
}
|
||||
}
|
||||
);
|
||||
|
|
@ -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`,
|
||||
|
|
|
@ -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',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue