Auto merge of #28078 - servo-wpt-sync:wpt_update_19-01-2021, r=servo-wpt-sync

Sync WPT with upstream (19-01-2021)

Automated downstream sync of changes from upstream as of 19-01-2021.
[no-wpt-sync]
r? @servo-wpt-sync
This commit is contained in:
bors-servo 2021-01-20 02:42:21 -05:00 committed by GitHub
commit 97ee6792ca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
91 changed files with 1112 additions and 201 deletions

View file

@ -0,0 +1,8 @@
[url-charset.window.html]
expected: TIMEOUT
[Blob charset should override any auto-detected charset.]
expected: TIMEOUT
[Blob charset should override <meta charset>.]
expected: TIMEOUT

View file

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

View file

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

View file

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

View file

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

View file

@ -309,15 +309,21 @@
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK] [Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: NOTRUN expected: NOTRUN
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
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>: separate 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;x=" text/plain] [<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" 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 error text/javascript]
expected: FAIL

View file

@ -11,3 +11,9 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!] [X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%20'NosniFF']
expected: FAIL
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
expected: FAIL

View file

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

View file

@ -1,5 +1,4 @@
[embedded-opener-remove-frame.html] [embedded-opener-remove-frame.html]
expected: CRASH
[opener of discarded nested browsing context] [opener of discarded nested browsing context]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,4 @@
[focus-events.html]
[focusing on a focusable element fires a blur event at the previous focussed element]
expected: FAIL

View file

@ -1,4 +1,5 @@
[supported-elements.html] [supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus] [Contenteditable element should support autofocus]
expected: FAIL expected: FAIL
@ -9,7 +10,7 @@
expected: FAIL expected: FAIL
[Area element should support autofocus] [Area element should support autofocus]
expected: FAIL expected: TIMEOUT
[Host element with delegatesFocus should support autofocus] [Host element with delegatesFocus should support autofocus]
expected: FAIL expected: FAIL

View file

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

View file

