mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
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:
commit
6aeadcec77
98 changed files with 711 additions and 264 deletions
|
@ -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
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-003.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[matchMedia-display-none-iframe.html]
|
||||
expected: ERROR
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_3.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[embedded-opener-remove-frame.html]
|
||||
expected: CRASH
|
||||
[opener of discarded nested browsing context]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -171,3 +171,6 @@
|
|||
[XHTML img usemap="#hash-id"]
|
||||
expected: FAIL
|
||||
|
||||
[HTML (standards) IMG usemap="no-hash-name"]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[script-onerror-insertion-point-2.html]
|
||||
expected: TIMEOUT
|
|
@ -1,4 +0,0 @@
|
|||
[DOMContentLoaded-defer.html]
|
||||
[The end: DOMContentLoaded and defer scripts]
|
||||
expected: FAIL
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[Worker-constructor.html]
|
||||
expected: ERROR
|
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
[
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-003.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[hit-test-floats-005.html]
|
||||
[Miss clipped float]
|
||||
expected: FAIL
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[elementFromPoint-001.html]
|
||||
[CSSOM View - 5 - extensions to the Document interface]
|
||||
expected: FAIL
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[matchMedia-display-none-iframe.html]
|
||||
expected: ERROR
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[traverse_the_history_3.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[embedded-opener-remove-frame.html]
|
||||
expected: CRASH
|
||||
[opener and "removed" embedded documents]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
[script-onerror-insertion-point-2.html]
|
||||
expected: TIMEOUT
|
|
@ -1,4 +0,0 @@
|
|||
[DOMContentLoaded-defer.html]
|
||||
[The end: DOMContentLoaded and defer scripts]
|
||||
expected: FAIL
|
||||
|
|
@ -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
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
[ignore-opens-during-unload.window.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[ignore-opens-during-unload]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[Worker-constructor.html]
|
||||
expected: ERROR
|
|
@ -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,
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
||||
"""
|
|
@ -0,0 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<div style="columns: 2">
|
||||
<div>Column1</div>
|
||||
<div style="padding: 2px">Column2<br>Column2 line2</div>
|
||||
</div>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -184,6 +184,7 @@ function runTests() {
|
|||
{ initialText: "a b[]| c", expectedText: ["a []", " c"] },
|
||||
{ initialText: "a b|[] c", expectedText: ["a []", " c"] },
|
||||
{ initialText: "a |b[] c", expectedText: ["a []", " c"] },
|
||||
{ initialText: "a []|b c", expectedText: ["a []", "b c"] },
|
||||
{ initialText: "a | b[] c", expectedText: ["a ", " [] c"] },
|
||||
|
||||
{ initialText: "a | |[] c", expectedText: ["a []", " c"] },
|
||||
|
|
|
@ -182,6 +182,7 @@ function runTests() {
|
|||
{ initialText: "a []b| c", expectedText: ["a []", " c"] },
|
||||
{ initialText: "a []|b c", expectedText: ["a []", " c"] },
|
||||
{ initialText: "a |[]b c", expectedText: ["a []", " c"] },
|
||||
{ initialText: "a [] |b c", expectedText: ["a []", "b c"] },
|
||||
{ initialText: "a | []b c", expectedText: ["a ", " [] c"] },
|
||||
|
||||
{ initialText: "a | |[] c", expectedText: ["a ", " []", " c"] },
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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>
|
|
@ -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(
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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)) {
|
||||
|
|
|
@ -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) {
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1 +1 @@
|
|||
mozprocess==1.0.0
|
||||
mozprocess==1.2.0
|
||||
|
|
|
@ -1 +1 @@
|
|||
mozprocess==1.0.0
|
||||
mozprocess==1.2.0
|
||||
|
|
|
@ -1 +1 @@
|
|||
mozprocess==1.0.0
|
||||
mozprocess==1.2.0
|
||||
|
|
|
@ -1 +1 @@
|
|||
mozprocess==1.0.0
|
||||
mozprocess==1.2.0
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
mozprocess==1.0.0
|
||||
mozprocess==1.2.0
|
||||
selenium==3.141.0
|
||||
|
|
|
@ -1 +1 @@
|
|||
mozprocess==1.0.0
|
||||
mozprocess==1.2.0
|
||||
|
|
|
@ -1 +1 @@
|
|||
mozprocess==1.0.0
|
||||
mozprocess==1.2.0
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
mozprocess==1.0.0
|
||||
mozprocess==1.2.0
|
||||
selenium==3.141.0
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
mozprocess==1.0.0
|
||||
mozprocess==1.2.0
|
||||
selenium==3.141.0
|
||||
|
|
|
@ -1 +1 @@
|
|||
mozprocess==1.0.0
|
||||
mozprocess==1.2.0
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
mozprocess==1.0.0
|
||||
mozprocess==1.2.0
|
||||
selenium==3.141.0
|
||||
requests==2.24.0
|
||||
|
|
|
@ -1 +1 @@
|
|||
mozprocess==1.0.0
|
||||
mozprocess==1.2.0
|
||||
|
|
|
@ -1 +1 @@
|
|||
mozprocess==1.0.0
|
||||
mozprocess==1.2.0
|
||||
|
|
|
@ -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*'])
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
Loading…
Add table
Add a link
Reference in a new issue