Update web-platform-tests to revision 5254eba7f17d10211b56c0d1958649bca29e8985

This commit is contained in:
WPT Sync Bot 2020-04-07 08:19:11 +00:00
parent 2eb7c8c080
commit 7da408021a
94 changed files with 1172 additions and 444 deletions

View file

@ -0,0 +1,2 @@
[nested-orthogonal-flexbox-relayout.html]
expected: FAIL

View file

@ -2,3 +2,6 @@
[listeners are called when <iframe> is resized] [listeners are called when <iframe> is resized]
expected: FAIL expected: FAIL
[listeners are called correct number of times]
expected: FAIL

View file

@ -1,4 +0,0 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

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

View file

@ -0,0 +1,4 @@
[elementsFromPoint-invalid-cases.html]
[The root element is the last element returned for otherwise empty queries within the viewport]
expected: FAIL

View file

@ -0,0 +1,2 @@
[effect-reference-add-hw-001.html]
expected: FAIL

View file

@ -312,24 +312,24 @@
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK] [Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: NOTRUN expected: NOTRUN
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*] [<iframe>: combined response Content-Type: text/html */*]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" text/plain] [<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain] [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk] [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL

View file

@ -59,6 +59,6 @@
[separate text/javascript;charset=windows-1252 error text/javascript] [separate text/javascript;charset=windows-1252 error text/javascript]
expected: FAIL expected: FAIL
[separate text/javascript error] [separate text/javascript;charset=windows-1252 text/javascript]
expected: FAIL expected: FAIL

View file

@ -11,3 +11,9 @@
[X-Content-Type-Options%3A%20nosniff%0C] [X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%20%22nosniFF%22]
expected: FAIL
[X-Content-Type-Options%3A%20no%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_5.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -11,6 +11,6 @@
[Set HTTP URL frame location.protocol to ftp] [Set HTTP URL frame location.protocol to ftp]
expected: FAIL expected: FAIL
[Set data URL frame location.protocol to file] [Set data URL frame location.protocol to data]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,4 @@
[creating_browsing_context_test_01.html]
[first argument: absolute url]
expected: FAIL

View file

@ -0,0 +1,52 @@
[tabindex-focus-flag.html]
[text with tabindex=invalid should not be focusable.]
expected: FAIL
[A with tabindex=invalid should not be focusable.]
expected: FAIL
[#svg-a should not be focusable by default.]
expected: FAIL
[input[type="hidden"\] should not be focusable by default.]
expected: FAIL
[text with tabindex=0 should be focusable.]
expected: FAIL
[IMG with tabindex=invalid should not be focusable.]
expected: FAIL
[a with tabindex=invalid should not be focusable.]
expected: FAIL
[#summary-first should be focusable by default.]
expected: FAIL
[a with tabindex=0 should be focusable.]
expected: FAIL
[a with tabindex=-1 should be focusable.]
expected: FAIL
[#svg-text should not be focusable by default.]
expected: FAIL
[a should not be focusable by default.]
expected: FAIL
[[contenteditable\] should be focusable by default.]
expected: FAIL
[DIV with tabindex=invalid should not be focusable.]
expected: FAIL
[SUMMARY#summary-out-tabindex-invalid with tabindex=invalid should not be focusable.]
expected: FAIL
[a#with-href with tabindex=invalid should not be focusable.]
expected: FAIL
[text with tabindex=-1 should be focusable.]
expected: FAIL

View file

@ -1,4 +1,8 @@
[skip-document-with-fragment.html] [skip-document-with-fragment.html]
expected: TIMEOUT
[Autofocus elements in iframed documents with URL fragments should be skipped.] [Autofocus elements in iframed documents with URL fragments should be skipped.]
expected: FAIL expected: FAIL
[Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.]
expected: TIMEOUT

View file

@ -1,20 +1,16 @@
[supported-elements.html] [supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus] [Contenteditable element should support autofocus]
expected: FAIL expected: FAIL
[Host element with delegatesFocus including no focusable descendants should be skipped] [Host element with delegatesFocus including no focusable descendants should be skipped]
expected: NOTRUN expected: FAIL
[Element with tabindex should support autofocus] [Element with tabindex should support autofocus]
expected: TIMEOUT expected: FAIL
[Area element should support autofocus] [Area element should support autofocus]
expected: NOTRUN expected: FAIL
[Host element with delegatesFocus should support autofocus] [Host element with delegatesFocus should support autofocus]
expected: NOTRUN expected: FAIL
[Non-HTMLElement should not support autofocus]
expected: NOTRUN

View file

@ -1,5 +1,4 @@
[iframe_sandbox_popups_escaping-3.html] [iframe_sandbox_popups_escaping-3.html]
expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT expected: FAIL

View file

@ -53,3 +53,6 @@
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44061 more errors.\n\tMax AbsError of 1.9999794363975525e+0 at index of 28452.\n\t[28452\]\t9.9997943639755249e-1\t-1.0000000000000000e+0\t1.9999794363975525e+0\t1.9999794363975525e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n] [X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44061 more errors.\n\tMax AbsError of 1.9999794363975525e+0 at index of 28452.\n\t[28452\]\t9.9997943639755249e-1\t-1.0000000000000000e+0\t1.9999794363975525e+0\t1.9999794363975525e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL expected: FAIL
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44052 more errors.\n\tMax AbsError of 1.9999977350234985e+0 at index of 39026.\n\t[39026\]\t9.9999773502349854e-1\t-1.0000000000000000e+0\t1.9999977350234985e+0\t1.9999977350234985e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL

View file

@ -86,3 +86,6 @@
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t-3.3433449219311302e-17\t5.6332010030746460e-1\t5.6332010030746460e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[31081\]\t4.5672520847738763e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31080.\n] [X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t-3.3433449219311302e-17\t5.6332010030746460e-1\t5.6332010030746460e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[31081\]\t4.5672520847738763e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31080.\n]
expected: FAIL expected: FAIL
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t-4.6400068104817376e-34\t5.6332010030746460e-1\t5.6332010030746460e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[31081\]\t4.5571627358307376e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31080.\n]
expected: FAIL

View file

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

View file

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

View file

@ -136815,6 +136815,19 @@
{} {}
] ]
], ],
"nested-orthogonal-flexbox-relayout.html": [
"ef158c6a4884b8ee2840bafe27e605e618aa8be5",
[
null,
[
[
"/css/css-flexbox/reference/nested-orthogonal-flexbox-relayout-ref.html",
"=="
]
],
{}
]
],
"order": { "order": {
"order-with-column-reverse.html": [ "order-with-column-reverse.html": [
"5083d6843649bbbb2bf9d417ae4022042c87e0aa", "5083d6843649bbbb2bf9d417ae4022042c87e0aa",
@ -202804,6 +202817,19 @@
{} {}
] ]
], ],
"background-image-blur-repaint.html": [
"7b3df263081ecceb6517e056e60cfaa35b9981a0",
[
null,
[
[
"/css/filter-effects/reference/background-image-blur-repaint-expected.html",
"=="
]
],
{}
]
],
"blur-clip-stacking-context-001.html": [ "blur-clip-stacking-context-001.html": [
"a96994a8afe126e474f9ee015338749f0015dc1f", "a96994a8afe126e474f9ee015338749f0015dc1f",
[ [
@ -203129,8 +203155,21 @@
{} {}
] ]
], ],
"effect-reference-add-hw-001.html": [
"78f30c35f47926b63d417c29fc063c96b9171c96",
[
null,
[
[
"/css/filter-effects/reference/effect-reference-add-hw-001-ref.html",
"=="
]
],
{}
]
],
"effect-reference-after-001.html": [ "effect-reference-after-001.html": [
"e8bbc787df5ddd047df3e393d8e07b17c2f95fc9", "a6de2465027e99ff6239dd45524862465dde847f",
[ [
null, null,
[ [
@ -238363,7 +238402,7 @@
}, },
"support": { "support": {
".azure-pipelines.yml": [ ".azure-pipelines.yml": [
"fb78944998e33edde5ea614af1a0cf1adc4f02ca", "0bf63f7a374f69063654169e0b74169fce8dc5fd",
[] []
], ],
".codecov.yml": [ ".codecov.yml": [
@ -285751,6 +285790,10 @@
"186c5d130c5ea7facc55ff2ac88b1f1f9edf63af", "186c5d130c5ea7facc55ff2ac88b1f1f9edf63af",
[] []
], ],
"nested-orthogonal-flexbox-relayout-ref.html": [
"124ecf843c848a71918559c0b853032184a5e5b1",
[]
],
"order-painting-ref.html": [ "order-painting-ref.html": [
"bf7bc30d017dd4066193b7ed18bdd94dbfeb8de3", "bf7bc30d017dd4066193b7ed18bdd94dbfeb8de3",
[] []
@ -307227,12 +307270,20 @@
"9ce975c1ef631dc4e8e59c35fcacf6d9c7483b58", "9ce975c1ef631dc4e8e59c35fcacf6d9c7483b58",
[] []
], ],
"background-image-blur-repaint-expected.html": [
"bf16d1fa2890af8d1bdb7b95b44af5bfff4dccaa",
[]
],
"dynamic-filter-changes-001-ref.html": [ "dynamic-filter-changes-001-ref.html": [
"699d57c2a8c087c25079232a443a6e2b72c1e79e", "699d57c2a8c087c25079232a443a6e2b72c1e79e",
[] []
], ],
"effect-reference-add-hw-001-ref.html": [
"79a15223610df684732b9d6d6f5b59810f79403e",
[]
],
"effect-reference-after-001-ref.html": [ "effect-reference-after-001-ref.html": [
"cbcff3fa444c580acc67640ce330edcf898aeeb2", "45192b13451fdfe2f00c17dbc84d30a770426e86",
[] []
], ],
"effect-reference-convolve-error-001-ref.html": [ "effect-reference-convolve-error-001-ref.html": [
@ -307345,6 +307396,10 @@
"85dd7324815b8f8ef1a1d0496224c1a0661db9d8", "85dd7324815b8f8ef1a1d0496224c1a0661db9d8",
[] []
], ],
"color-palette.png": [
"68641b76771abf086dc213b353ac2088fffb931a",
[]
],
"div-with-filter.html": [ "div-with-filter.html": [
"9a4d4105a8d50b55297783871e144a5858d7a33e", "9a4d4105a8d50b55297783871e144a5858d7a33e",
[] []
@ -307385,10 +307440,6 @@
"8b4b25364e0ffbe09e563e13b567fa57330e48d5", "8b4b25364e0ffbe09e563e13b567fa57330e48d5",
[] []
], ],
"reference.png": [
"68641b76771abf086dc213b353ac2088fffb931a",
[]
],
"ruler-h-50%.png": [ "ruler-h-50%.png": [
"cf2eea6b438a11503a89414cbb2f9f1fde55df0c", "cf2eea6b438a11503a89414cbb2f9f1fde55df0c",
[] []
@ -312420,7 +312471,27 @@
[] []
], ],
"experimental-features": { "experimental-features": {
"layout-animations-disabled-tentative.html.headers": [
"bebb5d054826ce19d4a0d4f1381deeb5e72f7270",
[]
],
"layout-animations-disabled-violation-report-js-tentative.html.headers": [
"bebb5d054826ce19d4a0d4f1381deeb5e72f7270",
[]
],
"layout-animations-disabled-violation-report-keyframes-tentative.html.headers": [
"bebb5d054826ce19d4a0d4f1381deeb5e72f7270",
[]
],
"resources": { "resources": {
"animation-property-height.js": [
"79316cb488fade6e877c690f90c74961ff944f52",
[]
],
"common.js": [
"639847abf36d636e537c081a6afd06a3a8fb7f9f",
[]
],
"document-policy-image.html": [ "document-policy-image.html": [
"4e5b919bd112f044cc3ec9e57afe05ae20f22ece", "4e5b919bd112f044cc3ec9e57afe05ae20f22ece",
[] []
@ -314690,18 +314761,6 @@
[] []
], ],
"experimental-features": { "experimental-features": {
"layout-animations-disabled-tentative.html.headers": [
"7c441bbba555d9da8c2cfc34de2ddaf2a52074f4",
[]
],
"layout-animations-disabled-violation-report-js-tentative.html.headers": [
"7c441bbba555d9da8c2cfc34de2ddaf2a52074f4",
[]
],
"layout-animations-disabled-violation-report-keyframes-tentative.html.headers": [
"7c441bbba555d9da8c2cfc34de2ddaf2a52074f4",
[]
],
"lazyload": { "lazyload": {
"lazyload-disabled-image-tentative.sub.html.headers": [ "lazyload-disabled-image-tentative.sub.html.headers": [
"7974815fc9cc069a3890cec9d09d1c6b3e3f9908", "7974815fc9cc069a3890cec9d09d1c6b3e3f9908",
@ -314721,10 +314780,6 @@
] ]
}, },
"resources": { "resources": {
"animation-property-height.js": [
"79316cb488fade6e877c690f90c74961ff944f52",
[]
],
"async-script.js": [ "async-script.js": [
"3c0ee6d02343891b0234f31c0fb229929ae1b24b", "3c0ee6d02343891b0234f31c0fb229929ae1b24b",
[] []
@ -315071,7 +315126,7 @@
[] []
], ],
"feature-policy-screen-wakelock.html": [ "feature-policy-screen-wakelock.html": [
"7d3dab45af1d57c805f14cfdbed142ddb2415eba", "6feed51d498651c6565517df3afb49076bcb7c57",
[] []
], ],
"feature-policy-serial-worker.html": [ "feature-policy-serial-worker.html": [
@ -338401,7 +338456,7 @@
[] []
], ],
"serve.py": [ "serve.py": [
"e4f0d5efaee37170a9c03a208924e483b2a4608a", "45bfd4766ebcd278ab068f9632471c5c23a3c3f1",
[] []
], ],
"test_functional.py": [ "test_functional.py": [
@ -343424,7 +343479,7 @@
[] []
], ],
"environment.py": [ "environment.py": [
"2ed4a0f5f93e17c1aad2c6fb9d5de5b48a07aebe", "cbbee8213266bf2f914a4066437dbfa63c774701",
[] []
], ],
"executors": { "executors": {
@ -344122,7 +344177,7 @@
[] []
], ],
"server.py": [ "server.py": [
"9e842802fc0f1b273cd78313275e0bf78dbcaf64", "c2498c4ee1e8f45de604f71394c3d6feef82aef1",
[] []
], ],
"sslutils": { "sslutils": {
@ -346412,7 +346467,7 @@
[] []
], ],
"RTCRtpParameters-helper.js": [ "RTCRtpParameters-helper.js": [
"d61d8e14932963e9f17c47b99f2998d7ef0e9ff4", "17ecfbaf99e8ff133373f1487a282dbaab7562f6",
[] []
], ],
"RTCStats-helper.js": [ "RTCStats-helper.js": [
@ -381968,13 +382023,6 @@
{} {}
] ]
], ],
"flex-flow-percentage-margins-no-available-space-assert.html": [
"086c4f5dd711fb45b2739dbf74794f81d8e88d95",
[
null,
{}
]
],
"flex-item-contains-strict.html": [ "flex-item-contains-strict.html": [
"25849cc64b2f10cf2d319e1a2f750f32d64359b5", "25849cc64b2f10cf2d319e1a2f750f32d64359b5",
[ [
@ -383080,6 +383128,13 @@
{} {}
] ]
], ],
"fontfaceset-load-css-wide-keywords.html": [
"b85b92bd15e387db3dacd93b325f7f7b4d8d80db",
[
null,
{}
]
],
"fontfacesetloadevent-constructor.html": [ "fontfacesetloadevent-constructor.html": [
"d5038ce690c6df5f8eb6f2d0266df052f7200fc5", "d5038ce690c6df5f8eb6f2d0266df052f7200fc5",
[ [
@ -390196,6 +390251,13 @@
{} {}
] ]
], ],
"host-part-001.html": [
"9004141534f134d85590df3372f83838668a72e7",
[
null,
{}
]
],
"host-stylesheet.html": [ "host-stylesheet.html": [
"2e65c4b1b57bd9959c68e85e11b442c67f2c5a42", "2e65c4b1b57bd9959c68e85e11b442c67f2c5a42",
[ [
@ -399859,7 +399921,7 @@
] ]
], ],
"CSSStyleSheet-constructable.html": [ "CSSStyleSheet-constructable.html": [
"fbee4298c1411937f8c45a2f6001ee78dccadbb5", "e6293909c2178966a942abb7e544ff437e6d51d3",
[ [
null, null,
{} {}
@ -403539,6 +403601,34 @@
}, },
"document-policy": { "document-policy": {
"experimental-features": { "experimental-features": {
"layout-animations-disabled-tentative.html": [
"0190eaa84f75e3097b95f70adde89296d47cc1f3",
[
null,
{}
]
],
"layout-animations-disabled-violation-report-js-tentative.html": [
"ee7c295156f26733358d62a4046a097450a6b8e2",
[
null,
{}
]
],
"layout-animations-disabled-violation-report-keyframes-tentative.html": [
"cd9210cc1382ee1f6dc892783bd275c1de7ab669",
[
null,
{}
]
],
"layout-animations-enabled-tentative.html": [
"19e405496eef72d176d007c93f7262e6a12b3806",
[
null,
{}
]
],
"unsized-media.tentative.https.sub.html": [ "unsized-media.tentative.https.sub.html": [
"d7bb72524902cbd519d892b8206569d7607a120b", "d7bb72524902cbd519d892b8206569d7607a120b",
[ [
@ -419901,34 +419991,6 @@
{} {}
] ]
], ],
"layout-animations-disabled-tentative.html": [
"0190eaa84f75e3097b95f70adde89296d47cc1f3",
[
null,
{}
]
],
"layout-animations-disabled-violation-report-js-tentative.html": [
"e7150a91e8749473962884727fb59bb3b978bf68",
[
null,
{}
]
],
"layout-animations-disabled-violation-report-keyframes-tentative.html": [
"163ccae812f129e6cc338eb548e7ace92dd65b17",
[
null,
{}
]
],
"layout-animations-enabled-tentative.html": [
"19e405496eef72d176d007c93f7262e6a12b3806",
[
null,
{}
]
],
"lazyload": { "lazyload": {
"lazyload-disabled-image-tentative.sub.html": [ "lazyload-disabled-image-tentative.sub.html": [
"5bd9fca2a868197bdcc81486e0a33ce4e3a0659b", "5bd9fca2a868197bdcc81486e0a33ce4e3a0659b",
@ -430350,7 +430412,7 @@
] ]
}, },
"tabindex-focus-flag.html": [ "tabindex-focus-flag.html": [
"341162f09e79e9aad17769b709f94aeadb8771cc", "93fdb19a592ff632405c338256082043ae608002",
[ [
null, null,
{} {}
@ -438061,7 +438123,7 @@
] ]
], ],
"import-css-module-basic.html": [ "import-css-module-basic.html": [
"902430d0779e3b9e34f95db1da4d4b96c2b24bbb", "1cb290de3feb584bf9dc63e8090f6b31dd10eeb9",
[ [
null, null,
{} {}
@ -447531,7 +447593,7 @@
}, },
"media-capabilities": { "media-capabilities": {
"decodingInfo.any.js": [ "decodingInfo.any.js": [
"2d74d30eeb623992f629b6932304c3ee2b89e84f", "772d47e87295775f207fedd6f3f68681ca32ad79",
[ [
"media-capabilities/decodingInfo.any.html", "media-capabilities/decodingInfo.any.html",
{ {
@ -450435,6 +450497,13 @@
{} {}
] ]
], ],
"RTCRtpSendParameters-degradationPreference.html": [
"3573bb58760210611cd13f0d7d0fbd2aa6682bd7",
[
null,
{}
]
],
"idlharness.window.js": [ "idlharness.window.js": [
"0d9137dc6fb91b1499d922e01d6ad96049f5757b", "0d9137dc6fb91b1499d922e01d6ad96049f5757b",
[ [
@ -494861,7 +494930,7 @@
}, },
"wake-lock": { "wake-lock": {
"idlharness-worker.https.window.js": [ "idlharness-worker.https.window.js": [
"c747ad6872a91a5ca81fb1e7ca73f72e4e987097", "76f5352721dfdadca5093b6f08bb648d8b17f93e",
[ [
"wake-lock/idlharness-worker.https.window.html", "wake-lock/idlharness-worker.https.window.html",
{ {
@ -494879,7 +494948,7 @@
] ]
], ],
"idlharness.https.window.js": [ "idlharness.https.window.js": [
"f9e3c02175d519f454c15109b30fa567709cee2d", "60c25f3386ea8bd2ce8a5955745f9d1ede580f46",
[ [
"wake-lock/idlharness.https.window.html", "wake-lock/idlharness.https.window.html",
{ {
@ -494933,7 +495002,7 @@
] ]
], ],
"wakelock-enabled-by-feature-policy.https.sub.html": [ "wakelock-enabled-by-feature-policy.https.sub.html": [
"376359e888d6191b9eb1241373b3d411bb5bd2d0", "f908717ff410d736ccb42e89c3e95c4852e82696",
[ [
null, null,
{ {
@ -494942,7 +495011,7 @@
] ]
], ],
"wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html": [ "wakelock-enabled-on-self-origin-by-feature-policy.https.sub.html": [
"a2d3725857be76f33b33257c0c3373edb68396be", "b15289beff4853765fdc30dfd0a3b35d48fd8619",
[ [
null, null,
{ {
@ -494976,7 +495045,7 @@
] ]
], ],
"wakelock-onrelease.https.html": [ "wakelock-onrelease.https.html": [
"3506c8ae82b91178468a7158b9fca6d099a498f6", "88c0cdb654c8e700195c430aa74fb2238ce9db10",
[ [
null, null,
{ {
@ -494985,7 +495054,7 @@
] ]
], ],
"wakelock-request-denied.https.html": [ "wakelock-request-denied.https.html": [
"8dbe523ed2c5653932a3f6f246d34ada1e4b113f", "b222ef342a6566a9d424044713b1acf2666679eb",
[ [
null, null,
{ {
@ -495008,7 +495077,7 @@
] ]
], ],
"wakelock-supported-by-feature-policy.html": [ "wakelock-supported-by-feature-policy.html": [
"e7f9c8cb283c20d72c6d936398b9c352a2a0b88a", "a55eb54ba1c48ae7d5330ed1281029d71f0a23e9",
[ [
null, null,
{} {}
@ -495040,7 +495109,7 @@
] ]
], ],
"wakelockpermissiondescriptor.https.html": [ "wakelockpermissiondescriptor.https.html": [
"fd7a08a34ba7dfe203c42f4d4f78ae626fbea235", "88c95987f1ead6d0e194e3d1dcff6d4b5e852778",
[ [
null, null,
{ {
@ -502662,42 +502731,35 @@
] ]
], ],
"RTCRtpParameters-codecs.html": [ "RTCRtpParameters-codecs.html": [
"fdb584460f862825f2c695ec3cff678c14503fb4", "f5fa65e2ac9be706a72feb49c09b37def65986e8",
[
null,
{}
]
],
"RTCRtpParameters-degradationPreference.html": [
"e2c92bc1c0814f294e1b9153febc76886cf2fdb9",
[ [
null, null,
{} {}
] ]
], ],
"RTCRtpParameters-encodings.html": [ "RTCRtpParameters-encodings.html": [
"2f94186fe1e76980f77f5da7fdb516ba411b036f", "00e80885cff30c7bae8c94ebf8fd3ac37e26603a",
[ [
null, null,
{} {}
] ]
], ],
"RTCRtpParameters-headerExtensions.html": [ "RTCRtpParameters-headerExtensions.html": [
"85c3338dd62b0a8a4aad1e217673f01dd80d50fa", "7de2b75f4ee85b338d6b36ff7c12c5b17bb61779",
[ [
null, null,
{} {}
] ]
], ],
"RTCRtpParameters-rtcp.html": [ "RTCRtpParameters-rtcp.html": [
"82fb49be7dea91b0be43ddbbf1d259d3d80b7d99", "79653045200e667f405a749ae6f51a083dc1f99d",
[ [
null, null,
{} {}
] ]
], ],
"RTCRtpParameters-transactionId.html": [ "RTCRtpParameters-transactionId.html": [
"ae56fb401f44bad254edfbfd670776c5ffe96211", "a7b7865532b877e17bf17edab0ab44ec3ca288d4",
[ [
null, null,
{} {}
@ -502718,7 +502780,7 @@
] ]
], ],
"RTCRtpReceiver-getParameters.html": [ "RTCRtpReceiver-getParameters.html": [
"7f8ac673a60c73681122df5243f6054b82f31fff", "4be0e3b95ec45bd9693a4da38b146c58b37810f8",
[ [
null, null,
{} {}

View file

@ -1,2 +0,0 @@
[flex-flow-percentage-margins-no-available-space-assert.html]
expected: CRASH

View file

@ -0,0 +1,2 @@
[nested-orthogonal-flexbox-relayout.html]
expected: FAIL

View file

@ -2,3 +2,6 @@
[listeners are called when <iframe> is resized] [listeners are called when <iframe> is resized]
expected: FAIL expected: FAIL
[listeners are called correct number of times]
expected: FAIL

View file

@ -1,4 +0,0 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

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

View file

@ -0,0 +1,4 @@
[elementsFromPoint-invalid-cases.html]
[The root element is the last element returned for otherwise empty queries within the viewport]
expected: FAIL

View file

@ -0,0 +1,2 @@
[effect-reference-add-hw-001.html]
expected: FAIL

View file

@ -312,24 +312,24 @@
[fetch(): separate response Content-Type: text/plain ] [fetch(): separate response Content-Type: text/plain ]
expected: NOTRUN expected: NOTRUN
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*] [<iframe>: combined response Content-Type: text/html */*]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" text/plain] [<iframe>: combined response Content-Type: text/html;" text/plain]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain] [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk] [<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL expected: FAIL
[<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL

View file

@ -59,6 +59,6 @@
[separate text/javascript;charset=windows-1252 error text/javascript] [separate text/javascript;charset=windows-1252 error text/javascript]
expected: FAIL expected: FAIL
[separate text/javascript error] [separate text/javascript;charset=windows-1252 text/javascript]
expected: FAIL expected: FAIL

View file

@ -11,3 +11,9 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!] [X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%20%22nosniFF%22]
expected: FAIL
[X-Content-Type-Options%3A%20no%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_5.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -18,6 +18,6 @@
[Set HTTP URL frame location.protocol to ftp] [Set HTTP URL frame location.protocol to ftp]
expected: FAIL expected: FAIL
[Set data URL frame location.protocol to file] [Set data URL frame location.protocol to data]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,4 @@
[creating_browsing_context_test_01.html]
[first argument: absolute url]
expected: FAIL

View file

@ -11,3 +11,42 @@
[[contenteditable\] should be focusable by default.] [[contenteditable\] should be focusable by default.]
expected: FAIL expected: FAIL
[text with tabindex=invalid should not be focusable.]
expected: FAIL
[A with tabindex=invalid should not be focusable.]
expected: FAIL
[#svg-a should not be focusable by default.]
expected: FAIL
[text with tabindex=0 should be focusable.]
expected: FAIL
[IMG with tabindex=invalid should not be focusable.]
expected: FAIL
[a with tabindex=invalid should not be focusable.]
expected: FAIL
[a with tabindex=0 should be focusable.]
expected: FAIL
[a with tabindex=-1 should be focusable.]
expected: FAIL
[#svg-text should not be focusable by default.]
expected: FAIL
[DIV with tabindex=invalid should not be focusable.]
expected: FAIL
[SUMMARY#summary-out-tabindex-invalid with tabindex=invalid should not be focusable.]
expected: FAIL
[a#with-href with tabindex=invalid should not be focusable.]
expected: FAIL
[text with tabindex=-1 should be focusable.]
expected: FAIL

View file

@ -1,4 +1,8 @@
[skip-document-with-fragment.html] [skip-document-with-fragment.html]
expected: TIMEOUT
[Autofocus elements in iframed documents with URL fragments should be skipped.] [Autofocus elements in iframed documents with URL fragments should be skipped.]
expected: FAIL expected: FAIL
[Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.]
expected: TIMEOUT

View file

@ -1,20 +1,16 @@
[supported-elements.html] [supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus] [Contenteditable element should support autofocus]
expected: FAIL expected: FAIL
[Element with tabindex should support autofocus] [Element with tabindex should support autofocus]
expected: TIMEOUT expected: FAIL
[Host element with delegatesFocus including no focusable descendants should be skipped] [Host element with delegatesFocus including no focusable descendants should be skipped]
expected: NOTRUN expected: FAIL
[Area element should support autofocus] [Area element should support autofocus]
expected: NOTRUN expected: FAIL
[Host element with delegatesFocus should support autofocus] [Host element with delegatesFocus should support autofocus]
expected: NOTRUN expected: FAIL
[Non-HTMLElement should not support autofocus]
expected: NOTRUN

View file

@ -1,6 +1,5 @@
[iframe_sandbox_popups_escaping-3.html] [iframe_sandbox_popups_escaping-3.html]
type: testharness type: testharness
expected: TIMEOUT
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT expected: FAIL

View file

@ -122,3 +122,6 @@
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44061 more errors.\n\tMax AbsError of 1.9999794363975525e+0 at index of 28452.\n\t[28452\]\t9.9997943639755249e-1\t-1.0000000000000000e+0\t1.9999794363975525e+0\t1.9999794363975525e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n] [X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44061 more errors.\n\tMax AbsError of 1.9999794363975525e+0 at index of 28452.\n\t[28452\]\t9.9997943639755249e-1\t-1.0000000000000000e+0\t1.9999794363975525e+0\t1.9999794363975525e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL expected: FAIL
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44052 more errors.\n\tMax AbsError of 1.9999977350234985e+0 at index of 39026.\n\t[39026\]\t9.9999773502349854e-1\t-1.0000000000000000e+0\t1.9999977350234985e+0\t1.9999977350234985e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 14112.\n\t[14112\]\t-9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
expected: FAIL

View file

@ -317,3 +317,6 @@
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t-3.3433449219311302e-17\t5.6332010030746460e-1\t5.6332010030746460e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[31081\]\t4.5672520847738763e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31080.\n] [X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t-3.3433449219311302e-17\t5.6332010030746460e-1\t5.6332010030746460e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[31081\]\t4.5672520847738763e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31080.\n]
expected: FAIL expected: FAIL
[X Stitched sine-wave buffers at sample rate 44100 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.000090957,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[31080\]\t-4.6400068104817376e-34\t5.6332010030746460e-1\t5.6332010030746460e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\t[31081\]\t4.5571627358307376e-41\t6.1397600173950195e-1\t6.1397600173950195e-1\t1.0000000000000000e+0\t9.0957000000000003e-5\n\tMax AbsError of 6.1397600173950195e-1 at index of 31081.\n\tMax RelError of 1.0000000000000000e+0 at index of 31080.\n]
expected: FAIL

View file

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

View file

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

View file

@ -630,7 +630,7 @@ jobs:
- template: tools/ci/azure/update_hosts.yml - template: tools/ci/azure/update_hosts.yml
- template: tools/ci/azure/update_manifest.yml - template: tools/ci/azure/update_manifest.yml
# --exclude is a workaround for https://github.com/web-platform-tests/wpt/issues/18634 + https://github.com/web-platform-tests/wpt/issues/22175 # --exclude is a workaround for https://github.com/web-platform-tests/wpt/issues/18634 + https://github.com/web-platform-tests/wpt/issues/22175
- script: no_proxy='*' ./wpt run --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --this-chunk=$(System.JobPositionInPhase) --total-chunks=$(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info safari --exclude /inert/inert-retargeting.tentative.html --exclude /inert/inert-retargeting-iframe.tentative.html --exclude /pointerevents/pointerevent_pointercapture-not-lost-in-chorded-buttons.html - script: no_proxy='*' ./wpt run --no-manifest-update --no-restart-on-unexpected --no-fail-on-unexpected --this-chunk=$(System.JobPositionInPhase) --total-chunks=$(System.TotalJobsInPhase) --chunk-type hash --log-wptreport $(Build.ArtifactStagingDirectory)/wpt_report_$(System.JobPositionInPhase).json --log-wptscreenshot $(Build.ArtifactStagingDirectory)/wpt_screenshot_$(System.JobPositionInPhase).txt --log-mach - --log-mach-level info safari --exclude /inert/inert-retargeting.tentative.html --exclude /inert/inert-retargeting-iframe.tentative.html --exclude /pointerevents/pointerevent_pointercapture-not-lost-in-chorded-buttons.html --exclude /pointerevents/pointerevent_pointercapture_in_frame.html --exclude /web-share/share-sharePromise-internal-slot.https.html
displayName: 'Run tests' displayName: 'Run tests'
- task: PublishBuildArtifacts@1 - task: PublishBuildArtifacts@1
displayName: 'Publish results' displayName: 'Publish results'

View file

@ -1,25 +0,0 @@
<!DOCTYPE html>
<title>CSS Flexbox: flex-flow percentage margin with no available space</title>
<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#flex-shrink-property">
<link rel="issue" href="https://bugs.chromium.org/p/chromium/issues/detail?id=380201">
<meta name="assert" content="This test checks that a flexbox doesn't shrink below border/padding
when stretching children with no available space.">
<style>
* {
display: flex;
padding-bottom: 20pt;
min-height: 0.7%;
margin-top: 6000%;
flex-shrink: 0;
flex-basis: 7000%;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<abbr data-expected-height=30210272>
<input></input>
</abbr>
<script>
window.checkLayout('abbr');
</script>

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<html>
<title>CSS Flexbox: nested orthogonal children on relayout.</title>
<link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#flex-direction-property">
<link rel="match" href="reference/nested-orthogonal-flexbox-relayout-ref.html">
<meta name="assert" content="This test ensures nested orthogonal flex items get properly relaid out when flexbox changes dimensions."/>
<style>
#column {
display: flex;
flex-direction: column;
border: 5px solid yellow;
}
#row {
display: flex;
flex-direction: row;
border: 5px solid blue;
}
.item {
border: 5px solid green;
}
</style>
<body>
<div id="column">
<div id="row">
<div class="item">This text should not overflow its box</div>
</div>
</div>
<script>
var columnBox = document.getElementById("column");
columnBox.offsetHeight;
columnBox.style.width = "200px";
</script>

View file

@ -0,0 +1,25 @@
<!DOCTYPE html>
<style>
#column {
display: flex;
flex-direction: column;
border: 5px solid yellow;
width: 200px;
}
#row {
display: flex;
flex-direction: row;
border: 5px solid blue;
}
.item {
border: 5px solid green;
}
</style>
<body>
<div id="column">
<div id="row">
<div class="item">This text should not overflow its box</div>
</div>
</div>

View file

@ -0,0 +1,60 @@
<!DOCTYPE html>
<title>SyntaxError thrown when matching CSS-wide keyword</title>
<link rel="help" href="https://drafts.csswg.org/css-font-loading/#font-face-set-load">
<link rel="help" href="https://drafts.csswg.org/css-font-loading/#find-the-matching-font-faces">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
function load_on_worker(keyword) {
return new Promise((resolve, reject) =>{
var blob = new Blob([`
self.fonts.load('${keyword}').then(
()=>{ self.postMessage('success') },
(e)=>{ self.postMessage(e) }
);
`]);
var blob_url = window.URL.createObjectURL(blob);
let worker = new Worker(blob_url);
worker.onmessage = msg => {
if (msg === 'success')
resolve(msg.data)
else
reject(msg.data)
}
});
}
promise_test(test => {
return promise_rejects_dom(test, 'SyntaxError', document.fonts.load('initial'));
}, 'Loading CSS-wide keyword "initial" causes SyntaxError (document)')
promise_test(test => {
return promise_rejects_dom(test, 'SyntaxError', document.fonts.load('inherit'));
}, 'Loading CSS-wide keyword "inherit" causes SyntaxError (document)')
promise_test(test => {
return promise_rejects_dom(test, 'SyntaxError', document.fonts.load('unset'));
}, 'Loading CSS-wide keyword "unset" causes SyntaxError (document)')
promise_test(test => {
return promise_rejects_dom(test, 'SyntaxError', document.fonts.load('revert'));
}, 'Loading CSS-wide keyword "revert" causes SyntaxError (document)')
promise_test(test => {
return promise_rejects_dom(test, 'SyntaxError', load_on_worker('initial'));
}, 'Loading CSS-wide keyword "initial" causes SyntaxError (worker)')
promise_test(test => {
return promise_rejects_dom(test, 'SyntaxError', load_on_worker('inherit'));
}, 'Loading CSS-wide keyword "inherit" causes SyntaxError (worker)')
promise_test(test => {
return promise_rejects_dom(test, 'SyntaxError', load_on_worker('unset'));
}, 'Loading CSS-wide keyword "unset" causes SyntaxError (worker)')
promise_test(test => {
return promise_rejects_dom(test, 'SyntaxError', load_on_worker('revert'));
}, 'Loading CSS-wide keyword "revert" causes SyntaxError (worker)')
</script>

View file

@ -0,0 +1,43 @@
<!doctype html>
<title>CSS Shadow Parts - :host::part()</title>
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<link rel="help" href="https://drafts.csswg.org/css-shadow-parts/#part">
<link rel="help" href="https://drafts.csswg.org/css-scoping/#host-selector">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1624968">
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=980506">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="host"></div>
<script>
test(function() {
let host = document.getElementById("host");
host.attachShadow({ mode: "open" }).innerHTML = `
<style>
:host::part(mypart) {
color: lime;
}
:host(.tweak)::part(mypart) {
color: blue;
}
</style>
<div part="mypart"></div>
`;
let part = host.shadowRoot.querySelector("[part]");
assert_equals(
window.getComputedStyle(part).color,
"rgb(0, 255, 0)",
":host::part() works",
);
host.classList.add("tweak");
assert_equals(
window.getComputedStyle(part).color,
"rgb(0, 0, 255)",
":host::part() invalidation works properly",
);
}, ":host::part works");
</script>

View file

@ -48,7 +48,7 @@ test(() => {
test(() => { test(() => {
const sheet = new CSSStyleSheet({disabled: true, media: "screen, print"}); const sheet = new CSSStyleSheet({disabled: true, media: "screen, print"});
assert_equals(sheet.title, null); assert_equals(sheet.title, null, "The title attribute must return the title or null if title is the empty string");
assert_equals(sheet.ownerNode, null); assert_equals(sheet.ownerNode, null);
assert_equals(sheet.ownerRule, null); assert_equals(sheet.ownerRule, null);
assert_equals(sheet.media.length, 2); assert_equals(sheet.media.length, 2);
@ -66,7 +66,7 @@ test(() => {
assert_equals(sheet.cssRules[0].cssText, redStyleTexts[1]); assert_equals(sheet.cssRules[0].cssText, redStyleTexts[1]);
const sheet2 = new CSSStyleSheet({}); const sheet2 = new CSSStyleSheet({});
assert_equals(sheet2.title, null); assert_equals(sheet2.title, null, "The title attribute must return the title or null if title is the empty string");
assert_equals(sheet2.ownerNode, null); assert_equals(sheet2.ownerNode, null);
assert_equals(sheet2.ownerRule, null); assert_equals(sheet2.ownerRule, null);
assert_equals(sheet2.media.length, 0); assert_equals(sheet2.media.length, 0);
@ -81,7 +81,7 @@ test(() => {
assert_equals(sheet2.cssRules.length, 0); assert_equals(sheet2.cssRules.length, 0);
const sheet3 = new CSSStyleSheet(); const sheet3 = new CSSStyleSheet();
assert_equals(sheet3.title, null); assert_equals(sheet3.title, null, "The title attribute must return the title or null if title is the empty string");
assert_equals(sheet3.ownerNode, null); assert_equals(sheet3.ownerNode, null);
assert_equals(sheet3.ownerRule, null); assert_equals(sheet3.ownerRule, null);
assert_equals(sheet3.media.length, 0); assert_equals(sheet3.media.length, 0);
@ -98,14 +98,14 @@ test(() => {
test(() => { test(() => {
const sheet = new CSSStyleSheet({title: "something"}); const sheet = new CSSStyleSheet({title: "something"});
assert_equals(sheet.title, null); assert_equals(sheet.title, null, "title and alternate are not supported by the constructor. https://github.com/WICG/construct-stylesheets/issues/105");
}, "title cannot be set in the CSSStyleSheet constructor"); }, "title can be set in the CSSStyleSheet constructor");
promise_test(() => { promise_test(() => {
const sheet = new CSSStyleSheet({disabled: true, media: "screen, print"}); const sheet = new CSSStyleSheet({disabled: true, media: "screen, print"});
const promise_sheet = sheet.replace(redStyleTexts[0]); const promise_sheet = sheet.replace(redStyleTexts[0]);
return promise_sheet.then(function(sheet) { return promise_sheet.then(function(sheet) {
assert_equals(sheet.title, null); assert_equals(sheet.title, null, "The title attribute must return the title or null if title is the empty string");
assert_equals(sheet.ownerNode, null); assert_equals(sheet.ownerNode, null);
assert_equals(sheet.ownerRule, null); assert_equals(sheet.ownerRule, null);
assert_equals(sheet.media.length, 2); assert_equals(sheet.media.length, 2);
@ -535,24 +535,19 @@ test(() => {
const style = document.createElement("style"); const style = document.createElement("style");
style.textContent = ".target { color: white; }"; style.textContent = ".target { color: white; }";
span.shadowRoot.appendChild(style) span.shadowRoot.appendChild(style)
// non-adopted styles should be ordered before adopted styles assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)", "non-adopted styles should be ordered before adopted styles");
assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)");
span.shadowRoot.adoptedStyleSheets = []; span.shadowRoot.adoptedStyleSheets = [];
// with no adopted styles in conflict, the non-adopted style should take effect assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 255, 255)", "with no adopted styles in conflict, the non-adopted style should take effect");
assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 255, 255)");
span.shadowRoot.adoptedStyleSheets = [sheet]; span.shadowRoot.adoptedStyleSheets = [sheet];
// the adopted style should be ordered after the non-adopted style assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)", "the adopted style should be ordered after the non-adopted style");
assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)");
sheet.disabled = true; sheet.disabled = true;
// with the adopted sheet disabled, the non-adopted style should take effect assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 255, 255)", "with the adopted sheet disabled, the non-adopted style should take effect");
assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 255, 255)");
sheet.disabled = false; sheet.disabled = false;
// the adopted sheet re-enabled, it should take effect again. assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)", "the adopted sheet re-enabled, it should take effect again");
assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)");
}, 'Adopted sheets are ordered after non-adopted sheets in the shadow root') }, 'Adopted sheets are ordered after non-adopted sheets in the shadow root')
test(() => { test(() => {
@ -574,41 +569,32 @@ test(() => {
const style = document.createElement("style"); const style = document.createElement("style");
style.textContent = ".target { color: white; }"; style.textContent = ".target { color: white; }";
span.appendChild(style) span.appendChild(style)
// non-adopted styles should be ordered before adopted styles assert_equals(getComputedStyle(span).color, "rgb(255, 0, 0)", "non-adopted styles should be ordered before adopted styles");
assert_equals(getComputedStyle(span).color, "rgb(255, 0, 0)");
document.adoptedStyleSheets = []; document.adoptedStyleSheets = [];
// with no adopted styles in conflict, the non-adopted style should take effect assert_equals(getComputedStyle(span).color, "rgb(255, 255, 255)", "with no adopted styles in conflict, the non-adopted style should take effect");
assert_equals(getComputedStyle(span).color, "rgb(255, 255, 255)");
document.adoptedStyleSheets = [sheet]; document.adoptedStyleSheets = [sheet];
// the adopted style should be ordered after the non-adopted style assert_equals(getComputedStyle(span).color, "rgb(255, 0, 0)", "the adopted style should be ordered after the non-adopted style");
assert_equals(getComputedStyle(span).color, "rgb(255, 0, 0)");
sheet.disabled = true; sheet.disabled = true;
// with the adopted sheet disabled, the non-adopted style should take effect assert_equals(getComputedStyle(span).color, "rgb(255, 255, 255)", "with the adopted sheet disabled, the non-adopted style should take effect");
assert_equals(getComputedStyle(span).color, "rgb(255, 255, 255)");
sheet.disabled = false; sheet.disabled = false;
// the adopted sheet re-enabled, it should take effect again. assert_equals(getComputedStyle(span).color, "rgb(255, 0, 0)", "the adopted sheet re-enabled, it should take effect again")
assert_equals(getComputedStyle(span).color, "rgb(255, 0, 0)")
}, 'Adopted sheets are ordered after non-adopted sheets in the document') }, 'Adopted sheets are ordered after non-adopted sheets in the document')
const import_text = '@import url("support/constructable-import.css");'; const import_text = '@import url("support/constructable-import.css");';
test(() => { test(() => {
assert_throws_dom("NotAllowedError", () => { (new CSSStyleSheet).replaceSync(import_text) }); assert_throws_dom("SyntaxError", () => { (new CSSStyleSheet).insertRule(import_text) });
}, 'CSSStyleSheet.replaceSync throws exception when there is import rule inside');
test(() => {
assert_throws_dom("NotAllowedError", () => { (new CSSStyleSheet).insertRule(import_text) });
}, 'Inserting an @import rule through insertRule on a constructed stylesheet throws an exception'); }, 'Inserting an @import rule through insertRule on a constructed stylesheet throws an exception');
async_test(t => { async_test(t => {
const importUrl = "support/constructable-import.css"; const importUrl = "support/constructable-import.css";
const sheet = new CSSStyleSheet(); const sheet = new CSSStyleSheet();
assert_throws_dom("NotAllowedError", () => { sheet.replaceSync(`@import url("${importUrl}");`) }); sheet.replaceSync(`@import url("${importUrl}");`);
const timeAfterReplaceSync = performance.now(); const timeAfterReplaceSync = performance.now();
let link = document.createElement("link"); let link = document.createElement("link");
@ -632,27 +618,68 @@ promise_test(() => {
const sheet = new CSSStyleSheet(); const sheet = new CSSStyleSheet();
span.shadowRoot.adoptedStyleSheets = [sheet]; span.shadowRoot.adoptedStyleSheets = [sheet];
assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)"); assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)");
// Replace and assert that the imported rule is applied. // Replace and assert that the imported rule is NOT applied.
const sheet_promise = sheet.replace(import_text); const sheet_promise = sheet.replace(import_text);
return sheet_promise.then((sheet) => { return sheet_promise.then((sheet) => {
assert_equals(sheet.cssRules.length, 1); // replace() ignores @import rules:
assert_equals(sheet.cssRules[0].cssText, import_text); assert_equals(sheet.cssRules.length, 0);
assert_equals(getComputedStyle(shadowDiv).color, "rgb(255, 0, 0)"); assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)");
}).catch((reason) => { }).catch((reason) => {
assert_unreached(`Promise was rejected (${reason}) when it should have been resolved`); assert_unreached(`Promise was rejected (${reason}) when it should have been resolved`);
}); });
}, 'CSSStyleSheet.replace allows import rule inside'); }, 'CSSStyleSheet.replace allows, but ignores, import rule inside');
promise_test(() => {
const span = document.createElement("span");
thirdSection.appendChild(span);
const shadowDiv = attachShadowDiv(span);
const targetSpan = document.createElement("span");
targetSpan.classList.add("target");
shadowDiv.appendChild(targetSpan);
const sheet = new CSSStyleSheet();
span.shadowRoot.adoptedStyleSheets = [sheet];
assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)");
// Replace and assert that the imported rule is NOT applied, but regular rule does apply.
const sheet_promise = sheet.replace(import_text + ".target { color: blue; }");
return sheet_promise.then((sheet) => {
assert_equals(sheet.cssRules.length, 1);
// @import not applied:
assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)");
// regular rule applied:
assert_equals(getComputedStyle(targetSpan).color, "rgb(0, 0, 255)");
}).catch((reason) => {
assert_unreached(`Promise was rejected (${reason}) when it should have been resolved`);
});
}, 'CSSStyleSheet.replace ignores @import rule but still loads other rules');
test(() => {
const span = document.createElement("span");
thirdSection.appendChild(span);
const shadowDiv = attachShadowDiv(span);
const sheet = new CSSStyleSheet();
span.shadowRoot.adoptedStyleSheets = [sheet];
assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)");
// Replace and assert that the imported rule is NOT applied.
try {
sheet.replaceSync(import_text);
// replaceSync() ignores @import rules:
assert_equals(sheet.cssRules.length, 0);
assert_equals(getComputedStyle(shadowDiv).color, "rgb(0, 0, 0)");
} catch(reason) {
assert_unreached(`replaceSync threw an exception (${reason}) when it shouldn't have`);
}
}, 'CSSStyleSheet.replaceSync allows, but ignores, import rule inside');
promise_test(() => { promise_test(() => {
const sheet = new CSSStyleSheet(); const sheet = new CSSStyleSheet();
const sheet_promise = sheet.replace("@import url('not-there.css');"); const sheet_promise = sheet.replace("@import url('not-there.css');");
return sheet_promise.then((sheet) => { return sheet_promise.then((sheet) => {
assert_unreached("Promise was resolved when it should have been rejected"); // No exception here
}).catch((reason) => { }).catch((reason) => {
assert_equals(reason.name, "NetworkError"); assert_unreached("Promise was rejected");
}); });
}, 'CSSStyleSheet.replace returns rejected promise on failed imports'); }, 'CSSStyleSheet.replace does not reject on failed imports');
test(() => { test(() => {
const span = document.createElement("span"); const span = document.createElement("span");

View file

@ -0,0 +1,56 @@
<!DOCTYPE html>
<html class="reftest-wait">
<head>
<title>CSS Filters: Repaint of element with background-image and blur filter</title>
<link rel="author" title="Stephen White" href="mailto:senorblanco@chromium.org">
<link rel="help" href="https://drafts.fxtf.org/filter-effects-1/#FilterProperty">
<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#background-image">
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=415106">
<link rel="match" href="reference/background-image-blur-repaint-expected.html">
<meta name="assert" content="An element with background-image and a filter should be rendered correctly after other elements on the page change size. You should see a 50x50 green box over a blurred background."/>
<script src="/common/reftest-wait.js"></script>
<script>
function runTest() {
function shrinkBox() {
var box = document.getElementsByClassName("box")[0];
box.style.width = "50px";
box.style.height = "50px";
}
// Wait for two requestAnimationFrame() calls to make sure that at least one
// frame has been rendered before shrinking the box and taking the screenshot.
requestAnimationFrame(function() {
requestAnimationFrame(function() {
shrinkBox();
takeScreenshot();
});
});
}
</script>
<style>
.bg {
position: absolute;
left: 200px;
top: 0px;
width: 400px;
height: 300px;
background-image: url(support/color-palette.png);
filter: blur(8px);
}
.box {
position: absolute;
left: 300px;
top: 50px;
width: 100px;
height: 100px;
background-color: green;
}
</style>
</head>
<body onload="runTest()">
<div class="bg"></div>
<div class="box"></div>
</body>
</html>

View file

@ -0,0 +1,19 @@
<!doctype html>
<title>SVG Filters: feColorMatrix filter</title>
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#FilterProperty">
<link rel="help" href="https://drafts.fxtf.org/filter-effects/#feColorMatrixElement">
<link rel="help" href="https://bugs.chromium.org/p/chromium/issues/detail?id=227025">
<link rel="match" href="reference/effect-reference-add-hw-001-ref.html">
<meta name="assert" content="Check that a reference filter can be dynamically set on elements with will-change: transform."/>
<div style="width: 100px; height: 100px; background-color: rgb(255, 0, 0); will-change: transform" id="div1"></div>
<svg xmlns="http://www.w3.org/2000/svg" width="0" height="0" version="1.1">
<defs>
<filter id="colormatrix">
<feColorMatrix type="matrix" values="0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0"/>
</filter>
</defs>
</svg>
<script>
var div = document.getElementById("div1");
div.style.filter = "url(#colormatrix)";
</script>

View file

@ -6,7 +6,7 @@
<link rel="match" href="reference/effect-reference-after-001-ref.html"> <link rel="match" href="reference/effect-reference-after-001-ref.html">
<meta name="assert" content="Check that a reference filter with forward references work"/> <meta name="assert" content="Check that a reference filter with forward references work"/>
<body> <body>
<img style="filter: url(#MyFilter);" src="support/reference.png"> <img style="filter: url(#MyFilter);" src="support/color-palette.png">
<svg width="0px" height="0px"> <svg width="0px" height="0px">
<defs> <defs>
<filter id="MyFilter"> <filter id="MyFilter">

View file

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html>
<head>
<style>
.bg {
position: absolute;
left: 200px;
top: 0px;
width: 400px;
height: 300px;
background-image: url(../support/color-palette.png);
filter: blur(8px);
}
.box {
position: absolute;
left: 300px;
top: 50px;
width: 50px;
height: 50px;
background-color: green;
}
</style>
</head>
<body>
<div class="bg"></div>
<div class="box"></div>
</body>
</html>

View file

@ -0,0 +1,2 @@
<!doctype html>
<div style="width: 100px; height: 100px; background-color: rgb(0, 255, 0); will-change: transform"></div>

View file

@ -7,6 +7,6 @@
<feColorMatrix type="hueRotate" values="180"/> <feColorMatrix type="hueRotate" values="180"/>
</filter> </filter>
</defs> </defs>
</svg><img style="filter: url(#MyFilter);" src="../support/reference.png"> </svg><img style="filter: url(#MyFilter);" src="../support/color-palette.png">
</body> </body>
</html> </html>

View file

@ -0,0 +1 @@
Document-Policy: no-layout-animations

View file

@ -1,24 +1,17 @@
<!DOCTYPE html> <!DOCTYPE html>
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/feature-policy/experimental-features/resources/common.js"></script> <script src="/document-policy/experimental-features/resources/common.js"></script>
<title> 'layout-animations' Policy : violation reports from javascript <title> 'layout-animations' Policy : violation reports from javascript
</title> </title>
<body> <body>
<script> <script>
test(() => {
document.featurePolicy.allowedFeatures().forEach((enabled_feature) => {
assert_not_equals(enabled_feature, "layout-animations");
});
},
"Verify 'layout-animations' is not in document's feature list.");
promise_test(async () => { promise_test(async () => {
let promise = wait_for_violation_in_file( let promise = wait_for_violation_in_file(
"layout-animations", "layout-animations",
"animation-property-height.js"); "animation-property-height.js");
let script = document.createElement("script"); let script = document.createElement("script");
script.src = "/feature-policy/experimental-features/resources/" + script.src = "/document-policy/experimental-features/resources/" +
"animation-property-height.js"; "animation-property-height.js";
document.body.appendChild(script); document.body.appendChild(script);
await promise; await promise;

View file

@ -1,18 +1,11 @@
<!DOCTYPE html> <!DOCTYPE html>
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/feature-policy/experimental-features/resources/common.js"></script> <script src="/document-policy/experimental-features/resources/common.js"></script>
<title> 'layout-animations' Policy : violation reports from CSS keyframes <title> 'layout-animations' Policy : violation reports from CSS keyframes
</title> </title>
<body> <body>
<script> <script>
test(() => {
document.featurePolicy.allowedFeatures().forEach((enabled_feature) => {
assert_not_equals(enabled_feature, "layout-animations");
});
},
"Sanity-check: 'layout-animations' is not in document's feature list.");
promise_test(async () => { promise_test(async () => {
let promise = wait_for_violation_in_file( let promise = wait_for_violation_in_file(
"layout-animations", null /* source not specified */); "layout-animations", null /* source not specified */);

View file

@ -0,0 +1,90 @@
const url_base = "/document-policy/experimental-features/resources/";
window.messageResponseCallback = null;
// Returns a promise which is resolved when the <iframe> is navigated to |url|
// and "load" handler has been called.
function loadUrlInIframe(iframe, url) {
return new Promise((resolve) => {
iframe.addEventListener("load", resolve);
iframe.src = url;
});
}
// Posts |message| to |target| and resolves the promise with the response coming
// back from |target|.
function sendMessageAndGetResponse(target, message) {
return new Promise((resolve) => {
window.messageResponseCallback = resolve;
target.postMessage(message, "*");
});
}
function onMessage(e) {
if (window.messageResponseCallback) {
window.messageResponseCallback(e.data);
window.messageResponseCallback = null;
}
}
window.addEventListener("message", onMessage);
// Waits for |load_timeout| before resolving the promise. It will resolve the
// promise sooner if a message event with |e.data.id| of |id| is received.
// In such a case the response is the contents of the message |e.data.contents|.
// Otherwise, returns false (when timeout occurs).
function waitForMessageOrTimeout(t, id, load_timeout) {
return new Promise((resolve) => {
window.addEventListener(
"message",
(e) => {
if (!e.data || e.data.id !== id)
return;
resolve(e.data.contents);
}
);
t.step_timeout(() => { resolve(false); }, load_timeout);
});
}
function createIframe(container, attributes) {
var new_iframe = document.createElement("iframe");
for (attr_name in attributes)
new_iframe.setAttribute(attr_name, attributes[attr_name]);
container.appendChild(new_iframe);
return new_iframe;
}
// Returns a promise which is resolved when |load| event is dispatched for |e|.
function wait_for_load(e) {
return new Promise((resolve) => {
e.addEventListener("load", resolve);
});
}
setup(() => {
window.reporting_observer_instance = new ReportingObserver((reports, observer) => {
if (window.reporting_observer_callback) {
reports.forEach(window.reporting_observer_callback);
}
}, {types: ["document-policy-violation"]});
window.reporting_observer_instance.observe();
window.reporting_observer_callback = null;
});
// Waits for a violation in |feature| and source file containing |file_name|.
function wait_for_violation_in_file(feature, file_name) {
return new Promise( (resolve) => {
assert_equals(null, window.reporting_observer_callback);
window.reporting_observer_callback = (report) => {
var feature_match = (feature === report.body.featureId);
var file_name_match =
!file_name ||
(report.body.sourceFile.indexOf(file_name) !== -1);
if (feature_match && file_name_match) {
window.reporting_observer_callback = null;
resolve(report);
}
};
});
}

View file

@ -6,7 +6,7 @@
Promise.resolve().then(async () => { Promise.resolve().then(async () => {
try { try {
await test_driver.set_permission( await test_driver.set_permission(
{ name: 'wake-lock', type: 'screen' }, 'granted', false); { name: 'screen-wake-lock' }, 'granted', false);
const wakeLock = await navigator.wakeLock.request("screen"); const wakeLock = await navigator.wakeLock.request("screen");
await wakeLock.release(); await wakeLock.release();

View file

@ -15,6 +15,9 @@
<details open><summary id="summary-first"></summary><summary id="summary-second"></summary></details> <details open><summary id="summary-first"></summary><summary id="summary-second"></summary></details>
<div contenteditable="true"></div> <div contenteditable="true"></div>
<iframe></iframe> <iframe></iframe>
<svg><a id="svg-a"></a></svg>
<svg><text id="svg-text"></text></svg>
<img>
</div> </div>
<script> <script>
setup({ explicit_done: true }); setup({ explicit_done: true });
@ -34,6 +37,9 @@ function runTests() {
['#summary-second', false], ['#summary-second', false],
['[contenteditable]', true], ['[contenteditable]', true],
['iframe', true], ['iframe', true],
['#svg-a', false],
['#svg-text', false],
['img', false],
]; ];
for (entry of defaultList) { for (entry of defaultList) {
test(() => { test(() => {
@ -52,8 +58,11 @@ function runTests() {
<div id="tabindex-0"> <div id="tabindex-0">
<a tabindex="0"></a> <a tabindex="0"></a>
<svg><a tabindex="0"></a></svg>
<svg><text tabindex="0"></text></svg>
<summary tabindex="0" id="summary-out-tabindex0"></summary> <summary tabindex="0" id="summary-out-tabindex0"></summary>
<details open><summary id="summary-first"></summary><summary tabindex="0" id="summary-second-tabindex0"></summary></details> <details open><summary id="summary-first"></summary><summary tabindex="0" id="summary-second-tabindex0"></summary></details>
<img tabindex="0">
</div> </div>
<script> <script>
function runTests_tabindex0() { function runTests_tabindex0() {
@ -67,6 +76,58 @@ function runTests_tabindex0() {
}, elementDesc + ' with tabindex=0 should be focusable.'); }, elementDesc + ' with tabindex=0 should be focusable.');
} }
runTests_tabindex_negative();
}
</script>
<div id="tabindex-negative">
<a tabindex="-1"></a>
<svg><a tabindex="-1"></a></svg>
<svg><text tabindex="-1"></text></svg>
<summary tabindex="-1" id="summary-out-tabindex-negative"></summary>
<details open><summary id="summary-first"></summary><summary tabindex="0" id="summary-second-tabindex-negative"></summary></details>
<img tabindex="-1">
</div>
<script>
function runTests_tabindex_negative() {
for (element of document.querySelectorAll('#tabindex-negative [tabindex]')) {
var elementDesc = element.tagName;
if (element.id)
elementDesc += '#' + element.id;
test(() => {
element.focus();
assert_equals(document.activeElement, element);
}, elementDesc + ' with tabindex=-1 should be focusable.');
}
runTests_tabindex_invalid();
}
</script>
<div id="tabindex-invalid">
<a tabindex="invalid"></a>
<a href="#" tabindex="invalid" id="with-href" data-focusable=true></a>
<svg><a tabindex="invalid"></a></svg>
<svg><a href="#" tabindex="invalid" id="with-href" data-focusable=true></a></svg>
<svg><text tabindex="invalid"></text></svg>
<div tabindex="invalid"></div>
<summary tabindex="invalid" id="summary-out-tabindex-invalid"></summary>
<img tabindex="invalid">
</div>
<script>
function runTests_tabindex_invalid() {
for (element of document.querySelectorAll('#tabindex-invalid [tabindex]')) {
var focusable = element.dataset && element.dataset.focusable;
var elementDesc = element.tagName;
if (element.id)
elementDesc += '#' + element.id;
test(() => {
element.focus();
focusable ? assert_equals(document.activeElement, element)
: assert_not_equals(document.activeElement, element);
}, `${elementDesc} with tabindex=invalid should ${focusable ? "be" : "not be"} focusable.`);
}
done(); done();
} }
</script> </script>

View file

@ -22,13 +22,13 @@
const iframe = document.createElement("iframe"); const iframe = document.createElement("iframe");
iframe.src = "resources/css-module-at-import-iframe.html"; iframe.src = "resources/css-module-at-import-iframe.html";
iframe.onload = test.step_func_done(function () { iframe.onload = test.step_func_done(function () {
assert_equals(iframe.contentDocument.load_error, "NotAllowedError"); assert_equals(iframe.contentDocument.load_error, undefined);
assert_not_equals(getComputedStyle(iframe.contentDocument.querySelector('#test')) assert_not_equals(getComputedStyle(iframe.contentDocument.querySelector('#test'))
.backgroundColor, "rgb(255, 0, 0)", .backgroundColor, "rgb(255, 0, 0)",
"CSS module @import should not succeed"); "CSS module @import should not succeed");
}); });
document.body.appendChild(iframe); document.body.appendChild(iframe);
}, "An @import CSS Module should not load"); }, "An @import CSS Module should not load, but should not throw an exception");
async_test(function (test) { async_test(function (test) {
const iframe = document.createElement("iframe"); const iframe = document.createElement("iframe");

View file

@ -23,6 +23,19 @@ var audioConfigurationWithSpatialRendering = {
spatialRendering: true, spatialRendering: true,
}; };
// VideoConfiguration with optional hdrMetadataType, colorGamut, and
// transferFunction properties.
var videoConfigurationWithDynamicRange = {
contentType: 'video/webm; codecs="vp09.00.10.08"',
width: 800,
height: 600,
bitrate: 3000,
framerate: 24,
hdrMetadataType: "smpteSt2086",
colorGamut: "srgb",
transferFunction: "srgb",
}
promise_test(t => { promise_test(t => {
return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo()); return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo());
}, "Test that decodingInfo rejects if it doesn't get a configuration"); }, "Test that decodingInfo rejects if it doesn't get a configuration");
@ -314,3 +327,57 @@ promise_test(t => {
assert_equals(typeof ability.keySystemAccess, "object"); assert_equals(typeof ability.keySystemAccess, "object");
}); });
}, "Test that decodingInfo with spatialRendering set returns a valid MediaCapabilitiesInfo objects"); }, "Test that decodingInfo with spatialRendering set returns a valid MediaCapabilitiesInfo objects");
promise_test(t => {
return navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: videoConfigurationWithDynamicRange,
}).then(ability => {
assert_equals(typeof ability.supported, "boolean");
assert_equals(typeof ability.smooth, "boolean");
assert_equals(typeof ability.powerEfficient, "boolean");
assert_equals(typeof ability.keySystemAccess, "object");
});
}, "Test that decodingInfo with hdrMetadataType, colorGamut, and transferFunction set returns a valid MediaCapabilitiesInfo objects");
promise_test(t => {
return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'video/webm; codecs="vp09.00.10.08"',
width: 800,
height: 600,
bitrate: 3000,
framerate: 24,
hdrMetadataType: ""
},
}));
}, "Test that decodingInfo rejects if the video configuration has an empty hdrMetadataType");
promise_test(t => {
return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'video/webm; codecs="vp09.00.10.08"',
width: 800,
height: 600,
bitrate: 3000,
framerate: 24,
colorGamut: true
},
}));
}, "Test that decodingInfo rejects if the video configuration has a colorGamut set to true");
promise_test(t => {
return promise_rejects_js(t, TypeError, navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: {
contentType: 'video/webm; codecs="vp09.00.10.08"',
width: 800,
height: 600,
bitrate: 3000,
framerate: 24,
transferFunction: 3
},
}));
}, "Test that decodingInfo rejects if the video configuration has a transferFunction set to 3");

View file

@ -0,0 +1,129 @@
<!doctype html>
<meta charset=utf-8>
<title>RTCRtpSendParameters degradationPreference</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
'use strict';
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
const { sender } = pc.addTransceiver('video');
let param = sender.getParameters();
assert_equals(param.degradationPreference, undefined,
'Expect initial param.degradationPreference to be undefined');
param.degradationPreference = 'maintain-framerate';
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, 'maintain-framerate');
param.degradationPreference = 'maintain-resolution';
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, 'maintain-resolution');
param.degradationPreference = 'balanced';
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, 'balanced');
param.degradationPreference = undefined;
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, undefined);
}, 'setParameters with degradationPreference set should succeed on video transceiver');
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
const { sender } = pc.addTransceiver('video');
let param = sender.getParameters();
assert_equals(param.degradationPreference, undefined,
'Expect initial param.degradationPreference to be undefined');
param.degradationPreference = undefined;
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, undefined);
}, 'setParameters with degradationPreference unset should succeed on video transceiver');
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
const { sender } = pc.addTransceiver('video');
let param = sender.getParameters();
param.degradationPreference = 'invalid';
return promise_rejects_js(t, TypeError, sender.setParameters(param));
}, 'setParameters with invalid degradationPreference should throw TypeError on video transceiver');
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
const { sender } = pc.addTransceiver('audio');
let param = sender.getParameters();
assert_equals(param.degradationPreference, undefined,
'Expect initial param.degradationPreference to be undefined');
param.degradationPreference = 'maintain-framerate';
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, 'maintain-framerate');
param.degradationPreference = 'maintain-resolution';
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, 'maintain-resolution');
param.degradationPreference = 'balanced';
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, 'balanced');
param.degradationPreference = undefined;
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, undefined);
}, 'setParameters with degradationPreference set should succeed on audio transceiver');
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
const { sender } = pc.addTransceiver('audio');
let param = sender.getParameters();
assert_equals(param.degradationPreference, undefined,
'Expect initial param.degradationPreference to be undefined');
param.degradationPreference = undefined;
await sender.setParameters(param);
param = sender.getParameters();
assert_equals(param.degradationPreference, undefined);
}, 'setParameters with degradationPreference unset should succeed on audio transceiver');
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
const { sender } = pc.addTransceiver('audio');
let param = sender.getParameters();
param.degradationPreference = 'invalid';
return promise_rejects_js(t, TypeError, sender.setParameters(param));
}, 'setParameters with invalid degradationPreference should throw TypeError on audio transceiver');
</script>

