Update web-platform-tests to revision cb32b4d04799e9de2e2505d7dddfab1429247070

This commit is contained in:
WPT Sync Bot 2020-11-21 08:21:14 +00:00
parent d3ebe51053
commit b89132d428
95 changed files with 1039 additions and 331 deletions

View 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

View file

@ -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

View file

@ -0,0 +1,4 @@
[hit-test-floats-003.html]
[Miss float below something else]
expected: FAIL

View file

@ -0,0 +1,4 @@
[hit-test-floats-004.html]
[Miss float below something else]
expected: FAIL

View file

@ -1,4 +0,0 @@
[hit-test-floats-005.html]
[Miss clipped float]
expected: FAIL

View file

@ -2,3 +2,6 @@
[Hit test intersecting scaled box]
expected: FAIL
[Hit test within unscaled box]
expected: FAIL

View file

@ -0,0 +1,4 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -17,6 +17,3 @@
[test the top of layer]
expected: FAIL
[test some point of the element: top left corner]
expected: FAIL

View file

@ -1,2 +0,0 @@
[matchMedia-display-none-iframe.html]
expected: ERROR

View file

@ -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

View file

@ -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

View file

@ -1,4 +0,0 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

@ -1,4 +0,0 @@
[traverse_the_history_2.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -1,4 +1,4 @@
[traverse_the_history_2.html]
[traverse_the_history_3.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -0,0 +1,2 @@
[cross-origin-objects-on-new-window.html]
expected: TIMEOUT

View file

@ -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

View file

@ -171,6 +171,3 @@
[XHTML img usemap="#hash-id"]
expected: FAIL
[HTML (standards) IMG usemap="no-hash-name"]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,4 @@
[form-double-submit.html]
[default submit action should supersede onclick submit()]
expected: FAIL

View file

@ -1,4 +0,0 @@
[activation-behavior.window.html]
[<a> that is not connected should be followed]
expected: FAIL

View file

@ -1,2 +0,0 @@
[script-onerror-insertion-point-2.html]
expected: TIMEOUT

View file

@ -1,4 +0,0 @@
[module-delayed.html]
[async document.write in a module]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -1,5 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -1,5 +1,4 @@
[003.html]
expected: ERROR
[shared]
expected: FAIL

View 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

View file

@ -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

View file

@ -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": [

View file

@ -0,0 +1,4 @@
[hit-test-floats-003.html]
[Miss float below something else]
expected: FAIL

View file

@ -0,0 +1,4 @@
[hit-test-floats-004.html]
[Miss float below something else]
expected: FAIL

View file

@ -1,4 +0,0 @@
[hit-test-floats-005.html]
[Miss clipped float]
expected: FAIL

View file

@ -2,3 +2,6 @@
[Hit test intersecting scaled box]
expected: FAIL
[Hit test within unscaled box]
expected: FAIL

View file

@ -0,0 +1,4 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -21,6 +21,3 @@
[test the top of layer]
expected: FAIL
[test some point of the element: top left corner]
expected: FAIL

View file

@ -1,2 +0,0 @@
[matchMedia-display-none-iframe.html]
expected: ERROR

View file

@ -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

View file

@ -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

View file

@ -1,4 +0,0 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

@ -1,4 +1,4 @@
[traverse_the_history_5.html]
[traverse_the_history_3.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -1,4 +0,0 @@
[traverse_the_history_5.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -0,0 +1,2 @@
[cross-origin-objects-on-new-window.html]
expected: TIMEOUT

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,4 @@
[form-double-submit.html]
[default submit action should supersede onclick submit()]
expected: FAIL

View file

@ -1,4 +0,0 @@
[activation-behavior.window.html]
[<a> that is not connected should be followed]
expected: FAIL

View file

@ -1,2 +0,0 @@
[script-onerror-insertion-point-2.html]
expected: TIMEOUT

View file

@ -1,4 +0,0 @@
[module-delayed.html]
[async document.write in a module]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -1,5 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -1,6 +1,5 @@
[003.html]
type: testharness
expected: ERROR
[shared]
expected: FAIL

View file

@ -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)

View file

@ -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>

View 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 ^ -->

View file

@ -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>

View file

@ -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>

View file

@ -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

View file

@ -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>

View file

@ -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}));
});

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -1,3 +1,3 @@
[eventOrder.html]
expected:
if product == "safari" or product == "epiphany" or product == "webkit": ERROR
if product == "epiphany" or product == "webkit": ERROR

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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>

View file

@ -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={});
};

View file

@ -0,0 +1,9 @@
<!DOCTYPE html>
<style>
p::first-letter { --panel-arrowcontent-color:-moz-FieldText; }
</style>
<p>
<math display="block">
<mo>&#x222B;</mo>
</math>
</p>

View file

@ -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>

View file

@ -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>

View file

@ -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"

View file

@ -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) {

View file

@ -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;

View file

@ -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));

View file

@ -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);

View file

@ -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));

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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