mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Update web-platform-tests to revision cb32b4d04799e9de2e2505d7dddfab1429247070
This commit is contained in:
parent
d3ebe51053
commit
b89132d428
95 changed files with 1039 additions and 331 deletions
|
@ -0,0 +1,8 @@
|
|||
[url-charset.window.html]
|
||||
expected: TIMEOUT
|
||||
[Blob charset should override any auto-detected charset.]
|
||||
expected: TIMEOUT
|
||||
|
||||
[Blob charset should override <meta charset>.]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
expected: TIMEOUT
|
||||
|
||||
[Opening a blob URL in a new window immediately before revoking it works.]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Fetching a blob URL immediately before revoking it works in an iframe.]
|
||||
expected: FAIL
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-003.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-004.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -2,3 +2,6 @@
|
|||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[CaretPosition-001.html]
|
||||
[Element at (400, 100)]
|
||||
expected: FAIL
|
||||
|
|
@ -17,6 +17,3 @@
|
|||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
[test some point of the element: top left corner]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[matchMedia-display-none-iframe.html]
|
||||
expected: ERROR
|
|
@ -318,12 +318,21 @@
|
|||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
[<iframe>: combined response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,6 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20%2Cnosniff]
|
||||
[X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_2.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[traverse_the_history_2.html]
|
||||
[traverse_the_history_3.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[cross-origin-objects-on-new-window.html]
|
||||
expected: TIMEOUT
|
|
@ -1,16 +1,17 @@
|
|||
[supported-elements.html]
|
||||
expected: TIMEOUT
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Element with tabindex should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
[Area element should support autofocus]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Host element with delegatesFocus should support autofocus]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -171,6 +171,3 @@
|
|||
[XHTML img usemap="#hash-id"]
|
||||
expected: FAIL
|
||||
|
||||
[HTML (standards) IMG usemap="no-hash-name"]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-2.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[form-double-submit.html]
|
||||
[default submit action should supersede onclick submit()]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[activation-behavior.window.html]
|
||||
[<a> that is not connected should be followed]
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[script-onerror-insertion-point-2.html]
|
||||
expected: TIMEOUT
|
|
@ -1,4 +0,0 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
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
|
||||
|
||||
|
|
|
@ -302,3 +302,6 @@
|
|||
[X SNR (0.7170499654840768 dB) is not greater than or equal to 65.737. Got 0.7170499654840768.]
|
||||
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[28696\]\t4.1257213237009784e-37\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[003.html]
|
||||
expected: ERROR
|
||||
[shared]
|
||||
expected: FAIL
|
||||
|
||||
|
|
8
tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini
Normal file
8
tests/wpt/metadata/FileAPI/url/url-charset.window.js.ini
Normal file
|
@ -0,0 +1,8 @@
|
|||
[url-charset.window.html]
|
||||
expected: TIMEOUT
|
||||
[Blob charset should override any auto-detected charset.]
|
||||
expected: TIMEOUT
|
||||
|
||||
[Blob charset should override <meta charset>.]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
expected: FAIL
|
||||
|
||||
[Opening a blob URL in a new window immediately before revoking it works.]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1036,6 +1036,13 @@
|
|||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"operator-and-first-letter.html": [
|
||||
"a4d56de72ffaf872860379735b86d09278a0ffc7",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
|
@ -24110,7 +24117,7 @@
|
|||
},
|
||||
"web-nfc": {
|
||||
"NDEFReader-document-hidden-manual.https.html": [
|
||||
"f2027dc99d1dad8004c72f0af5e7eea48836c3b2",
|
||||
"ffbd7ebc45618a905b91eaa5a6cfa4f41f8efcd9",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -128504,6 +128511,19 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"widows-001.html": [
|
||||
"eb453ee64d8cfa1bcee456d614b64a3d67be122e",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-break/reference/widows-001-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"widows-orphans-001.html": [
|
||||
"8da27f0b6594fc7ddd90bdb160be8f80a9479038",
|
||||
[
|
||||
|
@ -241689,7 +241709,7 @@
|
|||
]
|
||||
],
|
||||
"forced-colors-mode-26.html": [
|
||||
"a9aa59013217ecdc32908330a4c520a761c0d09b",
|
||||
"5379564563d60fcac37cc6ee063812ecab4736ba",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -241780,7 +241800,7 @@
|
|||
]
|
||||
],
|
||||
"forced-colors-mode-35.html": [
|
||||
"098a9ce9d339260af059354235874123831683af",
|
||||
"5d80e80418ce540d450ebc41577e0fdfbbde95d4",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -244448,6 +244468,19 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"fieldset-border-radius-with-alpha.html": [
|
||||
"36b9fc8c8ef7aa08473e4061c090042882b8b582",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/fieldset-border-radius-with-alpha-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"fieldset-containing-block.html": [
|
||||
"e7529946a49c0da964dae79831047e4a0507f119",
|
||||
[
|
||||
|
@ -281519,7 +281552,7 @@
|
|||
[]
|
||||
],
|
||||
"helpers.py": [
|
||||
"1002b84a8f9287a0bcf83722c54644abd544a2d7",
|
||||
"47f40b4fc19a8304ef39141f5a3d31b1d56368ef",
|
||||
[]
|
||||
],
|
||||
"imgIfMatch.py": [
|
||||
|
@ -301519,6 +301552,10 @@
|
|||
[]
|
||||
],
|
||||
"reference": {
|
||||
"widows-001-ref.html": [
|
||||
"4f822f8fd67aed18355177a5e9de18d8a63f895e",
|
||||
[]
|
||||
],
|
||||
"widows-orphans-001-ref.html": [
|
||||
"06108ac800c19c68841f2a0e8867fb05e868c1ab",
|
||||
[]
|
||||
|
@ -336016,10 +336053,6 @@
|
|||
"0d6db5399118372da9ca783eeb2551e435ea85d7",
|
||||
[]
|
||||
],
|
||||
"window-tests-chooser.js": [
|
||||
"bb9e0bf128c7885ae2b3c32ceb98f28947460209",
|
||||
[]
|
||||
],
|
||||
"window-tests-enumeration.js": [
|
||||
"6e60910251fc59012d28f3c9a42adac7b7cb6d7a",
|
||||
[]
|
||||
|
@ -336822,7 +336855,7 @@
|
|||
[]
|
||||
],
|
||||
"forced-colors-mode-26-ref.html": [
|
||||
"39caee40b52aca059a9a65ffde754788228ff9dc",
|
||||
"617d425e0aeac4370ad2a8ff42c05fb8a1be1853",
|
||||
[]
|
||||
],
|
||||
"forced-colors-mode-28-ref.html": [
|
||||
|
@ -336850,7 +336883,7 @@
|
|||
[]
|
||||
],
|
||||
"forced-colors-mode-35-ref.html": [
|
||||
"ba38e484b5591c28d2493362f2b3e1355fc8f0e4",
|
||||
"2b397e92f2c9f5c12ab0ec2fbb79f2b8cb2d4b35",
|
||||
[]
|
||||
],
|
||||
"forced-colors-mode-36-ref.html": [
|
||||
|
@ -344892,6 +344925,10 @@
|
|||
"95e2347121e26ec7cc7d080caf9db6ff253231c6",
|
||||
[]
|
||||
],
|
||||
"fieldset-border-radius-with-alpha-ref.html": [
|
||||
"577482a328b47b72b78ddc22abef02e12836a378",
|
||||
[]
|
||||
],
|
||||
"fieldset-containing-block-ref.html": [
|
||||
"ccb755b347cbf926163e7dfaaa37c590942ca6c9",
|
||||
[]
|
||||
|
@ -349702,27 +349739,27 @@
|
|||
[]
|
||||
],
|
||||
"eventOrder.html.ini": [
|
||||
"894f4a11df81be8e164898ab2091e1cc64175290",
|
||||
"4df08aa7e31b9c866a5a4408d29819ec80e0b610",
|
||||
[]
|
||||
],
|
||||
"multiTouchPoints.html.ini": [
|
||||
"c7b3482c786fc4532488f388b802930ccea8dc0e",
|
||||
"ac5763d15cab5c0e7b11732b45d5b60e97a68043",
|
||||
[]
|
||||
],
|
||||
"multiTouchPointsReleaseFirstPoint.html.ini": [
|
||||
"68ccafcec2a1dd55184d234071c809ce1fcc73d8",
|
||||
"b5ab5a59068b09fcaad4690d41f632bf112d44a1",
|
||||
[]
|
||||
],
|
||||
"multiTouchPointsReleaseSecondPoint.html.ini": [
|
||||
"5d714dd77733edd0199535f0f1cb20a46237d6dd",
|
||||
"58988a75d414f2f86ec0249304bba91f6d3f25da",
|
||||
[]
|
||||
],
|
||||
"multiTouchPointsTwoTouchStarts.html.ini": [
|
||||
"40626b8193ecc99e3e5ec5fe181f5553bfd8473a",
|
||||
"b0a03ae93adc8eb99d10304707033bc96d1df0eb",
|
||||
[]
|
||||
],
|
||||
"multiTouchPointsWithPause.html.ini": [
|
||||
"4f1939a431ae272024f62a4169bf8431efc2c5bb",
|
||||
"2b8523145ef2a4dee0a2acdf2b92221b518ba080",
|
||||
[]
|
||||
],
|
||||
"pause.html.ini": [
|
||||
|
@ -350546,7 +350583,7 @@
|
|||
[]
|
||||
],
|
||||
"web-nfc.idl": [
|
||||
"14df65c6cecc75a438f1ac9f476d3e8a136566e7",
|
||||
"bdf0324d96d692c17bbf10b0974ace38faf33318",
|
||||
[]
|
||||
],
|
||||
"web-otp.idl": [
|
||||
|
@ -361194,7 +361231,7 @@
|
|||
[]
|
||||
],
|
||||
"safari-technology-preview.rb": [
|
||||
"115dd1b8f210b639a69a8f3cfa21f4edf7579243",
|
||||
"3f9a3679080344df29824872522a19d523cecc87",
|
||||
[]
|
||||
],
|
||||
"system_info.yml": [
|
||||
|
@ -368318,7 +368355,7 @@
|
|||
[]
|
||||
],
|
||||
"testdriver-extra.js": [
|
||||
"9c0c69af3a3f278e8053b0a9907cd1dd7cae9dbc",
|
||||
"9a8b40e0a94d264ef92ddea30dec05cfae37a0b1",
|
||||
[]
|
||||
],
|
||||
"testdriver-vendor.js": [
|
||||
|
@ -370041,7 +370078,7 @@
|
|||
],
|
||||
"resources": {
|
||||
"nfc-helpers.js": [
|
||||
"13cbe49370e9a7245755c9c69be63117f4440d33",
|
||||
"0b26d09c96aa8f29ef6d5646c187af0a2a5100a8",
|
||||
[]
|
||||
],
|
||||
"support-iframe.html": [
|
||||
|
@ -410423,6 +410460,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"overflow-clip-scroll-size.html": [
|
||||
"1f2c2236a412251a9c02b84d3fade4c2df8d0527",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"overflow-codependent-scrollbars.html": [
|
||||
"eb0e4f5ea2ed9a97c0931c2c53de5e62e72ba1dd",
|
||||
[
|
||||
|
@ -410430,6 +410474,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"overflow-empty-child-box.html": [
|
||||
"880e0d36848a5261163f0c07d4cafb2f4df0a278",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"overflow-inline-transform-relative.html": [
|
||||
"4df7b6389432cc6c65bae3fe3b5b9c2f00ba7bde",
|
||||
[
|
||||
|
@ -454191,29 +454242,12 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"font_access-chooser.tentative.https.window.js": [
|
||||
"047521a7f7ab86ddddeb8f95ee711757f81bccf4",
|
||||
"font_access-chooser.tentative.manual.https.html": [
|
||||
"8f623daa0b86c1af6141fee0cf8a8783559f2b16",
|
||||
[
|
||||
"font-access/font_access-chooser.tentative.https.window.html",
|
||||
null,
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"script",
|
||||
"/resources/testdriver.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/resources/testdriver-vendor.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"resources/test-expectations.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"resources/window-tests-chooser.js"
|
||||
]
|
||||
]
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
|
@ -454307,6 +454341,20 @@
|
|||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"forced-colors-mode-40.html": [
|
||||
"71ac4c9ea820c5853ed762fcd8000ffa1a86f36a",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"forced-colors-mode-41.html": [
|
||||
"64bc6cc8cd59b7f98509ac1e5f54b9cf26046e82",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"fullscreen": {
|
||||
|
@ -494676,6 +494724,15 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"click-multiple.html": [
|
||||
"ed834c557112fade1d6d7ff69e8d3598dd6d4589",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"click.html": [
|
||||
"37721ad9ef3df10f8cdc1da74c27a2259d4601f6",
|
||||
[
|
||||
|
@ -521180,6 +521237,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"at-scroll-timeline-multi-pass.tentative.html": [
|
||||
"14b35b3f6033f0577999de110c1df72905ade475",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"at-scroll-timeline-offset-invalidation.tentative.html": [
|
||||
"5a560ad004cf292b9e1061a55b6cd1e286e42c4d",
|
||||
[
|
||||
|
@ -522777,7 +522841,7 @@
|
|||
]
|
||||
],
|
||||
"claim-worker-fetch.https.html": [
|
||||
"c55b965be6e923ae40b4d6db2df745fa772c5bba",
|
||||
"389d001f31e2e9791198029c5e9877de5395e234",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -542708,14 +542772,14 @@
|
|||
]
|
||||
],
|
||||
"NDEFReader_scan.https.html": [
|
||||
"46f2871f3dc9a4c4bd74923d05b6b90477ddb0a8",
|
||||
"b551af0150f068b0794047cdfb08c862ac3bbb4b",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"NDEFReader_scan_iframe.https.html": [
|
||||
"9bdb07136821211214e7d2d838f92da3f1955bc4",
|
||||
"8803c25fb0a54fe13b23eb455e6da09c422aa3d4",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -544861,18 +544925,70 @@
|
|||
]
|
||||
},
|
||||
"webcodecs": {
|
||||
"audio-decoder.html": [
|
||||
"e6bc81d35cba86a63d68cb0635e10e3c3d627cfe",
|
||||
"audio-decoder.any.js": [
|
||||
"70110a7822ea0fb374b08a8fd5f3811a6164c3ea",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
"webcodecs/audio-decoder.any.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"window,dedicatedworker"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/webcodecs/utils.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"webcodecs/audio-decoder.any.worker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"window,dedicatedworker"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/webcodecs/utils.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"video-decoder.html": [
|
||||
"ff48625dc8c2a8718895831e6dd0c82b9c17d7c2",
|
||||
"video-decoder.any.js": [
|
||||
"e667a5642e76a6bb58cd608ebf2c1428c70b208a",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
"webcodecs/video-decoder.any.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"window,dedicatedworker"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/webcodecs/utils.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"webcodecs/video-decoder.any.worker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"window,dedicatedworker"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/webcodecs/utils.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"video-encoder.html": [
|
||||
|
@ -544882,18 +544998,78 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"video-frame-serialization.html": [
|
||||
"8c111488e7c959a8844583ae2117f9abb8ffd8a1",
|
||||
"video-frame-serialization.any.js": [
|
||||
"524f94374f417ae08798a2d1eeafbc012c028a41",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
"webcodecs/video-frame-serialization.any.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"window,dedicatedworker"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/common/media.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/webcodecs/utils.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"webcodecs/video-frame-serialization.any.worker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"window,dedicatedworker"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/common/media.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/webcodecs/utils.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"video-frame.html": [
|
||||
"de39603b1530c980e754e1b311c060159251d312",
|
||||
"video-frame.any.js": [
|
||||
"9eb6699c06ae541b7e2e3911a913b29a7f5d83cf",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
"webcodecs/video-frame.any.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"window,dedicatedworker"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/webcodecs/utils.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"webcodecs/video-frame.any.worker.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"global",
|
||||
"window,dedicatedworker"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/webcodecs/utils.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"video-track-reader.html": [
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-003.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-004.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -2,3 +2,6 @@
|
|||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[CaretPosition-001.html]
|
||||
[Element at (400, 100)]
|
||||
expected: FAIL
|
||||
|
|
@ -21,6 +21,3 @@
|
|||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
[test some point of the element: top left corner]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[matchMedia-display-none-iframe.html]
|
||||
expected: ERROR
|
|
@ -309,9 +309,6 @@
|
|||
[fetch(): separate response Content-Type: text/plain ]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -324,6 +321,18 @@
|
|||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
[<iframe>: combined response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,6 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20%2Cnosniff]
|
||||
[X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[traverse_the_history_5.html]
|
||||
[traverse_the_history_3.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[cross-origin-objects-on-new-window.html]
|
||||
expected: TIMEOUT
|
|
@ -1,4 +1,5 @@
|
|||
[supported-elements.html]
|
||||
expected: TIMEOUT
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -6,11 +7,11 @@
|
|||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Area element should support autofocus]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
[Host element with delegatesFocus should support autofocus]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -172,6 +172,3 @@
|
|||
[XHTML img usemap="http://example.org/#garbage-before-hash-id"]
|
||||
expected: FAIL
|
||||
|
||||
[HTML (standards) IMG usemap="no-hash-name"]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-2.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-2.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[form-double-submit.html]
|
||||
[default submit action should supersede onclick submit()]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[activation-behavior.window.html]
|
||||
[<a> that is not connected should be followed]
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[script-onerror-insertion-point-2.html]
|
||||
expected: TIMEOUT
|
|
@ -1,4 +0,0 @@
|
|||
[module-delayed.html]
|
||||
[async document.write in a module]
|
||||
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
|
||||
|
||||
|
|
|
@ -530,3 +530,6 @@
|
|||
[X SNR (0.7170499654840768 dB) is not greater than or equal to 65.737. Got 0.7170499654840768.]
|
||||
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[28696\]\t4.1257213237009784e-37\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
[003.html]
|
||||
type: testharness
|
||||
expected: ERROR
|
||||
[shared]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ def makeCookieHeader(name, value, otherAttrs):
|
|||
return (b"Set-Cookie", b"; ".join((attrs)))
|
||||
|
||||
def makeDropCookie(name, secure):
|
||||
attrs = {b"MaxAge": 0, b"path": b"/"}
|
||||
attrs = {b"max-age": 0, b"path": b"/"}
|
||||
if secure:
|
||||
attrs[b"secure"] = b""
|
||||
return makeCookieHeader(name, b"", attrs)
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Reftest Reference</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
|
||||
<!--
|
||||
Date created: November 7th 2020
|
||||
Last modified: November 17th 2020
|
||||
-->
|
||||
|
||||
<style>
|
||||
div
|
||||
{
|
||||
border: orange solid 4px;
|
||||
font-size: 20px;
|
||||
line-height: 1.3; /* computes to 26px */
|
||||
height: 104px; /* Therefore, exactly 4 line boxes */
|
||||
margin-bottom: 1em;
|
||||
padding: 0.5em; /* computes to 10px */
|
||||
width: 490px;
|
||||
|
||||
columns: 3 auto;
|
||||
column-fill: auto;
|
||||
column-gap: 1em; /* computes to 20px */
|
||||
column-rule: blue solid 4px;
|
||||
|
||||
widows: 1;
|
||||
}
|
||||
</style>
|
||||
|
||||
<p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
|
||||
|
||||
<div>1<br>2<br>3<br>4<br>5<br>6<br>7<br><br>8<br>9</div>
|
||||
|
||||
<div>1<br>2<br>3<br>4<br>5<br>6<br>7<br><br>8<br>9</div>
|
83
tests/wpt/web-platform-tests/css/css-break/widows-001.html
Normal file
83
tests/wpt/web-platform-tests/css/css-break/widows-001.html
Normal file
|
@ -0,0 +1,83 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Fragmentation level 3 Test: 'widows' and content distribution in columns</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-break-3/#widows-orphans">
|
||||
<link rel="match" href="reference/widows-001-ref.html">
|
||||
|
||||
<!--
|
||||
Date created: November 7th 2020
|
||||
Last modified: November 17th 2020
|
||||
-->
|
||||
|
||||
<!--
|
||||
|
||||
Bug 1562420: Implement orphans and widows for individual columns of a multicolumn element
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1562420
|
||||
|
||||
Bug 137367: Implement orphans and widows
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=137367
|
||||
|
||||
-->
|
||||
|
||||
<meta name="flags" content="">
|
||||
<meta name="assert" content="When column boxes are filled sequentially, their content should be adjusted and fragmented in accordance with the 'widows' declaration. In the test, since the 3rd column box was going to get only 1 line box, then a class B break point is allowed and should occur before the last line box of the 2nd column box and after the next-to-last line box of the 2nd column box so that there is a minimum of 2 line boxes at the top of the 3rd column box.">
|
||||
|
||||
<!--
|
||||
|
||||
Breaking at a class B break point is allowed only if (...)
|
||||
the number of line boxes between the break and the end
|
||||
of the box is the value of widows or more.
|
||||
4.4 Unforced Breaks
|
||||
https://www.w3.org/TR/css-break-3/#unforced-breaks
|
||||
|
||||
-->
|
||||
|
||||
<style>
|
||||
div
|
||||
{
|
||||
border: orange solid 4px;
|
||||
font-size: 20px;
|
||||
line-height: 1.3; /* computes to 26px */
|
||||
height: 104px; /* Therefore, exactly 4 line boxes */
|
||||
margin-bottom: 1em;
|
||||
padding: 0.5em; /* computes to 10px */
|
||||
width: 490px;
|
||||
|
||||
columns: 3 auto;
|
||||
column-fill: auto;
|
||||
column-gap: 1em;
|
||||
column-rule: blue solid 4px;
|
||||
}
|
||||
|
||||
div#test
|
||||
{
|
||||
widows: 2; /* widows' initial value is 2 */
|
||||
|
||||
/*
|
||||
"The widows property specifies the minimum number of line boxes of a
|
||||
block container that must be left in a fragment <em>after</em> a
|
||||
column break."
|
||||
|
||||
coming from
|
||||
CSS Fragmentation Module Level 3, section 3.3 Breaks Between Lines: orphans, widows
|
||||
https://www.w3.org/TR/css-break-3/#widows-orphans
|
||||
*/
|
||||
}
|
||||
|
||||
div#reference
|
||||
{
|
||||
widows: 1;
|
||||
}
|
||||
</style>
|
||||
|
||||
<p>Test passes if the digits inside both orange-bordered rectangles are <strong>distributed identically</strong>.
|
||||
|
||||
<div id="test">1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9</div>
|
||||
|
||||
<div id="reference">1<br>2<br>3<br>4<br>5<br>6<br>7<br><br>8<br>9</div>
|
||||
|
||||
<!-- Same as div#test except 1 extra br here ^ -->
|
|
@ -0,0 +1,80 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title>overflow: scroll width/height should return overflow size</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-overflow/#valdef-overflow-clip">
|
||||
<link rel="author" title="Scott Violet" href="mailto:sky@chromium.org">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<style>
|
||||
.parent {
|
||||
width: 100px;
|
||||
height: 101px;
|
||||
}
|
||||
.child {
|
||||
width: 200px;
|
||||
height: 201px;
|
||||
}
|
||||
.overflow_clip_and_border {
|
||||
width: 100px;
|
||||
height: 101px;
|
||||
overflow: clip;
|
||||
border-width: 2px;
|
||||
border-style: solid;
|
||||
}
|
||||
</style>
|
||||
<div id="parent-clip-both" class="parent" style="overflow: clip">
|
||||
<div class="child"></div>
|
||||
</div>
|
||||
<div id="parent-clip-x" class="parent" style="overflow: clip-x">
|
||||
<div class="child"></div>
|
||||
</div>
|
||||
<div id="parent-clip-y" class="parent" style="overflow: clip-y">
|
||||
<div class="child"></div>
|
||||
</div>
|
||||
|
||||
<div id="border-equal-clip" class="parent">
|
||||
<div class="overflow_clip_and_border"
|
||||
style="overflow-clip-margin: 2px">
|
||||
<div class="child"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="border-smaller-clip" class="parent">
|
||||
<div class="overflow_clip_and_border"
|
||||
style="overflow-clip-margin: 3px">
|
||||
<div class="child"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="border-greater-clip" class="parent">
|
||||
<div class="overflow_clip_and_border"
|
||||
style="overflow-clip-margin: 1px">
|
||||
<div class="child"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
test(() => {
|
||||
var pClipBoth = document.getElementById("parent-clip-both");
|
||||
assert_equals(pClipBoth.scrollWidth, 200);
|
||||
assert_equals(pClipBoth.scrollHeight, 201);
|
||||
|
||||
var pClipX = document.getElementById("parent-clip-x");
|
||||
assert_equals(pClipX.scrollWidth, 200);
|
||||
assert_equals(pClipX.scrollHeight, 201);
|
||||
|
||||
var pClipY = document.getElementById("parent-clip-y");
|
||||
assert_equals(pClipY.scrollWidth, 200);
|
||||
assert_equals(pClipY.scrollHeight, 201);
|
||||
}, "scroll size should match that of size specified by overflow: clip");
|
||||
|
||||
test(() => {
|
||||
assert_equals(document.getElementById("border-equal-clip").scrollWidth,
|
||||
104);
|
||||
|
||||
assert_equals(document.getElementById("border-smaller-clip").scrollWidth,
|
||||
105);
|
||||
|
||||
assert_equals(document.getElementById("border-greater-clip").scrollWidth,
|
||||
104);
|
||||
}, "scroll size should take into account border size and overflow-clip-margin");
|
||||
|
||||
</script>
|
|
@ -0,0 +1,59 @@
|
|||
<!DOCTYPE html>
|
||||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<html>
|
||||
<meta charset="utf-8">
|
||||
<title>CSS Overflow Test: Testing an empty child box and its container's scrollable overflow area</title>
|
||||
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
|
||||
<link rel="author" title="Mozilla" href="https://www.mozilla.org/">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-overflow-3/#scrollable">
|
||||
<meta name="assert" content="This test verifies that an empty child box shouldn't contribute to its parents scrollable overflow area.">
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/check-layout-th.js"></script>
|
||||
|
||||
<style>
|
||||
.container {
|
||||
border: 1px solid black;
|
||||
width: 200px;
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
.empty {
|
||||
position: relative;
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
left: 500px;
|
||||
top: 300px;
|
||||
box-shadow: 0 0 0 10px blue;
|
||||
}
|
||||
</style>
|
||||
|
||||
<body onload="checkLayout('.container')">
|
||||
<p>You should see no scrollbars in these container because an empty child
|
||||
box shouldn't contribute to its parents scrollable overflow area. </p>
|
||||
|
||||
<div class="container" style="overflow: visible"
|
||||
data-expected-scroll-width="200" data-expected-scroll-height="100">
|
||||
<div class="empty"></div>
|
||||
</div>
|
||||
|
||||
<div class="container" style="overflow: auto"
|
||||
data-expected-scroll-width="200" data-expected-scroll-height="100">
|
||||
<div class="empty"></div>
|
||||
</div>
|
||||
|
||||
<div class="container" style="overflow: hidden"
|
||||
data-expected-scroll-width="200" data-expected-scroll-height="100">
|
||||
<div class="empty"></div>
|
||||
</div>
|
||||
|
||||
<div class="container" style="overflow: clip"
|
||||
data-expected-scroll-width="200" data-expected-scroll-height="100">
|
||||
<div class="empty"></div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,4 +0,0 @@
|
|||
// META: script=/resources/testdriver.js
|
||||
// META: script=/resources/testdriver-vendor.js
|
||||
// META: script=resources/test-expectations.js
|
||||
// META: script=resources/window-tests-chooser.js
|
|
@ -0,0 +1,28 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
|
||||
<script>
|
||||
promise_test(async t => {
|
||||
await new Promise(resolve => {
|
||||
window.addEventListener('DOMContentLoaded', resolve);
|
||||
});
|
||||
// Small delay to give chrome's test automation a chance to actually install
|
||||
// itself.
|
||||
await new Promise(resolve => step_timeout(resolve, 100));
|
||||
|
||||
await window.test_driver.bless('show a font chooser.<br />Please select at least one font.');
|
||||
const fonts = await navigator.fonts.showFontChooser();
|
||||
assert_true(Array.isArray(fonts));
|
||||
assert_greater_than_equal(fonts.length, 1);
|
||||
|
||||
const postscriptName = fonts[0].postscriptName;
|
||||
assert_equals(typeof postscriptName, "string");
|
||||
assert_greater_than(postscriptName.length, 0);
|
||||
}, 'showFontChooser works');
|
||||
|
||||
</script>
|
|
@ -1,8 +0,0 @@
|
|||
'use strict';
|
||||
|
||||
font_access_test(async t => {
|
||||
await promise_rejects_dom(
|
||||
t, 'NotSupportedError', navigator.fonts.showFontChooser());
|
||||
await promise_rejects_dom(
|
||||
t, 'NotSupportedError', navigator.fonts.showFontChooser({all: false}));
|
||||
});
|
|
@ -8,8 +8,12 @@
|
|||
}
|
||||
</style>
|
||||
<body>
|
||||
The triangle below should be currentColor when forced colors mode.
|
||||
<svg height="600" width="600">
|
||||
<path fill="currentColor" d="M150 0 L75 200 L225 200 Z" />
|
||||
The triangle below should NOT get overridden in forced colors mode.
|
||||
<svg height="200" width="350">
|
||||
<path fill="red" stroke="blue" d="M150 0 L75 200 L225 200 Z" />
|
||||
</svg>
|
||||
The triangle below should be currentColor in forced colors mode.
|
||||
<svg height="200" width="350">
|
||||
<path fill="currentColor" stroke="currentColor" d="M150 0 L75 200 L225 200 Z" />
|
||||
</svg>
|
||||
</body>
|
||||
|
|
|
@ -12,8 +12,12 @@
|
|||
</style>
|
||||
<body>
|
||||
<div>
|
||||
The triangle below should be currentColor when forced colors mode.
|
||||
<svg height="600" width="600">
|
||||
The triangle below should NOT get overridden in forced colors mode.
|
||||
<svg height="200" width="350">
|
||||
<path d="M150 0 L75 200 L225 200 Z" />
|
||||
</svg>
|
||||
The triangle below should be currentColor in forced colors mode.
|
||||
<svg height="200" width="350" style="forced-color-adjust: auto;">
|
||||
<path d="M150 0 L75 200 L225 200 Z" />
|
||||
</svg>
|
||||
</div>
|
||||
|
|
|
@ -4,14 +4,17 @@
|
|||
</title>
|
||||
<style>
|
||||
a {
|
||||
fill: VisitedText;
|
||||
color: VisitedText;
|
||||
forced-color-adjust: none;
|
||||
}
|
||||
</style>
|
||||
<a href="">
|
||||
The triangle below should not preserve the blue/green fill/stroke colors
|
||||
in forced colors mode.
|
||||
<svg height="600" width="600">
|
||||
<path d="M150 0 L75 200 L225 200 Z" />
|
||||
The triangle below should NOT get overridden in forced colors mode.
|
||||
<svg height="200" width="350">
|
||||
<path fill="blue" stroke="green" d="M150 0 L75 200 L225 200 Z" />
|
||||
</svg>
|
||||
The triangle below should be currentColor in forced colors mode.
|
||||
<svg height="200" width="350">
|
||||
<path fill="currentColor" stroke="currentColor" d="M150 0 L75 200 L225 200 Z" />
|
||||
</svg>
|
||||
</a>
|
|
@ -15,9 +15,12 @@
|
|||
}
|
||||
</style>
|
||||
<a href="">
|
||||
The triangle below should not preserve the blue/green fill/stroke colors
|
||||
in forced colors mode.
|
||||
<svg height="600" width="600">
|
||||
The triangle below should NOT get overridden in forced colors mode.
|
||||
<svg height="200" width="350">
|
||||
<path d="M150 0 L75 200 L225 200 Z" />
|
||||
</svg>
|
||||
The triangle below should be currentColor in forced colors mode.
|
||||
<svg height="200" width="350" style="forced-color-adjust: auto;">
|
||||
<path d="M150 0 L75 200 L225 200 Z" />
|
||||
</svg>
|
||||
</a>
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Forced colors mode - computed value.
|
||||
Ensures that forced colors do not affect the computed style.
|
||||
</title>
|
||||
<link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced-colors-properties">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<style>
|
||||
div {
|
||||
background-color: green;
|
||||
border-color: green;
|
||||
fill: green;
|
||||
outline-color: green;
|
||||
stroke: green;
|
||||
}
|
||||
</style>
|
||||
<div id="div">
|
||||
Forced colors should not affect the computed style.
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const properties_to_test = [
|
||||
"background-color",
|
||||
"border-bottom-color",
|
||||
"border-left-color",
|
||||
"border-right-color",
|
||||
"border-top-color",
|
||||
"fill",
|
||||
"outline-color",
|
||||
"stroke"
|
||||
];
|
||||
for (let property of properties_to_test) {
|
||||
test(function() {
|
||||
let value = document.getElementById("div").computedStyleMap()
|
||||
.get(property).toString();
|
||||
assert_equals(value, "rgb(0, 128, 0)")
|
||||
}, "Forced colors aren't applied at computed value time for " + property);
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,36 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Forced colors mode - resolved value.
|
||||
Forced colors happens at used value time. The resolved values of certain color
|
||||
properties are used values. This test ensures that those values are forced in
|
||||
forced colors mode.
|
||||
</title>
|
||||
<link rel="help" href="https://www.w3.org/TR/css-color-adjust-1/#forced-colors-properties">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<style>
|
||||
div {
|
||||
background-color: green;
|
||||
border-color: green;
|
||||
outline-color: green;
|
||||
}
|
||||
</style>
|
||||
<div id="div"></div>
|
||||
|
||||
<script>
|
||||
const properties_to_test = [
|
||||
"background-color",
|
||||
"border-bottom-color",
|
||||
"border-left-color",
|
||||
"border-right-color",
|
||||
"border-top-color",
|
||||
"outline-color"
|
||||
];
|
||||
for (let property of properties_to_test) {
|
||||
test(function() {
|
||||
let value =
|
||||
window.getComputedStyle(document.getElementById("div")).getPropertyValue(property);
|
||||
assert_not_equals(value, "rgb(0, 128, 0)")
|
||||
}, "Forced colors affects the resolved value of " + property);
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<style>
|
||||
div {
|
||||
background-color: green;
|
||||
height: 150px;
|
||||
position: absolute;
|
||||
width: 150px;
|
||||
top: 50px;
|
||||
}
|
||||
</style>
|
||||
<p>There should be no red.</p>
|
||||
<div></div>
|
|
@ -0,0 +1,22 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Fieldset with a border-radius and non-opaque border-color</title>
|
||||
<link rel="match" href="fieldset-border-radius-with-alpha-ref.html">
|
||||
<style>
|
||||
fieldset {
|
||||
background-color: green;
|
||||
border: 3px solid rgba(255, 0, 0, 0.9);
|
||||
border-radius: 4px;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
}
|
||||
div {
|
||||
background-color: green;
|
||||
height: 150px;
|
||||
position: absolute;
|
||||
width: 150px;
|
||||
top: 50px;
|
||||
}
|
||||
</style>
|
||||
<p>There should be no red.</p>
|
||||
<fieldset></fieldset>
|
||||
<div></div>
|
|
@ -1,3 +1,3 @@
|
|||
[eventOrder.html]
|
||||
expected:
|
||||
if product == "safari" or product == "epiphany" or product == "webkit": ERROR
|
||||
if product == "epiphany" or product == "webkit": ERROR
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
[multiTouchPoints.html]
|
||||
expected:
|
||||
if product == "firefox" or product == "safari" or product == "epiphany" or product == "webkit": ERROR
|
||||
if product == "firefox" or product == "epiphany" or product == "webkit": ERROR
|
||||
|
||||
[TestDriver actions: two touch points with one moving one pause]
|
||||
expected:
|
||||
if product == "safari": FAIL
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
[multiTouchPointsReleaseFirstPoint.html]
|
||||
expected:
|
||||
if product == "firefox" or product == "safari": ERROR
|
||||
if product == "firefox": ERROR
|
||||
|
||||
[TestDriver actions: two touch points with one moving one pause]
|
||||
expected:
|
||||
if product == "safari": FAIL
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
[multiTouchPointsReleaseSecondPoint.html]
|
||||
expected:
|
||||
if product == "firefox" or product == "safari": ERROR
|
||||
if product == "firefox": ERROR
|
||||
|
||||
[TestDriver actions: two touch points with one moving one pause]
|
||||
expected:
|
||||
if product == "safari": FAIL
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
[multiTouchPointsTwoTouchStarts.html]
|
||||
expected:
|
||||
if product == "firefox" or product == "safari": ERROR
|
||||
expected:
|
||||
if product == "firefox": ERROR
|
||||
|
||||
[TestDriver actions: two touch points with one moving one pause]
|
||||
expected:
|
||||
if product == "safari": FAIL
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
[multiTouchPointsWithPause.html]
|
||||
expected:
|
||||
if product == "firefox" or product == "safari": ERROR
|
||||
if product == "firefox": ERROR
|
||||
|
||||
[TestDriver actions: two touch points with one moving one pause]
|
||||
expected:
|
||||
if product == "safari": FAIL
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>TestDriver multiple consecutive clicks</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
|
||||
<button type="button" id="button1">Button 1</button>
|
||||
<button type="button" id="button2">Button 2</button>
|
||||
<button type="button" id="button3">Button 3</button>
|
||||
|
||||
<script>
|
||||
buttons = [
|
||||
document.getElementById("button1"),
|
||||
document.getElementById("button2"),
|
||||
document.getElementById("button3"),
|
||||
];
|
||||
|
||||
promise_test(async t => {
|
||||
clicked = [false, false, false];
|
||||
for (let i = 0; i < buttons.length; i++) {
|
||||
buttons[i].addEventListener("click", () => {
|
||||
clicked[i] = true;
|
||||
});
|
||||
}
|
||||
|
||||
await Promise.all([
|
||||
test_driver.click(buttons[0]),
|
||||
test_driver.click(buttons[1]),
|
||||
test_driver.click(buttons[2]),
|
||||
]);
|
||||
|
||||
assert_true(clicked[0]);
|
||||
assert_true(clicked[1]);
|
||||
assert_true(clicked[2]);
|
||||
});
|
||||
</script>
|
|
@ -55,8 +55,8 @@ interface NDEFWriter {
|
|||
interface NDEFReader : EventTarget {
|
||||
constructor();
|
||||
|
||||
attribute EventHandler onerror;
|
||||
attribute EventHandler onreading;
|
||||
attribute EventHandler onreadingerror;
|
||||
|
||||
Promise<undefined> scan(optional NDEFScanOptions options={});
|
||||
};
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
<!DOCTYPE html>
|
||||
<style>
|
||||
p::first-letter { --panel-arrowcontent-color:-moz-FieldText; }
|
||||
</style>
|
||||
<p>
|
||||
<math display="block">
|
||||
<mo>∫</mo>
|
||||
</math>
|
||||
</p>
|
|
@ -0,0 +1,111 @@
|
|||
<!DOCTYPE html>
|
||||
<title>ScrollTimelines may trigger multiple style/layout passes</title>
|
||||
<link rel="help" src="https://github.com/w3c/csswg-drafts/issues/5261">
|
||||
<link rel="help" src="https://drafts.csswg.org/scroll-animations-1/#avoiding-cycles">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/web-animations/testcommon.js"></script>
|
||||
<style>
|
||||
@keyframes expand_width {
|
||||
from { width: 100px; }
|
||||
to { width: 100px; }
|
||||
}
|
||||
@keyframes expand_height {
|
||||
from { height: 100px; }
|
||||
to { height: 100px; }
|
||||
}
|
||||
@scroll-timeline timeline1 {
|
||||
source: selector(#scroller1);
|
||||
time-range: 10s;
|
||||
}
|
||||
@scroll-timeline timeline2 {
|
||||
source: selector(#scroller2);
|
||||
time-range: 10s;
|
||||
}
|
||||
main {
|
||||
height: 0px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.scroller {
|
||||
height: 100px;
|
||||
overflow: scroll;
|
||||
}
|
||||
.scroller > div {
|
||||
height: 200px;
|
||||
}
|
||||
#element1 {
|
||||
width: 1px;
|
||||
animation: expand_width 10s timeline1;
|
||||
}
|
||||
#element2 {
|
||||
height: 1px;
|
||||
animation: expand_height 10s timeline2;
|
||||
}
|
||||
</style>
|
||||
<main id=main></main>
|
||||
<div id=element1></div>
|
||||
<div>
|
||||
<div id=element2></div>
|
||||
</div>
|
||||
<script>
|
||||
function insertScroller(id) {
|
||||
let scroller = document.createElement('div');
|
||||
scroller.setAttribute('id', id);
|
||||
scroller.setAttribute('class', 'scroller');
|
||||
scroller.append(document.createElement('div'));
|
||||
main.append(scroller);
|
||||
}
|
||||
|
||||
promise_test(async () => {
|
||||
await waitForNextFrame();
|
||||
|
||||
let events1 = [];
|
||||
let events2 = [];
|
||||
|
||||
insertScroller('scroller1');
|
||||
// Even though #scroller1 was just inserted into the DOM, |timeline1|
|
||||
// remains inactive until the next frame.
|
||||
//
|
||||
// https://drafts.csswg.org/scroll-animations-1/#avoiding-cycles
|
||||
assert_equals(getComputedStyle(element1).width, '1px');
|
||||
(new ResizeObserver(entries => {
|
||||
events1.push(entries);
|
||||
insertScroller('scroller2');
|
||||
assert_equals(getComputedStyle(element2).height, '1px');
|
||||
})).observe(element1);
|
||||
|
||||
(new ResizeObserver(entries => {
|
||||
events2.push(entries);
|
||||
})).observe(element2);
|
||||
|
||||
await waitForNextFrame();
|
||||
|
||||
// According to the basic rules of the spec [1], the timeline is
|
||||
// inactive at the time the resize observer event was delivered, because
|
||||
// #scroller1 did not have a layout box at the time style recalc for
|
||||
// #element1 happened.
|
||||
//
|
||||
// However, an additional style/layout pass should take place
|
||||
// (before resize observer deliveries) if we detect new ScrollTimelines
|
||||
// in this situation, hence we ultimately do expect the animation to
|
||||
// apply [2].
|
||||
//
|
||||
// [1] https://drafts.csswg.org/scroll-animations-1/#avoiding-cycles
|
||||
// [2] https://github.com/w3c/csswg-drafts/issues/5261
|
||||
assert_equals(events1.length, 1);
|
||||
assert_equals(events1[0].length, 1);
|
||||
assert_equals(events1[0][0].contentBoxSize.length, 1);
|
||||
assert_equals(events1[0][0].contentBoxSize[0].inlineSize, 100);
|
||||
|
||||
// ScrollTimelines created during the ResizeObserver should remain
|
||||
// inactive during the frame they're created, so the ResizeObserver
|
||||
// event should not reflect the animated value.
|
||||
assert_equals(events2.length, 1);
|
||||
assert_equals(events2[0].length, 1);
|
||||
assert_equals(events2[0][0].contentBoxSize.length, 1);
|
||||
assert_equals(events2[0][0].contentBoxSize[0].blockSize, 1);
|
||||
|
||||
assert_equals(getComputedStyle(element1).width, '100px');
|
||||
assert_equals(getComputedStyle(element2).height, '100px');
|
||||
}, 'Multiple style/layout passes occur when necessary');
|
||||
</script>
|
|
@ -7,77 +7,64 @@
|
|||
<body>
|
||||
<script>
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test((t) => {
|
||||
return runTest(t, 'resources/claim-worker-fetch-iframe.html');
|
||||
}, 'fetch() in Worker should be intercepted after the client is claimed.');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test((t) => {
|
||||
return runTest(t, 'resources/claim-nested-worker-fetch-iframe.html');
|
||||
}, 'fetch() in nested Worker should be intercepted after the client is claimed.');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test((t) => {
|
||||
return runTest(t, 'resources/claim-blob-url-worker-fetch-iframe.html');
|
||||
}, 'fetch() in blob URL Worker should be intercepted after the client is claimed.');
|
||||
|
||||
function runTest(t, iframe_url) {
|
||||
var resource = 'simple.txt';
|
||||
async function runTest(t, iframe_url) {
|
||||
const resource = 'simple.txt';
|
||||
const scope = 'resources/';
|
||||
const script = 'resources/claim-worker.js';
|
||||
|
||||
var frame;
|
||||
var registration;
|
||||
var worker;
|
||||
var scope = 'resources/';
|
||||
var script = 'resources/claim-worker.js';
|
||||
// Create the test iframe with a dedicated worker.
|
||||
const frame = await with_iframe(iframe_url);
|
||||
t.add_cleanup(_ => frame.remove());
|
||||
|
||||
return Promise.resolve()
|
||||
// Create the test iframe with a dedicated worker.
|
||||
.then(() => with_iframe(iframe_url))
|
||||
.then(f => {
|
||||
t.add_cleanup(() => f.remove());
|
||||
frame = f;
|
||||
})
|
||||
// Check the controller and test with fetch in the worker.
|
||||
assert_equals(frame.contentWindow.navigator.controller,
|
||||
undefined, 'Should have no controller.');
|
||||
{
|
||||
const response_text = await frame.contentWindow.fetch_in_worker(resource);
|
||||
assert_equals(response_text, 'a simple text file\n',
|
||||
'fetch() should not be intercepted.');
|
||||
}
|
||||
|
||||
// Check the controller and test with fetch in the worker.
|
||||
.then(() => assert_equals(frame.contentWindow.navigator.controller,
|
||||
undefined,
|
||||
'Should have no controller.'))
|
||||
.then(() => frame.contentWindow.fetch_in_worker(resource))
|
||||
.then(response_text => assert_equals(response_text,
|
||||
'a simple text file\n',
|
||||
'fetch() should not be intercepted.'))
|
||||
// Register a service worker.
|
||||
.then(() => service_worker_unregister_and_register(t, script, scope))
|
||||
.then(r => {
|
||||
t.add_cleanup(() => r.unregister());
|
||||
worker = r.installing;
|
||||
})
|
||||
.then(() => wait_for_state(t, worker, 'activated'))
|
||||
// Register a service worker.
|
||||
const reg = await service_worker_unregister_and_register(t, script, scope);
|
||||
t.add_cleanup(_ => reg.unregister());
|
||||
await wait_for_state(t, reg.installing, 'activated');
|
||||
|
||||
// Let the service worker claim the iframe and the worker.
|
||||
.then(() => {
|
||||
var channel = new MessageChannel();
|
||||
var saw_message = new Promise(function(resolve) {
|
||||
channel.port1.onmessage = t.step_func(function(e) {
|
||||
assert_equals(e.data, 'PASS',
|
||||
'Worker call to claim() should fulfill.');
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
worker.postMessage({port: channel.port2}, [channel.port2]);
|
||||
return saw_message;
|
||||
})
|
||||
// Let the service worker claim the iframe and the worker.
|
||||
const channel = new MessageChannel();
|
||||
const saw_message = new Promise(function(resolve) {
|
||||
channel.port1.onmessage = t.step_func(function(e) {
|
||||
assert_equals(e.data, 'PASS', 'Worker call to claim() should fulfill.');
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
reg.active.postMessage({port: channel.port2}, [channel.port2]);
|
||||
await saw_message;
|
||||
|
||||
// Check the controller and test with fetch in the worker.
|
||||
.then(() => frame.contentWindow.navigator.serviceWorker.getRegistration(scope))
|
||||
.then(r => registration = r)
|
||||
.then(() => assert_equals(frame.contentWindow.navigator.serviceWorker.controller,
|
||||
registration.active,
|
||||
'Test iframe should be claimed.'))
|
||||
// Check the controller and test with fetch in the worker.
|
||||
const reg2 =
|
||||
await frame.contentWindow.navigator.serviceWorker.getRegistration(scope);
|
||||
assert_equals(frame.contentWindow.navigator.serviceWorker.controller,
|
||||
reg2.active, 'Test iframe should be claimed.');
|
||||
|
||||
{
|
||||
// TODO(horo): Check the worker's navigator.seviceWorker.controller.
|
||||
.then(() => frame.contentWindow.fetch_in_worker(resource))
|
||||
.then(response_text =>
|
||||
assert_equals(response_text,
|
||||
'Intercepted!',
|
||||
'fetch() in the worker should be intercepted.'));
|
||||
const response_text = await frame.contentWindow.fetch_in_worker(resource);
|
||||
assert_equals(response_text, 'Intercepted!',
|
||||
'fetch() in the worker should be intercepted.');
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
cask "safari-technology-preview" do
|
||||
if MacOS.version <= :catalina
|
||||
version "115,001-62651-20201022-6cd92e18-bfbe-48cc-9385-d84da8f3c24c"
|
||||
sha256 "e4b29ac2a0d60e48bae7d9c635853ff7dadc59a82dd53f340b623eeb5538f657"
|
||||
version "116,001-82546-20201119-d46bca22-a3dc-43c3-9fcf-29f7343956ac"
|
||||
sha256 "37a631632e2d449ce5dfb117d0eb7fd14574f00ca306c27667ffbbe6b1c0bc68"
|
||||
else
|
||||
version "115,001-62679-20201022-42e0d63a-527a-45af-beb1-02cd4095e341"
|
||||
sha256 "815276ca814e49a6b2e8eb8429d6e6644de2db89527fbbce83cb9d69f54783f7"
|
||||
version "116,001-69966-20201119-d87990cd-c094-40a8-a616-a4497506caed"
|
||||
sha256 "64b82eb45729ee366272da25849039762c5382373ebedbad30168d80a06ec6b7"
|
||||
end
|
||||
|
||||
url "https://secure-appldnld.apple.com/STP/#{version.after_comma}/SafariTechnologyPreview.dmg"
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
} else if (data.type === "testdriver-complete") {
|
||||
const cmd_id = data.cmd_id;
|
||||
const [on_success, on_failure] = pending.get(cmd_id);
|
||||
pending.clear(cmd_id);
|
||||
pending.delete(cmd_id);
|
||||
const resolver = data.status === "success" ? on_success : on_failure;
|
||||
resolver(data);
|
||||
if (is_test_context) {
|
||||
|
|
|
@ -9,12 +9,13 @@
|
|||
<script>
|
||||
|
||||
nfc_test(async (t, mockNFC) => {
|
||||
mockNFC.simulateClosedPipe();
|
||||
const reader = new NDEFReader();
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
|
||||
const promise = readerWatcher.wait_for("reading").then(event => {
|
||||
if (document.hidden) reject();
|
||||
resolve();
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "readingerror"]);
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
readerWatcher.wait_for("reading").then(event => {
|
||||
if (document.hidden) reject();
|
||||
else resolve();
|
||||
});
|
||||
});
|
||||
await reader.scan();
|
||||
await promise;
|
||||
|
|
|
@ -46,14 +46,8 @@ nfc_test(async t => {
|
|||
nfc_test(async (t, mockNFC) => {
|
||||
mockNFC.simulateClosedPipe();
|
||||
const reader = new NDEFReader();
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
|
||||
const promise = readerWatcher.wait_for("error").then(event => {
|
||||
assert_true(event instanceof ErrorEvent);
|
||||
});
|
||||
await promise_rejects_dom(t, 'NotSupportedError', reader.scan());
|
||||
await promise;
|
||||
}, "Test that an error event happens if no implementation for NFC Mojo interface \
|
||||
is available.");
|
||||
}, "NDEFReader.scan should faild if no implementation for NFC Mojo interface.");
|
||||
|
||||
nfc_test(async (t, mockNFC) => {
|
||||
mockNFC.setHWStatus(NFCHWStatus.DISABLED);
|
||||
|
@ -70,7 +64,7 @@ nfc_test(async (t, mockNFC) => {
|
|||
nfc_test(async (t, mockNFC) => {
|
||||
const reader = new NDEFReader();
|
||||
const controller = new AbortController();
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "readingerror"]);
|
||||
const promise = readerWatcher.wait_for("reading").then(event => {
|
||||
assert_true(event instanceof NDEFReadingEvent);
|
||||
controller.abort();
|
||||
|
@ -84,7 +78,7 @@ nfc_test(async (t, mockNFC) => {
|
|||
nfc_test(async (t, mockNFC) => {
|
||||
const reader = new NDEFReader();
|
||||
const controller = new AbortController();
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "readingerror"]);
|
||||
const promise = readerWatcher.wait_for("reading").then(event => {
|
||||
assert_true(event instanceof NDEFReadingEvent);
|
||||
controller.abort();
|
||||
|
@ -114,7 +108,7 @@ the scan invocation.");
|
|||
nfc_test(async (t, mockNFC) => {
|
||||
const reader = new NDEFReader();
|
||||
const controller = new AbortController();
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "readingerror"]);
|
||||
const message = createMessage([createTextRecord(test_text_data)]);
|
||||
const promise = readerWatcher.wait_for("reading").then(event => {
|
||||
assert_true(event instanceof NDEFReadingEvent);
|
||||
|
@ -135,7 +129,7 @@ nfc_test(async (t, mockNFC) => {
|
|||
nfc_test(async (t, mockNFC) => {
|
||||
const reader = new NDEFReader();
|
||||
const controller = new AbortController();
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "readingerror"]);
|
||||
const promise = readerWatcher.wait_for("reading").then(event => {
|
||||
controller.abort();
|
||||
assert_true(event instanceof NDEFReadingEvent);
|
||||
|
@ -172,7 +166,7 @@ nfc_test(async (t, mockNFC) => {
|
|||
nfc_test(async (t, mockNFC) => {
|
||||
const reader = new NDEFReader();
|
||||
const controller = new AbortController();
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "readingerror"]);
|
||||
const promise = readerWatcher.wait_for("reading").then(event => {
|
||||
controller.abort();
|
||||
assert_true(event instanceof NDEFReadingEvent);
|
||||
|
@ -225,30 +219,26 @@ nfc_test(async (t, mockNFC) => {
|
|||
const promises = [];
|
||||
|
||||
const reader1 = new NDEFReader();
|
||||
const readerWatcher1 = new EventWatcher(t, reader1, ["reading", "error"]);
|
||||
const promise1 = readerWatcher1.wait_for("error").then(event => {
|
||||
assert_true(event instanceof ErrorEvent);
|
||||
});
|
||||
const readerWatcher1 = new EventWatcher(t, reader1, ["reading", "readingerror"]);
|
||||
const promise1 = readerWatcher1.wait_for("readingerror");
|
||||
promises.push(promise1);
|
||||
await reader1.scan();
|
||||
|
||||
const reader2 = new NDEFReader();
|
||||
const readerWatcher2 = new EventWatcher(t, reader2, ["reading", "error"]);
|
||||
const promise2 = readerWatcher2.wait_for("error").then(event => {
|
||||
assert_true(event instanceof ErrorEvent);
|
||||
});
|
||||
const readerWatcher2 = new EventWatcher(t, reader2, ["reading", "readingerror"]);
|
||||
const promise2 = readerWatcher2.wait_for("readingerror");
|
||||
promises.push(promise2);
|
||||
await reader2.scan();
|
||||
|
||||
mockNFC.simulateNonNDEFTagDiscovered();
|
||||
await Promise.all(promises);
|
||||
}, "Test that NDEFReader.onerror should be fired if the NFC tag does not \
|
||||
}, "Test that NDEFReader.onreadingerror should be fired if the NFC tag does not \
|
||||
expose NDEF technology.");
|
||||
|
||||
nfc_test(async (t, mockNFC) => {
|
||||
const reader = new NDEFReader();
|
||||
const controller = new AbortController();
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "readingerror"]);
|
||||
const promise = readerWatcher.wait_for("reading").then(event => {
|
||||
assert_equals(event.serialNumber, fake_tag_serial_number);
|
||||
assert_equals(event.message.records.length, 0);
|
||||
|
@ -272,7 +262,7 @@ nfc_test(async (t, mockNFC) => {
|
|||
createUrlRecord(test_url_data, true),
|
||||
createRecord('w3.org:xyz', test_buffer_data)],
|
||||
test_message_origin);
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "readingerror"]);
|
||||
const promise = readerWatcher.wait_for("reading").then(event => {
|
||||
assert_equals(event.serialNumber, fake_tag_serial_number);
|
||||
assertWebNDEFMessagesEqual(event.message, new NDEFMessage(message));
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
nfc_test(async (t, mockNFC) => {
|
||||
const reader = new NDEFReader();
|
||||
const controller = new AbortController();
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "readingerror"]);
|
||||
|
||||
const promise = readerWatcher.wait_for("reading").then(event => {
|
||||
assert_true(event instanceof NDEFReadingEvent);
|
||||
|
|
|
@ -204,7 +204,7 @@ function testMultiScanOptions(message, scanOptions, unmatchedScanOptions, desc)
|
|||
unmatchedScanOptions.signal = controller.signal;
|
||||
await reader1.scan(unmatchedScanOptions);
|
||||
|
||||
const readerWatcher = new EventWatcher(t, reader2, ["reading", "error"]);
|
||||
const readerWatcher = new EventWatcher(t, reader2, ["reading", "readingerror"]);
|
||||
const promise = readerWatcher.wait_for("reading").then(event => {
|
||||
controller.abort();
|
||||
assertWebNDEFMessagesEqual(event.message, new NDEFMessage(message));
|
||||
|
@ -221,7 +221,7 @@ function testMultiMessages(message, scanOptions, unmatchedMessage, desc) {
|
|||
nfc_test(async (t, mockNFC) => {
|
||||
const reader = new NDEFReader();
|
||||
const controller = new AbortController();
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "error"]);
|
||||
const readerWatcher = new EventWatcher(t, reader, ["reading", "readingerror"]);
|
||||
const promise = readerWatcher.wait_for("reading").then(event => {
|
||||
controller.abort();
|
||||
assertWebNDEFMessagesEqual(event.message, new NDEFMessage(message));
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<title>Test the AudioDecoder API.</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/webcodecs/utils.js"></script>
|
||||
<script>
|
||||
// META: global=window,dedicatedworker
|
||||
// META: script=/webcodecs/utils.js
|
||||
|
||||
const defaultConfig = {
|
||||
codec: "opus",
|
||||
|
@ -59,7 +54,3 @@ promise_test(t => {
|
|||
|
||||
return testUnconfiguredCodec(t, decoder, getFakeChunk());
|
||||
}, 'Verify unconfigured AudioDecoder operations');
|
||||
|
||||
|
||||
</script>
|
||||
</html>
|
|
@ -1,14 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<title>Test the VideoDecoder API.</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/webcodecs/utils.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
// META: global=window,dedicatedworker
|
||||
// META: script=/webcodecs/utils.js
|
||||
|
||||
// TODO(sandersd): Move metadata into a helper library.
|
||||
// TODO(sandersd): Add H.264 idecode test once there is an API to query for
|
||||
// TODO(sandersd): Add H.264 decode test once there is an API to query for
|
||||
// supported codecs.
|
||||
let h264 = {
|
||||
async buffer() { return (await fetch('h264.mp4')).arrayBuffer(); },
|
||||
|
@ -217,5 +211,3 @@ promise_test(t => {
|
|||
// or error coming.
|
||||
return promise_rejects_exactly(t, undefined, flushPromise);
|
||||
}, 'Close while decoding corrupt VP9 frame');
|
||||
</script>
|
||||
</html>
|
|
@ -1,12 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<title>Test posting VideoFrames.</title>
|
||||
<body></body>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/common/media.js"></script>
|
||||
<script src="/webcodecs/utils.js"></script>
|
||||
<script>
|
||||
// META: global=window,dedicatedworker
|
||||
// META: script=/common/media.js
|
||||
// META: script=/webcodecs/utils.js
|
||||
|
||||
var defaultInit = {
|
||||
timestamp : 100,
|
||||
|
@ -118,6 +112,3 @@ async_test(t => {
|
|||
|
||||
t.done();
|
||||
}, 'Verify posting destroyed frames throws.');
|
||||
|
||||
</script>
|
||||
</html>
|
|
@ -1,11 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<title>Test the VideoFrame API.</title>
|
||||
<body></body>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/webcodecs/utils.js"></script>
|
||||
<script>
|
||||
// META: global=window,dedicatedworker
|
||||
// META: script=/webcodecs/utils.js
|
||||
|
||||
test(t => {
|
||||
let image = makeImageBitmap(32, 16);
|
||||
|
@ -103,6 +97,3 @@ test(t => {
|
|||
let frame = new VideoFrame(image, {timestamp: 10});
|
||||
})
|
||||
}, 'Test constructing VideoFrames from closed ImageBitmap throws.');
|
||||
|
||||
</script>
|
||||
</html>
|
|
@ -245,3 +245,6 @@
|
|||
[WebGL test #40: attachment 3 should be 0,255,0,255\nat (0, 0) expected: 0,255,0,255 was 0,14,0,0]
|
||||
expected: FAIL
|
||||
|
||||
[WebGL test #44: attachment 7 should be 0,255,0,255\nat (4, 0) expected: 0,255,0,255 was 255,45,0,0]
|
||||
expected: FAIL
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue