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]
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]
expected: NOTRUN
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
[<iframe>: combined response Content-Type: text/html;" text/plain]
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

View file

@ -56,3 +56,6 @@
[separate text/javascript x/x]
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!]
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]
expected: FAIL

View file

@ -1,5 +1,4 @@
[embedded-opener-remove-frame.html]
expected: CRASH
[opener of discarded nested browsing context]
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]
expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
@ -9,7 +10,7 @@
expected: FAIL
[Area element should support autofocus]
expected: FAIL
expected: TIMEOUT
[Host element with delegatesFocus should support autofocus]
expected: FAIL

View file

@ -1,5 +1,5 @@
[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]
expected: TIMEOUT

View file

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

View file

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

View file

@ -1,7 +1,4 @@
[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)]
expected: FAIL
@ -14,24 +11,9 @@
[input type text: setSelectionRange out of range a second time (must not fire select)]
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)]
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)]
expected: FAIL
@ -44,30 +26,54 @@
[input type password: selectionStart a second time (must not fire select)]
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)]
expected: FAIL
[input type url: selectionDirection a second time (must not fire select)]
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)]
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
[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

View file

@ -4,5 +4,5 @@
expected: TIMEOUT
[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]
expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
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]
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": [
"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": [
"fcc8584515c51d60bb01092ffe1f701273c7bb58",
[
@ -338171,6 +338143,66 @@
"focus-restoration-in-same-site-iframes-outer-window.html": [
"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": [
"d4e3da7e6a1a9e7763bde6b13c0add204ff3c7de",
"342f1ede0b030a85271a5db71b3773d1531aee48",
[]
],
"deprecation-reporting.idl": [
@ -353395,7 +353427,7 @@
]
},
"lint.ignore": [
"2e0fc8b39bc8df1a44d7b5469d81014c32fa844b",
"ab3d0e5157064def99f47cfbfc0e1207db477cbe",
[]
],
"loading": {
@ -372650,7 +372682,7 @@
]
},
"stash.py": [
"535355a828796196ee6be950c5ef9a0802236826",
"bf6e59927be44a503aa9ca15b8495f57704f89e7",
[]
],
"utils.py": [
@ -374415,6 +374447,10 @@
"input.html": [
"e2c6dadd1218e0a7d8b7d243a1c49b7f47092d77",
[]
],
"test_click_wdspec.html": [
"a9451ec82bec97654896f697704218bb6068d14e",
[]
]
}
},
@ -374685,7 +374721,7 @@
[]
],
"refine.py": [
"d5d24e934f61684be8512d120a4853bff7efadef",
"35c962b9ecbfa21c61535683c094e17884770e9f",
[]
],
"test_actions_pointer_wdspec.html": [
@ -374729,7 +374765,7 @@
[]
],
"refine.py": [
"3a6d63e04ce941d26ab3898cb2fc2a730d46c1ce",
"90f722587c3be0e4066fbb6a604668a6d40f359f",
[]
],
"test_actions_wdspec.html": [
@ -374788,7 +374824,7 @@
[]
],
"helpers.py": [
"a1082caf58cf0466185268a3c95e59b643a76bcb",
"13607e30481876a7777edfad57f48fcafbf8e40f",
[]
],
"html": {
@ -431057,7 +431093,7 @@
},
"custom-state-pseudo-class": {
"idlharness.window.js": [
"dccc0f56f4683ae975e3738641d9bddc3e08b7aa",
"d5d40c54616745c6110078d34c591d6d07a92fb2",
[
"custom-state-pseudo-class/idlharness.window.html",
{
@ -458821,6 +458857,41 @@
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": {
@ -483352,7 +483423,7 @@
]
],
"focus-events.html": [
"d63362aaa1828f35de410b56c1ccc2d7869a111e",
"5f8ca20a13d85427fa3d304254d0156224734248",
[
null,
{}
@ -513181,6 +513252,15 @@
}
]
],
"pointerevent_element_haspointercapture_release_pending_capture.html": [
"e75dff867528d91d62b14ac7e48d822626deba34",
[
null,
{
"testdriver": true
}
]
],
"pointerevent_fractional_coordinates.html": [
"b106340efd5d05ba4ab4281863a476dbe6134a64",
[
@ -513451,6 +513531,15 @@
}
]
],
"pointerevent_releasepointercapture_release_right_after_capture.html": [
"409951b918aa6ef9de4603ac97f330085080e2b7",
[
null,
{
"testdriver": true
}
]
],
"pointerevent_root_computed_style.html": [
"c3034d475eee8c58ed1b079fce9466925c5d0379",
[
@ -513510,6 +513599,15 @@
}
]
],
"pointerevent_setpointercapture_override_pending_capture_element.html": [
"f7c1d4299192f28ac8b3b99142951876f3155b45",
[
null,
{
"testdriver": true
}
]
],
"pointerevent_setpointercapture_relatedtarget.html": [
"37de34d5a68375b44106f705164d46be78c57780",
[
@ -513519,6 +513617,15 @@
}
]
],
"pointerevent_setpointercapture_to_same_element_twice.html": [
"5225ac508d42dca00b0a7269c8a4f95350545d64",
[
null,
{
"testdriver": true
}
]
],
"pointerevent_suppress_compat_events_on_click.html": [
"2f99e7a976ac8006cff25b9cde1ee1e29b6a14d1",
[
@ -532076,7 +532183,7 @@
]
],
"ShadowRoot-interface.html": [
"8efa50e4ea18cc6655dba923cdcf4f6e59029c5b",
"e95b1d9542e2e3b502693e0063de0980f5a32789",
[
null,
{}
@ -589877,6 +589984,13 @@
{}
]
],
"events.py": [
"e3d32c1bcb44c7eb3b810fbce5ca0709c97abcd9",
[
null,
{}
]
],
"file_upload.py": [
"73832d0f85ae683ee2d1f54e9c0b7e3e432e9afd",
[
@ -590796,7 +590910,7 @@
]
],
"key_events.py": [
"c3958015bfd4dee51842a642e6762aafb5fabf2d",
"8dbe024d18396f010b2dcac7281b8436b5b69c65",
[
null,
{
@ -590833,7 +590947,7 @@
]
],
"pointer.py": [
"9579a57aa7222d8a1f9517ad71735e86ec8a0e47",
"674d46d7b610294b6cadabb4e1e46d79cab8940d",
[
null,
{
@ -590842,21 +590956,21 @@
]
],
"pointer_contextmenu.py": [
"fda3f18bbc1c9cdcede30abe74f6d4e2f297d48f",
"50f684327f2ab044905cbd3b0da59336ead25f20",
[
null,
{}
]
],
"pointer_dblclick.py": [
"8c89cef5f380d769705be704698232c7f9c928ec",
"5be635a4d5604e33bf61c41b2190e620309179b8",
[
null,
{}
]
],
"pointer_modifier_click.py": [
"ba81f6d090b248c512cf896bc8e6059f252db8c8",
"28c4086e0f8c99d9350523b8a29478b7c54fa17e",
[
null,
{}
@ -590870,14 +590984,14 @@
]
],
"pointer_pause_dblclick.py": [
"85679f3614a8fe010cba7dcd698ce5e82bc26660",
"d46178a1d650828ef84ccb02f08a12b292f4c3eb",
[
null,
{}
]
],
"pointer_tripleclick.py": [
"3bf41bab849d5de742f8707eb98337e24ebbfb6d",
"8239fc2a60620fe4ea6616a0a15139ece54e8cad",
[
null,
{}
@ -590909,7 +591023,7 @@
]
],
"wheel.py": [
"fc84f2f2e0148967464505f83317edac2e54bd84",
"67734800b19d3b08f934c8ec8c4dab0c4cd425f1",
[
null,
{}
@ -590970,7 +591084,7 @@
]
],
"sequence.py": [
"2d816f8094b3975523904c9e197390dfc058dd06",
"75143d85ca600b3e3a2d7d5ac3679a26b7d7bf5a",
[
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]
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 ]
expected: NOTRUN
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
[<iframe>: combined response Content-Type: text/html;" text/plain]
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

View file

@ -56,3 +56,6 @@
[separate text/javascript x/x]
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!]
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]
expected: FAIL

View file

@ -1,5 +1,4 @@
[embedded-opener-remove-frame.html]
expected: CRASH
[opener and "removed" embedded documents]
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]
expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
@ -9,7 +10,7 @@
expected: FAIL
[Area element should support autofocus]
expected: FAIL
expected: TIMEOUT
[Host element with delegatesFocus should support autofocus]
expected: FAIL

