mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Auto merge of #24056 - servo-wpt-sync:wpt_update_26-08-2019, r=servo-wpt-sync
Sync WPT with upstream (26-08-2019) Automated downstream sync of changes from upstream as of 26-08-2019. [no-wpt-sync]
This commit is contained in:
commit
a3e33d6388
54 changed files with 1279 additions and 313 deletions
|
@ -7,7 +7,7 @@
|
|||
expected: FAIL
|
||||
|
||||
[Opening a blob URL in a new window immediately before revoking it works.]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
|
||||
expected: FAIL
|
||||
|
|
|
@ -34,3 +34,6 @@
|
|||
[Revoke blob URL after creating Request, will fetch]
|
||||
expected: FAIL
|
||||
|
||||
[Revoke blob URL after calling fetch, fetch should succeed]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -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/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": [
|
||||
[]
|
||||
],
|
||||
|
@ -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-failure.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/delayed-passive-close_wsh.py": [
|
||||
[]
|
||||
],
|
||||
"websockets/handlers/echo-cookie_wsh.py": [
|
||||
[]
|
||||
],
|
||||
|
@ -288557,6 +288569,12 @@
|
|||
"websockets/security/check.py": [
|
||||
[]
|
||||
],
|
||||
"websockets/stream-tentative/README.md": [
|
||||
[]
|
||||
],
|
||||
"websockets/stream-tentative/resources/url-constants.js": [
|
||||
[]
|
||||
],
|
||||
"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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -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",
|
||||
|
@ -563246,6 +563456,22 @@
|
|||
"9c9bd47ec894ccc0e389287120082fb4bf5c9905",
|
||||
"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": [
|
||||
"546336a6ce8208d7c30afd66e20fbe33040cbd7c",
|
||||
"testharness"
|
||||
|
@ -619959,7 +620185,7 @@
|
|||
"support"
|
||||
],
|
||||
"editing/data/insert-list-items-in-table-cells.js": [
|
||||
"6a4d3985a570dd4acbf182c48d5acce2f2c1a0e1",
|
||||
"9324d5b55ac2ad969593296dc907c97de8d3c7e8",
|
||||
"support"
|
||||
],
|
||||
"editing/data/inserthorizontalrule.js": [
|
||||
|
@ -635042,6 +635268,14 @@
|
|||
"6604450991a122e3e241e40b1b9e0516c525389d",
|
||||
"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": [
|
||||
"a6dd70177584c9115c24beb281e7681110c07624",
|
||||
"support"
|
||||
|
@ -635178,6 +635412,14 @@
|
|||
"63b60e490f47f4db77d33d7a4ca2f5b9a4181de8",
|
||||
"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": [
|
||||
"98145310f610f0ca88af938872e9ea2103de600c",
|
||||
"testharness"
|
||||
|
@ -649418,6 +649660,10 @@
|
|||
"f32a15ec01ac808d2e32ecb8cb232c12a5e0aa19",
|
||||
"reftest"
|
||||
],
|
||||
"mathml/relations/css-styling/display-contents.html": [
|
||||
"aeaa28da908816ad39619d9a47bbb43a3116bbe9",
|
||||
"testharness"
|
||||
],
|
||||
"mathml/relations/css-styling/displaystyle-011-ref.html": [
|
||||
"400c46a2456d0e1d4d48860e3ad557fa5d2990ee",
|
||||
"support"
|
||||
|
@ -649727,7 +649973,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"mathml/relations/css-styling/not-participating-to-parent-layout.html": [
|
||||
"89389fc668234cc46bb58e33a099b2c04cc675b5",
|
||||
"769449b97d4983efc19aa9c0999725cb5735c6dc",
|
||||
"testharness"
|
||||
],
|
||||
"mathml/relations/css-styling/padding-border-margin/border-001.html": [
|
||||
|
@ -649735,7 +649981,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"mathml/relations/css-styling/padding-border-margin/border-002.html": [
|
||||
"f78bc588c04cc3d7b7939a194b2b577bab8f1ae7",
|
||||
"06a719de64071ce0c9ca388ccf98fc4c6559a983",
|
||||
"testharness"
|
||||
],
|
||||
"mathml/relations/css-styling/padding-border-margin/margin-001.html": [
|
||||
|
@ -649743,7 +649989,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"mathml/relations/css-styling/padding-border-margin/margin-002.html": [
|
||||
"69e1fd6b033c1a4be5e8f46bb699d08caf558eca",
|
||||
"01c8f3e45f83e9f9ad5168de98dc60c63e213841",
|
||||
"testharness"
|
||||
],
|
||||
"mathml/relations/css-styling/padding-border-margin/padding-001.html": [
|
||||
|
@ -649751,7 +649997,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"mathml/relations/css-styling/padding-border-margin/padding-002.html": [
|
||||
"a2f167a34040e067e3f41db33034ecb891204d58",
|
||||
"565dfc43b566b0a3c019437111ce21db7885c426",
|
||||
"testharness"
|
||||
],
|
||||
"mathml/relations/css-styling/padding-border-margin/padding-border-margin-001-ref.html": [
|
||||
|
@ -649827,7 +650073,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"mathml/relations/html5-tree/clipboard-event-handlers.tentative.html": [
|
||||
"d293b1500c77dd289381619d658ad5761316b9cf",
|
||||
"0031004616886bc5933358d005d16d2299d52095",
|
||||
"testharness"
|
||||
],
|
||||
"mathml/relations/html5-tree/color-attributes-1-ref.html": [
|
||||
|
@ -649839,7 +650085,7 @@
|
|||
"reftest"
|
||||
],
|
||||
"mathml/relations/html5-tree/css-inline-style-interface.tentative.html": [
|
||||
"708926413f2aff21c4972a3f0ab19c692b81bbc7",
|
||||
"b82f98e28b70cbfbadf7f585c9a2c8a2612ba05f",
|
||||
"testharness"
|
||||
],
|
||||
"mathml/relations/html5-tree/display-1.html": [
|
||||
|
@ -649875,7 +650121,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"mathml/relations/html5-tree/html-or-foreign-element-interfaces.tentative.html": [
|
||||
"1fcaf6c40167a5eeb55dcc62de14e50224998994",
|
||||
"bf4b99894da3251a394760f03d7b06b7e52b291f",
|
||||
"testharness"
|
||||
],
|
||||
"mathml/relations/html5-tree/integration-point-1-ref.html": [
|
||||
|
@ -649907,7 +650153,7 @@
|
|||
"testharness"
|
||||
],
|
||||
"mathml/relations/html5-tree/math-global-event-handlers.tentative.html": [
|
||||
"92e18639dff0d10949143bba2c7c403e48fdbe1c",
|
||||
"807a29ee315f2a0d4680b693bb9137a6cd50ca1c",
|
||||
"testharness"
|
||||
],
|
||||
"mathml/relations/html5-tree/required-extensions-2-ref.html": [
|
||||
|
@ -649959,7 +650205,7 @@
|
|||
"support"
|
||||
],
|
||||
"mathml/support/box-comparison.js": [
|
||||
"c46808f7fee6f72ec9e7ffd4946239d9dcaad25b",
|
||||
"a574b01706b5fecc232d62735ef7e89938594769",
|
||||
"support"
|
||||
],
|
||||
"mathml/support/feature-detection.js": [
|
||||
|
@ -696502,6 +696748,10 @@
|
|||
"7ace8f4edb79e4d7dae94349ff256567a17c219b",
|
||||
"support"
|
||||
],
|
||||
"websockets/handlers/delayed-passive-close_wsh.py": [
|
||||
"7d55b88ecc6db7fd9d3fb7a9722e030d926c807d",
|
||||
"support"
|
||||
],
|
||||
"websockets/handlers/echo-cookie_wsh.py": [
|
||||
"367d03190cfef898b092663a34891c721216f823",
|
||||
"support"
|
||||
|
@ -696946,6 +697196,22 @@
|
|||
"f1414376dcf165ab1c7da18a6f5856796dfec2c2",
|
||||
"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": [
|
||||
"bd0c36686954938a1d2bf70918bc506da431e296",
|
||||
"support"
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[mix-blend-mode-animation.html]
|
||||
expected: FAIL
|
|
@ -0,0 +1,2 @@
|
|||
[matchMedia-display-none-iframe.html]
|
||||
expected: ERROR
|
|
@ -3,3 +3,9 @@
|
|||
[scroll-behavior: smooth on DIV element]
|
||||
expected: FAIL
|
||||
|
||||
[Smooth scrolling while doing history navigation.]
|
||||
expected: FAIL
|
||||
|
||||
[Instant scrolling while doing history navigation.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -312,33 +312,24 @@
|
|||
[<iframe>: separate response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<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 */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
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 */*]
|
||||
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
|
||||
|
||||
|
|
|
@ -56,3 +56,6 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,3 +11,6 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%0C]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%0D%0AX-Content-Type-Options%3A%20nosniff]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[creating_browsing_context_test_01.html]
|
||||
[first argument: absolute url]
|
||||
expected: FAIL
|
||||
|
|
@ -1,24 +1,5 @@
|
|||
[open-features-negative-innerwidth-innerheight.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: negative values for legacy `innerwidth`, `innerheight`]
|
||||
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
|
||||
|
||||
|
|
|
@ -1,24 +1,5 @@
|
|||
[open-features-negative-screenx-screeny.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: negative values for legacy `screenx`, `screeny`]
|
||||
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
|
||||
|
||||
|
|
|
@ -1,24 +1,5 @@
|
|||
[open-features-negative-width-height.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: negative values for `width`, `height`]
|
||||
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
|
||||
|
||||
|
|
|
@ -1,48 +1,32 @@
|
|||
[open-features-non-integer-height.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for feature `height`]
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405*3" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405.32" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405e1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405/5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405^4" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405.5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405e-1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405 " should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "height=405LLl" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[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
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,32 @@
|
|||
[open-features-non-integer-innerheight.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for legacy feature `innerheight`]
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405e-1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405LLl" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405^4" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405e1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405 " should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405/5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405.32" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405.5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerheight=405*3" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[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
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,32 @@
|
|||
[open-features-non-integer-innerwidth.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for legacy feature `innerwidth`]
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405e-1" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405*3" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405.5" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405e1" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405.32" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405 " should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405LLl" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405/5" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "innerwidth=405^4" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[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
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,32 @@
|
|||
[open-features-non-integer-left.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for feature `left`]
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105e1" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105 " should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105/5" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105e-1" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105^4" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105LLl" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105.32" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105*3" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "left=105.5" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[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
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,32 @@
|
|||
[open-features-non-integer-screenx.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for legacy feature `screenx`]
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105.5" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105e1" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105 " should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105*3" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105e-1" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105^4" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105LLl" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105/5" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screenx=105.32" should set "left=105"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[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
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,32 @@
|
|||
[open-features-non-integer-screeny.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for legacy feature `screeny`]
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405^4" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405e-1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405LLl" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405e1" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405 " should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405/5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405*3" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405.32" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "screeny=405.5" should set "height=405"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[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
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,42 +1,32 @@
|
|||
[open-features-non-integer-top.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for feature `top`]
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105/5" should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105*3" should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105LLl" should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105e-1" should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105.32" should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105e1" should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105 " should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105^4" should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "top=105.5" should set "top=105"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[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
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,48 +1,32 @@
|
|||
[open-features-non-integer-width.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[HTML: window.open `features`: non-integer values for feature `width`]
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405^4" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405.5" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405e1" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405 " should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405.32" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405LLl" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405*3" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405e-1" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[features "width=405/5" should set "width=405"]
|
||||
expected: TIMEOUT
|
||||
|
||||
[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
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
[window-failure.https.html]
|
||||
expected: TIMEOUT
|
||||
[SharedArrayBuffer and a cross-site <iframe>]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
[non-active-document.html]
|
||||
[DOMParser]
|
||||
expected: FAIL
|
||||
|
||||
[createHTMLDocument]
|
||||
expected: FAIL
|
||||
|
||||
[<template>]
|
||||
expected: FAIL
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
[null-image-source.html]
|
||||
[img with picture parent]
|
||||
expected: FAIL
|
||||
|
||||
[img with empty srcset]
|
||||
expected: FAIL
|
||||
|
|
@ -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
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[promise-rejection-events.html]
|
||||
expected: TIMEOUT
|
||||
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -9,6 +8,3 @@
|
|||
[no unhandledrejection/rejectionhandled: rejection handler attached synchronously to a promise created from createImageBitmap]
|
||||
expected: FAIL
|
||||
|
||||
[rejectionhandled is dispatched from a queued task, and not immediately]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
181
tests/wpt/metadata/websockets/stream-tentative/close.any.js.ini
Normal file
181
tests/wpt/metadata/websockets/stream-tentative/close.any.js.ini
Normal 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
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[Worker-constructor.html]
|
||||
expected: ERROR
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>',
|
||||
[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>',
|
||||
[["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>',
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
<script>
|
||||
parent.postMessage(new SharedArrayBuffer(10), "*");
|
||||
</script>
|
|
@ -0,0 +1,2 @@
|
|||
Cross-Origin-Embedder-Policy: require-corp
|
||||
Cross-Origin-Resource-Policy: cross-site
|
|
@ -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>
|
|
@ -0,0 +1,2 @@
|
|||
Cross-Origin-Opener-Policy: same-origin
|
||||
Cross-Origin-Embedder-Policy: require-corp
|
|
@ -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>
|
|
@ -24,6 +24,7 @@
|
|||
continue;
|
||||
// TODO: Add floats too?
|
||||
["display: none",
|
||||
"display: contents",
|
||||
"position: absolute",
|
||||
"position: fixed"
|
||||
].forEach(style => {
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
var s = compareSizeWithAndWithoutStyle(tag, style);
|
||||
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.preferred_width_delta, 30 + 40, epsilon, "preferred width");
|
||||
}, `Border properties on ${tag}`);
|
||||
continue;
|
||||
}
|
||||
|
@ -40,6 +41,7 @@
|
|||
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_height_delta, 50 + 60, epsilon, "element height");
|
||||
assert_approx_equals(s.preferred_width_delta, 30 + 40, epsilon, "element preferred width");
|
||||
}, `Border properties on ${tag}`);
|
||||
|
||||
test(function() {
|
||||
|
@ -50,6 +52,7 @@
|
|||
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_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)`);
|
||||
}
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
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_height_delta, 0, epsilon, "element height");
|
||||
assert_approx_equals(s.preferred_width_delta, 30 + 40, epsilon, "preferred width");
|
||||
}, `Margin properties on ${tag}`);
|
||||
continue;
|
||||
}
|
||||
|
@ -42,6 +43,7 @@
|
|||
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_height_delta, 0, epsilon, "element height");
|
||||
assert_approx_equals(s.preferred_width_delta, 30 + 40, epsilon, "preferred width");
|
||||
}, `Margin properties on ${tag}`);
|
||||
|
||||
test(function() {
|
||||
|
@ -52,6 +54,7 @@
|
|||
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_height_delta, 0, epsilon, "element height");
|
||||
assert_approx_equals(s.preferred_width_delta, 30 + 40, epsilon, "preferred width");
|
||||
}, `Margin properties on ${tag} (rtl)`);
|
||||
|
||||
test(function() {
|
||||
|
@ -64,6 +67,7 @@
|
|||
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_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)`);
|
||||
}
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
var s = compareSizeWithAndWithoutStyle(tag, style);
|
||||
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.preferred_width_delta, 30 + 40, epsilon, "preferred width");
|
||||
}, `Padding properties on ${tag}`);
|
||||
continue;
|
||||
}
|
||||
|
@ -40,6 +41,7 @@
|
|||
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_height_delta, 50 + 60, epsilon, "element height");
|
||||
assert_approx_equals(s.preferred_width_delta, 30 + 40, epsilon, "preferred width");
|
||||
}, `Padding properties on ${tag}`);
|
||||
|
||||
test(function() {
|
||||
|
@ -50,6 +52,7 @@
|
|||
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_height_delta, 50 + 60, epsilon, "element height");
|
||||
assert_approx_equals(s.preferred_width_delta, 30 + 40, epsilon, "preferred width");
|
||||
}, `Padding properties on ${tag} (rtl)`);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,25 +1,10 @@
|
|||
<!DOCTYPE html>
|
||||
<title>DocumentAndElementEventHandlers / clipboard events for MathML</title>
|
||||
<link
|
||||
rel="help"
|
||||
href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript"
|
||||
/>
|
||||
<link
|
||||
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"
|
||||
/>
|
||||
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript"/>
|
||||
<link 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
|
||||
name="assert"
|
||||
content="MathMLElements incorporate a functional DocumentAndElementEventHandlers interface"
|
||||
|
|
|
@ -3,10 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>MathML 'ElementCSSInlineStyle` Mixin Tests</title>
|
||||
<link
|
||||
rel="help"
|
||||
href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript"
|
||||
/>
|
||||
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript"/>
|
||||
<style>
|
||||
math * {
|
||||
background-color: red;
|
||||
|
|
|
@ -3,10 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>MathML 'HTMLOrForeignElement` Mixin Tests</title>
|
||||
<link
|
||||
rel="help"
|
||||
href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript"
|
||||
/>
|
||||
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript"/>
|
||||
<style>
|
||||
mi {
|
||||
background-color: red;
|
||||
|
|
|
@ -1,18 +1,9 @@
|
|||
<!DOCTYPE html>
|
||||
<title>MathMLElement GlobalEventHandlers</title>
|
||||
<link rel="author" title="Brian Kardell" href="mailto:bkardell@igalia.com" />
|
||||
<link
|
||||
rel="help"
|
||||
href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript"
|
||||
/>
|
||||
<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"
|
||||
/>
|
||||
<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#dom-and-javascript"/>
|
||||
<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/testharnessreport.js"></script>
|
||||
<script src="/resources/WebIDLParser.js"></script>
|
||||
|
|
|
@ -23,12 +23,13 @@ function compareSpaceWithAndWithoutStyle(tag, style, parentStyle, direction) {
|
|||
if (!direction)
|
||||
direction = "ltr";
|
||||
document.body.insertAdjacentHTML("beforeend", `<div style="position: absolute;">\
|
||||
<math><mrow dir="${direction}">${MathMLFragments[tag]}</mrow></math>\
|
||||
<math><mrow dir="${direction}">${MathMLFragments[tag]}</mrow></math>\
|
||||
<div style="display: inline-block"><math><mrow dir="${direction}">${MathMLFragments[tag]}</mrow></math></div>\
|
||||
<div style="display: inline-block"><math><mrow dir="${direction}">${MathMLFragments[tag]}</mrow></math></div>\
|
||||
</div>`);
|
||||
var div = document.body.lastElementChild;
|
||||
|
||||
var styleMath = div.firstElementChild;
|
||||
var styleDiv = div.firstElementChild;
|
||||
var styleMath = styleDiv.firstElementChild;
|
||||
var styleParent = styleMath.firstElementChild;
|
||||
if (parentStyle)
|
||||
styleParent.setAttribute("style", parentStyle);
|
||||
|
@ -40,7 +41,8 @@ function compareSpaceWithAndWithoutStyle(tag, style, parentStyle, direction) {
|
|||
var styleChildBox = styleChild.getBoundingClientRect();
|
||||
var styleSpace = spaceBetween(styleChildBox, styleMathBox);
|
||||
|
||||
var noStyleMath = div.lastElementChild;
|
||||
var noStyleDiv = div.lastElementChild;
|
||||
var noStyleMath = noStyleDiv.firstElementChild;
|
||||
var noStyleElement = FragmentHelper.element(noStyleMath);
|
||||
var noStyleChild = FragmentHelper.forceNonEmptyElement(noStyleElement);
|
||||
var noStyleMathBox = noStyleMath.getBoundingClientRect();
|
||||
|
@ -48,9 +50,14 @@ function compareSpaceWithAndWithoutStyle(tag, style, parentStyle, direction) {
|
|||
var noStyleChildBox = noStyleChild.getBoundingClientRect();
|
||||
var noStyleSpace = spaceBetween(noStyleChildBox, noStyleMathBox);
|
||||
|
||||
var preferredWidthDelta =
|
||||
styleDiv.getBoundingClientRect().width -
|
||||
noStyleDiv.getBoundingClientRect().width;
|
||||
|
||||
div.style = "display: none;"; // Hide the div after measurement.
|
||||
|
||||
return {
|
||||
preferred_width_delta: preferredWidthDelta,
|
||||
left_delta: styleSpace.left - noStyleSpace.left,
|
||||
right_delta: styleSpace.right - noStyleSpace.right,
|
||||
top_delta: styleSpace.top - noStyleSpace.top,
|
||||
|
@ -65,25 +72,32 @@ function compareSizeWithAndWithoutStyle(tag, style) {
|
|||
throw `Invalid argument: ${tag}`;
|
||||
|
||||
document.body.insertAdjacentHTML("beforeend", `<div style="position: absolute;">\
|
||||
<math>${MathMLFragments[tag]}</math>\
|
||||
<math>${MathMLFragments[tag]}</math>\
|
||||
<div style="display: inline-block"><math>${MathMLFragments[tag]}</math></div>\
|
||||
<div style="display: inline-block"><math>${MathMLFragments[tag]}</math></div>\
|
||||
</div>`);
|
||||
var div = document.body.lastElementChild;
|
||||
|
||||
var styleMath = div.firstElementChild;
|
||||
var styleDiv = div.firstElementChild;
|
||||
var styleMath = styleDiv.firstElementChild;
|
||||
var styleElement = FragmentHelper.element(styleMath);
|
||||
styleElement.setAttribute("style", style);
|
||||
var styleMathBox = styleMath.getBoundingClientRect();
|
||||
var styleElementBox = styleElement.getBoundingClientRect();
|
||||
|
||||
var noStyleMath = div.lastElementChild;
|
||||
var noStyleDiv = div.lastElementChild;
|
||||
var noStyleMath = noStyleDiv.firstElementChild;
|
||||
var noStyleElement = FragmentHelper.element(noStyleMath);
|
||||
var noStyleMathBox = noStyleMath.getBoundingClientRect();
|
||||
var noStyleElementBox = noStyleElement.getBoundingClientRect();
|
||||
|
||||
var preferredWidthDelta =
|
||||
styleDiv.getBoundingClientRect().width -
|
||||
noStyleDiv.getBoundingClientRect().width;
|
||||
|
||||
div.style = "display: none;"; // Hide the div after measurement.
|
||||
|
||||
return {
|
||||
preferred_width_delta: preferredWidthDelta,
|
||||
width_delta: styleMathBox.width - noStyleMathBox.width,
|
||||
height_delta: styleMathBox.height - noStyleMathBox.height,
|
||||
element_width_delta: styleElementBox.width - noStyleElementBox.width,
|
||||
|
|
|
@ -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
|
|
@ -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.
|
|
@ -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`);
|
||||
|
||||
}
|
|
@ -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');
|
|
@ -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};
|
||||
})();
|
Loading…
Add table
Add a link
Reference in a new issue