View file

@ -34,7 +34,7 @@ from mod_pywebsocket import standalone as pywebsocket
EDIT_HOSTS_HELP = ("Please ensure all the necessary WPT subdomains " EDIT_HOSTS_HELP = ("Please ensure all the necessary WPT subdomains "
"are mapped to a loopback device in /etc/hosts. " "are mapped to a loopback device in /etc/hosts.\n"
"See https://web-platform-tests.org/running-tests/from-local-system.html#system-setup " "See https://web-platform-tests.org/running-tests/from-local-system.html#system-setup "
"for instructions.") "for instructions.")
@ -419,10 +419,10 @@ class ServerProc(object):
try: try:
self.daemon = init_func(host, port, paths, routes, bind_address, config, **kwargs) self.daemon = init_func(host, port, paths, routes, bind_address, config, **kwargs)
except socket.error: except socket.error:
print("Socket error on port %s" % port, file=sys.stderr) logger.critical("Socket error on port %s" % port, file=sys.stderr)
raise raise
except Exception: except Exception:
print(traceback.format_exc(), file=sys.stderr) logger.critical(traceback.format_exc())
raise raise
if self.daemon: if self.daemon:
@ -538,7 +538,17 @@ def start_servers(host, ports, paths, routes, bind_address, config, **kwargs):
return servers return servers
def startup_failed(log=True):
# Log=False is a workaround for https://github.com/web-platform-tests/wpt/issues/22719
if log:
logger.critical(EDIT_HOSTS_HELP)
else:
print("CRITICAL %s" % EDIT_HOSTS_HELP, file=sys.stderr)
sys.exit(1)
def start_http_server(host, port, paths, routes, bind_address, config, **kwargs): def start_http_server(host, port, paths, routes, bind_address, config, **kwargs):
try:
return wptserve.WebTestHttpd(host=host, return wptserve.WebTestHttpd(host=host,
port=port, port=port,
doc_root=paths["doc_root"], doc_root=paths["doc_root"],
@ -550,9 +560,12 @@ def start_http_server(host, port, paths, routes, bind_address, config, **kwargs)
key_file=None, key_file=None,
certificate=None, certificate=None,
latency=kwargs.get("latency")) latency=kwargs.get("latency"))
except Exception:
startup_failed()
def start_https_server(host, port, paths, routes, bind_address, config, **kwargs): def start_https_server(host, port, paths, routes, bind_address, config, **kwargs):
try:
return wptserve.WebTestHttpd(host=host, return wptserve.WebTestHttpd(host=host,
port=port, port=port,
doc_root=paths["doc_root"], doc_root=paths["doc_root"],
@ -565,9 +578,12 @@ def start_https_server(host, port, paths, routes, bind_address, config, **kwargs
certificate=config.ssl_config["cert_path"], certificate=config.ssl_config["cert_path"],
encrypt_after_connect=config.ssl_config["encrypt_after_connect"], encrypt_after_connect=config.ssl_config["encrypt_after_connect"],
latency=kwargs.get("latency")) latency=kwargs.get("latency"))
except Exception:
startup_failed()
def start_http2_server(host, port, paths, routes, bind_address, config, **kwargs): def start_http2_server(host, port, paths, routes, bind_address, config, **kwargs):
try:
return wptserve.WebTestHttpd(host=host, return wptserve.WebTestHttpd(host=host,
port=port, port=port,
handler_cls=wptserve.Http2WebTestRequestHandler, handler_cls=wptserve.Http2WebTestRequestHandler,
@ -582,6 +598,8 @@ def start_http2_server(host, port, paths, routes, bind_address, config, **kwargs
encrypt_after_connect=config.ssl_config["encrypt_after_connect"], encrypt_after_connect=config.ssl_config["encrypt_after_connect"],
latency=kwargs.get("latency"), latency=kwargs.get("latency"),
http2=True) http2=True)
except Exception:
startup_failed()
class WebSocketDaemon(object): class WebSocketDaemon(object):
@ -603,6 +621,12 @@ class WebSocketDaemon(object):
opts.is_executable_method = None opts.is_executable_method = None
self.server = pywebsocket.WebSocketServer(opts) self.server = pywebsocket.WebSocketServer(opts)
ports = [item[0].getsockname()[1] for item in self.server._sockets] ports = [item[0].getsockname()[1] for item in self.server._sockets]
if not ports:
# TODO: Fix the logging configuration in WebSockets processes
# see https://github.com/web-platform-tests/wpt/issues/22719
print("Failed to start websocket server on port %s, "
"is something already using that port?" % port, file=sys.stderr)
raise OSError()
assert all(item == ports[0] for item in ports) assert all(item == ports[0] for item in ports)
self.port = ports[0] self.port = ports[0]
self.started = False self.started = False
@ -651,12 +675,15 @@ def start_ws_server(host, port, paths, routes, bind_address, config, **kwargs):
# in the logging module unlocked # in the logging module unlocked
reload_module(logging) reload_module(logging)
release_mozlog_lock() release_mozlog_lock()
try:
return WebSocketDaemon(host, return WebSocketDaemon(host,
str(port), str(port),
repo_root, repo_root,
config.paths["ws_doc_root"], config.paths["ws_doc_root"],
bind_address, bind_address,
ssl_config=None) ssl_config=None)
except Exception:
startup_failed(log=False)
def start_wss_server(host, port, paths, routes, bind_address, config, **kwargs): def start_wss_server(host, port, paths, routes, bind_address, config, **kwargs):
@ -664,12 +691,15 @@ def start_wss_server(host, port, paths, routes, bind_address, config, **kwargs):
# in the logging module unlocked # in the logging module unlocked
reload_module(logging) reload_module(logging)
release_mozlog_lock() release_mozlog_lock()
try:
return WebSocketDaemon(host, return WebSocketDaemon(host,
str(port), str(port),
repo_root, repo_root,
config.paths["ws_doc_root"], config.paths["ws_doc_root"],
bind_address, bind_address,
config.ssl_config) config.ssl_config)
except Exception:
startup_failed(log=False)
def start(config, routes, **kwargs): def start(config, routes, **kwargs):
@ -892,7 +922,8 @@ def run(**kwargs):
signal.signal(signal.SIGTERM, handle_signal) signal.signal(signal.SIGTERM, handle_signal)
signal.signal(signal.SIGINT, handle_signal) signal.signal(signal.SIGINT, handle_signal)
while all(item.is_alive() for item in iter_procs(servers)) and not received_signal.is_set(): while (all(item.is_alive() for item in iter_procs(servers)) and
not received_signal.is_set()):
for item in iter_procs(servers): for item in iter_procs(servers):
item.join(1) item.join(1)
exited = [item for item in iter_procs(servers) if not item.is_alive()] exited = [item for item in iter_procs(servers) if not item.is_alive()]

View file

@ -92,6 +92,7 @@ class TestEnvironment(object):
self.servers = serve.start(self.config, self.servers = serve.start(self.config,
self.get_routes()) self.get_routes())
if self.options.get("supports_debugger") and self.debug_info and self.debug_info.interactive: if self.options.get("supports_debugger") and self.debug_info and self.debug_info.interactive:
self.ignore_interrupts() self.ignore_interrupts()
return self return self
@ -212,8 +213,10 @@ class TestEnvironment(object):
each_sleep_secs = 0.5 each_sleep_secs = 0.5
end_time = time.time() + total_sleep_secs end_time = time.time() + total_sleep_secs
while time.time() < end_time: while time.time() < end_time:
failed = self.test_servers() failed, pending = self.test_servers()
if not failed: if failed:
break
if not pending:
return return
time.sleep(each_sleep_secs) time.sleep(each_sleep_secs)
raise EnvironmentError("Servers failed to start: %s" % raise EnvironmentError("Servers failed to start: %s" %
@ -221,19 +224,23 @@ class TestEnvironment(object):
def test_servers(self): def test_servers(self):
failed = [] failed = []
pending = []
host = self.config["server_host"] host = self.config["server_host"]
for scheme, servers in iteritems(self.servers): for scheme, servers in iteritems(self.servers):
for port, server in servers: for port, server in servers:
if self.test_server_port: if not server.is_alive():
failed.append((scheme, port))
if not failed and self.test_server_port:
for scheme, servers in iteritems(self.servers):
for port, server in servers:
s = socket.socket() s = socket.socket()
s.settimeout(0.1) s.settimeout(0.1)
try: try:
s.connect((host, port)) s.connect((host, port))
except socket.error: except socket.error:
failed.append((host, port)) pending.append((host, port))
finally: finally:
s.close() s.close()
if not server.is_alive(): return failed, pending
failed.append((scheme, port))
return failed

View file

@ -64,12 +64,6 @@ handler returns, or for directly writing to the output stream.
""" """
EDIT_HOSTS_HELP = ("Please ensure all the necessary WPT subdomains "
"are mapped to a loopback device in /etc/hosts. "
"See https://web-platform-tests.org/running-tests/from-local-system.html#system-setup "
"for instructions.")
class RequestRewriter(object): class RequestRewriter(object):
def __init__(self, rules): def __init__(self, rules):
"""Object for rewriting the request path. """Object for rewriting the request path.
@ -676,7 +670,8 @@ class WebTestHttpd(object):
_host, self.port = self.httpd.socket.getsockname() _host, self.port = self.httpd.socket.getsockname()
except Exception: except Exception:
self.logger.critical("Failed to start HTTP server. {}".format(EDIT_HOSTS_HELP)) self.logger.critical("Failed to start HTTP server on port %s; "
"is something already using that port?" % port)
raise raise
def start(self, block=False): def start(self, block=False):

View file

@ -7,7 +7,7 @@
promise_test(async t => { promise_test(async t => {
await test_driver.set_permission( await test_driver.set_permission(
{ name: 'wake-lock', type: 'system' }, 'granted', false); { name: 'system-wake-lock' }, 'granted', false);
await fetch_tests_from_worker(new Worker('resources/idlharness-worker.js')); await fetch_tests_from_worker(new Worker('resources/idlharness-worker.js'));
}, 'Run idlharness tests in a worker.'); }, 'Run idlharness tests in a worker.');

View file

@ -3,7 +3,7 @@
// META: script=/resources/testdriver.js // META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js // META: script=/resources/testdriver-vendor.js
// https://w3c.github.io/wake-lock/ // https://w3c.github.io/screen-wake-lock/
'use strict'; 'use strict';
@ -19,7 +19,7 @@ idl_test(
}); });
await test_driver.set_permission( await test_driver.set_permission(
{ name: 'wake-lock', type: 'screen' }, 'granted', false); { name: 'screen-wake-lock' }, 'granted', false);
self.sentinel = await navigator.wakeLock.request('screen'); self.sentinel = await navigator.wakeLock.request('screen');
self.sentinel.release(); self.sentinel.release();
} }