View file

@ -1,6 +1,6 @@
[iframe_sandbox_popups_escaping-1.html]
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]
expected: TIMEOUT

View file

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

View file

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

View file

@ -1,7 +1,4 @@
[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)]
expected: FAIL
@ -14,24 +11,9 @@
[input type text: setSelectionRange out of range a second time (must not fire select)]
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)]
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)]
expected: FAIL
@ -44,30 +26,54 @@
[input type password: selectionStart a second time (must not fire select)]
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)]
expected: FAIL
[input type url: selectionDirection a second time (must not fire select)]
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)]
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
[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

View file

@ -5,5 +5,5 @@
expected: TIMEOUT
[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]
expected: TIMEOUT
[X 2048-point FFT peak position is not equal to 64. Got 0.]
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]
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';
class MyElement extends HTMLElement {};
customElements.define('my-element', MyElement);
idl_test(
['custom-state-pseudo-class'],
['html', 'wai-aria'],
idl_array => {
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_false(e.bubbles, "blur event doesn't bubble");
assert_false(e.cancelable, "blur event is not cancelable");
assert_equals(document.activeElement, document.body);
});
i1.focus();

View file

@ -4,5 +4,11 @@
// Source: Custom State Pseudo Class (https://wicg.github.io/custom-state-pseudo-class/)
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: xhr/resources/init.htm
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: resources/test/tests/functional/generate-callback.html

