Update web-platform-tests to revision 94a0b420301fc9d7da16097083ecdce927e22343

This commit is contained in:
WPT Sync Bot 2019-08-26 10:26:31 +00:00
parent 66e5ad0cb8
commit 0233eb3d32
54 changed files with 1279 additions and 313 deletions

View file

@ -7,7 +7,7 @@
expected: FAIL expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.] [Opening a blob URL in a new window immediately before revoking it works.]
expected: TIMEOUT expected: FAIL
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.] [Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: FAIL expected: FAIL

View file

@ -34,3 +34,6 @@
[Revoke blob URL after creating Request, will fetch] [Revoke blob URL after creating Request, will fetch]
expected: FAIL expected: FAIL
[Revoke blob URL after calling fetch, fetch should succeed]
expected: FAIL

View file

@ -272285,6 +272285,12 @@
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/resources/broadcastchannel-worker.js.headers": [ "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/resources/broadcastchannel-worker.js.headers": [
[] []
], ],
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/resources/iframe-failure.html": [
[]
],
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/resources/iframe-failure.html.headers": [
[]
],
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/resources/incrementer-iframe-domain.sub.html": [ "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/resources/incrementer-iframe-domain.sub.html": [
[] []
], ],
@ -272375,6 +272381,9 @@
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-success.https.sub.html.headers": [ "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-domain-success.https.sub.html.headers": [
[] []
], ],
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-failure.https.html.headers": [
[]
],
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-iframe-messagechannel-success.https.html.headers": [ "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-iframe-messagechannel-success.https.html.headers": [
[] []
], ],
@ -288476,6 +288485,9 @@
"websockets/handlers/basic_auth_wsh.py": [ "websockets/handlers/basic_auth_wsh.py": [
[] []
], ],
"websockets/handlers/delayed-passive-close_wsh.py": [
[]
],
"websockets/handlers/echo-cookie_wsh.py": [ "websockets/handlers/echo-cookie_wsh.py": [
[] []
], ],
@ -288557,6 +288569,12 @@
"websockets/security/check.py": [ "websockets/security/check.py": [
[] []
], ],
"websockets/stream-tentative/README.md": [
[]
],
"websockets/stream-tentative/resources/url-constants.js": [
[]
],
"websockets/unload-a-document/001-1.html": [ "websockets/unload-a-document/001-1.html": [
[] []
], ],
@ -319712,6 +319730,30 @@
{} {}
] ]
], ],
"css/css-grid/parsing/grid-template-columns-invalid.html": [
[
"css/css-grid/parsing/grid-template-columns-invalid.html",
{}
]
],
"css/css-grid/parsing/grid-template-columns-valid.html": [
[
"css/css-grid/parsing/grid-template-columns-valid.html",
{}
]
],
"css/css-grid/parsing/grid-template-rows-invalid.html": [
[
"css/css-grid/parsing/grid-template-rows-invalid.html",
{}
]
],
"css/css-grid/parsing/grid-template-rows-valid.html": [
[
"css/css-grid/parsing/grid-template-rows-valid.html",
{}
]
],
"css/css-grid/placement/grid-auto-placement-implicit-tracks-001.html": [ "css/css-grid/placement/grid-auto-placement-implicit-tracks-001.html": [
[ [
"css/css-grid/placement/grid-auto-placement-implicit-tracks-001.html", "css/css-grid/placement/grid-auto-placement-implicit-tracks-001.html",
@ -353684,6 +353726,12 @@
{} {}
] ]
], ],
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-failure.https.html": [
[
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-failure.https.html",
{}
]
],
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-iframe-messagechannel-success.https.html": [ "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-iframe-messagechannel-success.https.html": [
[ [
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-iframe-messagechannel-success.https.html", "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-iframe-messagechannel-success.https.html",
@ -367085,6 +367133,12 @@
{} {}
] ]
], ],
"mathml/relations/css-styling/display-contents.html": [
[
"mathml/relations/css-styling/display-contents.html",
{}
]
],
"mathml/relations/css-styling/displaystyle-1.html": [ "mathml/relations/css-styling/displaystyle-1.html": [
[ [
"mathml/relations/css-styling/displaystyle-1.html", "mathml/relations/css-styling/displaystyle-1.html",
@ -417247,6 +417301,162 @@
{} {}
] ]
], ],
"websockets/stream-tentative/close.any.js": [
[
"websockets/stream-tentative/close.any.html",
{
"script_metadata": [
[
"script",
"../websocket.sub.js"
],
[
"script",
"resources/url-constants.js"
],
[
"global",
"window,worker"
]
]
}
],
[
"websockets/stream-tentative/close.any.serviceworker.html",
{
"script_metadata": [
[
"script",
"../websocket.sub.js"
],
[
"script",
"resources/url-constants.js"
],
[
"global",
"window,worker"
]
]
}
],
[
"websockets/stream-tentative/close.any.sharedworker.html",
{
"script_metadata": [
[
"script",
"../websocket.sub.js"
],
[
"script",
"resources/url-constants.js"
],
[
"global",
"window,worker"
]
]
}
],
[
"websockets/stream-tentative/close.any.worker.html",
{
"script_metadata": [
[
"script",
"../websocket.sub.js"
],
[
"script",
"resources/url-constants.js"
],
[
"global",
"window,worker"
]
]
}
]
],
"websockets/stream-tentative/constructor.any.js": [
[
"websockets/stream-tentative/constructor.any.html",
{
"script_metadata": [
[
"script",
"../websocket.sub.js"
],
[
"script",
"resources/url-constants.js"
],
[
"global",
"window,worker"
]
]
}
],
[
"websockets/stream-tentative/constructor.any.serviceworker.html",
{
"script_metadata": [
[
"script",
"../websocket.sub.js"
],
[
"script",
"resources/url-constants.js"
],
[
"global",
"window,worker"
]
]
}
],
[
"websockets/stream-tentative/constructor.any.sharedworker.html",
{
"script_metadata": [
[
"script",
"../websocket.sub.js"
],
[
"script",
"resources/url-constants.js"
],
[
"global",
"window,worker"
]
]
}
],
[
"websockets/stream-tentative/constructor.any.worker.html",
{
"script_metadata": [
[
"script",
"../websocket.sub.js"
],
[
"script",
"resources/url-constants.js"
],
[
"global",
"window,worker"
]
]
}
]
],
"websockets/unload-a-document/001.html": [ "websockets/unload-a-document/001.html": [
[ [
"websockets/unload-a-document/001.html", "websockets/unload-a-document/001.html",
@ -563246,6 +563456,22 @@
"9c9bd47ec894ccc0e389287120082fb4bf5c9905", "9c9bd47ec894ccc0e389287120082fb4bf5c9905",
"testharness" "testharness"
], ],
"css/css-grid/parsing/grid-template-columns-invalid.html": [
"9d7aac48721a763ab778e22523b16b3f99b3f16a",
"testharness"
],
"css/css-grid/parsing/grid-template-columns-valid.html": [
"85ac76a999aab5adf628a8e38f626fcae299d12f",
"testharness"
],
"css/css-grid/parsing/grid-template-rows-invalid.html": [
"8a0fe9ddfa23e12985c99c1fe9196eebfc04c8cc",
"testharness"
],
"css/css-grid/parsing/grid-template-rows-valid.html": [
"ec8d64f79bacc1d7831e415768c2a76bf05607e0",
"testharness"
],
"css/css-grid/placement/grid-auto-placement-implicit-tracks-001.html": [ "css/css-grid/placement/grid-auto-placement-implicit-tracks-001.html": [
"546336a6ce8208d7c30afd66e20fbe33040cbd7c", "546336a6ce8208d7c30afd66e20fbe33040cbd7c",
"testharness" "testharness"
@ -619959,7 +620185,7 @@
"support" "support"
], ],
"editing/data/insert-list-items-in-table-cells.js": [ "editing/data/insert-list-items-in-table-cells.js": [
"6a4d3985a570dd4acbf182c48d5acce2f2c1a0e1", "9324d5b55ac2ad969593296dc907c97de8d3c7e8",
"support" "support"
], ],
"editing/data/inserthorizontalrule.js": [ "editing/data/inserthorizontalrule.js": [
@ -635042,6 +635268,14 @@
"6604450991a122e3e241e40b1b9e0516c525389d", "6604450991a122e3e241e40b1b9e0516c525389d",
"support" "support"
], ],
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/resources/iframe-failure.html": [
"2c33dba79a2fb9e6a81fc9ee5805b378e826f725",
"support"
],
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/resources/iframe-failure.html.headers": [
"1528bf05e6368b00600b23c23042bf0d61985917",
"support"
],
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/resources/incrementer-iframe-domain.sub.html": [ "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/resources/incrementer-iframe-domain.sub.html": [
"a6dd70177584c9115c24beb281e7681110c07624", "a6dd70177584c9115c24beb281e7681110c07624",
"support" "support"
@ -635178,6 +635412,14 @@
"63b60e490f47f4db77d33d7a4ca2f5b9a4181de8", "63b60e490f47f4db77d33d7a4ca2f5b9a4181de8",
"support" "support"
], ],
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-failure.https.html": [
"203a9f637fe61a2367fd4b58523af601401991be",
"testharness"
],
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-failure.https.html.headers": [
"63b60e490f47f4db77d33d7a4ca2f5b9a4181de8",
"support"
],
"html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-iframe-messagechannel-success.https.html": [ "html/infrastructure/safe-passing-of-structured-data/shared-array-buffers/window-iframe-messagechannel-success.https.html": [
"98145310f610f0ca88af938872e9ea2103de600c", "98145310f610f0ca88af938872e9ea2103de600c",
"testharness" "testharness"
@ -649418,6 +649660,10 @@
"f32a15ec01ac808d2e32ecb8cb232c12a5e0aa19", "f32a15ec01ac808d2e32ecb8cb232c12a5e0aa19",
"reftest" "reftest"
], ],
"mathml/relations/css-styling/display-contents.html": [
"aeaa28da908816ad39619d9a47bbb43a3116bbe9",
"testharness"
],
"mathml/relations/css-styling/displaystyle-011-ref.html": [ "mathml/relations/css-styling/displaystyle-011-ref.html": [
"400c46a2456d0e1d4d48860e3ad557fa5d2990ee", "400c46a2456d0e1d4d48860e3ad557fa5d2990ee",
"support" "support"
@ -649727,7 +649973,7 @@
"reftest" "reftest"
], ],
"mathml/relations/css-styling/not-participating-to-parent-layout.html": [ "mathml/relations/css-styling/not-participating-to-parent-layout.html": [
"89389fc668234cc46bb58e33a099b2c04cc675b5", "769449b97d4983efc19aa9c0999725cb5735c6dc",
"testharness" "testharness"
], ],
"mathml/relations/css-styling/padding-border-margin/border-001.html": [ "mathml/relations/css-styling/padding-border-margin/border-001.html": [
@ -649735,7 +649981,7 @@
"testharness" "testharness"
], ],
"mathml/relations/css-styling/padding-border-margin/border-002.html": [ "mathml/relations/css-styling/padding-border-margin/border-002.html": [
"f78bc588c04cc3d7b7939a194b2b577bab8f1ae7", "06a719de64071ce0c9ca388ccf98fc4c6559a983",
"testharness" "testharness"
], ],
"mathml/relations/css-styling/padding-border-margin/margin-001.html": [ "mathml/relations/css-styling/padding-border-margin/margin-001.html": [
@ -649743,7 +649989,7 @@
"testharness" "testharness"
], ],
"mathml/relations/css-styling/padding-border-margin/margin-002.html": [ "mathml/relations/css-styling/padding-border-margin/margin-002.html": [
"69e1fd6b033c1a4be5e8f46bb699d08caf558eca", "01c8f3e45f83e9f9ad5168de98dc60c63e213841",
"testharness" "testharness"
], ],
"mathml/relations/css-styling/padding-border-margin/padding-001.html": [ "mathml/relations/css-styling/padding-border-margin/padding-001.html": [
@ -649751,7 +649997,7 @@
"testharness" "testharness"
], ],
"mathml/relations/css-styling/padding-border-margin/padding-002.html": [ "mathml/relations/css-styling/padding-border-margin/padding-002.html": [
"a2f167a34040e067e3f41db33034ecb891204d58", "565dfc43b566b0a3c019437111ce21db7885c426",
"testharness" "testharness"
], ],
"mathml/relations/css-styling/padding-border-margin/padding-border-margin-001-ref.html": [ "mathml/relations/css-styling/padding-border-margin/padding-border-margin-001-ref.html": [
@ -649827,7 +650073,7 @@
"testharness" "testharness"
], ],
"mathml/relations/html5-tree/clipboard-event-handlers.tentative.html": [ "mathml/relations/html5-tree/clipboard-event-handlers.tentative.html": [
"d293b1500c77dd289381619d658ad5761316b9cf", "0031004616886bc5933358d005d16d2299d52095",
"testharness" "testharness"
], ],
"mathml/relations/html5-tree/color-attributes-1-ref.html": [ "mathml/relations/html5-tree/color-attributes-1-ref.html": [
@ -649839,7 +650085,7 @@
"reftest" "reftest"
], ],
"mathml/relations/html5-tree/css-inline-style-interface.tentative.html": [ "mathml/relations/html5-tree/css-inline-style-interface.tentative.html": [
"708926413f2aff21c4972a3f0ab19c692b81bbc7", "b82f98e28b70cbfbadf7f585c9a2c8a2612ba05f",
"testharness" "testharness"
], ],
"mathml/relations/html5-tree/display-1.html": [ "mathml/relations/html5-tree/display-1.html": [
@ -649875,7 +650121,7 @@
"testharness" "testharness"
], ],
"mathml/relations/html5-tree/html-or-foreign-element-interfaces.tentative.html": [ "mathml/relations/html5-tree/html-or-foreign-element-interfaces.tentative.html": [
"1fcaf6c40167a5eeb55dcc62de14e50224998994", "bf4b99894da3251a394760f03d7b06b7e52b291f",
"testharness" "testharness"
], ],
"mathml/relations/html5-tree/integration-point-1-ref.html": [ "mathml/relations/html5-tree/integration-point-1-ref.html": [
@ -649907,7 +650153,7 @@
"testharness" "testharness"
], ],
"mathml/relations/html5-tree/math-global-event-handlers.tentative.html": [ "mathml/relations/html5-tree/math-global-event-handlers.tentative.html": [
"92e18639dff0d10949143bba2c7c403e48fdbe1c", "807a29ee315f2a0d4680b693bb9137a6cd50ca1c",
"testharness" "testharness"
], ],
"mathml/relations/html5-tree/required-extensions-2-ref.html": [ "mathml/relations/html5-tree/required-extensions-2-ref.html": [
@ -649959,7 +650205,7 @@
"support" "support"
], ],
"mathml/support/box-comparison.js": [ "mathml/support/box-comparison.js": [
"c46808f7fee6f72ec9e7ffd4946239d9dcaad25b", "a574b01706b5fecc232d62735ef7e89938594769",
"support" "support"
], ],
"mathml/support/feature-detection.js": [ "mathml/support/feature-detection.js": [
@ -696502,6 +696748,10 @@
"7ace8f4edb79e4d7dae94349ff256567a17c219b", "7ace8f4edb79e4d7dae94349ff256567a17c219b",
"support" "support"
], ],
"websockets/handlers/delayed-passive-close_wsh.py": [
"7d55b88ecc6db7fd9d3fb7a9722e030d926c807d",
"support"
],
"websockets/handlers/echo-cookie_wsh.py": [ "websockets/handlers/echo-cookie_wsh.py": [
"367d03190cfef898b092663a34891c721216f823", "367d03190cfef898b092663a34891c721216f823",
"support" "support"
@ -696946,6 +697196,22 @@
"f1414376dcf165ab1c7da18a6f5856796dfec2c2", "f1414376dcf165ab1c7da18a6f5856796dfec2c2",
"support" "support"
], ],
"websockets/stream-tentative/README.md": [
"6c5158877417a3271ff0179449eace740cf157a1",
"support"
],
"websockets/stream-tentative/close.any.js": [
"ddcdc2b2c8f62682f395551be1272b624876ce32",
"testharness"
],
"websockets/stream-tentative/constructor.any.js": [
"12a24f25f2cc50c9437c7e59c4997774d023a101",
"testharness"
],
"websockets/stream-tentative/resources/url-constants.js": [
"9bc77aa3264a157f3da9e37504febfe8563d40bb",
"support"
],
"websockets/unload-a-document/001-1.html": [ "websockets/unload-a-document/001-1.html": [
"bd0c36686954938a1d2bf70918bc506da431e296", "bd0c36686954938a1d2bf70918bc506da431e296",
"support" "support"

View file

@ -1,2 +0,0 @@
[mix-blend-mode-animation.html]
expected: FAIL

View file

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

View file

@ -3,3 +3,9 @@
[scroll-behavior: smooth on DIV element] [scroll-behavior: smooth on DIV element]
expected: FAIL expected: FAIL
[Smooth scrolling while doing history navigation.]
expected: FAIL
[Instant scrolling while doing history navigation.]
expected: FAIL

View file

@ -312,33 +312,24 @@
[<iframe>: separate response Content-Type: */* text/html] [<iframe>: separate response Content-Type: */* text/html]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: 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>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*] [<iframe>: separate response Content-Type: text/html */*]
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>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*] [<iframe>: combined response Content-Type: text/html */*]
expected: FAIL expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk] [<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL expected: FAIL

View file

@ -56,3 +56,6 @@
[separate text/javascript x/x] [separate text/javascript x/x]
expected: FAIL expected: FAIL
[separate text/javascript;charset=windows-1252 text/javascript]
expected: FAIL

View file

@ -11,3 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C] [X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
expected: FAIL

View file

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

View file

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

View file

@ -1,24 +1,5 @@
[open-features-negative-innerwidth-innerheight.html] [open-features-negative-innerwidth-innerheight.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`] [HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
expected: FAIL expected: FAIL
[features "innerheight=-404.5" should NOT set "height=404"]
expected: TIMEOUT
[features "innerwidth=-404.5" should NOT set "width=404"]
expected: TIMEOUT
[features "innerwidth=-404" should NOT set "width=404"]
expected: TIMEOUT
[features "innerheight=-404e1" should NOT set "height=404"]
expected: TIMEOUT
[features "innerheight=-404" should NOT set "height=404"]
expected: TIMEOUT
[features "innerwidth=-404e1" should NOT set "width=404"]
expected: TIMEOUT

View file

@ -1,24 +1,5 @@
[open-features-negative-screenx-screeny.html] [open-features-negative-screenx-screeny.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: negative values for legacy `screenx`, `screeny`] [HTML: window.open `features`: negative values for legacy `screenx`, `screeny`]
expected: FAIL expected: FAIL
[features "screenx=-204" should NOT set "left=204"]
expected: TIMEOUT
[features "screeny=-204" should NOT set "top=204"]
expected: TIMEOUT
[features "screeny=-204.5" should NOT set "top=204"]
expected: TIMEOUT
[features "screeny=-0" should NOT set "top=204"]
expected: TIMEOUT
[features "screenx=-0" should NOT set "left=204"]
expected: TIMEOUT
[features "screenx=-204.5" should NOT set "left=204"]
expected: TIMEOUT

View file

@ -1,24 +1,5 @@
[open-features-negative-width-height.html] [open-features-negative-width-height.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: negative values for `width`, `height`] [HTML: window.open `features`: negative values for `width`, `height`]
expected: FAIL expected: FAIL
[features "height=-404" should NOT set "height=404"]
expected: TIMEOUT
[features "height=-404e1" should NOT set "height=404"]
expected: TIMEOUT
[features "height=-404.5" should NOT set "height=404"]
expected: TIMEOUT
[features "width=-404" should NOT set "width=404"]
expected: TIMEOUT
[features "width=-404e1" should NOT set "width=404"]
expected: TIMEOUT
[features "width=-404.5" should NOT set "width=404"]
expected: TIMEOUT

View file

@ -1,48 +1,32 @@
[open-features-non-integer-height.html] [open-features-non-integer-height.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `height`] [HTML: window.open `features`: non-integer values for feature `height`]
expected: FAIL expected: FAIL
[features "height=405*3" should set "height=405"] [features "height=405*3" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "height=405.32" should set "height=405"] [features "height=405.32" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "height=405e1" should set "height=405"] [features "height=405e1" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "height=405/5" should set "height=405"] [features "height=405/5" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "height=405^4" should set "height=405"] [features "height=405^4" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "height=405.5" should set "height=405"] [features "height=405.5" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "height=405e-1" should set "height=405"] [features "height=405e-1" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "height=405 " should set "height=405"] [features "height=405 " should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "height=405LLl" should set "height=405"] [features "height=405LLl" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "height=/404" should NOT set "height=404"]
expected: TIMEOUT
[top=0,left=0,width=401,: absence of feature "height" should be treated same as "height=0"]
expected: TIMEOUT
[top=0,left=0: absence of feature "height" should be treated same as "height=0"]
expected: TIMEOUT
[features "height=_404" should NOT set "height=404"]
expected: TIMEOUT
[features "height=L404" should NOT set "height=404"]
expected: TIMEOUT

View file

@ -1,42 +1,32 @@
[open-features-non-integer-innerheight.html] [open-features-non-integer-innerheight.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`] [HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
expected: FAIL expected: FAIL
[features "innerheight=405e-1" should set "height=405"] [features "innerheight=405e-1" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "innerheight=405LLl" should set "height=405"] [features "innerheight=405LLl" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "innerheight=405^4" should set "height=405"] [features "innerheight=405^4" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "innerheight=405e1" should set "height=405"] [features "innerheight=405e1" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "innerheight=405 " should set "height=405"] [features "innerheight=405 " should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "innerheight=405/5" should set "height=405"] [features "innerheight=405/5" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "innerheight=405.32" should set "height=405"] [features "innerheight=405.32" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "innerheight=405.5" should set "height=405"] [features "innerheight=405.5" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "innerheight=405*3" should set "height=405"] [features "innerheight=405*3" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "innerheight=_404" should NOT set "height=404"]
expected: TIMEOUT
[features "innerheight=L404" should NOT set "height=404"]
expected: TIMEOUT
[features "innerheight=/404" should NOT set "height=404"]
expected: TIMEOUT

View file

@ -1,42 +1,32 @@
[open-features-non-integer-innerwidth.html] [open-features-non-integer-innerwidth.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `innerwidth`] [HTML: window.open `features`: non-integer values for legacy feature `innerwidth`]
expected: FAIL expected: FAIL
[features "innerwidth=405e-1" should set "width=405"] [features "innerwidth=405e-1" should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "innerwidth=405*3" should set "width=405"] [features "innerwidth=405*3" should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "innerwidth=405.5" should set "width=405"] [features "innerwidth=405.5" should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "innerwidth=405e1" should set "width=405"] [features "innerwidth=405e1" should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "innerwidth=405.32" should set "width=405"] [features "innerwidth=405.32" should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "innerwidth=405 " should set "width=405"] [features "innerwidth=405 " should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "innerwidth=405LLl" should set "width=405"] [features "innerwidth=405LLl" should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "innerwidth=405/5" should set "width=405"] [features "innerwidth=405/5" should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "innerwidth=405^4" should set "width=405"] [features "innerwidth=405^4" should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "innerwidth=/404" should NOT set "width=404"]
expected: TIMEOUT
[features "innerwidth=_404" should NOT set "width=404"]
expected: TIMEOUT
[features "innerwidth=L404" should NOT set "width=404"]
expected: TIMEOUT

View file

@ -1,42 +1,32 @@
[open-features-non-integer-left.html] [open-features-non-integer-left.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `left`] [HTML: window.open `features`: non-integer values for feature `left`]
expected: FAIL expected: FAIL
[features "left=105e1" should set "left=105"] [features "left=105e1" should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "left=105 " should set "left=105"] [features "left=105 " should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "left=105/5" should set "left=105"] [features "left=105/5" should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "left=105e-1" should set "left=105"] [features "left=105e-1" should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "left=105^4" should set "left=105"] [features "left=105^4" should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "left=105LLl" should set "left=105"] [features "left=105LLl" should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "left=105.32" should set "left=105"] [features "left=105.32" should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "left=105*3" should set "left=105"] [features "left=105*3" should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "left=105.5" should set "left=105"] [features "left=105.5" should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "left=L104" should NOT set "left=104"]
expected: TIMEOUT
[features "left=/104" should NOT set "left=104"]
expected: TIMEOUT
[features "left=_104" should NOT set "left=104"]
expected: TIMEOUT

View file

@ -1,42 +1,32 @@
[open-features-non-integer-screenx.html] [open-features-non-integer-screenx.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screenx`] [HTML: window.open `features`: non-integer values for legacy feature `screenx`]
expected: FAIL expected: FAIL
[features "screenx=105.5" should set "left=105"] [features "screenx=105.5" should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "screenx=105e1" should set "left=105"] [features "screenx=105e1" should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "screenx=105 " should set "left=105"] [features "screenx=105 " should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "screenx=105*3" should set "left=105"] [features "screenx=105*3" should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "screenx=105e-1" should set "left=105"] [features "screenx=105e-1" should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "screenx=105^4" should set "left=105"] [features "screenx=105^4" should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "screenx=105LLl" should set "left=105"] [features "screenx=105LLl" should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "screenx=105/5" should set "left=105"] [features "screenx=105/5" should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "screenx=105.32" should set "left=105"] [features "screenx=105.32" should set "left=105"]
expected: TIMEOUT expected: FAIL
[features "screenx=_104" should NOT set "left=104"]
expected: TIMEOUT
[features "screenx=L104" should NOT set "left=104"]
expected: TIMEOUT
[features "screenx=/104" should NOT set "left=104"]
expected: TIMEOUT

View file

@ -1,42 +1,32 @@
[open-features-non-integer-screeny.html] [open-features-non-integer-screeny.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for legacy feature `screeny`] [HTML: window.open `features`: non-integer values for legacy feature `screeny`]
expected: FAIL expected: FAIL
[features "screeny=405^4" should set "height=405"] [features "screeny=405^4" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "screeny=405e-1" should set "height=405"] [features "screeny=405e-1" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "screeny=405LLl" should set "height=405"] [features "screeny=405LLl" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "screeny=405e1" should set "height=405"] [features "screeny=405e1" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "screeny=405 " should set "height=405"] [features "screeny=405 " should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "screeny=405/5" should set "height=405"] [features "screeny=405/5" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "screeny=405*3" should set "height=405"] [features "screeny=405*3" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "screeny=405.32" should set "height=405"] [features "screeny=405.32" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "screeny=405.5" should set "height=405"] [features "screeny=405.5" should set "height=405"]
expected: TIMEOUT expected: FAIL
[features "screeny=_404" should NOT set "height=404"]
expected: TIMEOUT
[features "screeny=L404" should NOT set "height=404"]
expected: TIMEOUT
[features "screeny=/404" should NOT set "height=404"]
expected: TIMEOUT

View file

@ -1,42 +1,32 @@
[open-features-non-integer-top.html] [open-features-non-integer-top.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `top`] [HTML: window.open `features`: non-integer values for feature `top`]
expected: FAIL expected: FAIL
[features "top=105/5" should set "top=105"] [features "top=105/5" should set "top=105"]
expected: TIMEOUT expected: FAIL
[features "top=105*3" should set "top=105"] [features "top=105*3" should set "top=105"]
expected: TIMEOUT expected: FAIL
[features "top=105LLl" should set "top=105"] [features "top=105LLl" should set "top=105"]
expected: TIMEOUT expected: FAIL
[features "top=105e-1" should set "top=105"] [features "top=105e-1" should set "top=105"]
expected: TIMEOUT expected: FAIL
[features "top=105.32" should set "top=105"] [features "top=105.32" should set "top=105"]
expected: TIMEOUT expected: FAIL
[features "top=105e1" should set "top=105"] [features "top=105e1" should set "top=105"]
expected: TIMEOUT expected: FAIL
[features "top=105 " should set "top=105"] [features "top=105 " should set "top=105"]
expected: TIMEOUT expected: FAIL
[features "top=105^4" should set "top=105"] [features "top=105^4" should set "top=105"]
expected: TIMEOUT expected: FAIL
[features "top=105.5" should set "top=105"] [features "top=105.5" should set "top=105"]
expected: TIMEOUT expected: FAIL
[features "top=/104" should NOT set "top=104"]
expected: TIMEOUT
[features "top=_104" should NOT set "top=104"]
expected: TIMEOUT
[features "top=L104" should NOT set "top=104"]
expected: TIMEOUT

View file

@ -1,48 +1,32 @@
[open-features-non-integer-width.html] [open-features-non-integer-width.html]
type: testharness type: testharness
expected: TIMEOUT
[HTML: window.open `features`: non-integer values for feature `width`] [HTML: window.open `features`: non-integer values for feature `width`]
expected: FAIL expected: FAIL
[features "width=405^4" should set "width=405"] [features "width=405^4" should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "width=405.5" should set "width=405"] [features "width=405.5" should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "width=405e1" should set "width=405"] [features "width=405e1" should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "width=405 " should set "width=405"] [features "width=405 " should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "width=405.32" should set "width=405"] [features "width=405.32" should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "width=405LLl" should set "width=405"] [features "width=405LLl" should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "width=405*3" should set "width=405"] [features "width=405*3" should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "width=405e-1" should set "width=405"] [features "width=405e-1" should set "width=405"]
expected: TIMEOUT expected: FAIL
[features "width=405/5" should set "width=405"] [features "width=405/5" should set "width=405"]
expected: TIMEOUT expected: FAIL
[top=0,left=0: absence of feature "width" should be treated same as "width=0"]
expected: TIMEOUT
[features "width=_404" should NOT set "width=404"]
expected: TIMEOUT
[top=0,left=0,height=401,: absence of feature "width" should be treated same as "width=0"]
expected: TIMEOUT
[features "width=/404" should NOT set "width=404"]
expected: TIMEOUT
[features "width=L404" should NOT set "width=404"]
expected: TIMEOUT

View file

@ -0,0 +1,5 @@
[window-failure.https.html]
expected: TIMEOUT
[SharedArrayBuffer and a cross-site <iframe>]
expected: TIMEOUT

View file

@ -0,0 +1,10 @@
[non-active-document.html]
[DOMParser]
expected: FAIL
[createHTMLDocument]
expected: FAIL
[<template>]
expected: FAIL

View file

@ -1,7 +0,0 @@
[null-image-source.html]
[img with picture parent]
expected: FAIL
[img with empty srcset]
expected: FAIL

View file

@ -0,0 +1,7 @@
[toggleEvent.html]
[Calling open twice on 'details' fires only one toggle event]
expected: FAIL
[Setting open=true to opened 'details' element should not fire a toggle event at the 'details' element]
expected: FAIL

View file

@ -1,5 +1,4 @@
[promise-rejection-events.html] [promise-rejection-events.html]
expected: TIMEOUT
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire] [delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
expected: FAIL expected: FAIL
@ -9,6 +8,3 @@
[no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise created from createImageBitmap] [no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise created from createImageBitmap]
expected: FAIL expected: FAIL
[rejectionhandled is dispatched from a queued task, and not immediately]
expected: TIMEOUT

View file

@ -0,0 +1,181 @@
[close.any.html]
[unspecified close code with non-empty reason should set code to 1000]
expected: FAIL
[canceling the readable with an invalid code should be ignored]
expected: FAIL
[close() with an overlong reason should throw]
expected: FAIL
[close() with invalid code 5000 should throw]
expected: FAIL
[aborting the writable with a DOMException should be ignored]
expected: FAIL
[close() with invalid code 999 should throw]
expected: FAIL
[canceling the readable with a DOMException should be ignored]
expected: FAIL
[close(true) should throw a TypeError]
expected: FAIL
[canceling the readable with a reason but no code should be ignored]
expected: FAIL
[closing the writable should result in a clean close]
expected: FAIL
[close during handshake should work]
expected: FAIL
[canceling the readable should result in a clean close]
expected: FAIL
[aborting the writable with an invalid code should be ignored]
expected: FAIL
[aborting the writable with a code and reason should use them]
expected: FAIL
[canceling the readable with a code and reason should use them]
expected: FAIL
[canceling the readable with a code should send that code]
expected: FAIL
[close() with invalid code 2999 should throw]
expected: FAIL
[aborting the writable with a reason but no code should be ignored]
expected: FAIL
[aborting the writable with an invalid reason should be ignored]
expected: FAIL
[writer close() promise should not resolve until handshake completes]
expected: FAIL
[aborting the writable with a code should send that code]
expected: FAIL
[canceling the readable with an invalid reason should be ignored]
expected: FAIL
[close() with invalid code 1001 should throw]
expected: FAIL
[close code should be sent to server and reflected back]
expected: FAIL
[no close argument should send empty Close frame]
expected: FAIL
[unspecified close code with empty reason should send empty Close frame]
expected: FAIL
[aborting the writable should result in a clean close]
expected: FAIL
[unspecified close code should send empty Close frame]
expected: FAIL
[close.any.worker.html]
[unspecified close code with non-empty reason should set code to 1000]
expected: FAIL
[canceling the readable with an invalid code should be ignored]
expected: FAIL
[close() with an overlong reason should throw]
expected: FAIL
[close() with invalid code 5000 should throw]
expected: FAIL
[aborting the writable with a DOMException should be ignored]
expected: FAIL
[close() with invalid code 999 should throw]
expected: FAIL
[canceling the readable with a DOMException should be ignored]
expected: FAIL
[close(true) should throw a TypeError]
expected: FAIL
[canceling the readable with a reason but no code should be ignored]
expected: FAIL
[closing the writable should result in a clean close]
expected: FAIL
[close during handshake should work]
expected: FAIL
[canceling the readable should result in a clean close]
expected: FAIL
[aborting the writable with an invalid code should be ignored]
expected: FAIL
[aborting the writable with a code and reason should use them]
expected: FAIL
[canceling the readable with a code and reason should use them]
expected: FAIL
[canceling the readable with a code should send that code]
expected: FAIL
[close() with invalid code 2999 should throw]
expected: FAIL
[aborting the writable with a reason but no code should be ignored]
expected: FAIL
[aborting the writable with an invalid reason should be ignored]
expected: FAIL
[writer close() promise should not resolve until handshake completes]
expected: FAIL
[aborting the writable with a code should send that code]
expected: FAIL
[canceling the readable with an invalid reason should be ignored]
expected: FAIL
[close() with invalid code 1001 should throw]
expected: FAIL
[close code should be sent to server and reflected back]
expected: FAIL
[no close argument should send empty Close frame]
expected: FAIL
[unspecified close code with empty reason should send empty Close frame]
expected: FAIL
[aborting the writable should result in a clean close]
expected: FAIL
[unspecified close code should send empty Close frame]
expected: FAIL
[close.any.serviceworker.html]
[close]
expected: FAIL
[close.any.sharedworker.html]
[close]
expected: FAIL

View file

@ -0,0 +1,61 @@
[constructor.any.worker.html]
[constructing with a valid URL should work]
expected: FAIL
[setting a protocol in the constructor should work]
expected: FAIL
[wss.connection should resolve to the right types]
expected: FAIL
[constructing with no URL should throw]
expected: FAIL
[constructing with invalid options should throw]
expected: FAIL
[connection failure should reject the promises]
expected: FAIL
[protocols should be required to be a list]
expected: FAIL
[constructing with an invalid URL should throw]
expected: FAIL
[constructor.any.sharedworker.html]
[constructor]
expected: FAIL
[constructor.any.html]
[constructing with a valid URL should work]
expected: FAIL
[setting a protocol in the constructor should work]
expected: FAIL
[wss.connection should resolve to the right types]
expected: FAIL
[constructing with no URL should throw]
expected: FAIL
[constructing with invalid options should throw]
expected: FAIL
[connection failure should reject the promises]
expected: FAIL
[protocols should be required to be a list]
expected: FAIL
[constructing with an invalid URL should throw]
expected: FAIL
[constructor.any.serviceworker.html]
[constructor]
expected: FAIL

View file

@ -0,0 +1,2 @@
[Worker-constructor.html]
expected: ERROR

View file

@ -0,0 +1,30 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Grid Layout Test: parsing grid-template-columns with invalid values</title>
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-template-columns">
<meta name="assert" content="grid-template-columns supports only the grammar 'none | <track-list> | <auto-track-list>'.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
</head>
<body>
<script>
test_invalid_value("grid-template-columns", '-10px');
test_invalid_value("grid-template-columns", '-20%');
test_invalid_value("grid-template-columns", '-5fr');
test_invalid_value("grid-template-columns", 'minmax(5fr, calc(0.5em + 10px))');
test_invalid_value("grid-template-columns", 'minmax(-10px, auto)');
test_invalid_value("grid-template-columns", 'minmax(-20%, max-content)');
test_invalid_value("grid-template-columns", 'minmax(min-content, -20%)');
test_invalid_value("grid-template-columns", 'fit-content(-10px)');
test_invalid_value("grid-template-columns", 'fit-content(-20%)');
test_invalid_value("grid-template-columns", '[one] 10px [two three] repeat(20%) [four five six] 3fr [seven]');
test_invalid_value("grid-template-columns", '[one]');
test_invalid_value("grid-template-columns", '[one] 10px [two] [three]');
test_invalid_value("grid-template-columns", 'repeat(auto-fill, -10px)');
test_invalid_value("grid-template-columns", 'repeat(auto-fill, 10px) repeat(auto-fit, 20%)');
</script>
</body>
</html>

View file

@ -0,0 +1,79 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Grid Layout Test: parsing grid-template-columns with valid values</title>
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-template-columns">
<meta name="assert" content="grid-template-columns supports the full grammar 'none | <track-list> | <auto-track-list>'.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
</head>
<body>
<script>
test_valid_value("grid-template-columns", "none");
// track-size <fixed-breadth> = <length-percentage> | <flex> | min-content | max-content | auto
test_valid_value("grid-template-columns", '10px');
test_valid_value("grid-template-columns", '20%');
test_valid_value("grid-template-columns", 'calc(-0.5em + 10px)');
test_valid_value("grid-template-columns", 'calc(0.5em + 10px)');
test_valid_value("grid-template-columns", 'calc(30% + 40vw)');
test_valid_value("grid-template-columns", '5fr');
test_valid_value("grid-template-columns", 'min-content');
test_valid_value("grid-template-columns", 'max-content');
test_valid_value("grid-template-columns", 'auto');
// track-size minmax( <inflexible-breadth> , <track-breadth> )
test_valid_value("grid-template-columns", 'minmax(10px, auto)');
test_valid_value("grid-template-columns", 'minmax(20%, max-content)');
test_valid_value("grid-template-columns", 'minmax(calc(-0.5em + 10px), min-content)');
test_valid_value("grid-template-columns", 'minmax(calc(0.5em + 10px), 5fr)');
test_valid_value("grid-template-columns", 'minmax(calc(30% + 40vw), 10px)');
test_valid_value("grid-template-columns", 'minmax(min-content, 20%)');
test_valid_value("grid-template-columns", 'minmax(max-content, calc(-0.5em + 10px))');
test_valid_value("grid-template-columns", 'minmax(auto, calc(0.5em + 10px))');
// track-size fit-content( <length-percentage> )
test_valid_value("grid-template-columns", 'fit-content(10px)');
test_valid_value("grid-template-columns", 'fit-content(20%)');
test_valid_value("grid-template-columns", 'fit-content(calc(-0.5em + 10px))');
test_valid_value("grid-template-columns", 'fit-content(calc(0.5em + 10px))');
test_valid_value("grid-template-columns", 'fit-content(calc(30% + 40vw))');
// <track-repeat> = repeat( [ <positive-integer> ] , [ <line-names>? <track-size> ]+ <line-names>? )
// 'repeat(1, [] 10px)' in Blink
// 'repeat(1, 10px)' in Firefox
// '[] 10px' in Safari
// '10px' in Edge 18
test_valid_value("grid-template-columns", 'repeat(1, [] 10px)', ['repeat(1, 10px)', 'repeat(1, [] 10px)']);
// 'repeat(1, [one two] 20%)' in Blink, Firefox
// '[one two] 20%' in Safari, Edge 18
test_valid_value("grid-template-columns", 'repeat(1, [one two] 20%)');
// 'repeat(2, minmax(10px, auto))' in Blink, Firefox, Edge 18
// 'minmax(10px, auto) minmax(10px, auto)' in Safari
test_valid_value("grid-template-columns", 'repeat(2, minmax(10px, auto))');
test_valid_value("grid-template-columns", 'repeat(2, fit-content(20%) [three four] 30px 40px [five six])');
// <track-list> = [ <line-names>? [ <track-size> | <track-repeat> ] ]+ <line-names>?
test_valid_value("grid-template-columns", 'min-content repeat(5, minmax(10px, auto))');
// <auto-repeat> = repeat( [ auto-fill | auto-fit ] , [ <line-names>? <fixed-size> ]+ <line-names>? )
test_valid_value("grid-template-columns", 'repeat(auto-fill, 10px)');
test_valid_value("grid-template-columns", 'repeat(auto-fit, [one] 20%)');
test_valid_value("grid-template-columns", 'repeat(auto-fill, minmax(30px, 5fr) [two])');
test_valid_value("grid-template-columns", 'repeat(auto-fit, [three] minmax(max-content, 6em) [four])');
// <auto-track-list> =
// [ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>?
// <auto-repeat>
// [ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>?
test_valid_value("grid-template-columns", '[one] repeat(2, minmax(10px, auto)) [two] 30px [three] repeat(auto-fill, 10px) 40px [four five] repeat(2, minmax(10px, auto)) [six]');
</script>
</body>
</html>

View file

@ -0,0 +1,30 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Grid Layout Test: parsing grid-template-rows with invalid values</title>
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-template-rows">
<meta name="assert" content="grid-template-rows supports only the grammar 'none | <track-list> | <auto-track-list>'.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
</head>
<body>
<script>
test_invalid_value("grid-template-rows", '-10px');
test_invalid_value("grid-template-rows", '-20%');
test_invalid_value("grid-template-rows", '-5fr');
test_invalid_value("grid-template-rows", 'minmax(5fr, calc(0.5em + 10px))');
test_invalid_value("grid-template-rows", 'minmax(-10px, auto)');
test_invalid_value("grid-template-rows", 'minmax(-20%, max-content)');
test_invalid_value("grid-template-rows", 'minmax(min-content, -20%)');
test_invalid_value("grid-template-rows", 'fit-content(-10px)');
test_invalid_value("grid-template-rows", 'fit-content(-20%)');
test_invalid_value("grid-template-rows", '[one] 10px [two three] repeat(20%) [four five six] 3fr [seven]');
test_invalid_value("grid-template-rows", '[one]');
test_invalid_value("grid-template-rows", '[one] 10px [two] [three]');
test_invalid_value("grid-template-rows", 'repeat(auto-fill, -10px)');
test_invalid_value("grid-template-rows", 'repeat(auto-fill, 10px) repeat(auto-fit, 20%)');
</script>
</body>
</html>

View file

@ -0,0 +1,79 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Grid Layout Test: parsing grid-template-rows with valid values</title>
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#propdef-grid-template-rows">
<meta name="assert" content="grid-template-rows supports the full grammar 'none | <track-list> | <auto-track-list>'.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
</head>
<body>
<script>
test_valid_value("grid-template-rows", "none");
// track-size <fixed-breadth> = <length-percentage> | <flex> | min-content | max-content | auto
test_valid_value("grid-template-rows", '10px');
test_valid_value("grid-template-rows", '20%');
test_valid_value("grid-template-rows", 'calc(-0.5em + 10px)');
test_valid_value("grid-template-rows", 'calc(0.5em + 10px)');
test_valid_value("grid-template-rows", 'calc(30% + 40vw)');
test_valid_value("grid-template-rows", '5fr');
test_valid_value("grid-template-rows", 'min-content');
test_valid_value("grid-template-rows", 'max-content');
test_valid_value("grid-template-rows", 'auto');
// track-size minmax( <inflexible-breadth> , <track-breadth> )
test_valid_value("grid-template-rows", 'minmax(10px, auto)');
test_valid_value("grid-template-rows", 'minmax(20%, max-content)');
test_valid_value("grid-template-rows", 'minmax(calc(-0.5em + 10px), min-content)');
test_valid_value("grid-template-rows", 'minmax(calc(0.5em + 10px), 5fr)');
test_valid_value("grid-template-rows", 'minmax(calc(30% + 40vw), 10px)');
test_valid_value("grid-template-rows", 'minmax(min-content, 20%)');
test_valid_value("grid-template-rows", 'minmax(max-content, calc(-0.5em + 10px))');
test_valid_value("grid-template-rows", 'minmax(auto, calc(0.5em + 10px))');
// track-size fit-content( <length-percentage> )
test_valid_value("grid-template-rows", 'fit-content(10px)');
test_valid_value("grid-template-rows", 'fit-content(20%)');
test_valid_value("grid-template-rows", 'fit-content(calc(-0.5em + 10px))');
test_valid_value("grid-template-rows", 'fit-content(calc(0.5em + 10px))');
test_valid_value("grid-template-rows", 'fit-content(calc(30% + 40vw))');
// <track-repeat> = repeat( [ <positive-integer> ] , [ <line-names>? <track-size> ]+ <line-names>? )
// 'repeat(1, [] 10px)' in Blink
// 'repeat(1, 10px)' in Firefox
// '[] 10px' in Safari
// '10px' in Edge 18
test_valid_value("grid-template-rows", 'repeat(1, [] 10px)', ['repeat(1, 10px)', 'repeat(1, [] 10px)']);
// 'repeat(1, [one two] 20%)' in Blink, Firefox
// '[one two] 20%' in Safari, Edge 18
test_valid_value("grid-template-rows", 'repeat(1, [one two] 20%)');
// 'repeat(2, minmax(10px, auto))' in Blink, Firefox, Edge 18
// 'minmax(10px, auto) minmax(10px, auto)' in Safari
test_valid_value("grid-template-rows", 'repeat(2, minmax(10px, auto))');
test_valid_value("grid-template-rows", 'repeat(2, fit-content(20%) [three four] 30px 40px [five six])');
// <track-list> = [ <line-names>? [ <track-size> | <track-repeat> ] ]+ <line-names>?
test_valid_value("grid-template-rows", 'min-content repeat(5, minmax(10px, auto))');
// <auto-repeat> = repeat( [ auto-fill | auto-fit ] , [ <line-names>? <fixed-size> ]+ <line-names>? )
test_valid_value("grid-template-rows", 'repeat(auto-fill, 10px)');
test_valid_value("grid-template-rows", 'repeat(auto-fit, [one] 20%)');
test_valid_value("grid-template-rows", 'repeat(auto-fill, minmax(30px, 5fr) [two])');
test_valid_value("grid-template-rows", 'repeat(auto-fit, [three] minmax(max-content, 6em) [four])');
// <auto-track-list> =
// [ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>?
// <auto-repeat>
// [ <line-names>? [ <fixed-size> | <fixed-repeat> ] ]* <line-names>?
test_valid_value("grid-template-rows", '[one] repeat(2, minmax(10px, auto)) [two] 30px [three] repeat(auto-fill, 10px) 40px [four five] repeat(2, minmax(10px, auto)) [six]');
</script>
</body>
</html>

View file

@ -5,6 +5,26 @@ var browserTests = [
'<div contenteditable="true"><table><tbody><tr><td><ol><li>fsdf</li></ol></td><td>fsdf</td></tr><tr><td>gghfg</td><td>fsfg</td></tr></tbody></table></div>', '<div contenteditable="true"><table><tbody><tr><td><ol><li>fsdf</li></ol></td><td>fsdf</td></tr><tr><td>gghfg</td><td>fsfg</td></tr></tbody></table></div>',
[true], [true],
{"insertOrderedList":[false,false,"false",false,true,"true"]}], {"insertOrderedList":[false,false,"false",false,true,"true"]}],
['<div contenteditable="true"><table><tr><td>[fs<br>df]</td><td>fsdf</td></tr><tr><td>gghfg</td><td>fsfg</td></tr></table></div>',
[["insertOrderedList",""]],
'<div contenteditable="true"><table><tbody><tr><td><ol><li>fs</li><li>df</li></ol></td><td>fsdf</td></tr><tr><td>gghfg</td><td>fsfg</td></tr></tbody></table></div>',
[true],
{"insertOrderedList":[false,false,"false",false,true,"true"]}],
['<div contenteditable="true"><table><tr><td>[f<b>s<br>d</b>f]</td><td>fsdf</td></tr><tr><td>gghfg</td><td>fsfg</td></tr></table></div>',
[["insertOrderedList",""]],
'<div contenteditable="true"><table><tbody><tr><td><ol><li>f<b>s</b></li><li><b>d</b>f</li></ol></td><td>fsdf</td></tr><tr><td>gghfg</td><td>fsfg</td></tr></tbody></table></div>',
[true],
{"insertOrderedList":[false,false,"false",false,true,"true"]}],
['<div contenteditable="true"><table><tr><td>[fs]<br>df</td><td>fsdf</td></tr><tr><td>gghfg</td><td>fsfg</td></tr></table></div>',
[["insertOrderedList",""]],
'<div contenteditable="true"><table><tbody><tr><td><ol><li>fs</li></ol>df</td><td>fsdf</td></tr><tr><td>gghfg</td><td>fsfg</td></tr></tbody></table></div>',
[true],
{"insertOrderedList":[false,false,"false",false,true,"true"]}],
['<div contenteditable="true"><table><tr><td>[f<b>s]<br>d</b>f</td><td>fsdf</td></tr><tr><td>gghfg</td><td>fsfg</td></tr></table></div>',
[["insertOrderedList",""]],
'<div contenteditable="true"><table><tbody><tr><td><ol><li>f<b>s</b></li></ol><b>d</b>f</td><td>fsdf</td></tr><tr><td>gghfg</td><td>fsfg</td></tr></tbody></table></div>',
[true],
{"insertOrderedList":[false,false,"false",false,true,"true"]}],
['<div contenteditable="true"><table><tr data-start=0 data-end=2><td>fsdf</td><td>fsdf</td></tr><tr><td>gghfg</td><td>fsfg</td></tr></table></div>', ['<div contenteditable="true"><table><tr data-start=0 data-end=2><td>fsdf</td><td>fsdf</td></tr><tr><td>gghfg</td><td>fsfg</td></tr></table></div>',
[["insertOrderedList",""]], [["insertOrderedList",""]],
'<div contenteditable="true"><table><tbody><tr><td><ol><li>fsdf</li></ol></td><td><ol><li>fsdf</li></ol></td></tr><tr><td>gghfg</td><td>fsfg</td></tr></tbody></table></div>', '<div contenteditable="true"><table><tbody><tr><td><ol><li>fsdf</li></ol></td><td><ol><li>fsdf</li></ol></td></tr><tr><td>gghfg</td><td>fsfg</td></tr></tbody></table></div>',

View file

@ -0,0 +1,3 @@
<script>
parent.postMessage(new SharedArrayBuffer(10), "*");
</script>

View file

@ -0,0 +1,2 @@
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Resource-Policy: cross-site

View file

@ -0,0 +1,15 @@
<!doctype html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<div id=log></div>
<script>
async_test(t => {
const frame = document.createElement("iframe");
t.add_cleanup(() => frame.remove());
frame.src = get_host_info().HTTPS_NOTSAMESITE_ORIGIN + new URL("resources/iframe-failure.html", location).pathname;
window.onmessage = t.unreached_func("Got a message event, expected a messageerror event");
window.onmessageerror = t.step_func_done();
document.body.append(frame);
}, "SharedArrayBuffer and a cross-site <iframe>");
</script>

View file

@ -0,0 +1,2 @@
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp

View file

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>display: contents</title>
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#css-styling">
<meta name="assert" content="Verify that display: contents computes to display: none">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/mathml/support/mathml-fragments.js"></script>
<script>
setup({ explicit_done: true });
window.addEventListener("load", runTests);
function runTests() {
var container = document.getElementById("container");
for (tag in MathMLFragments) {
container.insertAdjacentHTML("beforeend", `<math>${MathMLFragments[tag]}</math>`);
}
test(function() {
Array.from(document.getElementsByClassName("element")).forEach(element => {
var style = window.getComputedStyle(element);
element.setAttribute("style", "display: contents");
assert_equals(style.getPropertyValue("display"), "none", `${tag}`);
});
}, "display: contents computes to display: none");
done();
}
</script>
</head>
<body>
<div id="log"></div>
<div id="container">
<math class="element"></math>
</div>
</body>
</html>

View file

@ -24,6 +24,7 @@
continue; continue;
// TODO: Add floats too? // TODO: Add floats too?
["display: none", ["display: none",
"display: contents",
"position: absolute", "position: absolute",
"position: fixed" "position: fixed"
].forEach(style => { ].forEach(style => {

View file

@ -28,6 +28,7 @@
var s = compareSizeWithAndWithoutStyle(tag, style); var s = compareSizeWithAndWithoutStyle(tag, style);
assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "left/right border"); assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "left/right border");
assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "top/bottom border"); assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "top/bottom border");
assert_approx_equals(s.preferred_width_delta, 30 + 40, epsilon, "preferred width");
}, `Border properties on ${tag}`); }, `Border properties on ${tag}`);
continue; continue;
} }
@ -40,6 +41,7 @@
assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom border"); assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom border");
assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "element width"); assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "element width");
assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "element height"); assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "element height");
assert_approx_equals(s.preferred_width_delta, 30 + 40, epsilon, "element preferred width");
}, `Border properties on ${tag}`); }, `Border properties on ${tag}`);
test(function() { test(function() {
@ -50,6 +52,7 @@
assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom border"); assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom border");
assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "element width"); assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "element width");
assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "element height"); assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "element height");
assert_approx_equals(s.preferred_width_delta, 30 + 40, epsilon, "element preferred width");
}, `Border properties on ${tag} (rtl)`); }, `Border properties on ${tag} (rtl)`);
} }

View file

@ -30,6 +30,7 @@
assert_approx_equals(s.height_delta, 50 + 60, epsilon, "top/bottom margin"); assert_approx_equals(s.height_delta, 50 + 60, epsilon, "top/bottom margin");
assert_approx_equals(s.element_width_delta, 0, epsilon, "element width"); assert_approx_equals(s.element_width_delta, 0, epsilon, "element width");
assert_approx_equals(s.element_height_delta, 0, epsilon, "element height"); assert_approx_equals(s.element_height_delta, 0, epsilon, "element height");
assert_approx_equals(s.preferred_width_delta, 30 + 40, epsilon, "preferred width");
}, `Margin properties on ${tag}`); }, `Margin properties on ${tag}`);
continue; continue;
} }
@ -42,6 +43,7 @@
assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom margin"); assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom margin");
assert_approx_equals(s.element_width_delta, 0, epsilon, "element width"); assert_approx_equals(s.element_width_delta, 0, epsilon, "element width");
assert_approx_equals(s.element_height_delta, 0, epsilon, "element height"); assert_approx_equals(s.element_height_delta, 0, epsilon, "element height");
assert_approx_equals(s.preferred_width_delta, 30 + 40, epsilon, "preferred width");
}, `Margin properties on ${tag}`); }, `Margin properties on ${tag}`);
test(function() { test(function() {
@ -52,6 +54,7 @@
assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom margin"); assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom margin");
assert_approx_equals(s.element_width_delta, 0, epsilon, "element width"); assert_approx_equals(s.element_width_delta, 0, epsilon, "element width");
assert_approx_equals(s.element_height_delta, 0, epsilon, "element height"); assert_approx_equals(s.element_height_delta, 0, epsilon, "element height");
assert_approx_equals(s.preferred_width_delta, 30 + 40, epsilon, "preferred width");
}, `Margin properties on ${tag} (rtl)`); }, `Margin properties on ${tag} (rtl)`);
test(function() { test(function() {
@ -64,6 +67,7 @@
assert_approx_equals(s.bottom_delta, 60 * 2, epsilon, "bottom margin"); assert_approx_equals(s.bottom_delta, 60 * 2, epsilon, "bottom margin");
assert_approx_equals(s.element_width_delta, 0, epsilon, "element width"); assert_approx_equals(s.element_width_delta, 0, epsilon, "element width");
assert_approx_equals(s.element_height_delta, 0, epsilon, "element height"); assert_approx_equals(s.element_height_delta, 0, epsilon, "element height");
assert_approx_equals(s.preferred_width_delta, (30 + 40) * 2, epsilon, "preferred width");
}, `Margin properties on ${tag} (no margin-collapsing)`); }, `Margin properties on ${tag} (no margin-collapsing)`);
} }

View file

@ -28,6 +28,7 @@
var s = compareSizeWithAndWithoutStyle(tag, style); var s = compareSizeWithAndWithoutStyle(tag, style);
assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "left/right padding"); assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "left/right padding");
assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "top/bottom padding"); assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "top/bottom padding");
assert_approx_equals(s.preferred_width_delta, 30 + 40, epsilon, "preferred width");
}, `Padding properties on ${tag}`); }, `Padding properties on ${tag}`);
continue; continue;
} }
@ -40,6 +41,7 @@
assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom padding"); assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom padding");
assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "element width"); assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "element width");
assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "element height"); assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "element height");
assert_approx_equals(s.preferred_width_delta, 30 + 40, epsilon, "preferred width");
}, `Padding properties on ${tag}`); }, `Padding properties on ${tag}`);
test(function() { test(function() {
@ -50,6 +52,7 @@
assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom padding"); assert_approx_equals(s.bottom_delta, 60, epsilon, "bottom padding");
assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "element width"); assert_approx_equals(s.element_width_delta, 30 + 40, epsilon, "element width");
assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "element height"); assert_approx_equals(s.element_height_delta, 50 + 60, epsilon, "element height");
assert_approx_equals(s.preferred_width_delta, 30 + 40, epsilon, "preferred width");
}, `Padding properties on ${tag} (rtl)`); }, `Padding properties on ${tag} (rtl)`);
} }

View file

@ -1,25 +1,10 @@
<!DOCTYPE html> <!DOCTYPE html>
<title>DocumentAndElementEventHandlers / clipboard events for MathML</title> <title>DocumentAndElementEventHandlers / clipboard events for MathML</title>
<link <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript"/>
rel="help" <link rel="help" href="https://html.spec.whatwg.org/multipage/webappapis.html#documentandelementeventhandlers"/>
href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript" <link rel="help" href="https://w3c.github.io/clipboard-apis/#clipboard-event-copy"/>
/> <link rel="help" href="https://w3c.github.io/clipboard-apis/#clipboard-event-cut"/>
<link <link rel="help" href="https://w3c.github.io/clipboard-apis/#clipboard-event-paste"/>
rel="help"
href="https://html.spec.whatwg.org/multipage/webappapis.html#documentandelementeventhandlers"
/>
<link
rel="help"
href="https://w3c.github.io/clipboard-apis/#clipboard-event-copy"
/>
<link
rel="help"
href="https://w3c.github.io/clipboard-apis/#clipboard-event-cut"
/>
<link
rel="help"
href="https://w3c.github.io/clipboard-apis/#clipboard-event-paste"
/>
<meta <meta
name="assert" name="assert"
content="MathMLElements incorporate a functional DocumentAndElementEventHandlers interface" content="MathMLElements incorporate a functional DocumentAndElementEventHandlers interface"

View file

@ -3,10 +3,7 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>MathML 'ElementCSSInlineStyle` Mixin Tests</title> <title>MathML 'ElementCSSInlineStyle` Mixin Tests</title>
<link <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript"/>
rel="help"
href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript"
/>
<style> <style>
math * { math * {
background-color: red; background-color: red;

View file

@ -3,10 +3,7 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<title>MathML 'HTMLOrForeignElement` Mixin Tests</title> <title>MathML 'HTMLOrForeignElement` Mixin Tests</title>
<link <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript"/>
rel="help"
href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript"
/>
<style> <style>
mi { mi {
background-color: red; background-color: red;

View file

@ -1,18 +1,9 @@
<!DOCTYPE html> <!DOCTYPE html>
<title>MathMLElement GlobalEventHandlers</title> <title>MathMLElement GlobalEventHandlers</title>
<link rel="author" title="Brian Kardell" href="mailto:bkardell@igalia.com" /> <link rel="author" title="Brian Kardell" href="mailto:bkardell@igalia.com" />
<link <link rel="help" href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript"/>
rel="help" <link rel="help" href="https://html.spec.whatwg.org/multipage/#event-handler-idl-attributes"/>
href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript" <link rel="help" href="https://html.spec.whatwg.org/multipage/#event-handler-content-attributes"/>
/>
<link
rel="help"
href="https://html.spec.whatwg.org/multipage/#event-handler-idl-attributes"
/>
<link
rel="help"
href="https://html.spec.whatwg.org/multipage/#event-handler-content-attributes"
/>
<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/WebIDLParser.js"></script> <script src="/resources/WebIDLParser.js"></script>

View file

@ -23,12 +23,13 @@ function compareSpaceWithAndWithoutStyle(tag, style, parentStyle, direction) {
if (!direction) if (!direction)
direction = "ltr"; direction = "ltr";
document.body.insertAdjacentHTML("beforeend", `<div style="position: absolute;">\ document.body.insertAdjacentHTML("beforeend", `<div style="position: absolute;">\
<math><mrow dir="${direction}">${MathMLFragments[tag]}</mrow></math>\ <div style="display: inline-block"><math><mrow dir="${direction}">${MathMLFragments[tag]}</mrow></math></div>\
<math><mrow dir="${direction}">${MathMLFragments[tag]}</mrow></math>\ <div style="display: inline-block"><math><mrow dir="${direction}">${MathMLFragments[tag]}</mrow></math></div>\
</div>`); </div>`);
var div = document.body.lastElementChild; var div = document.body.lastElementChild;
var styleMath = div.firstElementChild; var styleDiv = div.firstElementChild;
var styleMath = styleDiv.firstElementChild;
var styleParent = styleMath.firstElementChild; var styleParent = styleMath.firstElementChild;
if (parentStyle) if (parentStyle)
styleParent.setAttribute("style", parentStyle); styleParent.setAttribute("style", parentStyle);
@ -40,7 +41,8 @@ function compareSpaceWithAndWithoutStyle(tag, style, parentStyle, direction) {
var styleChildBox = styleChild.getBoundingClientRect(); var styleChildBox = styleChild.getBoundingClientRect();
var styleSpace = spaceBetween(styleChildBox, styleMathBox); var styleSpace = spaceBetween(styleChildBox, styleMathBox);
var noStyleMath = div.lastElementChild; var noStyleDiv = div.lastElementChild;
var noStyleMath = noStyleDiv.firstElementChild;
var noStyleElement = FragmentHelper.element(noStyleMath); var noStyleElement = FragmentHelper.element(noStyleMath);
var noStyleChild = FragmentHelper.forceNonEmptyElement(noStyleElement); var noStyleChild = FragmentHelper.forceNonEmptyElement(noStyleElement);
var noStyleMathBox = noStyleMath.getBoundingClientRect(); var noStyleMathBox = noStyleMath.getBoundingClientRect();
@ -48,9 +50,14 @@ function compareSpaceWithAndWithoutStyle(tag, style, parentStyle, direction) {
var noStyleChildBox = noStyleChild.getBoundingClientRect(); var noStyleChildBox = noStyleChild.getBoundingClientRect();
var noStyleSpace = spaceBetween(noStyleChildBox, noStyleMathBox); var noStyleSpace = spaceBetween(noStyleChildBox, noStyleMathBox);
var preferredWidthDelta =
styleDiv.getBoundingClientRect().width -
noStyleDiv.getBoundingClientRect().width;
div.style = "display: none;"; // Hide the div after measurement. div.style = "display: none;"; // Hide the div after measurement.
return { return {
preferred_width_delta: preferredWidthDelta,
left_delta: styleSpace.left - noStyleSpace.left, left_delta: styleSpace.left - noStyleSpace.left,
right_delta: styleSpace.right - noStyleSpace.right, right_delta: styleSpace.right - noStyleSpace.right,
top_delta: styleSpace.top - noStyleSpace.top, top_delta: styleSpace.top - noStyleSpace.top,
@ -65,25 +72,32 @@ function compareSizeWithAndWithoutStyle(tag, style) {
throw `Invalid argument: ${tag}`; throw `Invalid argument: ${tag}`;
document.body.insertAdjacentHTML("beforeend", `<div style="position: absolute;">\ document.body.insertAdjacentHTML("beforeend", `<div style="position: absolute;">\
<math>${MathMLFragments[tag]}</math>\ <div style="display: inline-block"><math>${MathMLFragments[tag]}</math></div>\
<math>${MathMLFragments[tag]}</math>\ <div style="display: inline-block"><math>${MathMLFragments[tag]}</math></div>\
</div>`); </div>`);
var div = document.body.lastElementChild; var div = document.body.lastElementChild;
var styleMath = div.firstElementChild; var styleDiv = div.firstElementChild;
var styleMath = styleDiv.firstElementChild;
var styleElement = FragmentHelper.element(styleMath); var styleElement = FragmentHelper.element(styleMath);
styleElement.setAttribute("style", style); styleElement.setAttribute("style", style);
var styleMathBox = styleMath.getBoundingClientRect(); var styleMathBox = styleMath.getBoundingClientRect();
var styleElementBox = styleElement.getBoundingClientRect(); var styleElementBox = styleElement.getBoundingClientRect();
var noStyleMath = div.lastElementChild; var noStyleDiv = div.lastElementChild;
var noStyleMath = noStyleDiv.firstElementChild;
var noStyleElement = FragmentHelper.element(noStyleMath); var noStyleElement = FragmentHelper.element(noStyleMath);
var noStyleMathBox = noStyleMath.getBoundingClientRect(); var noStyleMathBox = noStyleMath.getBoundingClientRect();
var noStyleElementBox = noStyleElement.getBoundingClientRect(); var noStyleElementBox = noStyleElement.getBoundingClientRect();
var preferredWidthDelta =
styleDiv.getBoundingClientRect().width -
noStyleDiv.getBoundingClientRect().width;
div.style = "display: none;"; // Hide the div after measurement. div.style = "display: none;"; // Hide the div after measurement.
return { return {
preferred_width_delta: preferredWidthDelta,
width_delta: styleMathBox.width - noStyleMathBox.width, width_delta: styleMathBox.width - noStyleMathBox.width,
height_delta: styleMathBox.height - noStyleMathBox.height, height_delta: styleMathBox.height - noStyleMathBox.height,
element_width_delta: styleElementBox.width - noStyleElementBox.width, element_width_delta: styleElementBox.width - noStyleElementBox.width,

View file

@ -0,0 +1,27 @@
#!/usr/bin/python
from mod_pywebsocket import common
import time
def web_socket_do_extra_handshake(request):
pass
def web_socket_transfer_data(request):
# Wait for the close frame to arrive.
request.ws_stream.receive_message()
def web_socket_passive_closing_handshake(request):
# Echo close status code and reason
code, reason = request.ws_close_code, request.ws_close_reason
# No status received is a reserved pseudo code representing an empty code,
# so echo back an empty code in this case.
if code == common.STATUS_NO_STATUS_RECEIVED:
code = None
# The browser may error the connection if the closing handshake takes too
# long, but hopefully no browser will have a timeout this short.
time.sleep(1)
return code, reason

View file

@ -0,0 +1,9 @@
# WebSocketStream tentative tests
Tests in this directory are for the proposed "WebSocketStream" interface to the
WebSocket protocol. This is not yet standardised and browsers should not be
expected to pass these tests.
See the explainer at
https://github.com/ricea/websocketstream-explainer/blob/master/README.md for
more information about the API.

View file

@ -0,0 +1,184 @@
// META: script=../websocket.sub.js
// META: script=resources/url-constants.js
// META: global=window,worker
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
await wss.connection;
wss.close({code: 3456, reason: 'pizza'});
const { code, reason } = await wss.closed;
assert_equals(code, 3456, 'code should match');
assert_equals(reason, 'pizza', 'reason should match');
}, 'close code should be sent to server and reflected back');
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
await wss.connection;
wss.close();
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
assert_equals(reason, '', 'reason should be empty');
}, 'no close argument should send empty Close frame');
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
await wss.connection;
wss.close({});
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
assert_equals(reason, '', 'reason should be empty');
}, 'unspecified close code should send empty Close frame');
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
await wss.connection;
wss.close({reason: ''});
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
assert_equals(reason, '', 'reason should be empty');
}, 'unspecified close code with empty reason should send empty Close frame');
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
await wss.connection;
wss.close({reason: 'non-empty'});
const { code, reason } = await wss.closed;
assert_equals(code, 1000, 'code should be set');
assert_equals(reason, 'non-empty', 'reason should match');
}, 'unspecified close code with non-empty reason should set code to 1000');
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
await wss.connection;
assert_throws(new TypeError(), () => wss.close(true),
'close should throw a TypeError');
}, 'close(true) should throw a TypeError');
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
await wss.connection;
const reason = '.'.repeat(124);
assert_throws('SyntaxError', () => wss.close({ reason }),
'close should throw a TypeError');
}, 'close() with an overlong reason should throw');
promise_test(t => {
const wss = new WebSocketStream(ECHOURL);
wss.close();
return Promise.all([
promise_rejects(t, 'NetworkError', wss.connection,
'connection promise should reject'),
promise_rejects(t, 'NetworkError', wss.closed,
'closed promise should reject')]);
}, 'close during handshake should work');
for (const invalidCode of [999, 1001, 2999, 5000]) {
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
await wss.connection;
assert_throws('InvalidAccessError', () => wss.close({ code: invalidCode }),
'close should throw a TypeError');
}, `close() with invalid code ${invalidCode} should throw`);
}
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
const { writable } = await wss.connection;
writable.getWriter().close();
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
assert_equals(reason, '', 'reason should be empty');
}, 'closing the writable should result in a clean close');
promise_test(async () => {
const wss = new WebSocketStream(`${BASEURL}/delayed-passive-close`);
const { writable } = await wss.connection;
const startTime = performance.now();
await writable.getWriter().close();
const elapsed = performance.now() - startTime;
const jitterAllowance = 100;
assert_greater_than_equal(elapsed, 1000 - jitterAllowance,
'one second should have elapsed');
}, 'writer close() promise should not resolve until handshake completes');
const abortOrCancel = [
{
method: 'abort',
voweling: 'aborting',
stream: 'writable',
},
{
method: 'cancel',
voweling: 'canceling',
stream: 'readable',
},
];
for (const { method, voweling, stream } of abortOrCancel) {
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
const info = await wss.connection;
info[stream][method]();
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
assert_equals(reason, '', 'reason should be empty');
}, `${voweling} the ${stream} should result in a clean close`);
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
const info = await wss.connection;
info[stream][method]({ code: 3333 });
const { code, reason } = await wss.closed;
assert_equals(code, 3333, 'code should be used');
assert_equals(reason, '', 'reason should be empty');
}, `${voweling} the ${stream} with a code should send that code`);
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
const info = await wss.connection;
info[stream][method]({ code: 3456, reason: 'set' });
const { code, reason } = await wss.closed;
assert_equals(code, 3456, 'code should be used');
assert_equals(reason, 'set', 'reason should be used');
}, `${voweling} the ${stream} with a code and reason should use them`);
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
const info = await wss.connection;
info[stream][method]({ reason: 'specified' });
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
assert_equals(reason, '', 'reason should be empty');
}, `${voweling} the ${stream} with a reason but no code should be ignored`);
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
const info = await wss.connection;
info[stream][method]({ code: 999 });
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
assert_equals(reason, '', 'reason should be empty');
}, `${voweling} the ${stream} with an invalid code should be ignored`);
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
const info = await wss.connection;
info[stream][method]({ code: 1000, reason: 'x'.repeat(128) });
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
assert_equals(reason, '', 'reason should be empty');
}, `${voweling} the ${stream} with an invalid reason should be ignored`);
// DOMExceptions are only ignored because the |code| attribute is too small to
// be a valid WebSocket close code.
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
const info = await wss.connection;
info[stream][method](new DOMException('yes', 'DataCloneError'));
const { code, reason } = await wss.closed;
assert_equals(code, 1005, 'code should be unset');
assert_equals(reason, '', 'reason should be empty');
}, `${voweling} the ${stream} with a DOMException should be ignored`);
}

View file

@ -0,0 +1,66 @@
// META: script=../websocket.sub.js
// META: script=resources/url-constants.js
// META: global=window,worker
test(() => {
assert_throws(new TypeError(), () => new WebSocketStream(),
'constructor should throw');
}, 'constructing with no URL should throw');
test(() => {
assert_throws(new SyntaxError(), () => new WebSocketStream('invalid:'),
"constructor should throw");
}, 'constructing with an invalid URL should throw');
test(() => {
assert_throws(new TypeError(),
() => new WebSocketStream(`${BASEURL}/`, true),
"constructor should throw");
}, 'constructing with invalid options should throw');
test(() => {
assert_throws(new TypeError(),
() => new WebSocketStream(`${BASEURL}/`, {protocols: 'hi'}),
"constructor should throw");
}, 'protocols should be required to be a list');
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
await wss.connection;
assert_equals(wss.url, ECHOURL, 'url should match');
wss.close();
}, 'constructing with a valid URL should work');
promise_test(async () => {
const wss = new WebSocketStream(`${BASEURL}/protocol_array`,
{protocols: ['alpha', 'beta']});
const { readable, protocol } = await wss.connection;
assert_equals(protocol, 'alpha', 'protocol should be right');
const reader = readable.getReader();
const { value, done } = await reader.read();
assert_equals(value, 'alpha', 'message contents should match');
wss.close();
}, 'setting a protocol in the constructor should work');
promise_test(t => {
const wss = new WebSocketStream(`${BASEURL}/404`);
return Promise.all([
promise_rejects(t, 'NetworkError', wss.connection,
'connection should reject'),
promise_rejects(t, 'NetworkError', wss.closed, 'closed should reject')
]);
}, 'connection failure should reject the promises');
promise_test(async () => {
const wss = new WebSocketStream(ECHOURL);
const { readable, writable, protocol, extensions} = await wss.connection;
// Verify that |readable| really is a ReadableStream using the getReader()
// brand check. If it doesn't throw the test passes.
ReadableStream.prototype.getReader.call(readable);
// Verify that |writable| really is a WritableStream using the getWriter()
// brand check. If it doesn't throw the test passes.
WritableStream.prototype.getWriter.call(writable);
assert_equals(typeof protocol, 'string', 'protocol should be a string');
assert_equals(typeof extensions, 'string', 'extensions should be a string');
wss.close();
}, 'wss.connection should resolve to the right types');

View file

@ -0,0 +1,11 @@
// The file including this must also include ../websocket.sub.js to pick up the
// necessary constants.
const {BASEURL, ECHOURL} = (() => {
const isSecure = location.href.match(/^https:/);
const scheme = isSecure ? "wss:" : "ws:";
const port = isSecure ? __SECURE__PORT : __PORT;
const BASEURL = `${scheme}//${__SERVER__NAME}:${port}`;
const ECHOURL = `${BASEURL}/echo`;
return {BASEURL, ECHOURL};
})();