Auto merge of #27464 - servo-wpt-sync:wpt_update_31-07-2020, r=servo-wpt-sync

Sync WPT with upstream (31-07-2020)

Automated downstream sync of changes from upstream as of 31-07-2020.
[no-wpt-sync]
r? @servo-wpt-sync
This commit is contained in:
bors-servo 2020-07-31 19:49:51 -04:00 committed by GitHub
commit 6aeadcec77
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
98 changed files with 711 additions and 264 deletions

View file

@ -4,7 +4,7 @@
expected: TIMEOUT
[Opening a blob URL in a new window immediately before revoking it works.]
expected: FAIL
expected: TIMEOUT
[Fetching a blob URL immediately before revoking it works in an iframe.]
expected: FAIL

View file

@ -1,4 +0,0 @@
[hit-test-floats-002.html]
[Hit test float]
expected: FAIL

View file

@ -1,4 +0,0 @@
[hit-test-floats-003.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

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

View file

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

View file

@ -1,4 +0,0 @@
[elementsFromPoint-invalid-cases.html]
[The root element is the last element returned for otherwise empty queries within the viewport]
expected: FAIL

View file

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

View file

@ -488,3 +488,9 @@
[CSSStyleDeclaration interface: sheet.cssRules[2\].cssRules[0\].style must inherit property "item(unsigned long)" with the proper type]
expected: FAIL
[CSS namespace: [[Prototype\]\] is Object.prototype]
expected: FAIL
[CSS namespace: typeof is "object"]
expected: FAIL

View file

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

View file

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

View file

@ -11,3 +11,6 @@
[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%2Cnosniff]
expected: FAIL

View file

@ -0,0 +1,4 @@
[traverse_the_history_3.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

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

View file

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

View file

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

View file

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

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

@ -8,3 +8,6 @@
[Check that rel=noopener with target=_parent does a normal load]
expected: FAIL
[Check that rel=noopener with target=_self does a normal load]
expected: FAIL

View file

@ -1,2 +0,0 @@
[script-onerror-insertion-point-2.html]
expected: TIMEOUT

View file

@ -1,4 +0,0 @@
[DOMContentLoaded-defer.html]
[The end: DOMContentLoaded and defer scripts]
expected: FAIL

View file

@ -0,0 +1,4 @@
[load-event-after-location-set-during-write.window.html]
[Setting location from document.write() call should not trigger load event until that load completes]
expected: FAIL

View file

@ -1,5 +1,5 @@
[ignore-opens-during-unload.window.html]
expected: TIMEOUT
expected: CRASH
[document.open should bail out when ignore-opens-during-unload is greater than 0 during visibilitychange event (open(parent) while unloading parent and child)]
expected: TIMEOUT

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

View file

@ -1,10 +1,9 @@
[promise-job-entry.html]
expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
[Rejection handler on pending-then-rejected promise]
expected: TIMEOUT
expected: FAIL
[Sanity check: this all works as expected with no promises involved]
expected: FAIL
@ -16,5 +15,5 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
expected: TIMEOUT
expected: FAIL

View file

@ -1,6 +1,7 @@
[promise-rejection-events.html]
expected: TIMEOUT
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
expected: FAIL
expected: TIMEOUT
[unhandledrejection: from createImageBitmap which is UA triggered]
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,2 @@
[Worker-constructor.html]
expected: ERROR

View file

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

View file

@ -156618,6 +156618,19 @@
{}
]
],
"multicol-overflow-clip-auto-sized.html": [
"70a4723637ffa83a85e27028de7b8b758a5f1d5b",
[
null,
[
[
"/css/css-multicol/multicol-overflow-clip-auto-sized-ref.html",
"=="
]
],
{}
]
],
"multicol-overflow-clip-positioned.html": [
"184bfc7f18dadbade32192b777c6b21f345882af",
[
@ -161269,6 +161282,32 @@
{}
]
],
"position-relative-006.html": [
"545edc990b9ff89ddcb5bbf09dc0b8c8d8238888",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"position-relative-007.html": [
"2425514f308afebd3ce32ae6e04c57077428c05e",
[
null,
[
[
"/css/reference/ref-filled-green-100px-square.xht",
"=="
]
],
{}
]
],
"position-relative-table-tbody-left-absolute-child.html": [
"98e759a8c0a83817b3d691503e807ed5ed549936",
[
@ -271026,6 +271065,14 @@
[]
]
},
"unsafe-eval": {
"support": {
"echo-eval-with-policy.py": [
"087d3549a94ccd3546bcde5316a2c80965705414",
[]
]
}
},
"unsafe-hashes": {
"support": {
"child_window_location_navigate.sub.html": [
@ -304649,6 +304696,10 @@
"29aa736cfdbba4437c9c7d33fe532309cff2eba8",
[]
],
"multicol-overflow-clip-auto-sized-ref.html": [
"8b68172a8f2450e763ec52c4d5b5e67036858c02",
[]
],
"multicol-overflow-clip-positioned-ref.html": [
"58f1d57bc39beed37d14eea0dc9c1cbc47c33717",
[]
@ -325607,7 +325658,7 @@
[]
],
"stash-put.py": [
"3af7d9199ace9fd0a4c4f840e14fbb70d7bc79f8",
"dbc7ceebb882ebb77a0202b3c9a828e2c70dc3bc",
[]
],
"stash-take.py": [
@ -342757,10 +342808,6 @@
"bfc4deb9f62c7d7d420f36878cd7a227881806cc",
[]
],
"prerender_target.html": [
"73108e8ab9f20f68da3eda3214a2e00d3ca1c2db",
[]
],
"unload-bubbles.html": [
"44f0c0cef319f279435bb38f670ed96d00ebcd17",
[]
@ -345532,7 +345579,7 @@
[]
],
"webxr-test.js": [
"3ecb18e5556710cd7f9d4bc6a92a41949de725c1",
"51b2b132276465645031de151f7f569b4dd6d63f",
[]
],
"webxr-test.js.headers": [
@ -345541,7 +345588,7 @@
]
},
"idlharness.js": [
"9a23e3a1da203309150e80ac820aa3df294ae3c3",
"994a0d82ef444bf4566dc27a81487e70d9e284ea",
[]
],
"idlharness.js.headers": [
@ -345678,11 +345725,11 @@
},
"IdlNamespace": {
"test_attribute.html": [
"8c1f517216544e78229392cc6f33eb06c77960b3",
"ca5edf4723d5b5c2055c2f024d951e98124c8cd9",
[]
],
"test_operation.html": [
"1b995529d239ca09e2896d653226243b581acb2e",
"60d7d47c9eea64a81d539afa6fd3acd72581c00b",
[]
],
"test_partial_namespace.html": [
@ -350382,7 +350429,7 @@
[]
],
"test_valid.py": [
"204465a8297b4c564f2f30500c6c7af51e56a5ec",
"88ffdb2951133474884c89c2dfa0a2e029c9ca19",
[]
]
}
@ -350484,7 +350531,7 @@
[]
],
"lint.py": [
"85c8bf341795fd8fd58e094fef8733f807b52729",
"8a1149c7f054c897163c9310f335ec2183259afc",
[]
],
"rules.py": [
@ -356868,63 +356915,63 @@
]
},
"requirements.txt": [
"d10396d0d2b261cabfbdd1051a9b50ecb62a62e8",
"1eba114a31c21f3e48aafae5e9466cefbe741288",
[]
],
"requirements_android_webview.txt": [
"470aaf9a93996d0231e13e05cc35557a36d25de9",
"e7e7161b14264a29cc5d9cf4a275abeb7fcbace6",
[]
],
"requirements_chrome.txt": [
"470aaf9a93996d0231e13e05cc35557a36d25de9",
"e7e7161b14264a29cc5d9cf4a275abeb7fcbace6",
[]
],
"requirements_chrome_android.txt": [
"470aaf9a93996d0231e13e05cc35557a36d25de9",
"e7e7161b14264a29cc5d9cf4a275abeb7fcbace6",
[]
],
"requirements_chrome_ios.txt": [
"470aaf9a93996d0231e13e05cc35557a36d25de9",
"e7e7161b14264a29cc5d9cf4a275abeb7fcbace6",
[]
],
"requirements_edge.txt": [
"1bf6ef32ad473a716cc969d06f147e5e827ade35",
"0a61208d77c1279ac2b1b301702867f2d5d0fc67",
[]
],
"requirements_edge_chromium.txt": [
"70c12443243e6655d9772cde3fdaa20ab6023bf7",
"3f1ee1f6b20ac5a30d160d9c321358d93c681cef",
[]
],
"requirements_epiphany.txt": [
"470aaf9a93996d0231e13e05cc35557a36d25de9",
"e7e7161b14264a29cc5d9cf4a275abeb7fcbace6",
[]
],
"requirements_firefox.txt": [
"a053971000bb0ef8d4b57631f1127e2240740729",
"8b45703a5596ed0d1f4ae577af31b8afd2f0bc8f",
[]
],
"requirements_ie.txt": [
"1bf6ef32ad473a716cc969d06f147e5e827ade35",
"0a61208d77c1279ac2b1b301702867f2d5d0fc67",
[]
],
"requirements_opera.txt": [
"1bf6ef32ad473a716cc969d06f147e5e827ade35",
"0a61208d77c1279ac2b1b301702867f2d5d0fc67",
[]
],
"requirements_safari.txt": [
"470aaf9a93996d0231e13e05cc35557a36d25de9",
"e7e7161b14264a29cc5d9cf4a275abeb7fcbace6",
[]
],
"requirements_sauce.txt": [
"5f70629d81b73302bf0b6ab48a172f761199807d",
"34c66ee238b67f9be30cf2330df8d943f374e247",
[]
],
"requirements_servo.txt": [
"470aaf9a93996d0231e13e05cc35557a36d25de9",
"e7e7161b14264a29cc5d9cf4a275abeb7fcbace6",
[]
],
"requirements_webkit.txt": [
"470aaf9a93996d0231e13e05cc35557a36d25de9",
"e7e7161b14264a29cc5d9cf4a275abeb7fcbace6",
[]
],
"setup.py": [
@ -357104,7 +357151,7 @@
[]
],
"edge.py": [
"18a1ed781189cca23df2a4e1b5b5dca830bd0ea4",
"bdb37b3f84c2cdc4010a7a289a53564822a3a34c",
[]
],
"edge_webdriver.py": [
@ -357220,7 +357267,7 @@
[]
],
"executorselenium.py": [
"ec7b8fcf189c9486e202b66007476e5dbd621f5c",
"1fa9953b36e14c3373a4ce1257ee7e19482ce1d4",
[]
],
"executorservo.py": [
@ -376481,7 +376528,7 @@
]
],
"setSinkId.https.html": [
"80e2832e970c0696e132e14d7fd1d8ae2d456d03",
"b1f703a9350bf557f0d38911a09c09a9d02eaa3a",
[
null,
{}
@ -385878,6 +385925,13 @@
{}
]
],
"eval-in-iframe.html": [
"aa29702c0117741e5911fb408c79d4cfb72db00c",
[
null,
{}
]
],
"eval-scripts-setInterval-allowed.sub.html": [
"ee888eaa4957d9e0df7443cc59ff7039489f2853",
[
@ -418385,14 +418439,14 @@
]
],
"white-spaces-after-execCommand-delete.tentative.html": [
"3592b2dc0cc15973a3d9eb8a2ce25f0cc668f2c9",
"6aafdddcef01b9fb77a3bfd7f9343170a653913b",
[
null,
{}
]
],
"white-spaces-after-execCommand-forwarddelete.tentative.html": [
"4a94c6bcddf37f4cf81324c5373e0c1038baaefb",
"af5c052c563ae19300ef268de5097ee438daa152",
[
null,
{}
@ -476037,6 +476091,13 @@
{}
]
],
"intersection-ratio-ib-split.html": [
"905ea436fd6a85fff228f5676742b89ab001a3b7",
[
null,
{}
]
],
"isIntersecting-change-events.html": [
"99bc65bd60afee82f2ddd6b5380437d94811e30d",
[
@ -479610,7 +479671,7 @@
]
],
"MediaDevices-getUserMedia.https.html": [
"f410b262cf5b419d8e056a805a46c518ea45c493",
"693f3bd11cfaa6be7ca21bae110467c265be5a07",
[
null,
{}
@ -479766,7 +479827,7 @@
]
],
"idlharness.https.window.js": [
"ee5fb483c120ca273e61cefb7bc7d8be906c3355",
"b10e8dbb046d656e4b06c3572fb4ee069c9e0897",
[
"mediacapture-streams/idlharness.https.window.html",
{
@ -484914,13 +484975,6 @@
{}
]
],
"prerender_call.html": [
"ed9e54a1dd8ea734ce5410fffc3f66add70c64c6",
[
null,
{}
]
],
"test_attributes_exist.html": [
"748161fdf8fb68319158b717871877c1db745e34",
[
@ -524361,6 +524415,15 @@
{}
]
],
"RTCPeerConnection-SLD-SRD-timing.https.html": [
"36bde06c9634269b17cd565b20bc80b411d1d925",
[
null,
{
"timeout": "long"
}
]
],
"RTCPeerConnection-add-track-no-deadlock.https.html": [
"81e3b736432d2c80d617ca2c05ef072e901d0283",
[

View file

@ -1,4 +0,0 @@
[hit-test-floats-002.html]
[Hit test float]
expected: FAIL

View file

@ -1,4 +0,0 @@
[hit-test-floats-003.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]
expected: FAIL
[[data-expected-height\] 1]
expected: FAIL
[[data-expected-height\] 2]
[[data-expected-height\] 4]
expected: FAIL

View file

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

View file

@ -1,4 +0,0 @@
[elementsFromPoint-invalid-cases.html]
[The root element is the last element returned for otherwise empty queries within the viewport]
expected: FAIL

View file

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

View file

@ -533,3 +533,9 @@
[CSSStyleDeclaration interface: calling setProperty(CSSOMString, CSSOMString, optional CSSOMString) on svg_element.style with too few arguments must throw TypeError]
expected: FAIL
[CSS namespace: [[Prototype\]\] is Object.prototype]
expected: FAIL
[CSS namespace: typeof is "object"]
expected: FAIL

View file

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

View file

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

View file

@ -11,3 +11,6 @@
[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%2Cnosniff]
expected: FAIL

View file

@ -0,0 +1,4 @@
[traverse_the_history_3.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

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

View file

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

View file

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

View file

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

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

@ -12,3 +12,6 @@
[Check that rel=noopener with target=_parent does a normal load]
expected: FAIL
[Check that rel=noopener with target=_self does a normal load]
expected: FAIL

View file

@ -1,2 +0,0 @@
[script-onerror-insertion-point-2.html]
expected: TIMEOUT

View file

@ -1,4 +0,0 @@
[DOMContentLoaded-defer.html]
[The end: DOMContentLoaded and defer scripts]
expected: FAIL

View file

@ -0,0 +1,4 @@
[load-event-after-location-set-during-write.window.html]
[Setting location from document.write() call should not trigger load event until that load completes]
expected: FAIL

View file

@ -1,5 +1,5 @@
[ignore-opens-during-unload.window.html]
expected: TIMEOUT
expected: CRASH
[ignore-opens-during-unload]
expected: FAIL

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

View file

@ -1,10 +1,9 @@
[promise-job-entry.html]
expected: TIMEOUT
[Fulfillment handler on fulfilled promise]
expected: FAIL
[Rejection handler on pending-then-rejected promise]
expected: TIMEOUT
expected: FAIL
[Sanity check: this all works as expected with no promises involved]
expected: FAIL
@ -16,5 +15,5 @@
expected: FAIL
[Fulfillment handler on pending-then-fulfilled promise]
expected: TIMEOUT
expected: FAIL

View file

@ -1,6 +1,7 @@
[promise-rejection-events.html]
expected: TIMEOUT
[delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire]
expected: FAIL
expected: TIMEOUT
[unhandledrejection: from createImageBitmap which is UA triggered]
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,2 @@
[Worker-constructor.html]
expected: ERROR

View file

@ -17,8 +17,6 @@ promise_test(t => promise_rejects_dom(t, "NotFoundError", audio.setSinkId("nonex
"setSinkId fails with NotFoundError on made up deviceid");
promise_test(async t => {
const stream = await navigator.mediaDevices.getUserMedia({audio:true});
stream.getAudioTracks()[0].stop();
const list = await navigator.mediaDevices.enumerateDevices();
const outputDevicesList = list.filter(({kind}) => kind == "audiooutput");
assert_not_equals(outputDevicesList.length, 0,

View file

@ -0,0 +1,40 @@
<!DOCTYPE html>
<html>
<head>
<title>eval-in-iframe</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<p>This test checks that iframes correctly block the eval function.</p>
<script>
var tests = [
{ "name": "script-src blocks eval unless 'unsafe-eval' is specified.",
"csp": "script-src 'unsafe-inline'" },
{ "name": "default-src blocks eval unless 'unsafe-eval' is specified.",
"csp": "default-src 'unsafe-inline'" },
];
tests.forEach(test => {
async_test(t => {
var child = document.createElement('iframe');
child.src = '/content-security-policy/unsafe-eval/support/echo-eval-with-policy.py?policy=' + encodeURIComponent(test.csp);
window.addEventListener('message', t.step_func(e => {
if (e.source != child.contentWindow)
return;
if (e.data === "eval blocked") {
t.done();
}
else if (e.data === "eval allowed") {
assert_unreached("Eval code was executed in iframe");
}
}));
document.body.appendChild(child);
}, test.name);
});
</script>
</body>
</html>

View file

@ -0,0 +1,14 @@
def main(request, response):
policy = request.GET.first(b"policy")
return [(b"Content-Type", b"text/html"), (b"Content-Security-Policy", policy)], b"""
<!DOCTYPE html>
<html>
<script>
var id = 0;
try {
id = eval("id + 1");
} catch (e) {}
window.parent.postMessage(id === 1 ? "eval allowed" : "eval blocked");
</script>
</html>
"""

View file

@ -0,0 +1,5 @@
<!DOCTYPE html>
<div style="columns: 2">
<div>Column1</div>
<div style="padding: 2px">Column2<br>Column2 line2</div>
</div>

View file

@ -0,0 +1,9 @@
<!DOCTYPE html>
<title>CSS Multi-column Layout Test: multicol with overflow-clipped content</title>
<link rel="help" href="https://www.w3.org/TR/css-multicol-1/">
<link rel="match" href="multicol-overflow-clip-auto-sized-ref.html">
<meta name="assert" content="Overflow clip sized to content should not clip even under multicol.">
<div style="columns: 2">
<div>Column1</div>
<div style="overflow: hidden; padding: 2px">Column2<br>Column2 line2</div>
</div>

View file

@ -0,0 +1,8 @@
<!DOCTYPE html>
<meta name="assert" content="This ensures that a relative-positioned element inset doesn't resolve against an indefinite size.">
<link rel="help" href="https://drafts.csswg.org/css-position-3/#relpos-insets">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="width: 100px; min-height: 100px; background: red;">
<div style="width: 100px; height: 100px; background: green; top: -10000%; position: relative;"></div>
</div>

View file

@ -0,0 +1,8 @@
<!DOCTYPE html>
<meta name="assert" content="This ensures that a relative-positioned element inset doesn't resolve against an indefinite size.">
<link rel="help" href="https://drafts.csswg.org/css-position-3/#relpos-insets">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div style="width: 100px; min-height: 100px; background: red;">
<div style="width: 100px; height: 100px; background: green; top: calc(10px + 10%); position: relative;"></div>
</div>

View file

@ -184,6 +184,7 @@ function runTests() {
{ initialText: "a&nbsp;&nbsp;&nbsp;b[]|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c", expectedText: ["a&nbsp;&nbsp;&nbsp;[]", "&nbsp; &nbsp; &nbsp;c"] },
{ initialText: "a&nbsp;&nbsp;&nbsp;b|[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c", expectedText: ["a&nbsp;&nbsp;&nbsp;[]", "&nbsp; &nbsp; &nbsp;c"] },
{ initialText: "a&nbsp;&nbsp;&nbsp;|b[]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c", expectedText: ["a&nbsp;&nbsp;&nbsp;[]", "&nbsp; &nbsp; &nbsp;c"] },
{ initialText: "a&nbsp;&nbsp;&nbsp;[]|b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c", expectedText: ["a&nbsp;&nbsp;[]", "b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c"] },
{ initialText: "a&nbsp;&nbsp;&nbsp;|&nbsp;b[]&nbsp;&nbsp;&nbsp;&nbsp;c", expectedText: ["a&nbsp;&nbsp;&nbsp;", "&nbsp;[] &nbsp; &nbsp;c"] },
{ initialText: "a&nbsp;&nbsp;&nbsp;|&nbsp;|[]&nbsp;&nbsp;&nbsp;&nbsp;c", expectedText: ["a&nbsp;&nbsp;&nbsp;[]", "&nbsp; &nbsp; c"] },

View file

@ -182,6 +182,7 @@ function runTests() {
{ initialText: "a&nbsp;&nbsp;&nbsp;[]b|&nbsp;&nbsp;&nbsp;&nbsp;c", expectedText: ["a&nbsp;&nbsp;&nbsp;[]", "&nbsp; &nbsp; c"] },
{ initialText: "a&nbsp;&nbsp;&nbsp;[]|b&nbsp;&nbsp;&nbsp;&nbsp;c", expectedText: ["a&nbsp;&nbsp;&nbsp;[]", "&nbsp; &nbsp; c"] },
{ initialText: "a&nbsp;&nbsp;&nbsp;|[]b&nbsp;&nbsp;&nbsp;&nbsp;c", expectedText: ["a&nbsp;&nbsp;&nbsp;[]", "&nbsp; &nbsp; c"] },
{ initialText: "a&nbsp;&nbsp;[]&nbsp;|b&nbsp;&nbsp;&nbsp;&nbsp;c", expectedText: ["a&nbsp;&nbsp;[]", "b&nbsp;&nbsp;&nbsp;&nbsp;c"] },
{ initialText: "a&nbsp;&nbsp;&nbsp;|&nbsp;[]b&nbsp;&nbsp;&nbsp;c", expectedText: ["a&nbsp;&nbsp;&nbsp;", "&nbsp;[] &nbsp; c"] },
{ initialText: "a&nbsp;&nbsp;&nbsp;|&nbsp;|[]&nbsp;&nbsp;&nbsp;&nbsp;c", expectedText: ["a&nbsp;&nbsp;&nbsp;", "&nbsp;[]", "&nbsp; &nbsp;c"] },

View file

@ -1,3 +1,5 @@
from wptserve.utils import isomorphic_decode
def main(request, response):
if request.method == u'OPTIONS':
# CORS preflight
@ -9,6 +11,7 @@ def main(request, response):
url_dir = u'/'.join(request.url_parts.path.split(u'/')[:-1]) + u'/'
key = request.GET.first(b"key")
value = request.GET.first(b"value")
request.server.stash.put(key, value, url_dir)
# value here must be a text string. It will be json.dump()'ed in stash-take.py.
request.server.stash.put(key, isomorphic_decode(value), url_dir)
response.headers.set(b'Access-Control-Allow-Origin', b'*')
return "done"

View file

@ -0,0 +1,31 @@
<!DOCTYPE html>
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
<link rel="author" href="https://mozilla.org" title="Mozilla">
<link rel="help" href="https://w3c.github.io/IntersectionObserver/#dom-intersectionobserverentry-intersectionratio">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1581876">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
block {
display: block;
width: 50vw;
height: 50vh;
background: green;
}
</style>
<inline>
<block></block>
</inline>
<script>
promise_test(async function() {
for (let element of document.querySelectorAll("inline, block")) {
let entries = await new Promise(resolve => {
new IntersectionObserver(resolve).observe(element);
});
assert_equals(entries.length, 1, element.nodeName + ": Should get an entry");
assert_true(entries[0].isIntersecting, element.nodeName + ": Should be intersecting");
assert_equals(entries[0].intersectionRatio, 1, element.nodeName + ": Should be fully intersecting");
}
}, "IntersectionObserver on an IB split gets the right intersection ratio");
</script>

View file

@ -40,8 +40,6 @@ test(function () {
promise_test(async t => {
assert_true(navigator.mediaDevices.getSupportedConstraints()["groupId"],
"groupId should be supported");
const stream = await navigator.mediaDevices.getUserMedia({video:true});
stream.getVideoTracks()[0].stop();
const devices = await navigator.mediaDevices.enumerateDevices();
for (const device of devices) {
await navigator.mediaDevices.getUserMedia(
@ -65,8 +63,6 @@ promise_test(async t => {
promise_test(async t => {
assert_true(navigator.mediaDevices.getSupportedConstraints()["groupId"],
"groupId should be supported");
const stream = await navigator.mediaDevices.getUserMedia({audio:true});
stream.getAudioTracks()[0].stop();
const devices = await navigator.mediaDevices.enumerateDevices();
for (const device of devices) {
await navigator.mediaDevices.getUserMedia(

View file

@ -13,8 +13,6 @@ idl_test(
const inputDevices = [];
const outputDevices = [];
try {
const stream = await navigator.mediaDevices.getUserMedia({audio:true, video:true});
stream.getTracks().forEach(track => track.stop());
const list = await navigator.mediaDevices.enumerateDevices();
for (const device of list) {
if (device.kind in self) {

View file

@ -1,22 +0,0 @@
<!doctype html>
<head>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<title>Prerender test for Page Visibility API</title>
<link rel="prerender" href="resources/prerender_target.html">
<script>
var t = async_test('VisibilityState of the target page was set to "prerender" when it has been prerendered');
window.onload = t.step_func(function() {
t.step_timeout(function() {
assert_equals(localStorage.getItem("visibilityState:prerender"), "hit", "visibilityState of the target page was set to 'prerender'");
t.done();
localStorage.clear();
}, 1000);
});
</script>
</head>
<body>
<h1>Description</h1>
<p>This document validate that visibilityState of a target page was set to "prerender" when it has been prerendered.</p>
</body>
</html>

View file

@ -1,13 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Document has been prerendered</title>
</head>
<body>
<script type="text/javascript">
if(document.visibilityState) {
window.localStorage.setItem("visibilityState:" + document.visibilityState, "hit");
}
</script>
</body>
</html>

View file

@ -279,6 +279,23 @@ class FakeXRAnchorController {
}
}
// Internal only for now, needs to be moved into WebXR Test API.
class FakeXRHitTestSourceController {
constructor(id) {
this.id_ = id;
this.deleted_ = false;
}
get deleted() {
return this.deleted_;
}
// Internal setter:
set deleted(value) {
this.deleted_ = value;
}
}
// Implements XRFrameDataProvider and XRPresentationProvider. Maintains a mock
// for XRPresentationProvider. Implements FakeXRDevice test API.
class MockRuntime {
@ -535,6 +552,10 @@ class MockRuntime {
this.anchor_creation_callback_ = callback;
}
setHitTestSourceCreationCallback(callback) {
this.hit_test_source_creation_callback_ = callback;
}
// Helper methods
getNonImmersiveDisplayInfo() {
const displayInfo = this.getImmersiveDisplayInfo();
@ -772,14 +793,29 @@ class MockRuntime {
});
}
// Store the subscription information as-is:
// Reserve the id for hit test source:
const id = this.next_hit_test_id_++;
this.hitTestSubscriptions_.set(id, { nativeOriginInformation, entityTypes, ray });
const hitTestParameters = { isTransient: false, profileName: null };
const controller = new FakeXRHitTestSourceController(id);
return this._shouldHitTestSourceCreationSucceed(hitTestParameters, controller)
.then((succeeded) => {
if(succeeded) {
// Store the subscription information as-is (including controller):
this.hitTestSubscriptions_.set(id, { nativeOriginInformation, entityTypes, ray, controller });
return Promise.resolve({
result : device.mojom.SubscribeToHitTestResult.SUCCESS,
subscriptionId : id
});
} else {
return Promise.resolve({
result : device.mojom.SubscribeToHitTestResult.FAILURE_GENERIC,
subscriptionId : 0
});
}
});
}
subscribeToHitTestForTransientInput(profileName, entityTypes, ray){
@ -791,14 +827,45 @@ class MockRuntime {
});
}
// Store the subscription information as-is:
const id = this.next_hit_test_id_++;
this.transientHitTestSubscriptions_.set(id, { profileName, entityTypes, ray });
const hitTestParameters = { isTransient: true, profileName: profileName };
const controller = new FakeXRHitTestSourceController(id);
// Check if we have hit test source creation callback.
// If yes, ask it if the hit test source creation should succeed.
// If no, for back-compat, assume the hit test source creation succeeded.
return this._shouldHitTestSourceCreationSucceed(hitTestParameters, controller)
.then((succeeded) => {
if(succeeded) {
// Store the subscription information as-is (including controller):
this.transientHitTestSubscriptions_.set(id, { profileName, entityTypes, ray, controller });
return Promise.resolve({
result : device.mojom.SubscribeToHitTestResult.SUCCESS,
subscriptionId : id
});
} else {
return Promise.resolve({
result : device.mojom.SubscribeToHitTestResult.FAILURE_GENERIC,
subscriptionId : 0
});
}
});
}
unsubscribeFromHitTest(subscriptionId) {
let controller = null;
if(this.transientHitTestSubscriptions_.has(subscriptionId)){
controller = this.transientHitTestSubscriptions_.get(subscriptionId).controller;
this.transientHitTestSubscriptions_.delete(subscriptionId);
} else if(this.hitTestSubscriptions_.has(subscriptionId)){
controller = this.hitTestSubscriptions_.get(subscriptionId).controller;
this.hitTestSubscriptions_.delete(subscriptionId);
}
if(controller) {
controller.deleted = true;
}
}
createAnchor(nativeOriginInformation, nativeOriginFromAnchor) {
@ -997,6 +1064,17 @@ class MockRuntime {
// Private functions - hit test implementation:
// Returns a Promise<bool> that signifies whether hit test source creation should succeed.
// If we have a hit test source creation callback installed, invoke it and return its result.
// If it's not installed, for back-compat just return a promise that resolves to true.
_shouldHitTestSourceCreationSucceed(hitTestParameters, controller) {
if(this.hit_test_source_creation_callback_) {
return this.hit_test_source_creation_callback_(hitTestParameters, controller);
} else {
return Promise.resolve(true);
}
}
// Modifies passed in frameData to add hit test results.
_calculateHitTestResults(frameData) {
if (!this.supportedModes_.includes(device.mojom.XRSessionMode.kImmersiveAr)) {

View file

@ -3437,16 +3437,60 @@ IdlNamespace.prototype.test_member_attribute = function (member)
}.bind(this));
};
IdlNamespace.prototype.test = function ()
IdlNamespace.prototype.test_self = function ()
{
/**
* TODO(lukebjerring): Assert:
* - "Note that unlike interfaces or dictionaries, namespaces do not create types."
* - "Of the extended attributes defined in this specification, only the
* [Exposed] and [SecureContext] extended attributes are applicable to namespaces."
* - "Namespaces must be annotated with the [Exposed] extended attribute."
*/
subsetTestByKey(this.name, test, () => {
assert_true(this.extAttrs.every(o => o.name === "Exposed" || o.name === "SecureContext"),
"Only the [Exposed] and [SecureContext] extended attributes are applicable to namespaces");
assert_true(this.has_extended_attribute("Exposed"),
"Namespaces must be annotated with the [Exposed] extended attribute");
}, `${this.name} namespace: extended attributes`);
const namespaceObject = self[this.name];
subsetTestByKey(this.name, test, () => {
const desc = Object.getOwnPropertyDescriptor(self, this.name);
assert_equals(desc.value, namespaceObject, `wrong value for ${this.name} namespace object`);
assert_true(desc.writable, "namespace object should be writable");
assert_false(desc.enumerable, "namespace object should not be enumerable");
assert_true(desc.configurable, "namespace object should be configurable");
assert_false("get" in desc, "namespace object should not have a getter");
assert_false("set" in desc, "namespace object should not have a setter");
}, `${this.name} namespace: property descriptor`);
subsetTestByKey(this.name, test, () => {
assert_true(Object.isExtensible(namespaceObject));
}, `${this.name} namespace: [[Extensible]] is true`);
subsetTestByKey(this.name, test, () => {
assert_true(namespaceObject instanceof Object);
if (this.name === "console") {
// https://console.spec.whatwg.org/#console-namespace
const namespacePrototype = Object.getPrototypeOf(namespaceObject);
assert_equals(Reflect.ownKeys(namespacePrototype).length, 0);
assert_equals(Object.getPrototypeOf(namespacePrototype), Object.prototype);
} else {
assert_equals(Object.getPrototypeOf(namespaceObject), Object.prototype);
}
}, `${this.name} namespace: [[Prototype]] is Object.prototype`);
subsetTestByKey(this.name, test, () => {
assert_equals(typeof namespaceObject, "object");
}, `${this.name} namespace: typeof is "object"`);
};
IdlNamespace.prototype.test = function ()
{
if (!this.untested) {
this.test_self();
}
for (const v of Object.values(this.members)) {
switch (v.type) {

View file

@ -16,13 +16,19 @@
<script>
"use strict";
self.foo = {
truth: true
};
Object.defineProperty(self, "foo", {
value: {
truth: true,
},
writable: true,
enumerable: false,
configurable: true,
});
var idlArray = new IdlArray();
idlArray.add_idls(
`namespace foo {
idlArray.add_idls(`
[Exposed=Window]
namespace foo {
readonly attribute bool truth;
readonly attribute bool lies;
};`);
@ -35,6 +41,36 @@ idlArray.test();
"message": null
},
"summarized_tests": [
{
"name": "foo namespace: extended attributes",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "foo namespace: property descriptor",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "foo namespace: [[Extensible]] is true",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "foo namespace: [[Prototype]] is Object.prototype",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "foo namespace: typeof is \"object\"",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "foo namespace: attribute truth",
"status_string": "PASS",

View file

@ -16,38 +16,57 @@
<script>
"use strict";
self.foo = {
Truth: function() {},
};
Object.defineProperty(self.foo, "Truth", { writable: true });
self.bar = {
Truth: function() {},
}
Object.defineProperty(self.bar, "Truth", {
writable: false,
configurable: false,
Object.defineProperty(self, "foo", {
value: Object.defineProperty({}, "Truth", {
value: function() {},
writable: true,
enumerable: true,
configurable: true,
}),
writable: true,
enumerable: false,
configurable: true,
});
self.baz = {
Object.defineProperty(self, "bar", {
value: Object.defineProperty({}, "Truth", {
value: function() {},
writable: false,
enumerable: true,
configurable: false,
}),
writable: true,
enumerable: false,
configurable: true,
});
Object.defineProperty(self, "baz", {
value: {
LongStory: function(hero, ...details) {
return `${hero} went and ${details.join(', then')}`
},
ShortStory: function(...details) {
return `${details.join('. ')}`;
},
};
},
writable: true,
enumerable: false,
configurable: true,
});
var idlArray = new IdlArray();
idlArray.add_idls(
`namespace foo {
idlArray.add_idls(`
[Exposed=Window]
namespace foo {
void Truth();
void Lies();
};
[Exposed=Window]
namespace bar {
[LegacyUnforgeable]
void Truth();
};
[Exposed=Window]
namespace baz {
DOMString LongStory(any hero, DOMString... details);
DOMString ShortStory(DOMString... details);
@ -62,19 +81,31 @@ idlArray.test();
},
"summarized_tests": [
{
"name": "bar namespace: operation Truth()",
"name": "foo namespace: extended attributes",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "baz namespace: operation LongStory(any, DOMString...)",
"name": "foo namespace: property descriptor",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "baz namespace: operation ShortStory(DOMString...)",
"name": "foo namespace: [[Extensible]] is true",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "foo namespace: [[Prototype]] is Object.prototype",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "foo namespace: typeof is \"object\"",
"status_string": "PASS",
"properties": {},
"message": null
@ -90,6 +121,86 @@ idlArray.test();
"status_string": "FAIL",
"properties": {},
"message": "assert_own_property: namespace object missing operation \"Lies\" expected property \"Lies\" missing"
},
{
"name": "bar namespace: extended attributes",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "bar namespace: property descriptor",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "bar namespace: [[Extensible]] is true",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "bar namespace: [[Prototype]] is Object.prototype",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "bar namespace: typeof is \"object\"",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "bar namespace: operation Truth()",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "baz namespace: extended attributes",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "baz namespace: property descriptor",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "baz namespace: [[Extensible]] is true",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "baz namespace: [[Prototype]] is Object.prototype",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "baz namespace: typeof is \"object\"",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "baz namespace: operation LongStory(any, DOMString...)",
"status_string": "PASS",
"properties": {},
"message": null
},
{
"name": "baz namespace: operation ShortStory(DOMString...)",
"status_string": "PASS",
"properties": {},
"message": null
}
],
"type": "complete"

View file

@ -1,6 +1,5 @@
import json
import os
import sys
from io import open
import jsone
@ -9,7 +8,6 @@ import pytest
import requests
import yaml
from jsonschema import validate
from six import PY3
from tools.ci.tc import decision
@ -21,8 +19,6 @@ def data_path(filename):
return os.path.join(here, "..", "testdata", filename)
@pytest.mark.xfail(sys.platform == "win32" and PY3,
reason="https://github.com/web-platform-tests/wpt/issues/24561")
def test_verify_taskcluster_yml():
"""Verify that the json-e in the .taskcluster.yml is valid"""
with open(os.path.join(root, ".taskcluster.yml"), encoding="utf8") as f:

View file

@ -898,7 +898,9 @@ def create_parser():
help="The WPT directory. Use this "
"option if the lint script exists outside the repository")
parser.add_argument("--ignore-glob", type=ensure_text, action="append",
help="Additional file glob to ignore (repeat to add more)")
help="Additional file glob to ignore (repeat to add more). "
"Globs are matched against paths relative to REPO_ROOT "
"using fnmatch, except that path separators are normalized.")
parser.add_argument("--all", action="store_true", help="If no paths are passed, try to lint the whole "
"working directory, not just files that changed")
return parser

View file

@ -1,6 +1,6 @@
html5lib==1.1
mozinfo==1.2.1 # https://bugzilla.mozilla.org/show_bug.cgi?id=1621226
mozlog==6.0
mozlog==6.1
mozdebug==0.2
# Pillow 7 requires Python 3
pillow==6.2.2 # pyup: <7.0

View file

@ -1 +1 @@
mozprocess==1.0.0
mozprocess==1.2.0

View file

@ -1 +1 @@
mozprocess==1.0.0
mozprocess==1.2.0

View file

@ -1 +1 @@
mozprocess==1.0.0
mozprocess==1.2.0

View file

@ -1 +1 @@
mozprocess==1.0.0
mozprocess==1.2.0

View file

@ -1,2 +1,2 @@
mozprocess==1.0.0
mozprocess==1.2.0
selenium==3.141.0

View file

@ -1 +1 @@
mozprocess==1.0.0
mozprocess==1.2.0

View file

@ -1 +1 @@
mozprocess==1.0.0
mozprocess==1.2.0

View file

@ -3,7 +3,7 @@ mozcrash==2.0.0
mozinstall==2.0.0
mozleak==0.2
moznetwork==1.1.0
mozprocess==1.0.0
mozprocess==1.2.0
mozprofile==2.5.0
mozrunner==8.0.0
mozversion==2.3.0

View file

@ -1,2 +1,2 @@
mozprocess==1.0.0
mozprocess==1.2.0
selenium==3.141.0

View file

@ -1,2 +1,2 @@
mozprocess==1.0.0
mozprocess==1.2.0
selenium==3.141.0

View file

@ -1 +1 @@
mozprocess==1.0.0
mozprocess==1.2.0

View file

@ -1,3 +1,3 @@
mozprocess==1.0.0
mozprocess==1.2.0
selenium==3.141.0
requests==2.24.0

View file

@ -1 +1 @@
mozprocess==1.0.0
mozprocess==1.2.0

View file

@ -1 +1 @@
mozprocess==1.0.0
mozprocess==1.2.0

View file

@ -89,15 +89,15 @@ class EdgeBrowser(Browser):
edge_proc_name = 'MicrosoftEdge.exe'
for i in range(0,5):
procs = subprocess.check_output(['tasklist', '/fi', 'ImageName eq ' + edge_proc_name])
if 'MicrosoftWebDriver.exe' not in procs:
if b'MicrosoftWebDriver.exe' not in procs:
# Edge driver process already exited, don't wait for browser process to exit
break
elif edge_proc_name in procs:
elif edge_proc_name.encode() in procs:
time.sleep(0.5)
else:
break
if edge_proc_name in procs:
if edge_proc_name.encode() in procs:
# close Edge process if it is still running
subprocess.call(['taskkill.exe', '/f', '/im', 'microsoftedge*'])

View file

@ -155,7 +155,7 @@ class SeleniumTestharnessProtocolPart(TestharnessProtocolPart):
"""
while True:
try:
self.webdriver.execute_script(self.window_loaded_script, asynchronous=True)
self.webdriver.execute_async_script(self.window_loaded_script)
break
except exceptions.JavascriptException:
pass

View file

@ -0,0 +1,24 @@
<!doctype html>
<meta charset=utf-8>
<meta name="timeout" content="long">
<title></title>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
'use strict';
promise_test(async t => {
const pc = new RTCPeerConnection();
t.add_cleanup(() => pc.close());
const signalingStates = [];
pc.onsignalingstatechange = ev => signalingStates.push(pc.signalingState);
pc.addTransceiver('audio', {direction:'recvonly'});
const offer = await pc.createOffer();
const sldPromise = pc.setLocalDescription(offer);
const srdPromise = pc.setRemoteDescription(offer);
await Promise.all([sldPromise, srdPromise]);
assert_array_equals(signalingStates,
['have-local-offer','stable','have-remote-offer']);
}, 'setLocalDescription and setRemoteDescription are not racy');
</script>