View file

@ -6,8 +6,12 @@
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
<script src="/resources/testharness.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>
var actions_promise;
var detected_pointertypes = {};
add_completion_callback(showPointerTypes);
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) {
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>
</head>

View file

@ -6,8 +6,12 @@
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
<script src="/resources/testharness.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 type="text/javascript">
var actions_promise;
var detected_pointertypes = {};
add_completion_callback(showPointerTypes);
var test_setPointerCapture = async_test("Release pointer capture right after setpointercapture");
@ -36,8 +40,19 @@
});
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>
</head>

View file

@ -6,8 +6,12 @@
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
<script src="/resources/testharness.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 type="text/javascript">
var actions_promise;
var detected_pointertypes = {};
add_completion_callback(showPointerTypes);
var test_setPointerCapture = async_test("setPointerCapture: override the pending pointer capture element");
@ -38,8 +42,19 @@
});
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>
</head>

View file

@ -6,8 +6,12 @@
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
<script src="/resources/testharness.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 type="text/javascript">
var actions_promise;
var detected_pointertypes = {};
add_completion_callback(showPointerTypes);
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) {
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>
</head>

View file

@ -96,12 +96,19 @@ function testStyleSheets(mode) {
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');
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);
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[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 + '.');
}

View file

@ -75,7 +75,10 @@ def start_server(address=None, authkey=None, mp_context=None):
manager = ServerDictManager(address, authkey, **kwargs)
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):

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

View file

@ -5,8 +5,9 @@ import pytest
from webdriver.error import NoSuchWindowException
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.helpers import filter_dict
from tests.support.sync import Poll

View file

@ -1,7 +1,8 @@
import pytest
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", [

View file

@ -1,7 +1,8 @@
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.helpers import filter_dict
@pytest.mark.parametrize("click_pause", [0, 200])

View file

@ -1,7 +1,8 @@
import pytest
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", [

View file

@ -1,5 +1,6 @@
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

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.helpers import filter_dict
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 "\

View file

@ -27,12 +27,3 @@ def get_keys(input_el):
return ""
else:
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 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.helpers import filter_dict
def test_null_response_value(session, wheel_chain):

View file

@ -1,6 +1,7 @@
# 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):

View file

@ -22,12 +22,3 @@ def get_keys(input_el):
return ""
else:
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,
];
"""))
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()}