@ -1,5 +1,5 @@
[iframe_sandbox_popups_nonescaping-1.html] [iframe_sandbox_popups_nonescaping-1.html]
expected: CRASH expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox] [Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN expected: NOTRUN

View file

@ -1,4 +1,5 @@
[iframe_sandbox_popups_nonescaping-2.html] [iframe_sandbox_popups_nonescaping-2.html]
expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox] [Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL expected: FAIL

View file

@ -1,7 +1,4 @@
[select-event.html] [select-event.html]
[input type search: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[textarea: selectionDirection a second time (must not fire select)] [textarea: selectionDirection a second time (must not fire select)]
expected: FAIL expected: FAIL
@ -14,24 +11,9 @@
[input type text: setSelectionRange out of range a second time (must not fire select)] [input type text: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type password: select() a second time (must not fire select)]
expected: FAIL
[input type url: selectionEnd out of range a second time (must not fire select)] [input type url: selectionEnd out of range a second time (must not fire select)]
expected: FAIL expected: FAIL
[textarea: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type search: selectionEnd a second time (must not fire select)]
expected: FAIL
[input type password: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type tel: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[textarea: selectionStart out of range a second time (must not fire select)] [textarea: selectionStart out of range a second time (must not fire select)]
expected: FAIL expected: FAIL
@ -44,30 +26,54 @@
[input type password: selectionStart a second time (must not fire select)] [input type password: selectionStart a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type password: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[textarea: selectionStart a second time (must not fire select)]
expected: FAIL
[input type text: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type tel: setSelectionRange() a second time (must not fire select)] [input type tel: setSelectionRange() a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type url: selectionDirection a second time (must not fire select)] [input type url: selectionDirection a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type password: selectionEnd a second time (must not fire select)]
expected: FAIL
[input type text: selectionStart a second time (must not fire select)] [input type text: selectionStart a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type password: selectionStart out of range a second time (must not fire select)] [textarea: selectionEnd a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type url: setSelectionRange out of range a second time (must not fire select)] [input type url: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type url: selectionEnd a second time (must not fire select)]
expected: FAIL
[input type password: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type url: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type tel: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type tel: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type url: select() a second time (must not fire select)]
expected: FAIL
[input type search: selectionDirection a second time (must not fire select)]
expected: FAIL
[textarea: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type text: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type text: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type tel: select() a second time (must not fire select)]
expected: FAIL
[input type tel: selectionStart a second time (must not fire select)]
expected: FAIL expected: FAIL

View file

@ -4,5 +4,5 @@
expected: TIMEOUT expected: TIMEOUT
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT expected: FAIL

View file

@ -1,5 +1,4 @@
[realtimeanalyser-fft-scaling.html] [realtimeanalyser-fft-scaling.html]
expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.] [X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL expected: FAIL

View file

@ -548,3 +548,6 @@
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t1.9545141262291947e-15\t9.3139332532882690e-1\t9.3139332532882491e-1\t9.9999999999999789e-1\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882491e-1 at index of 28696.\n\tMax RelError of 9.9999999999999789e-1 at index of 28696.\n] [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t1.9545141262291947e-15\t9.3139332532882690e-1\t9.3139332532882491e-1\t9.9999999999999789e-1\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882491e-1 at index of 28696.\n\tMax RelError of 9.9999999999999789e-1 at index of 28696.\n]
expected: FAIL expected: FAIL
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-1.1388699060609259e-22\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
expected: FAIL

View file

@ -0,0 +1,4 @@
[events.py]
[test_event_mousemove]
expected: FAIL

View file

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

View file

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

View file

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

View file

@ -0,0 +1,8 @@
[url-charset.window.html]
expected: TIMEOUT
[Blob charset should override any auto-detected charset.]
expected: TIMEOUT
[Blob charset should override <meta charset>.]
expected: TIMEOUT

View file

@ -18145,13 +18145,6 @@
] ]
] ]
}, },
"pointerevent_element_haspointercapture_release_pending_capture-manual.html": [
"17ad3e24ba4cc2bae4a58d84225c2a841fa4e867",
[
null,
{}
]
],
"pointerevent_multiple_primary_pointers_boundary_events-manual.html": [ "pointerevent_multiple_primary_pointers_boundary_events-manual.html": [
"029aa26368413ea96b90823285a780b6798a12d9", "029aa26368413ea96b90823285a780b6798a12d9",
[ [
@ -18180,27 +18173,6 @@
{} {}
] ]
], ],
"pointerevent_releasepointercapture_release_right_after_capture-manual.html": [
"8f64b9208732da5199dc934b3c16bee0c088146e",
[
null,
{}
]
],
"pointerevent_setpointercapture_override_pending_capture_element-manual.html": [
"4e4818c21b706d9e169c7f82e8cd30cf82635dac",
[
null,
{}
]
],
"pointerevent_setpointercapture_to_same_element_twice-manual.html": [
"161c5c2fcb9bf00d77779b630fd193b0cfd9164e",
[
null,
{}
]
],
"pointerevent_touch-action-mouse-manual.html": [ "pointerevent_touch-action-mouse-manual.html": [
"fcc8584515c51d60bb01092ffe1f701273c7bb58", "fcc8584515c51d60bb01092ffe1f701273c7bb58",
[ [
@ -338171,6 +338143,66 @@
"focus-restoration-in-same-site-iframes-outer-window.html": [ "focus-restoration-in-same-site-iframes-outer-window.html": [
"4ccba143d3ac9e89e768e252d05abd4892b8e5cf", "4ccba143d3ac9e89e768e252d05abd4892b8e5cf",
[] []
],
"iframe-activeelement-after-focusing-out-different-site-iframes-outer.sub.html": [
"3fcebfc8ba4c69307ab7e67430d3668d2620f6fb",
[]
],
"iframe-activeelement-after-focusing-out-iframes-inner.html": [
"a94af6b9fbae67eb010037187fb6f3350a3c0b5e",
[]
],
"iframe-activeelement-after-focusing-out-same-site-iframes-outer.html": [
"98399deb7b61f41ec4f3cde4db95914b4152df21",
[]
],
"iframe-contentwindow-focus-with-different-site-intermediate-frame-inner.html": [
"c4997f5bd4fa4dc37a0316ab7045577d2edd54c6",
[]
],
"iframe-contentwindow-focus-with-different-site-intermediate-frame-middle.sub.html": [
"e3a5facf82e4c08753705ee1803b76ceef30f671",
[]
],
"iframe-contentwindow-focus-with-different-site-intermediate-frame-outer.sub.html": [
"9dbb6af9d9a4dd795cd0976bc87695e0363372b4",
[]
],
"iframe-contentwindow-focus-with-same-as-top-intermediate-frame-inner.html": [
"30be12aa811a7642578d6dcb467a49bdce01f92e",
[]
],
"iframe-contentwindow-focus-with-same-as-top-intermediate-frame-middle.sub.html": [
"747e1467466eabe5b09ec80891603e8ad1a5335c",
[]
],
"iframe-contentwindow-focus-with-same-as-top-intermediate-frame-outer.html": [
"71cfe78c0d7614f585a7dcecb3b6c12e6698d321",
[]
],
"iframe-focus-with-different-site-intermediate-frame-inner.html": [
"e2adcc06b20c6eb7720fad86148215628f65b089",
[]
],
"iframe-focus-with-different-site-intermediate-frame-middle.sub.html": [
"647f8928d6d01f387d4519eefc76f9885f80ab79",
[]
],
"iframe-focus-with-different-site-intermediate-frame-outer.sub.html": [
"5e80410206d0d2fe7cbe5faef206c9a930a5a8ed",
[]
],
"iframe-focus-with-same-as-top-intermediate-frame-inner.html": [
"c55c5b449983c74c9afb3cd2cdadf965c0e74252",
[]
],
"iframe-focus-with-same-as-top-intermediate-frame-middle.sub.html": [
"9fdbc3c3582e88d67be9f0fe6624cb5b4bfa24df",
[]
],
"iframe-focus-with-same-as-top-intermediate-frame-outer.html": [
"3f6085a739c36d046ad3e926328958f6a75d3ba7",
[]
] ]
} }
}, },
@ -352626,7 +352658,7 @@
[] []
], ],
"custom-state-pseudo-class.idl": [ "custom-state-pseudo-class.idl": [
"d4e3da7e6a1a9e7763bde6b13c0add204ff3c7de", "342f1ede0b030a85271a5db71b3773d1531aee48",
[] []
], ],
"deprecation-reporting.idl": [ "deprecation-reporting.idl": [
@ -353395,7 +353427,7 @@
] ]
}, },
"lint.ignore": [ "lint.ignore": [
"2e0fc8b39bc8df1a44d7b5469d81014c32fa844b", "ab3d0e5157064def99f47cfbfc0e1207db477cbe",
[] []
], ],
"loading": { "loading": {
@ -372650,7 +372682,7 @@
] ]
}, },
"stash.py": [ "stash.py": [
"535355a828796196ee6be950c5ef9a0802236826", "bf6e59927be44a503aa9ca15b8495f57704f89e7",
[] []
], ],
"utils.py": [ "utils.py": [
@ -374415,6 +374447,10 @@
"input.html": [ "input.html": [
"e2c6dadd1218e0a7d8b7d243a1c49b7f47092d77", "e2c6dadd1218e0a7d8b7d243a1c49b7f47092d77",
[] []
],
"test_click_wdspec.html": [
"a9451ec82bec97654896f697704218bb6068d14e",
[]
] ]
} }
}, },
@ -374685,7 +374721,7 @@
[] []
], ],
"refine.py": [ "refine.py": [
"d5d24e934f61684be8512d120a4853bff7efadef", "35c962b9ecbfa21c61535683c094e17884770e9f",
[] []
], ],
"test_actions_pointer_wdspec.html": [ "test_actions_pointer_wdspec.html": [
@ -374729,7 +374765,7 @@
[] []
], ],
"refine.py": [ "refine.py": [
"3a6d63e04ce941d26ab3898cb2fc2a730d46c1ce", "90f722587c3be0e4066fbb6a604668a6d40f359f",
[] []
], ],
"test_actions_wdspec.html": [ "test_actions_wdspec.html": [
@ -374788,7 +374824,7 @@
[] []
], ],
"helpers.py": [ "helpers.py": [
"a1082caf58cf0466185268a3c95e59b643a76bcb", "13607e30481876a7777edfad57f48fcafbf8e40f",
[] []
], ],
"html": { "html": {
@ -431057,7 +431093,7 @@
}, },
"custom-state-pseudo-class": { "custom-state-pseudo-class": {
"idlharness.window.js": [ "idlharness.window.js": [
"dccc0f56f4683ae975e3738641d9bddc3e08b7aa", "d5d40c54616745c6110078d34c591d6d07a92fb2",
[ [
"custom-state-pseudo-class/idlharness.window.html", "custom-state-pseudo-class/idlharness.window.html",
{ {
@ -458821,6 +458857,41 @@
null, null,
{} {}
] ]
],
"iframe-activeelement-after-focusing-out-iframes.html": [
"832b2675e2543813bc130295ceac976ff49c9128",
[
null,
{}
]
],
"iframe-contentwindow-focus-with-different-site-intermediate-frame.html": [
"2fdc8e843a1c4de8d613689afeb31d4a451ea976",
[
null,
{}
]
],
"iframe-contentwindow-focus-with-same-as-top-intermediate-frame.html": [
"cb9239f44d893e0f27342bd7300d40f54f49c892",
[
null,
{}
]
],
"iframe-focus-with-different-site-intermediate-frame.html": [
"fd3aab70579ef04bb9df6d95413a307e55e07643",
[
null,
{}
]
],
"iframe-focus-with-same-as-top-intermediate-frame.html": [
"b4763f9e2fae085eab5d8c0bddc89ecefd5f4cbf",
[
null,
{}
]
] ]
}, },
"font-access": { "font-access": {
@ -483352,7 +483423,7 @@
] ]
], ],
"focus-events.html": [ "focus-events.html": [
"d63362aaa1828f35de410b56c1ccc2d7869a111e", "5f8ca20a13d85427fa3d304254d0156224734248",
[ [
null, null,
{} {}
@ -513181,6 +513252,15 @@
} }
] ]
], ],
"pointerevent_element_haspointercapture_release_pending_capture.html": [
"e75dff867528d91d62b14ac7e48d822626deba34",
[
null,
{
"testdriver": true
}
]
],
"pointerevent_fractional_coordinates.html": [ "pointerevent_fractional_coordinates.html": [
"b106340efd5d05ba4ab4281863a476dbe6134a64", "b106340efd5d05ba4ab4281863a476dbe6134a64",
[ [
@ -513451,6 +513531,15 @@
} }
] ]
], ],
"pointerevent_releasepointercapture_release_right_after_capture.html": [
"409951b918aa6ef9de4603ac97f330085080e2b7",
[
null,
{
"testdriver": true
}
]
],
"pointerevent_root_computed_style.html": [ "pointerevent_root_computed_style.html": [
"c3034d475eee8c58ed1b079fce9466925c5d0379", "c3034d475eee8c58ed1b079fce9466925c5d0379",
[ [
@ -513510,6 +513599,15 @@
} }
] ]
], ],
"pointerevent_setpointercapture_override_pending_capture_element.html": [
"f7c1d4299192f28ac8b3b99142951876f3155b45",
[
null,
{
"testdriver": true
}
]
],
"pointerevent_setpointercapture_relatedtarget.html": [ "pointerevent_setpointercapture_relatedtarget.html": [
"37de34d5a68375b44106f705164d46be78c57780", "37de34d5a68375b44106f705164d46be78c57780",
[ [
@ -513519,6 +513617,15 @@
} }
] ]
], ],
"pointerevent_setpointercapture_to_same_element_twice.html": [
"5225ac508d42dca00b0a7269c8a4f95350545d64",
[
null,
{
"testdriver": true
}
]
],
"pointerevent_suppress_compat_events_on_click.html": [ "pointerevent_suppress_compat_events_on_click.html": [
"2f99e7a976ac8006cff25b9cde1ee1e29b6a14d1", "2f99e7a976ac8006cff25b9cde1ee1e29b6a14d1",
[ [
@ -532076,7 +532183,7 @@
] ]
], ],
"ShadowRoot-interface.html": [ "ShadowRoot-interface.html": [
"8efa50e4ea18cc6655dba923cdcf4f6e59029c5b", "e95b1d9542e2e3b502693e0063de0980f5a32789",
[ [
null, null,
{} {}
@ -589877,6 +589984,13 @@
{} {}
] ]
], ],
"events.py": [
"e3d32c1bcb44c7eb3b810fbce5ca0709c97abcd9",
[
null,
{}
]
],
"file_upload.py": [ "file_upload.py": [
"73832d0f85ae683ee2d1f54e9c0b7e3e432e9afd", "73832d0f85ae683ee2d1f54e9c0b7e3e432e9afd",
[ [
@ -590796,7 +590910,7 @@
] ]
], ],
"key_events.py": [ "key_events.py": [
"c3958015bfd4dee51842a642e6762aafb5fabf2d", "8dbe024d18396f010b2dcac7281b8436b5b69c65",
[ [
null, null,
{ {
@ -590833,7 +590947,7 @@
] ]
], ],
"pointer.py": [ "pointer.py": [
"9579a57aa7222d8a1f9517ad71735e86ec8a0e47", "674d46d7b610294b6cadabb4e1e46d79cab8940d",
[ [
null, null,
{ {
@ -590842,21 +590956,21 @@
] ]
], ],
"pointer_contextmenu.py": [ "pointer_contextmenu.py": [
"fda3f18bbc1c9cdcede30abe74f6d4e2f297d48f", "50f684327f2ab044905cbd3b0da59336ead25f20",
[ [
null, null,
{} {}
] ]
], ],
"pointer_dblclick.py": [ "pointer_dblclick.py": [
"8c89cef5f380d769705be704698232c7f9c928ec", "5be635a4d5604e33bf61c41b2190e620309179b8",
[ [
null, null,
{} {}
] ]
], ],
"pointer_modifier_click.py": [ "pointer_modifier_click.py": [
"ba81f6d090b248c512cf896bc8e6059f252db8c8", "28c4086e0f8c99d9350523b8a29478b7c54fa17e",
[ [
null, null,
{} {}
@ -590870,14 +590984,14 @@
] ]
], ],
"pointer_pause_dblclick.py": [ "pointer_pause_dblclick.py": [
"85679f3614a8fe010cba7dcd698ce5e82bc26660", "d46178a1d650828ef84ccb02f08a12b292f4c3eb",
[ [
null, null,
{} {}
] ]
], ],
"pointer_tripleclick.py": [ "pointer_tripleclick.py": [
"3bf41bab849d5de742f8707eb98337e24ebbfb6d", "8239fc2a60620fe4ea6616a0a15139ece54e8cad",
[ [
null, null,
{} {}
@ -590909,7 +591023,7 @@
] ]
], ],
"wheel.py": [ "wheel.py": [
"fc84f2f2e0148967464505f83317edac2e54bd84", "67734800b19d3b08f934c8ec8c4dab0c4cd425f1",
[ [
null, null,
{} {}
@ -590970,7 +591084,7 @@
] ]
], ],
"sequence.py": [ "sequence.py": [
"2d816f8094b3975523904c9e197390dfc058dd06", "75143d85ca600b3e3a2d7d5ac3679a26b7d7bf5a",
[ [
null, null,
{ {

View file

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

View file

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

View file

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

View file

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

View file

@ -309,15 +309,21 @@
[fetch(): separate response Content-Type: text/plain ] [fetch(): separate response Content-Type: text/plain ]
expected: NOTRUN expected: NOTRUN
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
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>: separate 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;x=" text/plain] [<iframe>: separate response Content-Type: text/html;" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;x=" 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 error text/javascript]
expected: FAIL

View file

@ -11,3 +11,9 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!] [X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%20'NosniFF']
expected: FAIL
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
expected: FAIL

View file

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

View file

@ -1,5 +1,4 @@
[embedded-opener-remove-frame.html] [embedded-opener-remove-frame.html]
expected: CRASH
[opener and "removed" embedded documents] [opener and "removed" embedded documents]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,4 @@
[focus-events.html]
[focusing on a focusable element fires a blur event at the previous focussed element]
expected: FAIL

View file

@ -1,4 +1,5 @@
[supported-elements.html] [supported-elements.html]
expected: TIMEOUT
[Contenteditable element should support autofocus] [Contenteditable element should support autofocus]
expected: FAIL expected: FAIL
@ -9,7 +10,7 @@
expected: FAIL expected: FAIL
[Area element should support autofocus] [Area element should support autofocus]
expected: FAIL expected: TIMEOUT
[Host element with delegatesFocus should support autofocus] [Host element with delegatesFocus should support autofocus]
expected: FAIL expected: FAIL

View file

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

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-1.html] [iframe_sandbox_popups_nonescaping-1.html]
type: testharness type: testharness
expected: CRASH expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox] [Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN expected: NOTRUN

View file

@ -1,5 +1,6 @@
[iframe_sandbox_popups_nonescaping-2.html] [iframe_sandbox_popups_nonescaping-2.html]
type: testharness type: testharness
expected: CRASH
[Check that popups from a sandboxed iframe do not escape the sandbox] [Check that popups from a sandboxed iframe do not escape the sandbox]
expected: FAIL expected: FAIL

View file

@ -1,7 +1,4 @@
[select-event.html] [select-event.html]
[input type search: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[textarea: selectionDirection a second time (must not fire select)] [textarea: selectionDirection a second time (must not fire select)]
expected: FAIL expected: FAIL
@ -14,24 +11,9 @@
[input type text: setSelectionRange out of range a second time (must not fire select)] [input type text: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type password: select() a second time (must not fire select)]
expected: FAIL
[input type url: selectionEnd out of range a second time (must not fire select)] [input type url: selectionEnd out of range a second time (must not fire select)]
expected: FAIL expected: FAIL
[textarea: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type search: selectionEnd a second time (must not fire select)]
expected: FAIL
[input type password: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type tel: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[textarea: selectionStart out of range a second time (must not fire select)] [textarea: selectionStart out of range a second time (must not fire select)]
expected: FAIL expected: FAIL
@ -44,30 +26,54 @@
[input type password: selectionStart a second time (must not fire select)] [input type password: selectionStart a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type password: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[textarea: selectionStart a second time (must not fire select)]
expected: FAIL
[input type text: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type tel: setSelectionRange() a second time (must not fire select)] [input type tel: setSelectionRange() a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type url: selectionDirection a second time (must not fire select)] [input type url: selectionDirection a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type password: selectionEnd a second time (must not fire select)]
expected: FAIL
[input type text: selectionStart a second time (must not fire select)] [input type text: selectionStart a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type password: selectionStart out of range a second time (must not fire select)] [textarea: selectionEnd a second time (must not fire select)]
expected: FAIL expected: FAIL
[input type url: setSelectionRange out of range a second time (must not fire select)] [input type url: setSelectionRange() a second time (must not fire select)]
expected: FAIL
[input type url: selectionEnd a second time (must not fire select)]
expected: FAIL
[input type password: selectionEnd out of range a second time (must not fire select)]
expected: FAIL
[input type url: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type tel: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type tel: selectionDirection a second time (must not fire select)]
expected: FAIL
[input type url: select() a second time (must not fire select)]
expected: FAIL
[input type search: selectionDirection a second time (must not fire select)]
expected: FAIL
[textarea: setSelectionRange out of range a second time (must not fire select)]
expected: FAIL
[input type text: selectionStart out of range a second time (must not fire select)]
expected: FAIL
[input type text: setRangeText() a second time (must not fire select)]
expected: FAIL
[input type tel: select() a second time (must not fire select)]
expected: FAIL
[input type tel: selectionStart a second time (must not fire select)]
expected: FAIL expected: FAIL

View file

@ -5,5 +5,5 @@
expected: TIMEOUT expected: TIMEOUT
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] [The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT expected: FAIL

View file

@ -1,5 +1,4 @@
[realtimeanalyser-fft-scaling.html] [realtimeanalyser-fft-scaling.html]
expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.] [X 2048-point FFT peak position is not equal to 64. Got 0.]
expected: FAIL expected: FAIL

View file

@ -776,3 +776,6 @@
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t1.9545141262291947e-15\t9.3139332532882690e-1\t9.3139332532882491e-1\t9.9999999999999789e-1\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882491e-1 at index of 28696.\n\tMax RelError of 9.9999999999999789e-1 at index of 28696.\n] [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t1.9545141262291947e-15\t9.3139332532882690e-1\t9.3139332532882491e-1\t9.9999999999999789e-1\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882491e-1 at index of 28696.\n\tMax RelError of 9.9999999999999789e-1 at index of 28696.\n]
expected: FAIL expected: FAIL
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-1.1388699060609259e-22\t9.3139332532882690e-1\t9.3139332532882690e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 9.3139332532882690e-1 at index of 28696.\n\tMax RelError of 1.0000000000000000e+0 at index of 28696.\n]
expected: FAIL

View file

@ -0,0 +1,4 @@
[events.py]
[test_event_mousemove]
expected: FAIL

View file

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

View file

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

View file

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

View file

@ -3,12 +3,18 @@
'use strict'; 'use strict';
class MyElement extends HTMLElement {};
customElements.define('my-element', MyElement);
idl_test( idl_test(
['custom-state-pseudo-class'], ['custom-state-pseudo-class'],
['html', 'wai-aria'], ['html', 'wai-aria'],
idl_array => { idl_array => {
idl_array.add_objects({ idl_array.add_objects({
// Nothing to add; spec only defined a partial interface. CustomStateSet: [ 'customStateSet' ],
}); });
const myElement = document.createElement('my-element');
self.customStateSet = myElement.attachInternals().states;
} }
); );

View file

@ -0,0 +1,50 @@
<!doctype html>
<meta charset=utf-8>
<title>iframe activeElement after focusing out iframe</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
function waitForEvent(target, event, checkFn) {
return new Promise(resolve => {
target.addEventListener(event, e => {
if (checkFn && !checkFn(e)) {
return;
}
resolve();
}, { once: true });
});
}
function focusTopLevel(w) {
w.postMessage("focus", "*");
}
async function getLog(w) {
let log = "";
step_timeout(function() {
w.postMessage("getlog", "*");
}, 0);
await waitForEvent(window, "message", (e) => {
log = e.data;
return true;
});
return log;
}
async function runTest(t, url) {
let w = window.open(url);
t.add_cleanup(() => { w.close(); });
await waitForEvent(window, "message", e => e.data === "ready");
focusTopLevel(w);
assert_equals(await getLog(w), 'outerlog:willfocusinput,windowfocus,didfocusinput,innerlog:willfocusinput,windowfocus,didfocusinput,activeElement:INPUT,windowblur,activeElement:BODY,');
}
promise_test(async t => {
await runTest(t, "support/iframe-activeelement-after-focusing-out-different-site-iframes-outer.sub.html");
}, "Check iframe activeElement after focusing out different site iframe");
promise_test(async t => {
await runTest(t, "support/iframe-activeelement-after-focusing-out-same-site-iframes-outer.html");
}, "Check iframe activeElement after focusing out same site iframe");
</script>

View file

@ -0,0 +1,17 @@
<!doctype html>
<meta charset=utf-8>
<title>iframe.contentWindow.focus() with different-site intermediate frame</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
setup({explicit_done:true});
window.onmessage = function(e) {
var actual = e.data;
test(function() {
assert_equals(actual, "outeronload;outeractivelement:body;starttest;middleactivelement:body;callfocus;middleactivelement:iframe;innerfocus;middletimer;middleactivelement:iframe;outeractivelement:iframe;", 'Check log');
}, "Check result");
w.close();
done();
};
var w = window.open("support/iframe-contentwindow-focus-with-different-site-intermediate-frame-outer.sub.html");
</script>

View file

@ -0,0 +1,17 @@
<!doctype html>
<meta charset=utf-8>
<title>iframe.contentWindow.focus() with same-as-top intermediate frame</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
setup({explicit_done:true});
window.onmessage = function(e) {
var actual = e.data;
test(function() {
assert_equals(actual, "outeronload;outeractivelement:body;starttest;middleactivelement:body;callfocus;middleactivelement:iframe;innerfocus;middletimer;middleactivelement:iframe;outeractivelement:iframe;", 'Check log');
}, "Check result");
w.close();
done();
};
var w = window.open("support/iframe-contentwindow-focus-with-same-as-top-intermediate-frame-outer.html");
</script>

View file

@ -0,0 +1,17 @@
<!doctype html>
<meta charset=utf-8>
<title>iframe.focus() with different-site intermediate frame</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
setup({explicit_done:true});
window.onmessage = function(e) {
var actual = e.data;
test(function() {
assert_equals(actual, "outeronload;outeractivelement:body;starttest;middleactivelement:body;callfocus;middleactivelement:iframe;innerfocus;middletimer;middleactivelement:iframe;outeractivelement:iframe;", 'Check log');
}, "Check result");
w.close();
done();
};
var w = window.open("support/iframe-focus-with-different-site-intermediate-frame-outer.sub.html");
</script>

View file

@ -0,0 +1,17 @@
<!doctype html>
<meta charset=utf-8>
<title>iframe.focus() with same-as-top intermediate frame</title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
setup({explicit_done:true});
window.onmessage = function(e) {
var actual = e.data;
test(function() {
assert_equals(actual, "outeronload;outeractivelement:body;starttest;middleactivelement:body;callfocus;middleactivelement:iframe;innerfocus;middletimer;middleactivelement:iframe;outeractivelement:iframe;", 'Check log');
}, "Check result");
w.close();
done();
};
var w = window.open("support/iframe-focus-with-same-as-top-intermediate-frame-outer.html");
</script>

View file

@ -0,0 +1,34 @@
<!doctype html>
<meta charset="utf-8">
<title>iframe active element after focusing out different site iframes outer</title>
<input></input></br>
<iframe src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/focus/support/iframe-activeelement-after-focusing-out-iframes-inner.html"></iframe>
<script>
let outerlog = "outerlog:";
let input = document.querySelector("input");
let iframe = document.querySelector("iframe");
window.onmessage = function(e) {
if (e.data == "ready") {
opener.postMessage("ready", "*");
} else if (e.data == "focus") {
outerlog += "willfocusinput,";
input.focus();
outerlog += "didfocusinput,";
} else if (e.data == "getlog") {
iframe.contentWindow.postMessage("getlog", "*");
} else {
opener.postMessage(outerlog + e.data, "*");
}
};
window.onload = function() {
window.onfocus = function() {
outerlog += "windowfocus,";
};
window.onblur = function() {
outerlog += "windowblur,";
};
};
</script>

View file

@ -0,0 +1,38 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>iframe active element inner document</title>
</head>
<body>
<h1>Inner</h1><br>
<input></input>
<script>
let innerlog = "innerlog:";
window.onmessage = function(e) {
if (e.data == "getlog") {
parent.postMessage(innerlog, "*");
}
};
window.onfocus = function() {
innerlog += "windowfocus,";
};
window.onblur = function() {
innerlog += "windowblur,";
innerlog += "activeElement:" + document.activeElement.tagName + ",";
};
let input = document.querySelector("input");
window.onload = function() {
innerlog += "willfocusinput,";
input.focus();
innerlog += "didfocusinput,";
innerlog += "activeElement:" + document.activeElement.tagName + ",";
parent.postMessage("ready", "*");
};
</script>
</body>
</html>

View file

@ -0,0 +1,34 @@
<!doctype html>
<meta charset="utf-8">
<title>iframe active element after focusing out same site iframes outer</title>
<input></input></br>
<iframe src="iframe-activeelement-after-focusing-out-iframes-inner.html"></iframe>
<script>
let outerlog = "outerlog:";
let input = document.querySelector("input");
let iframe = document.querySelector("iframe");
window.onmessage = function(e) {
if (e.data == "ready") {
opener.postMessage("ready", "*");
} else if (e.data == "focus") {
outerlog += "willfocusinput,";
input.focus();
outerlog += "didfocusinput,";
} else if (e.data == "getlog") {
iframe.contentWindow.postMessage("getlog", "*");
} else {
opener.postMessage(outerlog + e.data, "*");
}
};
window.onload = function() {
window.onfocus = function() {
outerlog += "windowfocus,";
};
window.onblur = function() {
outerlog += "windowblur,";
};
};
</script>

View file

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<title>iframe.contentWindow.focus() with different-site intermediate frame inner</title>
</head>
<body>
<script>
document.body.onfocus = function() {
parent.postMessage("innerfocus;", "*");
}
</script>
</body>
</html>

View file

@ -0,0 +1,37 @@
<!doctype html>
<meta charset="utf-8">
<title>iframe.contentWindow.focus() with different-site intermediate frame middle</title>
<iframe src="http://{{hosts[][www]}}:{{ports[http][0]}}/focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-inner.html"></iframe>
<script>
let iframe = document.getElementsByTagName("iframe")[0];
let log = "";
function getLog() {
return log;
}
window.onmessage = function(e) {
log += e.data;
if (e.data == "starttest;") {
log += "middleactivelement:" + document.activeElement.localName + ";";
log += "callfocus;";
iframe.contentWindow.focus();
log += "middleactivelement:" + document.activeElement.localName + ";";
setTimeout(function() {
log += "middletimer;middleactivelement:" + document.activeElement.localName + ";";
parent.postMessage(getLog(), "*");
}, 1500);
}
};
/*
* TODO: Get browsers to agree on this one.
*
* Does not fire in Firefox without Fission
* https://bugzilla.mozilla.org/show_bug.cgi?id=1675484
*
* Fires in Blink in the iframe.focus() case but not in
* the iframe.contentWindow.focus() case.
*/
// iframe.onfocus = function() {
// log += "middlefocus;";
// }
</script>

View file

@ -0,0 +1,22 @@
<!doctype html>
<meta charset="utf-8">
<title>iframe.contentWindow.focus() with different-site intermediate frame outer</title>
<script>
let log = "";
function getLog() {
return log;
}
window.onmessage = function(e) {
log += e.data;
};
window.onload = function() {
log += "outeronload;";
log += "outeractivelement:" + document.activeElement.localName + ";";
document.getElementsByTagName("iframe")[0].contentWindow.postMessage("starttest;", "*");
setTimeout(function() {
log += "outeractivelement:" + document.activeElement.localName + ";";
opener.postMessage(getLog(), "*");
}, 3000);
}
</script>
<iframe src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-middle.sub.html"></iframe>

View file

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<title>iframe.contentWindow.focus() with same-as-top intermediate frame inner</title>
</head>
<body>
<script>
document.body.onfocus = function() {
parent.postMessage("innerfocus;", "*");
}
</script>
</body>
</html>

View file

@ -0,0 +1,37 @@
<!doctype html>
<meta charset="utf-8">
<title>iframe.contentWindow.focus() with same-as-top intermediate frame middle</title>
<iframe src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/focus/support/iframe-contentwindow-focus-with-same-as-top-intermediate-frame-inner.html"></iframe>
<script>
let iframe = document.getElementsByTagName("iframe")[0];
let log = "";
function getLog() {
return log;
}
window.onmessage = function(e) {
log += e.data;
if (e.data == "starttest;") {
log += "middleactivelement:" + document.activeElement.localName + ";";
log += "callfocus;";
iframe.contentWindow.focus();
log += "middleactivelement:" + document.activeElement.localName + ";";
parent.opener.step_timeout(function() {
log += "middletimer;middleactivelement:" + document.activeElement.localName + ";";
parent.postMessage(getLog(), "*");
}, 1500);
}
};
/*
* TODO: Get browsers to agree on this one.
*
* Does not fire in Firefox without Fission
* https://bugzilla.mozilla.org/show_bug.cgi?id=1675484
*
* Fires in Blink in the iframe.focus() case but not in
* the iframe.contentWindow.focus() case.
*/
// iframe.onfocus = function() {
// log += "middlefocus;";
// }
</script>

View file

@ -0,0 +1,22 @@
<!doctype html>
<meta charset="utf-8">
<title>iframe.contentWindow.focus() with same-as-top intermediate frame outer</title>
<script>
let log = "";
function getLog() {
return log;
}
window.onmessage = function(e) {
log += e.data;
};
window.onload = function() {
log += "outeronload;";
log += "outeractivelement:" + document.activeElement.localName + ";";
document.getElementsByTagName("iframe")[0].contentWindow.postMessage("starttest;", "*");
opener.step_timeout(function() {
log += "outeractivelement:" + document.activeElement.localName + ";";
opener.postMessage(getLog(), "*");
}, 2000);
}
</script>
<iframe src="iframe-contentwindow-focus-with-same-as-top-intermediate-frame-middle.sub.html"></iframe>

View file

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<title>iframe.focus() with different-site intermediate frame inner</title>
</head>
<body>
<script>
document.body.onfocus = function() {
parent.postMessage("innerfocus;", "*");
}
</script>
</body>
</html>

View file

@ -0,0 +1,37 @@
<!doctype html>
<meta charset="utf-8">
<title>iframe.focus() with different-site intermediate frame middle</title>
<iframe src="http://{{hosts[][www]}}:{{ports[http][0]}}/focus/support/iframe-focus-with-different-site-intermediate-frame-inner.html"></iframe>
<script>
let iframe = document.getElementsByTagName("iframe")[0];
let log = "";
function getLog() {
return log;
}
window.onmessage = function(e) {
log += e.data;
if (e.data == "starttest;") {
log += "middleactivelement:" + document.activeElement.localName + ";";
log += "callfocus;";
iframe.focus();
log += "middleactivelement:" + document.activeElement.localName + ";";
setTimeout(function() {
log += "middletimer;middleactivelement:" + document.activeElement.localName + ";";
parent.postMessage(getLog(), "*");
}, 1500);
}
};
/*
* TODO: Get browsers to agree on this one.
*
* Does not fire in Firefox without Fission
* https://bugzilla.mozilla.org/show_bug.cgi?id=1675484
*
* Fires in Blink in the iframe.focus() case but not in
* the iframe.contentWindow.focus() case.
*/
// iframe.onfocus = function() {
// log += "middlefocus;";
// }
</script>

View file

@ -0,0 +1,22 @@
<!doctype html>
<meta charset="utf-8">
<title>iframe.focus() with different-site intermediate frame outer</title>
<script>
let log = "";
function getLog() {
return log;
}
window.onmessage = function(e) {
log += e.data;
};
window.onload = function() {
log += "outeronload;";
log += "outeractivelement:" + document.activeElement.localName + ";";
document.getElementsByTagName("iframe")[0].contentWindow.postMessage("starttest;", "*");
setTimeout(function() {
log += "outeractivelement:" + document.activeElement.localName + ";";
opener.postMessage(getLog(), "*");
}, 3000);
}
</script>
<iframe src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/focus/support/iframe-focus-with-different-site-intermediate-frame-middle.sub.html"></iframe>

View file

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<title>iframe.focus() with same-as-top intermediate frame inner</title>
</head>
<body>
<script>
document.body.onfocus = function() {
parent.postMessage("innerfocus;", "*");
}
</script>
</body>
</html>

View file

@ -0,0 +1,37 @@
<!doctype html>
<meta charset="utf-8">
<title>iframe.focus() with same-as-top intermediate frame middle</title>
<iframe src="http://{{hosts[alt][www]}}:{{ports[http][0]}}/focus/support/iframe-focus-with-same-as-top-intermediate-frame-inner.html"></iframe>
<script>
let iframe = document.getElementsByTagName("iframe")[0];
let log = "";
function getLog() {
return log;
}
window.onmessage = function(e) {
log += e.data;
if (e.data == "starttest;") {
log += "middleactivelement:" + document.activeElement.localName + ";";
log += "callfocus;";
iframe.focus();
log += "middleactivelement:" + document.activeElement.localName + ";";
parent.opener.step_timeout(function() {
log += "middletimer;middleactivelement:" + document.activeElement.localName + ";";
parent.postMessage(getLog(), "*");
}, 1500);
}
};
/*
* TODO: Get browsers to agree on this one.
*
* Does not fire in Firefox without Fission
* https://bugzilla.mozilla.org/show_bug.cgi?id=1675484
*
* Fires in Blink in the iframe.focus() case but not in
* the iframe.contentWindow.focus() case.
*/
// iframe.onfocus = function() {
// log += "middlefocus;";
// }
</script>

View file

@ -0,0 +1,22 @@
<!doctype html>
<meta charset="utf-8">
<title>iframe.focus() with same-as-top intermediate frame outer</title>
<script>
let log = "";
function getLog() {
return log;
}
window.onmessage = function(e) {
log += e.data;
};
window.onload = function() {
log += "outeronload;";
log += "outeractivelement:" + document.activeElement.localName + ";";
document.getElementsByTagName("iframe")[0].contentWindow.postMessage("starttest;", "*");
opener.step_timeout(function() {
log += "outeractivelement:" + document.activeElement.localName + ";";
opener.postMessage(getLog(), "*");
}, 2000);
}
</script>
<iframe src="iframe-focus-with-same-as-top-intermediate-frame-middle.sub.html"></iframe>

View file

@ -25,6 +25,7 @@
assert_true(e.isTrusted, "blur event is trusted"); assert_true(e.isTrusted, "blur event is trusted");
assert_false(e.bubbles, "blur event doesn't bubble"); assert_false(e.bubbles, "blur event doesn't bubble");
assert_false(e.cancelable, "blur event is not cancelable"); assert_false(e.cancelable, "blur event is not cancelable");
assert_equals(document.activeElement, document.body);
}); });
i1.focus(); i1.focus();

View file

@ -4,5 +4,11 @@
// Source: Custom State Pseudo Class (https://wicg.github.io/custom-state-pseudo-class/) // Source: Custom State Pseudo Class (https://wicg.github.io/custom-state-pseudo-class/)
partial interface ElementInternals { partial interface ElementInternals {
[SameObject, PutForwards=value] readonly attribute DOMTokenList states; readonly attribute CustomStateSet states;
};
[Exposed=Window]
interface CustomStateSet {
setlike<DOMString>;
undefined add(DOMString value);
}; };

View file

@ -214,6 +214,10 @@ SET TIMEOUT: webvtt/*
SET TIMEOUT: workers/* SET TIMEOUT: workers/*
SET TIMEOUT: xhr/resources/init.htm SET TIMEOUT: xhr/resources/init.htm
SET TIMEOUT: xhr/resources/xmlhttprequest-timeout.js SET TIMEOUT: xhr/resources/xmlhttprequest-timeout.js
SET TIMEOUT: focus/support/iframe-focus-with-different-site-intermediate-frame-outer.sub.html
SET TIMEOUT: focus/support/iframe-focus-with-different-site-intermediate-frame-middle.sub.html
SET TIMEOUT: focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-outer.sub.html
SET TIMEOUT: focus/support/iframe-contentwindow-focus-with-different-site-intermediate-frame-middle.sub.html
# generate_tests implementation and sample usage # generate_tests implementation and sample usage
GENERATE_TESTS: resources/test/tests/functional/generate-callback.html GENERATE_TESTS: resources/test/tests/functional/generate-callback.html

View file

@ -6,8 +6,12 @@
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script type="text/javascript" src="pointerevent_support.js"></script> <script type="text/javascript" src="pointerevent_support.js"></script>
<script> <script>
var actions_promise;
var detected_pointertypes = {}; var detected_pointertypes = {};
add_completion_callback(showPointerTypes); add_completion_callback(showPointerTypes);
var test_pointerEvent = async_test("hasPointerCapture test after the pending pointer capture element releases pointer capture"); var test_pointerEvent = async_test("hasPointerCapture test after the pending pointer capture element releases pointer capture");
@ -47,8 +51,19 @@
}); });
on_event(target0, "lostpointercapture", function (e) { on_event(target0, "lostpointercapture", function (e) {
test_pointerEvent.done(); // Make sure the test finishes after all the input actions are completed.
actions_promise.then( () => {
test_pointerEvent.done();
});
}); });
// Inject mouse inputs.
actions_promise = new test_driver.Actions()
.pointerMove(10, 10, {origin: target0})
.pointerDown()
.pointerMove(10, 10, {origin: target1})
.pointerUp()
.send();
} }
</script> </script>
</head> </head>

View file

@ -6,8 +6,12 @@
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="pointerevent_support.js"></script> <script src="pointerevent_support.js"></script>
<script type="text/javascript"> <script type="text/javascript">
var actions_promise;
var detected_pointertypes = {}; var detected_pointertypes = {};
add_completion_callback(showPointerTypes); add_completion_callback(showPointerTypes);
var test_setPointerCapture = async_test("Release pointer capture right after setpointercapture"); var test_setPointerCapture = async_test("Release pointer capture right after setpointercapture");
@ -36,8 +40,19 @@
}); });
on_event(target0, "pointerup", function (event) { on_event(target0, "pointerup", function (event) {
test_setPointerCapture.done(); // Make sure the test finishes after all the input actions are completed.
actions_promise.then( () => {
test_setPointerCapture.done();
});
}); });
// Inject mouse inputs.
actions_promise = new test_driver.Actions()
.pointerMove(0, 0, {origin: target0})
.pointerDown()
.pointerMove(10, 10, {origin: target0})
.pointerUp()
.send();
} }
</script> </script>
</head> </head>

View file

@ -6,8 +6,12 @@
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="pointerevent_support.js"></script> <script src="pointerevent_support.js"></script>
<script type="text/javascript"> <script type="text/javascript">
var actions_promise;
var detected_pointertypes = {}; var detected_pointertypes = {};
add_completion_callback(showPointerTypes); add_completion_callback(showPointerTypes);
var test_setPointerCapture = async_test("setPointerCapture: override the pending pointer capture element"); var test_setPointerCapture = async_test("setPointerCapture: override the pending pointer capture element");
@ -38,8 +42,19 @@
}); });
on_event(target1, "pointerup", function (event) { on_event(target1, "pointerup", function (event) {
test_setPointerCapture.done(); // Make sure the test finishes after all the input actions are completed.
actions_promise.then( () => {
test_setPointerCapture.done();
});
}); });
// Inject mouse inputs.
actions_promise = new test_driver.Actions()
.pointerMove(0, 0, {origin: target0})
.pointerDown()
.pointerMove(10, 10, {origin: target0})
.pointerUp()
.send();
} }
</script> </script>
</head> </head>

View file

@ -6,8 +6,12 @@
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
<script src="/resources/testdriver-vendor.js"></script>
<script src="pointerevent_support.js"></script> <script src="pointerevent_support.js"></script>
<script type="text/javascript"> <script type="text/javascript">
var actions_promise;
var detected_pointertypes = {}; var detected_pointertypes = {};
add_completion_callback(showPointerTypes); add_completion_callback(showPointerTypes);
var test_setPointerCapture = async_test("setPointerCapture: set to the element which already captured the pointer"); var test_setPointerCapture = async_test("setPointerCapture: set to the element which already captured the pointer");
@ -37,8 +41,19 @@
}); });
on_event(target0, "pointerup", function (event) { on_event(target0, "pointerup", function (event) {
test_setPointerCapture.done(); // Make sure the test finishes after all the input actions are completed.
actions_promise.then( () => {
test_setPointerCapture.done();
});
}); });
// Inject mouse inputs.
actions_promise = new test_driver.Actions()
.pointerMove(0, 0, {origin: target0})
.pointerDown()
.pointerMove(10, 10, {origin: target0})
.pointerUp()
.send();
} }
</script> </script>
</head> </head>

View file

@ -96,12 +96,19 @@ function testStyleSheets(mode) {
shadowRoot.innerHTML = '<span></span><style> a.rule {} </style><style> b.rule {} </style>'; shadowRoot.innerHTML = '<span></span><style> a.rule {} </style><style> b.rule {} </style>';
assert_equals(shadowRoot.styleSheets.length, 0, 'shadowRoot.styleSheets must be empty when the shadow root is not connected'); assert_equals(shadowRoot.styleSheets.length, 0, 'shadowRoot.styleSheets must be empty when the shadow root is not connected');
var styles = shadowRoot.querySelectorAll('style');
assert_equals(styles[0].sheet, null, "Sheet should be null in a disconnected tree");
assert_equals(styles[1].sheet, null, "Sheet should be null in a disconnected tree");
document.body.appendChild(host); document.body.appendChild(host);
assert_equals(shadowRoot.styleSheets.length, 2, 'shadowRoot.styleSheets must contain two items when the shadow root has two style elements'); assert_equals(shadowRoot.styleSheets.length, 2, 'shadowRoot.styleSheets must contain two items when the shadow root has two style elements');
var styles = shadowRoot.querySelectorAll('style');
assert_equals(shadowRoot.styleSheets[0], styles[0].sheet, 'shadowRoot.styleSheets[0] must be the first style element in the shadow root'); assert_equals(shadowRoot.styleSheets[0], styles[0].sheet, 'shadowRoot.styleSheets[0] must be the first style element in the shadow root');
assert_equals(shadowRoot.styleSheets[1], styles[1].sheet, 'shadowRoot.styleSheets[1] must be the second style element in the shadow root'); assert_equals(shadowRoot.styleSheets[1], styles[1].sheet, 'shadowRoot.styleSheets[1] must be the second style element in the shadow root');
host.remove();
assert_equals(shadowRoot.styleSheets.length, 0, 'shadowRoot.styleSheets must be empty when the shadow root is not connected');
assert_equals(styles[0].sheet, null, "Sheet should be null in a disconnected tree");
assert_equals(styles[1].sheet, null, "Sheet should be null in a disconnected tree");
}, 'ShadowRoot.styleSheets must return a StyleSheetList sequence containing the shadow root style sheets when shadow root is ' + mode + '.'); }, 'ShadowRoot.styleSheets must return a StyleSheetList sequence containing the shadow root style sheets when shadow root is ' + mode + '.');
} }

View file

@ -75,7 +75,10 @@ def start_server(address=None, authkey=None, mp_context=None):
manager = ServerDictManager(address, authkey, **kwargs) manager = ServerDictManager(address, authkey, **kwargs)
manager.start() manager.start()
return (manager, manager._address, manager._authkey) address = manager._address
if isinstance(address, bytes):
address = address.decode("ascii")
return (manager, address, manager._authkey)
class LockWrapper(object): class LockWrapper(object):

View file

@ -0,0 +1,33 @@
from webdriver import Element
from tests.support.asserts import assert_success
from tests.support.helpers import filter_dict
def get_events(session):
"""Return list of mouse events recorded in the fixture."""
return session.execute_script("return allEvents.events;") or []
def element_click(session, element):
return session.transport.send(
"POST", "session/{session_id}/element/{element_id}/click".format(
session_id=session.session_id,
element_id=element.id))
def test_event_mousemove(session, url):
session.url = url("/webdriver/tests/element_click/support/test_click_wdspec.html")
element = session.find.css('#outer', all=False)
response = element_click(session, element)
assert_success(response)
events = get_events(session)
assert len(events) == 4
expected = [
{"type": "mousemove", "buttons": 0, "button": 0},
{"type": "mousedown", "buttons": 1, "button": 0},
{"type": "mouseup", "buttons": 0, "button": 0},
{"type": "click", "buttons": 0, "button": 0},
]
filtered_events = [filter_dict(e, expected[0]) for e in events]
assert expected == filtered_events

View file

@ -0,0 +1,100 @@
<!doctype html>
<meta charset=utf-8>
<html>
<head>
<title>Test Element Click</title>
<style>
div { padding:0px; margin: 0px; }
#trackPointer { position: fixed; }
#resultContainer { width: 600px; height: 60px; }
.area { width: 100px; height: 50px; background-color: #ccc; }
.block { width: 5px; height: 5px; border: solid 1px red; }
</style>
<script>
"use strict";
var els = {};
var allEvents = { events: [] };
function displayMessage(message) {
document.getElementById("events").innerHTML = "<p>" + message + "</p>";
}
function appendMessage(message) {
document.getElementById("events").innerHTML += "<p>" + message + "</p>";
}
function recordPointerEvent(event) {
if (event.type === "contextmenu") {
event.preventDefault();
}
allEvents.events.push({
"type": event.type,
"button": event.button,
"buttons": event.buttons,
"pageX": event.pageX,
"pageY": event.pageY,
"ctrlKey": event.ctrlKey,
"metaKey": event.metaKey,
"altKey": event.altKey,
"shiftKey": event.shiftKey,
"target": event.target.id
});
appendMessage(event.type + " " +
"button: " + event.button + ", " +
"pageX: " + event.pageX + ", " +
"pageY: " + event.pageY + ", " +
"button: " + event.button + ", " +
"buttons: " + event.buttons + ", " +
"ctrlKey: " + event.ctrlKey + ", " +
"altKey: " + event.altKey + ", " +
"metaKey: " + event.metaKey + ", " +
"shiftKey: " + event.shiftKey + ", " +
"target id: " + event.target.id);
}
function recordFirstPointerMove(event) {
recordPointerEvent(event);
window.removeEventListener("mousemove", recordFirstPointerMove);
}
function resetEvents() {
allEvents.events.length = 0;
displayMessage("");
}
function move(el, offsetX, offsetY, timeout) {
return function(event) {
setTimeout(function() {
el.style.top = event.clientY + offsetY + "px";
el.style.left = event.clientX + offsetX + "px";
}, timeout);
};
}
document.addEventListener("DOMContentLoaded", function() {
var outer = document.getElementById("outer");
window.addEventListener("mousemove", recordFirstPointerMove);
outer.addEventListener("click", recordPointerEvent);
outer.addEventListener("dblclick", recordPointerEvent);
outer.addEventListener("mousedown", recordPointerEvent);
outer.addEventListener("mouseup", recordPointerEvent);
outer.addEventListener("contextmenu", recordPointerEvent);
//visual cue for mousemove
var pointer = document.getElementById("trackPointer");
window.addEventListener("mousemove", move(pointer, 15, 15, 30));
});
</script>
</head>
<body>
<div id="trackPointer" class="block"></div>
<div>
<h2>ClickReporter</h2>
<div id="outer" class="area">
</div>
</div>
<div id="resultContainer">
<h2>Events</h2>
<div id="events"></div>
</div>
</body>
</html>

View file

@ -5,7 +5,8 @@ from collections import defaultdict
import pytest import pytest
from tests.perform_actions.support.keys import ALL_EVENTS, Keys, ALTERNATIVE_KEY_NAMES from tests.perform_actions.support.keys import ALL_EVENTS, Keys, ALTERNATIVE_KEY_NAMES
from tests.perform_actions.support.refine import filter_dict, get_events, get_keys from tests.perform_actions.support.refine import get_events, get_keys
from tests.support.helpers import filter_dict
def test_keyup_only_sends_no_events(session, key_reporter, key_chain): def test_keyup_only_sends_no_events(session, key_reporter, key_chain):

View file

@ -5,8 +5,9 @@ import pytest
from webdriver.error import NoSuchWindowException from webdriver.error import NoSuchWindowException
from tests.perform_actions.support.mouse import get_inview_center, get_viewport_rect from tests.perform_actions.support.mouse import get_inview_center, get_viewport_rect
from tests.perform_actions.support.refine import filter_dict, get_events from tests.perform_actions.support.refine import get_events
from tests.support.asserts import assert_move_to_coordinates from tests.support.asserts import assert_move_to_coordinates
from tests.support.helpers import filter_dict
from tests.support.sync import Poll from tests.support.sync import Poll

View file

@ -1,7 +1,8 @@
import pytest import pytest
from tests.perform_actions.support.keys import Keys from tests.perform_actions.support.keys import Keys
from tests.perform_actions.support.refine import filter_dict, get_events from tests.perform_actions.support.refine import get_events
from tests.support.helpers import filter_dict
@pytest.mark.parametrize("modifier, prop", [ @pytest.mark.parametrize("modifier, prop", [

View file

@ -1,7 +1,8 @@
import pytest import pytest
from tests.perform_actions.support.refine import filter_dict, get_events from tests.perform_actions.support.refine import get_events
from tests.support.asserts import assert_move_to_coordinates from tests.support.asserts import assert_move_to_coordinates
from tests.support.helpers import filter_dict
@pytest.mark.parametrize("click_pause", [0, 200]) @pytest.mark.parametrize("click_pause", [0, 200])

View file

@ -1,7 +1,8 @@
import pytest import pytest
from tests.perform_actions.support.keys import Keys from tests.perform_actions.support.keys import Keys
from tests.perform_actions.support.refine import filter_dict, get_events from tests.perform_actions.support.refine import get_events
from tests.support.helpers import filter_dict
@pytest.mark.parametrize("modifier, prop", [ @pytest.mark.parametrize("modifier, prop", [

View file

@ -1,5 +1,6 @@
from tests.perform_actions.support.mouse import get_inview_center, get_viewport_rect from tests.perform_actions.support.mouse import get_inview_center, get_viewport_rect
from tests.perform_actions.support.refine import filter_dict, get_events from tests.perform_actions.support.refine import get_events
from tests.support.helpers import filter_dict
_DBLCLICK_INTERVAL = 640 _DBLCLICK_INTERVAL = 640

View file

@ -1,5 +1,6 @@
from tests.perform_actions.support.refine import filter_dict, get_events from tests.perform_actions.support.refine import get_events
from tests.support.asserts import assert_move_to_coordinates from tests.support.asserts import assert_move_to_coordinates
from tests.support.helpers import filter_dict
lots_of_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor "\ lots_of_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor "\
"incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud "\ "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud "\

View file

@ -27,12 +27,3 @@ def get_keys(input_el):
return "" return ""
else: else:
return rv return rv
def filter_dict(source, d):
"""Filter `source` dict to only contain same keys as `d` dict.
:param source: dictionary to filter.
:param d: dictionary whose keys determine the filtering.
"""
return {k: source[k] for k in d.keys()}

View file

@ -2,8 +2,9 @@ import pytest
from webdriver.error import NoSuchWindowException from webdriver.error import NoSuchWindowException
from tests.perform_actions.support.refine import filter_dict, get_events from tests.perform_actions.support.refine import get_events
from tests.support.asserts import assert_move_to_coordinates from tests.support.asserts import assert_move_to_coordinates
from tests.support.helpers import filter_dict
def test_null_response_value(session, wheel_chain): def test_null_response_value(session, wheel_chain):

View file

@ -1,6 +1,7 @@
# META: timeout=long # META: timeout=long
from tests.release_actions.support.refine import filter_dict, get_events, get_keys from tests.release_actions.support.refine import get_events, get_keys
from tests.support.helpers import filter_dict
def test_release_no_actions_sends_no_events(session, key_reporter): def test_release_no_actions_sends_no_events(session, key_reporter):

View file

@ -22,12 +22,3 @@ def get_keys(input_el):
return "" return ""
else: else:
return rv return rv
def filter_dict(source, d):
"""Filter `source` dict to only contain same keys as `d` dict.
:param source: dictionary to filter.
:param d: dictionary whose keys determine the filtering.
"""
return {k: source[k] for k in d.keys()}

View file

@ -238,3 +238,11 @@ def available_screen_size(session):
screen.availHeight - screen.availTop, screen.availHeight - screen.availTop,
]; ];
""")) """))
def filter_dict(source, d):
"""Filter `source` dict to only contain same keys as `d` dict.
:param source: dictionary to filter.
:param d: dictionary whose keys determine the filtering.
"""
return {k: source[k] for k in d.keys()}