View file

@ -15,7 +15,7 @@
promise_test(async t => { promise_test(async t => {
await test_driver.set_permission( await test_driver.set_permission(
{ name: 'wake-lock', type: 'screen' }, 'granted', false); { name: 'screen-wake-lock' }, 'granted', false);
await navigator.wakeLock.request('screen').then(lock => lock.release()); await navigator.wakeLock.request('screen').then(lock => lock.release());
}, 'Feature-Policy header {"screen-wake-lock" : ["*"]} allows the top-level document.'); }, 'Feature-Policy header {"screen-wake-lock" : ["*"]} allows the top-level document.');

View file

@ -16,7 +16,7 @@
promise_test(async t => { promise_test(async t => {
await test_driver.set_permission( await test_driver.set_permission(
{ name: 'wake-lock', type: 'screen' }, 'granted', false); { name: 'screen-wake-lock' }, 'granted', false);
await navigator.wakeLock.request('screen').then(lock => lock.release()); await navigator.wakeLock.request('screen').then(lock => lock.release());
}, 'Feature-Policy header screen-wake-lock "self" allows the top-level document.'); }, 'Feature-Policy header screen-wake-lock "self" allows the top-level document.');

View file

@ -1,12 +1,12 @@
<!DOCTYPE html> <!DOCTYPE html>
<link rel="help" href="https://w3c.github.io/wake-lock/#the-onrelease-attribute"> <link rel="help" href="https://w3c.github.io/screen-wake-lock/#the-onrelease-attribute">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script> <script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script> <script src="/resources/testdriver-vendor.js"></script>
<script> <script>
async_test(async t => { async_test(async t => {
await test_driver.set_permission({name: 'wake-lock', type: 'screen'}, 'granted', false); await test_driver.set_permission({name: 'screen-wake-lock'}, 'granted', false);
const lock = await navigator.wakeLock.request("screen"); const lock = await navigator.wakeLock.request("screen");
lock.onrelease = t.step_func_done((ev) => { lock.onrelease = t.step_func_done((ev) => {

View file

@ -9,7 +9,7 @@
'use strict'; 'use strict';
promise_test(async t => { promise_test(async t => {
await test_driver.set_permission({name: 'wake-lock', type: 'screen'}, 'denied', false); await test_driver.set_permission({name: 'screen-wake-lock'}, 'denied', false);
return promise_rejects_dom(t, "NotAllowedError", navigator.wakeLock.request('screen')); return promise_rejects_dom(t, "NotAllowedError", navigator.wakeLock.request('screen'));
}, 'Denied requests should abort with NotAllowedError'); }, 'Denied requests should abort with NotAllowedError');
</script> </script>

View file

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<title>Test that wake-lock is advertised in the feature list</title> <title>Test that wake-lock is advertised in the feature list</title>
<link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features"> <link rel="help" href="https://w3c.github.io/webappsec-feature-policy/#dom-featurepolicy-features">
<link rel="help" href="https://w3c.github.io/wake-lock/#dfn-wake-lock-feature"> <link rel="help" href="https://w3c.github.io/screen-wake-lock/#dfn-wake-lock-feature">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script> <script>

View file

@ -5,29 +5,21 @@
<script src="/resources/testdriver.js"></script> <script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-vendor.js"></script> <script src="/resources/testdriver-vendor.js"></script>
<script> <script>
promise_test(t => {
return promise_rejects_js(t, TypeError, navigator.permissions.query({ name:'wake-lock' }));
}, "WakeLockPermissionDescriptor's type attribute is required");
promise_test(t => {
return promise_rejects_js(t, TypeError, navigator.permissions.query({ name: 'wake-lock', type: 'foo' }));
}, "WakeLockPermissionDescriptor's type attribute must be a WakeLockType");
promise_test(async t => { promise_test(async t => {
await test_driver.set_permission({name: 'wake-lock', type: 'screen'}, 'denied', false); await test_driver.set_permission({name: 'screen-wake-lock'}, 'denied', false);
return navigator.permissions.query({name:'wake-lock', type: 'screen'}).then(status => { return navigator.permissions.query({name:'screen-wake-lock'}).then(status => {
assert_class_string(status, "PermissionStatus"); assert_class_string(status, "PermissionStatus");
assert_equals(status.state, "denied"); assert_equals(status.state, "denied");
}); });
}, "WakeLockPermissionDescriptor with type=screen works"); }, "PermissionDescriptor with name='screen-wake-lock' works");
promise_test(async t => { promise_test(async t => {
await test_driver.set_permission({name: 'wake-lock', type: 'system'}, 'denied', false); await test_driver.set_permission({name: 'system-wake-lock'}, 'denied', false);
return navigator.permissions.query({ name: 'wake-lock', type: 'system' }).then(status => { return navigator.permissions.query({ name: 'system-wake-lock' }).then(status => {
assert_class_string(status, "PermissionStatus"); assert_class_string(status, "PermissionStatus");
assert_equals(status.state, "denied"); assert_equals(status.state, "denied");
}); });
}, "WakeLockPermissionDescriptor with type=system works"); }, "PermissionDescriptor with name='system-wake-lock' works");
</script> </script>

View file

@ -28,7 +28,6 @@
sequence<RTCRtpHeaderExtensionParameters> headerExtensions; sequence<RTCRtpHeaderExtensionParameters> headerExtensions;
RTCRtcpParameters rtcp; RTCRtcpParameters rtcp;
sequence<RTCRtpCodecParameters> codecs; sequence<RTCRtpCodecParameters> codecs;
RTCDegradationPreference degradationPreference;
}; };
dictionary RTCRtpCodecParameters { dictionary RTCRtpCodecParameters {

View file

@ -1,87 +0,0 @@
<!doctype html>
<meta charset=utf-8>
<title>RTCRtpParameters degradationPreference</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="dictionary-helper.js"></script>
<script src="RTCRtpParameters-helper.js"></script>
<script>
'use strict';
// Test is based on the following editor draft:
// https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
// The following helper functions are called from RTCRtpParameters-helper.js:
// validateSenderRtpParameters
/*
5.2. RTCRtpSender Interface
interface RTCRtpSender {
Promise<void> setParameters(optional RTCRtpParameters parameters);
RTCRtpParameters getParameters();
};
dictionary RTCRtpParameters {
DOMString transactionId;
sequence<RTCRtpEncodingParameters> encodings;
sequence<RTCRtpHeaderExtensionParameters> headerExtensions;
RTCRtcpParameters rtcp;
sequence<RTCRtpCodecParameters> codecs;
RTCDegradationPreference degradationPreference;
};
enum RTCDegradationPreference {
"maintain-framerate",
"maintain-resolution",
"balanced"
};
- degradationPreference is set to the last value passed into setParameters,
or the default value of "balanced" if setParameters hasn't been called.
*/
promise_test(t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
const { sender } = pc.addTransceiver('audio');
const param = sender.getParameters();
validateSenderRtpParameters(param);
assert_equals(param.degradationPreference, 'balanced',
'Expect initial param.degradationPreference to be balanced');
param.degradationPreference = 'maintain-framerate';
return pc.setParameters(param)
.then(() => {
const param = sender.getParameters();
validateSenderRtpParameters(param);
assert_equals(param.degradationPreference, 'maintain-framerate');
});
}, 'setParameters with degradationPreference set should succeed');
promise_test(t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
const { sender } = pc.addTransceiver('audio');
const param = sender.getParameters();
validateSenderRtpParameters(param);
assert_equals(param.degradationPreference, 'balanced',
'Expect initial param.degradationPreference to be balanced');
param.degradationPreference = undefined;
return pc.setParameters(param)
.then(() => {
const param = sender.getParameters();
validateSenderRtpParameters(param);
assert_equals(param.degradationPreference, undefined);
});
}, 'setParameters with degradationPreference unset should succeed');
</script>

View file

@ -41,7 +41,6 @@
sequence<RTCRtpHeaderExtensionParameters> headerExtensions; sequence<RTCRtpHeaderExtensionParameters> headerExtensions;
RTCRtcpParameters rtcp; RTCRtcpParameters rtcp;
sequence<RTCRtpCodecParameters> codecs; sequence<RTCRtpCodecParameters> codecs;
RTCDegradationPreference degradationPreference;
}; };
dictionary RTCRtpEncodingParameters { dictionary RTCRtpEncodingParameters {

View file

@ -27,7 +27,6 @@
sequence<RTCRtpHeaderExtensionParameters> headerExtensions; sequence<RTCRtpHeaderExtensionParameters> headerExtensions;
RTCRtcpParameters rtcp; RTCRtcpParameters rtcp;
sequence<RTCRtpCodecParameters> codecs; sequence<RTCRtpCodecParameters> codecs;
RTCDegradationPreference degradationPreference;
}; };
dictionary RTCRtpHeaderExtensionParameters { dictionary RTCRtpHeaderExtensionParameters {

View file

@ -46,9 +46,6 @@ async function doOfferAnswerExchange(t, caller) {
- rtcp.cname is set to the CNAME of the associated RTCPeerConnection. rtcp.reducedSize - rtcp.cname is set to the CNAME of the associated RTCPeerConnection. rtcp.reducedSize
is set to true if reduced-size RTCP has been negotiated for sending, and false otherwise. is set to true if reduced-size RTCP has been negotiated for sending, and false otherwise.
- degradationPreference is set to the last value passed into setParameters, or the
default value of "balanced" if setParameters hasn't been called.
*/ */
function validateSenderRtpParameters(param) { function validateSenderRtpParameters(param) {
validateRtpParameters(param); validateRtpParameters(param);
@ -80,7 +77,7 @@ function validateSenderRtpParameters(param) {
- rtcp.reducedSize is set to true if the receiver is currently prepared to receive - rtcp.reducedSize is set to true if the receiver is currently prepared to receive
reduced-size RTCP packets, and false otherwise. rtcp.cname is left undefined. reduced-size RTCP packets, and false otherwise. rtcp.cname is left undefined.
- transactionId and degradationPreference are left undefined. - transactionId is left undefined.
*/ */
function validateReceiverRtpParameters(param) { function validateReceiverRtpParameters(param) {
validateRtpParameters(param); validateRtpParameters(param);
@ -93,9 +90,6 @@ function validateReceiverRtpParameters(param) {
assert_equals(param.rtcp.cname, undefined, assert_equals(param.rtcp.cname, undefined,
'Expect receiver param.rtcp.cname to be unset'); 'Expect receiver param.rtcp.cname to be unset');
assert_equals(param.degradationPreference, undefined,
'Expect receiver param.degradationPreference to be unset');
} }
/* /*
@ -105,7 +99,6 @@ function validateReceiverRtpParameters(param) {
sequence<RTCRtpHeaderExtensionParameters> headerExtensions; sequence<RTCRtpHeaderExtensionParameters> headerExtensions;
RTCRtcpParameters rtcp; RTCRtcpParameters rtcp;
sequence<RTCRtpCodecParameters> codecs; sequence<RTCRtpCodecParameters> codecs;
RTCDegradationPreference degradationPreference;
}; };
enum RTCDegradationPreference { enum RTCDegradationPreference {
@ -134,9 +127,6 @@ function validateRtpParameters(param) {
for(const codec of param.codecs) { for(const codec of param.codecs) {
validateCodecParameters(codec); validateCodecParameters(codec);
} }
assert_optional_enum_field(param, 'degradationPreference',
['maintain-framerate', 'maintain-resolution', 'balanced']);
} }
/* /*

View file

@ -27,7 +27,6 @@
sequence<RTCRtpHeaderExtensionParameters> headerExtensions; sequence<RTCRtpHeaderExtensionParameters> headerExtensions;
RTCRtcpParameters rtcp; RTCRtcpParameters rtcp;
sequence<RTCRtpCodecParameters> codecs; sequence<RTCRtpCodecParameters> codecs;
RTCDegradationPreference degradationPreference;
}; };
dictionary RTCRtcpParameters { dictionary RTCRtcpParameters {

View file

@ -48,7 +48,6 @@
sequence<RTCRtpHeaderExtensionParameters> headerExtensions; sequence<RTCRtpHeaderExtensionParameters> headerExtensions;
RTCRtcpParameters rtcp; RTCRtcpParameters rtcp;
sequence<RTCRtpCodecParameters> codecs; sequence<RTCRtpCodecParameters> codecs;
RTCDegradationPreference degradationPreference;
}; };
getParameters getParameters

View file

@ -30,8 +30,6 @@
- rtcp.reducedSize is set to true if the receiver is currently prepared to receive - rtcp.reducedSize is set to true if the receiver is currently prepared to receive
reduced-size RTCP packets, and false otherwise. rtcp.cname is left undefined. reduced-size RTCP packets, and false otherwise. rtcp.cname is left undefined.
- transactionId and degradationPreference are left undefined.
*/ */
promise_test(async t => { promise_test(async t => {
const pc = new RTCPeerConnection(); const pc = new RTCPeerConnection();