Update web-platform-tests to revision e9e85e67994df01673a8eb55c47d1b6f5eb6c18a

This commit is contained in:
WPT Sync Bot 2020-08-13 08:21:47 +00:00
parent 078b816959
commit ad8638dd6e
70 changed files with 289 additions and 170 deletions

View file

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

View file

@ -1,4 +0,0 @@
[hit-test-floats-005.html]
[Miss clipped float]
expected: FAIL

View file

@ -5,9 +5,6 @@
[[data-expected-height\] 7] [[data-expected-height\] 7]
expected: FAIL expected: FAIL
[[data-expected-height\] 1] [[data-expected-height\] 4]
expected: FAIL
[[data-expected-height\] 2]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,4 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

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

View file

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

View file

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

View file

@ -11,6 +11,6 @@
[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'] [X-Content-Type-Options%3A%20%2Cnosniff]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,4 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

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

View file

@ -0,0 +1,2 @@
[cross-origin-objects-on-new-window.html]
expected: TIMEOUT

View file

@ -171,3 +171,6 @@
[XHTML img usemap="#hash-id"] [XHTML img usemap="#hash-id"]
expected: FAIL expected: FAIL
[HTML (standards) IMG usemap="no-hash-name"]
expected: FAIL

View file

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

View file

@ -1,4 +1,5 @@
[iframe_sandbox_popups_nonescaping-3.html] [iframe_sandbox_popups_nonescaping-3.html]
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: FAIL expected: NOTRUN

View file

@ -0,0 +1,4 @@
[checkpoint-importScripts.any.sharedworker.html]
expected: ERROR
[checkpoint-importScripts.any.worker.html]

View file

@ -3,3 +3,6 @@
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] [The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
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]
expected: TIMEOUT

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

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

@ -337959,6 +337959,10 @@
"checkpoint-after-error-event.js": [ "checkpoint-after-error-event.js": [
"f415732aa68dd529dcdacc49fb0d0ca6816c1249", "f415732aa68dd529dcdacc49fb0d0ca6816c1249",
[] []
],
"resolve-then-throw.js": [
"a841eb780a050a82acb3cd496f4f7ad04a8f3a5b",
[]
] ]
} }
}, },
@ -340137,10 +340141,6 @@
"document-fonts-ready.html.ini": [ "document-fonts-ready.html.ini": [
"d074292053b6d580efda36155c1d82af699494bc", "d074292053b6d580efda36155c1d82af699494bc",
[] []
],
"html-elements.html.ini": [
"67caa470342db6d2b46dab28464f2491f84dd7b2",
[]
] ]
}, },
"browsers": { "browsers": {
@ -341060,7 +341060,7 @@
[] []
], ],
"trusted-types.tentative.idl": [ "trusted-types.tentative.idl": [
"4e469c19b823bf3d452f480e086474e49741964a", "df7bebae7bb6f5c1b62b908ede3ac3cdf112d520",
[] []
], ],
"ua-client-hints.idl": [ "ua-client-hints.idl": [
@ -341108,7 +341108,7 @@
[] []
], ],
"web-animations.idl": [ "web-animations.idl": [
"ae64bb867eb23d6c491d3e9fee743c7cf8963236", "2f2b086e65cc981d47def182b46ad48ebb28f846",
[] []
], ],
"web-bluetooth.idl": [ "web-bluetooth.idl": [
@ -351130,7 +351130,7 @@
[] []
], ],
"safari-technology-preview.rb": [ "safari-technology-preview.rb": [
"63ad4e5425e593e6641bc36d4ac4fc1bbb9085d6", "9219623d55f6e034703f5125ac7285e1ba68d7aa",
[] []
], ],
"system_info.yml": [ "system_info.yml": [
@ -357590,7 +357590,7 @@
[] []
], ],
"client.py": [ "client.py": [
"7f122c83dd99117678e574b7a7a81b6e976dbfd9", "fe5189ec0b30a4e20642624c55e464ef40f2901d",
[] []
], ],
"error.py": [ "error.py": [
@ -358115,7 +358115,7 @@
[] []
], ],
"executorwebdriver.py": [ "executorwebdriver.py": [
"2b3d53d7445706ae3ab601c42e2f17496f6868db", "695b16b9cca19525a0656f66da45fe66c599fb8b",
[] []
], ],
"executorwebkit.py": [ "executorwebkit.py": [
@ -360340,7 +360340,7 @@
[] []
], ],
"conftest.py": [ "conftest.py": [
"d5fd320a696a507718299c765278edde6205608a", "bd5db0cfeba7bbc8aaf23c3151109cf48094ff09",
[] []
] ]
}, },
@ -360390,10 +360390,6 @@
[] []
], ],
"support": { "support": {
"close_window.html": [
"7a3619829d10de99268b35968e8dec8985575564",
[]
],
"input.html": [ "input.html": [
"e2c6dadd1218e0a7d8b7d243a1c49b7f47092d77", "e2c6dadd1218e0a7d8b7d243a1c49b7f47092d77",
[] []
@ -360452,7 +360448,7 @@
[] []
], ],
"conftest.py": [ "conftest.py": [
"d5fd320a696a507718299c765278edde6205608a", "bd5db0cfeba7bbc8aaf23c3151109cf48094ff09",
[] []
] ]
}, },
@ -360682,7 +360678,7 @@
[] []
], ],
"conftest.py": [ "conftest.py": [
"f34630c3cbc5de2700552e576bc7c797d2bd724f", "b080761bde881d236aed87dbfcd03963051ba443",
[] []
] ]
}, },
@ -360722,11 +360718,11 @@
[] []
], ],
"fixtures.py": [ "fixtures.py": [
"80ccfddf3d15ad739f7eca6a77fac79e2dcdcaef", "364ede1c93b12debcfbb171cc0aada8a663dbab4",
[] []
], ],
"helpers.py": [ "helpers.py": [
"8bc53e7b4030dfdc6a78d11cb95915ea081eae73", "f857083b47743e0925e7baf8b0b964008be7923c",
[] []
], ],
"html": { "html": {
@ -436294,7 +436290,7 @@
] ]
], ],
"script-resource-with-nonsniffable-types.tentative.sub.html": [ "script-resource-with-nonsniffable-types.tentative.sub.html": [
"81e256003b685305551fb54bf729461024853cf4", "6d490d55bce25f807b2fe84ad110ceb166f30f8f",
[ [
null, null,
{} {}
@ -470270,6 +470266,31 @@
null, null,
{} {}
] ]
],
"checkpoint-importScripts.any.js": [
"8791a099b6ec875e5851d3f18c0b9c29a9eab83b",
[
"html/semantics/scripting-1/the-script-element/microtasks/checkpoint-importScripts.any.sharedworker.html",
{
"script_metadata": [
[
"global",
"dedicatedworker,sharedworker"
]
]
}
],
[
"html/semantics/scripting-1/the-script-element/microtasks/checkpoint-importScripts.any.worker.html",
{
"script_metadata": [
[
"global",
"dedicatedworker,sharedworker"
]
]
}
]
] ]
}, },
"module": { "module": {
@ -521287,7 +521308,7 @@
] ]
], ],
"setting-the-timeline-of-an-animation.html": [ "setting-the-timeline-of-an-animation.html": [
"dd8617503951aafd71015d591914a1b54e3907a7", "7e98ef4260f778c4257203f92db39a6bdaa92871",
[ [
null, null,
{} {}
@ -525904,7 +525925,7 @@
] ]
], ],
"RTCPeerConnection-createDataChannel.html": [ "RTCPeerConnection-createDataChannel.html": [
"87867664b58a6787bd96cfb85559b4f1171e263f", "7ad8bf7d46ecd7a3702542d8b484132afcc94d63",
[ [
null, null,
{ {
@ -525973,7 +525994,7 @@
] ]
], ],
"RTCPeerConnection-iceGatheringState.html": [ "RTCPeerConnection-iceGatheringState.html": [
"d9e3f42d2c21003c5a6c5614c24398aa9e681c60", "88acf348eb5eaf0e803a88381d1b5463647b7a9e",
[ [
null, null,
{} {}
@ -562281,14 +562302,14 @@
}, },
"close_window": { "close_window": {
"close.py": [ "close.py": [
"f4e3b0481d3b3cbc93ba8b44c639934cf8eef9de", "fa8236791067410c01bae081723ee26e237a476b",
[ [
null, null,
{} {}
] ]
], ],
"user_prompts.py": [ "user_prompts.py": [
"22df9155e8e7bd3aa32fc96c7dd482972c490fd2", "c0f9cc7610c21ea97064392eb2e09fce6f853bbc",
[ [
null, null,
{ {
@ -562408,7 +562429,7 @@
] ]
], ],
"navigate.py": [ "navigate.py": [
"ead4f5aa04befe664f17036de925fd9df7626470", "9426ea089b0f24da8576ac39eab74abe4abe4786",
[ [
null, null,
{} {}
@ -562950,7 +562971,7 @@
}, },
"get_window_handles": { "get_window_handles": {
"get.py": [ "get.py": [
"07ff9d4d26fd3b7cff5620b5295ebe386a226cf2", "b25d76ce588449cf3279aa61e4c1c39863e44d12",
[ [
null, null,
{} {}
@ -563334,7 +563355,7 @@
}, },
"permissions": { "permissions": {
"set.py": [ "set.py": [
"349462dbb5037321e16b92b8055bd94c015ea11c", "4dce1589641d9c35e729344ac548f3ba99bc084a",
[ [
null, null,
{} {}
@ -563492,14 +563513,14 @@
}, },
"switch_to_window": { "switch_to_window": {
"alerts.py": [ "alerts.py": [
"8824138c2d25c07232847062c4853d73075eb94e", "2fc390e8641b980bc1c317db93f9f1166bcb8284",
[ [
null, null,
{} {}
] ]
], ],
"switch.py": [ "switch.py": [
"907be66a149e8196c87760544140636d9625bbb9", "8fb80fb3238f99eae758658d7796b29c1f8db717",
[ [
null, null,
{} {}

View file

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

View file

@ -1,4 +0,0 @@
[hit-test-floats-005.html]
[Miss clipped float]
expected: FAIL

View file

@ -8,9 +8,6 @@
[[data-expected-height\] 3] [[data-expected-height\] 3]
expected: FAIL expected: FAIL
[[data-expected-height\] 1] [[data-expected-height\] 4]
expected: FAIL
[[data-expected-height\] 2]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,4 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

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

View file

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

View file

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

View file

@ -11,6 +11,6 @@
[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'] [X-Content-Type-Options%3A%20%2Cnosniff]
expected: FAIL expected: FAIL

View file

@ -0,0 +1,4 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

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

View file

@ -0,0 +1,2 @@
[cross-origin-objects-on-new-window.html]
expected: TIMEOUT

View file

@ -172,3 +172,6 @@
[XHTML img usemap="http://example.org/#garbage-before-hash-id"] [XHTML img usemap="http://example.org/#garbage-before-hash-id"]
expected: FAIL expected: FAIL
[HTML (standards) IMG usemap="no-hash-name"]
expected: FAIL

View file

@ -1,5 +1,5 @@
[iframe_sandbox_popups_escaping-2.html] [iframe_sandbox_popups_escaping-2.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,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,6 +1,6 @@
[iframe_sandbox_popups_nonescaping-2.html] [iframe_sandbox_popups_nonescaping-2.html]
type: testharness type: testharness
expected: TIMEOUT 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: NOTRUN expected: NOTRUN

View file

@ -1,5 +1,6 @@
[iframe_sandbox_popups_nonescaping-3.html] [iframe_sandbox_popups_nonescaping-3.html]
type: testharness type: testharness
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: FAIL expected: NOTRUN

View file

@ -0,0 +1,4 @@
[checkpoint-importScripts.any.sharedworker.html]
expected: ERROR
[checkpoint-importScripts.any.worker.html]

View file

@ -4,3 +4,6 @@
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document] [The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
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]
expected: TIMEOUT

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

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

@ -42,12 +42,7 @@ function test(mime_type, is_blocking_expected) {
}); });
// www1 is cross-origin, so the HTTP response is CORB-eligible. // www1 is cross-origin, so the HTTP response is CORB-eligible.
// var src_prefix = "http://{{domains[www1]}}:{{ports[http][0]}}/fetch/corb/resources/sniffable-resource.py";
// TODO(lukasza@chromium.org): Once https://crbug.com/888079 and
// https://crbug.com/1098938 are fixed, we should use a cross-*origin*
// rather than cross-*site* URL below (e.g. s/hosts[alt]/domains/g).
// See also https://crbug.com/918660 for more context.
var src_prefix = "http://{{hosts[alt][www1]}}:{{ports[http][0]}}/fetch/corb/resources/sniffable-resource.py";
body = `window['${script_has_run_token}'] = true;` body = `window['${script_has_run_token}'] = true;`
script.src = src_prefix + "?type=" + mime_type + "&body=" + encodeURIComponent(body); script.src = src_prefix + "?type=" + mime_type + "&body=" + encodeURIComponent(body);
document.body.appendChild(script) document.body.appendChild(script)

View file

@ -0,0 +1,40 @@
// META: global=dedicatedworker,sharedworker
// The `then` handlers for `Promise.resolve()` are evaluated in the first
// microtasks checkpoint after `Promise.resolve()`.
// ----------------------------------------------------------------
// Check when microtasks checkpoint is performed around importScripts().
// The expectation is: the `then` handlers are evaluated after the script
// calling importScripts() is finished, not immediately after importScripts().
// Although #clean-up-after-running-script is executed as a part of
// #run-a-classic-script for importScripts()ed scripts, but at that time
// microtasks checkpoint is NOT performed because JavaScript execution context
// stack is not empty.
self.log = [];
// Microtasks should be executed before
// #run-a-classic-script/#run-a-module-script is completed, and thus before
// script evaluation scheduled by setTimeout().
async_test(t => {
self.addEventListener('error',
t.unreached_func('error event should not be fired'));
t.step_timeout(() => {
assert_array_equals(log, [
'importScripts()ed script',
'catch',
'promise'
]);
t.done();
},
0);
}, "Promise resolved during importScripts()");
try {
importScripts('resources/resolve-then-throw.js');
} catch (e) {
self.log.push('catch');
}

View file

@ -0,0 +1,3 @@
self.log.push('importScripts()ed script');
Promise.resolve().then(() => self.log.push('promise'));
throw new Error('foo');

View file

@ -1,9 +0,0 @@
[html-elements.html]
[Compare CSS span definitions (only valid if pre-reqs pass)]
expected:
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=187052
[Compare CSS div definitions (only valid if pre-reqs pass)]
expected:
if product == "safari" or product == "epiphany" or product == "webkit": FAIL # https://bugs.webkit.org/show_bug.cgi?id=187052

View file

@ -30,7 +30,20 @@ typedef [StringContext=TrustedScriptURL] USVString ScriptURLString;
SecureContext SecureContext
] interface TrustedTypePolicyFactory : EventTarget { ] interface TrustedTypePolicyFactory : EventTarget {
TrustedTypePolicy createPolicy(DOMString policyName, optional TrustedTypePolicyOptions policyOptions = {}); TrustedTypePolicy createPolicy(DOMString policyName, optional TrustedTypePolicyOptions policyOptions = {});
// All the policy object names that have been created boolean isHTML(any checkedObject);
boolean isScript(any checkedObject);
boolean isScriptURL(any checkedObject);
readonly attribute TrustedHTML emptyHTML;
readonly attribute TrustedScript emptyScript;
DOMString? getAttributeType(DOMString tagName, DOMString attribute,
optional DOMString elementNS, optional DOMString attrNs);
DOMString? getPropertyType(DOMString tagName, DOMString property,
optional DOMString elementNS);
readonly attribute TrustedTypePolicy defaultPolicy;
object? getTypeMapping(optional DOMString ns);
attribute EventHandler onbeforecreatepolicy;
}; };
[ [

View file

@ -24,7 +24,7 @@ interface Animation : EventTarget {
optional AnimationTimeline? timeline); optional AnimationTimeline? timeline);
attribute DOMString id; attribute DOMString id;
attribute AnimationEffect? effect; attribute AnimationEffect? effect;
readonly attribute AnimationTimeline? timeline; attribute AnimationTimeline? timeline;
attribute double? startTime; attribute double? startTime;
attribute double? currentTime; attribute double? currentTime;
attribute double playbackRate; attribute double playbackRate;

View file

@ -1,10 +1,10 @@
cask 'safari-technology-preview' do cask 'safari-technology-preview' do
if MacOS.version <= :mojave if MacOS.version <= :catalina
version '108,001-15210-20200610-d35e22e0-d9fa-4503-9988-cf7b2b554e15' version '111,001-32177-20200728-f459b529-99a7-4707-a85c-e693ddb56eee'
sha256 '0299fd2f2836b170a8b633b00d289bcc6913716042e82251af4fa1d5394b87d5' sha256 'f95f72e8cf6a3160fad71411168c8f0eeb805ca1e7a7eec06b6e92d2a0ab6e85'
else else
version '108,001-16091-20200610-09f04256-ae36-4930-b7c4-b1333f8d8e5f' version '111,001-32479-20200728-12c458d1-e348-4ec5-9d55-9e9bad9c805e'
sha256 '22a4d9ca7fb39227cbf4a83be13ad05973171cf88eb6bcc2fac4556a36017357' sha256 '6b199cca77be7407f40a62bc1ec576a8751b24da15613dfc0a951ac3d996f45f'
end end
url "https://secure-appldnld.apple.com/STP/#{version.after_comma}/SafariTechnologyPreview.dmg" url "https://secure-appldnld.apple.com/STP/#{version.after_comma}/SafariTechnologyPreview.dmg"
@ -13,7 +13,7 @@ cask 'safari-technology-preview' do
homepage 'https://developer.apple.com/safari/download/' homepage 'https://developer.apple.com/safari/download/'
auto_updates true auto_updates true
depends_on macos: '>= :mojave' depends_on macos: '>= :catalina'
pkg 'Safari Technology Preview.pkg' pkg 'Safari Technology Preview.pkg'

View file

@ -242,6 +242,15 @@ class Window(object):
def __init__(self, session): def __init__(self, session):
self.session = session self.session = session
@command
def close(self):
handles = self.session.send_session_command("DELETE", "window")
if handles is not None and len(handles) == 0:
# With no more open top-level browsing contexts, the session is closed.
self.session.session_id = None
return handles
@property @property
@command @command
def rect(self): def rect(self):
@ -548,6 +557,13 @@ class Session(object):
def source(self): def source(self):
return self.send_session_command("GET", "source") return self.send_session_command("GET", "source")
@command
def new_window(self, type_hint=None):
body = {"type": type_hint}
value = self.send_session_command("POST", "window/new", body)
return value["handle"]
@property @property
@command @command
def window_handle(self): def window_handle(self):
@ -569,15 +585,6 @@ class Session(object):
return self.send_session_command("POST", url, body) return self.send_session_command("POST", url, body)
@command
def close(self):
handles = self.send_session_command("DELETE", "window")
if handles is not None and len(handles) == 0:
# With no more open top-level browsing contexts, the session is closed.
self.session_id = None
return handles
@property @property
@command @command
def handles(self): def handles(self):

View file

@ -112,7 +112,7 @@ class WebDriverTestharnessProtocolPart(TestharnessProtocolPart):
for handle in handles: for handle in handles:
try: try:
self.webdriver.window_handle = handle self.webdriver.window_handle = handle
self.webdriver.close() self.webdriver.window.close()
except client.NoSuchWindowException: except client.NoSuchWindowException:
pass pass
self.webdriver.window_handle = self.runner_handle self.webdriver.window_handle = self.runner_handle

View file

@ -60,7 +60,7 @@ test(t => {
new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC), new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC),
null); null);
animation.startTime = document.timeline.currentTime; animation.startTime = document.timeline.currentTime;
assert_equals(animation.playState, 'idle'); assert_equals(animation.playState, 'running');
animation.timeline = document.timeline; animation.timeline = document.timeline;
@ -73,7 +73,7 @@ test(t => {
new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC), new Animation(new KeyframeEffect(createDiv(t), null, 100 * MS_PER_SEC),
null); null);
animation.startTime = document.timeline.currentTime - 200 * MS_PER_SEC; animation.startTime = document.timeline.currentTime - 200 * MS_PER_SEC;
assert_equals(animation.playState, 'idle'); assert_equals(animation.playState, 'running');
animation.timeline = document.timeline; animation.timeline = document.timeline;

View file

@ -4,15 +4,15 @@ from webdriver.error import NoSuchWindowException
@pytest.fixture(name="session") @pytest.fixture(name="session")
def fixture_session(capabilities, session, create_window): def fixture_session(capabilities, session):
"""Prevent re-using existent history by running the test in a new window.""" """Prevent re-using existent history by running the test in a new window."""
original_handle = session.window_handle original_handle = session.window_handle
session.window_handle = create_window() session.window_handle = session.new_window()
yield session yield session
try: try:
session.close() session.window.close()
except NoSuchWindowException: except NoSuchWindowException:
pass pass

View file

@ -15,10 +15,10 @@ def test_no_browsing_context(session, closed_window):
assert_error(response, "no such window") assert_error(response, "no such window")
def test_close_browsing_context(session, create_window): def test_close_browsing_context(session):
original_handles = session.handles original_handles = session.handles
new_handle = create_window() new_handle = session.new_window()
session.window_handle = new_handle session.window_handle = new_handle
response = close(session) response = close(session)
@ -27,10 +27,10 @@ def test_close_browsing_context(session, create_window):
assert new_handle not in handles assert new_handle not in handles
def test_close_browsing_context_with_dismissed_beforeunload_prompt(session, create_window): def test_close_browsing_context_with_dismissed_beforeunload_prompt(session):
original_handles = session.handles original_handles = session.handles
new_handle = create_window() new_handle = session.new_window()
session.window_handle = new_handle session.window_handle = new_handle
session.url = inline(""" session.url = inline("""

View file

@ -11,10 +11,10 @@ def close(session):
@pytest.fixture @pytest.fixture
def check_user_prompt_closed_without_exception(session, create_dialog, create_window): def check_user_prompt_closed_without_exception(session, create_dialog):
def check_user_prompt_closed_without_exception(dialog_type, retval): def check_user_prompt_closed_without_exception(dialog_type, retval):
original_handle = session.window_handle original_handle = session.window_handle
new_handle = create_window() new_handle = session.new_window()
session.window_handle = new_handle session.window_handle = new_handle
create_dialog(dialog_type, text=dialog_type) create_dialog(dialog_type, text=dialog_type)
@ -34,9 +34,9 @@ def check_user_prompt_closed_without_exception(session, create_dialog, create_wi
@pytest.fixture @pytest.fixture
def check_user_prompt_closed_with_exception(session, create_dialog, create_window): def check_user_prompt_closed_with_exception(session, create_dialog):
def check_user_prompt_closed_with_exception(dialog_type, retval): def check_user_prompt_closed_with_exception(dialog_type, retval):
new_handle = create_window() new_handle = session.new_window()
session.window_handle = new_handle session.window_handle = new_handle
create_dialog(dialog_type, text=dialog_type) create_dialog(dialog_type, text=dialog_type)
@ -52,9 +52,9 @@ def check_user_prompt_closed_with_exception(session, create_dialog, create_windo
@pytest.fixture @pytest.fixture
def check_user_prompt_not_closed_but_exception(session, create_dialog, create_window): def check_user_prompt_not_closed_but_exception(session, create_dialog):
def check_user_prompt_not_closed_but_exception(dialog_type): def check_user_prompt_not_closed_but_exception(dialog_type):
new_handle = create_window() new_handle = session.new_window()
session.window_handle = new_handle session.window_handle = new_handle
create_dialog(dialog_type, text=dialog_type) create_dialog(dialog_type, text=dialog_type)

View file

@ -1,8 +1,7 @@
import pytest from tests.support.asserts import assert_success
from tests.support.asserts import assert_error, assert_success
from tests.support.inline import inline from tests.support.inline import inline
def element_click(session, element): def element_click(session, element):
return session.transport.send( return session.transport.send(
"POST", "session/{session_id}/element/{element_id}/click".format( "POST", "session/{session_id}/element/{element_id}/click".format(
@ -93,12 +92,14 @@ def test_link_hash(session):
""", args=(element,)) is True """, args=(element,)) is True
def test_link_closes_window(session, create_window): def test_link_closes_window(session, url):
new_handle = create_window() new_handle = session.new_window()
session.window_handle = new_handle session.window_handle = new_handle
session.url = inline("""<a href="/webdriver/tests/element_click/support/close_window.html">asdf</a>""") session.url = inline("""<a href="javascript:window.close()">Close me</a>""")
element = session.find.css("a", all=False) element = session.find.css("a", all=False)
response = element_click(session, element) response = element_click(session, element)
assert_success(response) assert_success(response)
assert new_handle not in session.handles assert new_handle not in session.handles

View file

@ -1,9 +0,0 @@
<html>
<body onload="checkload()">
<script>
function checkload() {
window.close()
}
</script>
</body>
</html>

View file

@ -4,15 +4,15 @@ from webdriver.error import NoSuchWindowException
@pytest.fixture(name="session") @pytest.fixture(name="session")
def fixture_session(capabilities, session, create_window): def fixture_session(capabilities, session):
"""Prevent re-using existent history by running the test in a new window.""" """Prevent re-using existent history by running the test in a new window."""
original_handle = session.window_handle original_handle = session.window_handle
session.window_handle = create_window() session.window_handle = session.new_window()
yield session yield session
try: try:
session.close() session.window.close()
except NoSuchWindowException: except NoSuchWindowException:
pass pass

View file

@ -6,12 +6,11 @@ def get_window_handles(session):
"GET", "session/{session_id}/window/handles".format(**vars(session))) "GET", "session/{session_id}/window/handles".format(**vars(session)))
def test_no_browsing_context(session, create_window): def test_no_browsing_context(session):
window_handles = session.handles window_handles = session.handles
new_handle = create_window() session.window_handle = session.new_window()
session.window_handle = new_handle session.window.close()
session.close()
response = get_window_handles(session) response = get_window_handles(session)
assert_success(response, window_handles) assert_success(response, window_handles)
@ -26,9 +25,9 @@ def test_single_window(session):
assert value[0] == session.window_handle assert value[0] == session.window_handle
def test_multiple_windows(session, create_window): def test_multiple_windows(session):
original_handle = session.window_handle original_handle = session.window_handle
new_handle = create_window() new_handle = session.new_window()
response = get_window_handles(session) response = get_window_handles(session)
value = assert_success(response) value = assert_success(response)

View file

@ -100,10 +100,10 @@ def test_set_to_state(session, url, state, realmSetting):
{} {}
]) ])
@pytest.mark.capabilities({"acceptInsecureCerts": True}) @pytest.mark.capabilities({"acceptInsecureCerts": True})
def test_set_to_state_cross_realm(session, create_window, url, state, realmSetting): def test_set_to_state_cross_realm(session, url, state, realmSetting):
session.url = url("/common/blank.html", protocol="https") session.url = url("/common/blank.html", protocol="https")
original_window = session.window_handle original_window = session.window_handle
session.window_handle = create_window() session.window_handle = session.new_window()
session.url = url("/common/blank.html", protocol="https") session.url = url("/common/blank.html", protocol="https")
parameters = { "descriptor": { "name": "geolocation" }, "state": state } parameters = { "descriptor": { "name": "geolocation" }, "state": state }
parameters.update(realmSetting) parameters.update(realmSetting)

View file

@ -4,10 +4,10 @@ from webdriver.error import NoSuchAlertException, NoSuchWindowException
@pytest.fixture(name="session") @pytest.fixture(name="session")
def fixture_session(capabilities, session, create_window): def fixture_session(capabilities, session):
"""Prevent dialog rate limits by running the test in a new window.""" """Prevent dialog rate limits by running the test in a new window."""
original_handle = session.window_handle original_handle = session.window_handle
session.window_handle = create_window() session.window_handle = session.new_window()
yield session yield session
@ -17,7 +17,7 @@ def fixture_session(capabilities, session, create_window):
pass pass
try: try:
session.close() session.window.close()
except NoSuchWindowException: except NoSuchWindowException:
pass pass

View file

@ -87,18 +87,6 @@ def create_frame(session):
return create_frame return create_frame
@pytest.fixture
def create_window(session):
"""Open new window and return the window handle."""
def create_window():
windows_before = session.handles
name = session.execute_script("window.open()")
assert len(session.handles) == len(windows_before) + 1
new_windows = list(set(session.handles) - set(windows_before))
return new_windows.pop()
return create_window
@pytest.fixture @pytest.fixture
def http(configuration): def http(configuration):
return HTTPRequest(configuration["host"], configuration["port"]) return HTTPRequest(configuration["host"], configuration["port"])
@ -224,13 +212,13 @@ def create_dialog(session):
@pytest.fixture @pytest.fixture
def closed_window(session, create_window): def closed_window(session):
original_handle = session.window_handle original_handle = session.window_handle
new_handle = session.new_window()
new_handle = create_window()
session.window_handle = new_handle session.window_handle = new_handle
session.close() session.window.close()
assert new_handle not in session.handles, "Unable to close window {}".format(new_handle) assert new_handle not in session.handles, "Unable to close window {}".format(new_handle)
yield new_handle yield new_handle

View file

@ -70,7 +70,7 @@ def cleanup_session(session):
for window in _windows(session, exclude=[current_window]): for window in _windows(session, exclude=[current_window]):
session.window_handle = window session.window_handle = window
if len(session.handles) > 1: if len(session.handles) > 1:
session.close() session.window.close()
session.window_handle = current_window session.window_handle = current_window

View file

@ -11,10 +11,10 @@ def switch_to_window(session, handle):
{"handle": handle}) {"handle": handle})
def test_retain_tab_modal_status(session, create_window): def test_retain_tab_modal_status(session):
handle = session.window_handle handle = session.window_handle
new_handle = create_window() new_handle = session.new_window()
response = switch_to_window(session, new_handle) response = switch_to_window(session, new_handle)
assert_success(response) assert_success(response)

View file

@ -15,9 +15,7 @@ def test_null_parameter_value(session, http):
assert_error(Response.from_http(response), "invalid argument") assert_error(Response.from_http(response), "invalid argument")
def test_null_response_value(session, create_window): def test_null_response_value(session):
new_handle = create_window() response = switch_to_window(session, session.new_window())
response = switch_to_window(session, new_handle)
value = assert_success(response) value = assert_success(response)
assert value is None assert value is None

View file

@ -707,6 +707,11 @@ for (const options of [{}, {negotiated: true, id: 0}]) {
await createDataChannelPair(t, options, pc1); await createDataChannelPair(t, options, pc1);
}, `addTrack, then creating ${mode}, should negotiate properly when max-bundle is used`); }, `addTrack, then creating ${mode}, should negotiate properly when max-bundle is used`);
/*
This test is disabled until https://github.com/w3c/webrtc-pc/issues/2562
has been resolved; it presupposes that stopping the first transceiver
breaks the transport.
promise_test(async t => { promise_test(async t => {
const pc1 = new RTCPeerConnection({bundlePolicy: "max-bundle"}); const pc1 = new RTCPeerConnection({bundlePolicy: "max-bundle"});
const pc2 = new RTCPeerConnection(); const pc2 = new RTCPeerConnection();
@ -726,6 +731,7 @@ for (const options of [{}, {negotiated: true, id: 0}]) {
await dc1Closed; await dc1Closed;
}, `Stopping the bundle-tag when there is a ${mode} in the bundle ` + }, `Stopping the bundle-tag when there is a ${mode} in the bundle ` +
`should kill the DataChannel`); `should kill the DataChannel`);
*/
} }
/* /*

View file

@ -137,8 +137,12 @@
await pc1.setLocalDescription(await pc1.createOffer()); await pc1.setLocalDescription(await pc1.createOffer());
await pc2.setRemoteDescription(pc1.localDescription); await pc2.setRemoteDescription(pc1.localDescription);
await pc2.setLocalDescription(await pc2.createAnswer()); await pc2.setLocalDescription(await pc2.createAnswer());
assert_equals(pc2.getTransceivers().length, 0,
'PC2 transceivers should be invisible after negotiation');
await iceGatheringStateTransitions(pc2, 'new'); await iceGatheringStateTransitions(pc2, 'new');
await pc1.setRemoteDescription(pc2.localDescription); await pc1.setRemoteDescription(pc2.localDescription);
assert_equals(pc1.getTransceivers().length, 0,
'PC1 transceivers should be invisible after negotiation');
await iceGatheringStateTransitions(pc1, 'new'); await iceGatheringStateTransitions(pc1, 'new');
}, 'renegotiation that closes all transports should result in ICE gathering state "new"'); }, 'renegotiation that closes all transports should result in ICE gathering state "new"');