mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Auto merge of #27381 - servo-wpt-sync:wpt_update_23-07-2020, r=servo-wpt-sync
Sync WPT with upstream (23-07-2020) Automated downstream sync of changes from upstream as of 23-07-2020. [no-wpt-sync] r? @servo-wpt-sync
This commit is contained in:
commit
9261cf6ead
69 changed files with 607 additions and 198 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 +1,4 @@
|
|||
[hit-test-floats-003.html]
|
||||
[hit-test-floats-004.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -2,6 +2,3 @@
|
|||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[CaretPosition-001.html]
|
||||
[Element at (400, 100)]
|
||||
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
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[HTMLMediaElement.html]
|
||||
expected: TIMEOUT
|
|
@ -312,27 +312,21 @@
|
|||
[Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -53,9 +53,9 @@
|
|||
[combined text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript error]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,3 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20'NosniFF']
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[traverse_the_history_4.html]
|
||||
[traverse_the_history_3.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[cross-origin-objects-on-new-window.html]
|
||||
expected: TIMEOUT
|
|
@ -1,5 +1,5 @@
|
|||
[embedded-opener-remove-frame.html]
|
||||
expected: TIMEOUT
|
||||
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-2.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: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[form-double-submit.html]
|
||||
[default submit action should supersede onclick submit()]
|
||||
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
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
[idlharness.https.window.html]
|
||||
[XRHitTestResult interface: operation createAnchor()]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchor interface object name]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchor interface: existence and properties of interface prototype object]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchor interface object length]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchorSet interface: existence and properties of interface object]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchorSet interface: existence and properties of interface prototype object]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchor interface: existence and properties of interface prototype object's "constructor" property]
|
||||
expected: FAIL
|
||||
|
||||
[XRFrame interface: operation createAnchor(XRRigidTransform, XRSpace)]
|
||||
expected: FAIL
|
||||
|
||||
[XRFrame interface: attribute trackedAnchors]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchor interface: operation delete()]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchorSet interface object name]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchor interface: existence and properties of interface prototype object's @@unscopables property]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchorSet interface: existence and properties of interface prototype object's @@unscopables property]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchor interface: existence and properties of interface object]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchor interface: attribute anchorSpace]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchorSet interface object length]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchorSet interface: existence and properties of interface prototype object's "constructor" property]
|
||||
expected: FAIL
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
[shared-worker-in-data-url-context.window.html]
|
||||
expected: TIMEOUT
|
||||
[Create a shared worker in a data url frame]
|
||||
expected: FAIL
|
||||
|
||||
[Create a data url shared worker in a data url frame]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -144804,7 +144804,7 @@
|
|||
]
|
||||
],
|
||||
"grid-template-columns-fit-content-001.html": [
|
||||
"83b53db39b154dc8001dbef809aeb0eff7774c2a",
|
||||
"cecc53f89602413408647138319b30190af44768",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -144817,7 +144817,7 @@
|
|||
]
|
||||
],
|
||||
"grid-template-rows-fit-content-001.html": [
|
||||
"f28aacb23bbd12c96efc4c157789bfdeaf943feb",
|
||||
"14ac0c9c39b226ccc298c42b148220e6d8e74700",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -162128,12 +162128,25 @@
|
|||
]
|
||||
],
|
||||
"active-selection-056.html": [
|
||||
"31c777dc1a6af287e648907c5448235f3298ba75",
|
||||
"c8c5e0e2a873cf14cf5735304687465a14454768",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-pseudo/reference/ref-nothing-below.xht",
|
||||
"/css/reference/ref-nothing-below.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"active-selection-057.html": [
|
||||
"4a40d1f1a5ffd316a18a8e23df303a50b37de6ac",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-nothing-below.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
|
@ -162141,12 +162154,12 @@
|
|||
]
|
||||
],
|
||||
"active-selection-063.html": [
|
||||
"1d9a1c1ecd81008d4d3d5891b717d6bdadb3efe9",
|
||||
"2a70a3b7123eaf0ea304d1bff5b9a7a35a580219",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-pseudo/reference/ref-filled-green-100px-square.xht",
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
|
@ -302021,11 +302034,11 @@
|
|||
[]
|
||||
],
|
||||
"grid-template-columns-fit-content-001-ref.html": [
|
||||
"f29a13e0fe060ae15835bacf8bc1bf3436c0b50f",
|
||||
"13002a7037f05b6d3004605f4f8394cf462f68ab",
|
||||
[]
|
||||
],
|
||||
"grid-template-rows-fit-content-001-ref.html": [
|
||||
"bbadddc324f56c294679516b3152e8b7354aca26",
|
||||
"dc39cccc68cbf3fc0f756b7282fd158fc1c6e8fb",
|
||||
[]
|
||||
],
|
||||
"support": {
|
||||
|
@ -305857,16 +305870,6 @@
|
|||
"92ae71d83fcbea52e4120ed28af5438dd54d4509",
|
||||
[]
|
||||
],
|
||||
"reference": {
|
||||
"ref-filled-green-100px-square.xht": [
|
||||
"05a13794482a94f6c10bd9d4c98704e63ef60331",
|
||||
[]
|
||||
],
|
||||
"ref-nothing-below.xht": [
|
||||
"c87db8094bd4bbb7ba5f18816730fd40c198149d",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"selection-text-shadow-016-ref.html": [
|
||||
"5e3eabc976e2bc75b6a290f2b740b54d8cdbf99a",
|
||||
[]
|
||||
|
@ -339094,6 +339097,10 @@
|
|||
"06d6eec690ba8c70ab10f61fe9a9a1de286b6e70",
|
||||
[]
|
||||
],
|
||||
"anchors.idl": [
|
||||
"159bfaccd55e2ce3a8fac7490db2fb0393c8f2be",
|
||||
[]
|
||||
],
|
||||
"appmanifest.idl": [
|
||||
"926a4fc2022e71c28aa4a2ae3d1adc12104ee1ab",
|
||||
[]
|
||||
|
@ -339250,6 +339257,10 @@
|
|||
"f664013ddefea7bc8950f7604c06f53c1c1aac48",
|
||||
[]
|
||||
],
|
||||
"dom-overlays.idl": [
|
||||
"958da865118d5fa76ea42adc678c877c5d06ef84",
|
||||
[]
|
||||
],
|
||||
"dom.idl": [
|
||||
"102c23123819ba2e9b633755cfb453b1f2168961",
|
||||
[]
|
||||
|
@ -341606,7 +341617,7 @@
|
|||
[]
|
||||
],
|
||||
"FileSystemDirectoryHandle-iteration.js": [
|
||||
"200f5af65f56fdc9280c8b957b187cc4ded93d20",
|
||||
"3e721a0f017f0b393dba05a4f3b8dc098f6c0698",
|
||||
[]
|
||||
],
|
||||
"FileSystemDirectoryHandle-removeEntry.js": [
|
||||
|
@ -349732,7 +349743,7 @@
|
|||
[]
|
||||
],
|
||||
"ci_wptrunner_infrastructure.sh": [
|
||||
"89267b50cb6432c495d428a180c59659b5c5a60a",
|
||||
"0709295f4a204fadbfdf00ab129e9fb90cced214",
|
||||
[]
|
||||
],
|
||||
"commands.json": [
|
||||
|
@ -349764,7 +349775,7 @@
|
|||
[]
|
||||
],
|
||||
"taskcluster-run.py": [
|
||||
"d8e42ccea2112694c6d3b8b1aa6ca7034ea22282",
|
||||
"61d05689287a33c3470089e929d0c8871b6a46ef",
|
||||
[]
|
||||
],
|
||||
"tc": {
|
||||
|
@ -356155,7 +356166,7 @@
|
|||
[]
|
||||
],
|
||||
"error.py": [
|
||||
"0647e7eb61f834b1de0eb07296e876ce38aa8a47",
|
||||
"8379656d73dd722717559054e7104fcfe607cb0c",
|
||||
[]
|
||||
],
|
||||
"protocol.py": [
|
||||
|
@ -356214,7 +356225,7 @@
|
|||
[]
|
||||
],
|
||||
"run.py": [
|
||||
"9c77c57ab3779090caef1dd44efad15794908705",
|
||||
"32f903ce9bd64474aa387ac03a7bcb36d47bb8ae",
|
||||
[]
|
||||
],
|
||||
"testfiles.py": [
|
||||
|
@ -356308,7 +356319,7 @@
|
|||
]
|
||||
},
|
||||
"requirements.txt": [
|
||||
"8ac1d9f78b058115e67d929a98cd7b6dd50099c4",
|
||||
"d10396d0d2b261cabfbdd1051a9b50ecb62a62e8",
|
||||
[]
|
||||
],
|
||||
"requirements_android_webview.txt": [
|
||||
|
@ -359313,7 +359324,7 @@
|
|||
[]
|
||||
],
|
||||
"sync.py": [
|
||||
"3fc77131c766f68d2f7c4c0af33ed6478d31e300",
|
||||
"fa5d18550ccefd74a7980be1c13e3f2b0b147cd7",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -388829,7 +388840,7 @@
|
|||
]
|
||||
],
|
||||
"KeyframeEffect-getKeyframes.tentative.html": [
|
||||
"f7d767dea8ca15589a53fae7952bb15e383ccd22",
|
||||
"1119d06d4a33298d351d7d702d2a92d24282e1f8",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -396545,6 +396556,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"grid-template-areas-one-cell.html": [
|
||||
"dc341bc35d29e607e7ce8f1ce800a17d11ddcbac",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"grid-template-areas-valid.html": [
|
||||
"9c9bd47ec894ccc0e389287120082fb4bf5c9905",
|
||||
[
|
||||
|
@ -456836,7 +456854,7 @@
|
|||
]
|
||||
],
|
||||
"property.https.html": [
|
||||
"dfa738075de58f7c979c007d768db9e5f131a422",
|
||||
"67aebb5838bb5de62e8628836655f2a480b48b2d",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -482286,7 +482304,7 @@
|
|||
]
|
||||
],
|
||||
"rename_async_failure_handling.tentative.https.any.js": [
|
||||
"64ea24fa65ebd55e7b9f343334a359356d56207b",
|
||||
"038be88a3af6dc571e003a0edb14fd54362a5ef5",
|
||||
[
|
||||
"native-io/rename_async_failure_handling.tentative.https.any.html",
|
||||
{
|
||||
|
@ -482383,7 +482401,7 @@
|
|||
]
|
||||
],
|
||||
"rename_sync_failure_handling.tentative.https.any.js": [
|
||||
"92c42c7d3cd254dbf49e328de993fe222d30fc82",
|
||||
"62a3d5b6af8e83ae98f2d26ad8524bf12fa185be",
|
||||
[
|
||||
"native-io/rename_sync_failure_handling.tentative.https.any.worker.html",
|
||||
{
|
||||
|
@ -523747,7 +523765,7 @@
|
|||
]
|
||||
],
|
||||
"RTCPeerConnection-ontrack.https.html": [
|
||||
"99f30c264b3648d52fda6bb50de980bcbe84be3c",
|
||||
"ccdd29f6a50da94d689b7654d18a3c07ee4bc6db",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -530097,6 +530115,24 @@
|
|||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"idlharness.https.window.js": [
|
||||
"87a5c9e5582d524c2976f03baedf148cddf79256",
|
||||
[
|
||||
"webxr/anchors/idlharness.https.window.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"script",
|
||||
"/resources/WebIDLParser.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/resources/idlharness.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"ar-module": {
|
||||
|
@ -530154,6 +530190,24 @@
|
|||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"idlharness.https.window.js": [
|
||||
"ca20f4253898937c61aac108d9caeef1d39e2831",
|
||||
[
|
||||
"webxr/dom-overlay/idlharness.https.window.html",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"script",
|
||||
"/resources/WebIDLParser.js"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"/resources/idlharness.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"events_input_source_recreation.https.html": [
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[hit-test-floats-003.html]
|
||||
[hit-test-floats-004.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -2,6 +2,3 @@
|
|||
[Hit test intersecting scaled box]
|
||||
expected: FAIL
|
||||
|
||||
[Hit test within unscaled box]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[CaretPosition-001.html]
|
||||
[Element at (400, 100)]
|
||||
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
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[HTMLMediaElement.html]
|
||||
expected: TIMEOUT
|
|
@ -312,27 +312,21 @@
|
|||
[fetch(): separate response Content-Type: text/plain ]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: */* text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -53,9 +53,9 @@
|
|||
[combined text/javascript ]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript error]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -11,6 +11,3 @@
|
|||
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||
expected: FAIL
|
||||
|
||||
[X-Content-Type-Options%3A%20'NosniFF']
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[traverse_the_history_4.html]
|
||||
[traverse_the_history_3.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[cross-origin-objects-on-new-window.html]
|
||||
expected: TIMEOUT
|
|
@ -1,5 +1,5 @@
|
|||
[embedded-opener-remove-frame.html]
|
||||
expected: TIMEOUT
|
||||
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,5 +1,5 @@
|
|||
[iframe_sandbox_popups_escaping-2.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: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[form-double-submit.html]
|
||||
[default submit action should supersede onclick submit()]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
[ignore-opens-during-unload.window.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[ignore-opens-during-unload]
|
||||
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,52 @@
|
|||
[idlharness.https.window.html]
|
||||
[XRHitTestResult interface: operation createAnchor()]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchor interface object name]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchor interface: existence and properties of interface prototype object]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchor interface object length]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchorSet interface: existence and properties of interface object]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchorSet interface: existence and properties of interface prototype object]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchor interface: existence and properties of interface prototype object's "constructor" property]
|
||||
expected: FAIL
|
||||
|
||||
[XRFrame interface: operation createAnchor(XRRigidTransform, XRSpace)]
|
||||
expected: FAIL
|
||||
|
||||
[XRFrame interface: attribute trackedAnchors]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchor interface: operation delete()]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchorSet interface object name]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchor interface: existence and properties of interface prototype object's @@unscopables property]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchorSet interface: existence and properties of interface prototype object's @@unscopables property]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchor interface: existence and properties of interface object]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchor interface: attribute anchorSpace]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchorSet interface object length]
|
||||
expected: FAIL
|
||||
|
||||
[XRAnchorSet interface: existence and properties of interface prototype object's "constructor" property]
|
||||
expected: FAIL
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
[shared-worker-in-data-url-context.window.html]
|
||||
expected: TIMEOUT
|
||||
[Create a shared worker in a data url frame]
|
||||
expected: FAIL
|
||||
|
||||
[Create a data url shared worker in a data url frame]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -618,14 +618,14 @@ test(t => {
|
|||
|
||||
test(t => {
|
||||
const div = addDiv(t);
|
||||
div.style.animation = 'anim-custom-property-in-keyframe 100s';
|
||||
div.style.animation = 'anim-custom-property-in-keyframe 100s steps(2, start)';
|
||||
|
||||
const frames = getKeyframes(div);
|
||||
|
||||
const expected = [
|
||||
{ offset: 0, computedOffset: 0, easing: "ease", composite: "auto",
|
||||
{ offset: 0, computedOffset: 0, easing: "steps(2, start)", composite: "auto",
|
||||
color: "rgb(0, 0, 0)" },
|
||||
{ offset: 1, computedOffset: 1, easing: "ease", composite: "auto",
|
||||
{ offset: 1, computedOffset: 1, easing: "steps(2, start)", composite: "auto",
|
||||
color: "rgb(0, 255, 0)" },
|
||||
];
|
||||
assert_frame_lists_equal(frames, expected);
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
.item {
|
||||
font: 10px/1 Ahem;
|
||||
background: cyan;
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
.spanningItem {
|
||||
|
@ -26,6 +27,7 @@
|
|||
grid-column: 1 / -1;
|
||||
grid-row: 2;
|
||||
background: salmon;
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
.test {
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
.item {
|
||||
font: 10px/1 Ahem;
|
||||
background: cyan;
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
.spanningItem {
|
||||
|
@ -49,6 +50,7 @@
|
|||
grid-column: 1 / -1;
|
||||
grid-row: 2;
|
||||
background: salmon;
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
.test {
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
.item {
|
||||
font: 10px/1 Ahem;
|
||||
background: cyan;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
.spanningItem {
|
||||
|
@ -29,6 +30,7 @@
|
|||
grid-row: 1 / -1;
|
||||
grid-column: 2;
|
||||
background: salmon;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
.test {
|
||||
|
|
|
@ -47,6 +47,7 @@ div.grid > div { writing-mode: vertical-lr; }
|
|||
.item {
|
||||
font: 10px/1 Ahem;
|
||||
background: cyan;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
.spanningItem {
|
||||
|
@ -54,6 +55,7 @@ div.grid > div { writing-mode: vertical-lr; }
|
|||
grid-row: 1 / -1;
|
||||
grid-column: 2;
|
||||
background: salmon;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
.test {
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
<!doctype html>
|
||||
<title>grid-template-areas must define at least one cell</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<link rel=author title="Tab Atkins-Bittner" href="https://www.xanthir.com/contact/">
|
||||
<link rel=help href="https://www.w3.org/TR/css-grid-1/#grid-template-areas-property">
|
||||
<meta name=assert content="grid-template-areas must define at least one cell to be valid.">
|
||||
|
||||
<script>
|
||||
function testValidGta(val) {
|
||||
test(()=>{
|
||||
const root = document.children[0];
|
||||
root.style.gridTemplateAreas = "";
|
||||
root.style.gridTemplateAreas = val;
|
||||
assert_not_equals(root.style.gridTemplateAreas, "");
|
||||
}, `"grid-template-areas: ${val};" should be valid.`);
|
||||
}
|
||||
function testInvalidGta(val) {
|
||||
test(()=>{
|
||||
const root = document.children[0];
|
||||
root.style.gridTemplateAreas = "";
|
||||
root.style.gridTemplateAreas = val;
|
||||
assert_equals(root.style.gridTemplateAreas, "");
|
||||
}, `"grid-template-areas: ${val};" should be invalid.`);
|
||||
}
|
||||
|
||||
testValidGta("'a'");
|
||||
testValidGta("'.'");
|
||||
|
||||
testInvalidGta("''");
|
||||
testInvalidGta("'' ''");
|
||||
testInvalidGta("'$'");
|
||||
testInvalidGta("' '");
|
||||
</script>
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-selectors">
|
||||
<link rel="match" href="reference/ref-nothing-below.xht">
|
||||
<link rel="match" href="../reference/ref-nothing-below.xht">
|
||||
|
||||
<!--
|
||||
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
<!DOCTYPE html>
|
||||
|
||||
<meta charset="UTF-8">
|
||||
|
||||
<title>CSS Pseudo-Elements Test: active selection and 3 empty elements</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-selectors">
|
||||
<link rel="match" href="../reference/ref-nothing-below.xht">
|
||||
|
||||
<meta content="" name="flags">
|
||||
<meta name="assert" content="The <div id="subtest1"> element and the <hr> element in this test are empty elements. Their background color can be painted but specifying their 'color' should generate no rendering effect of any kind. Since the 'background-color' has not been specified in the ::selection pseudo-element, then it defaults to 'transparent'. The <div id="subtest3"> element is also an empty element since the 2 &NewLine; character references are line break control characters. Their background color can not be painted. Therefore, in this test, nothing should be painted or viewable. The fact that lines break at preserved newline characters thanks to 'white-space: pre' does not change that.">
|
||||
|
||||
<style>
|
||||
div#subtest1 , hr#subtest2
|
||||
{
|
||||
background-color: transparent; /* or initial or unset */
|
||||
height: 100px;
|
||||
}
|
||||
|
||||
hr#subtest2
|
||||
{
|
||||
border: none 0px;
|
||||
}
|
||||
|
||||
div#subtest1::selection , hr#subtest2::selection
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
|
||||
div#subtest3
|
||||
{
|
||||
background-color: transparent; /* or initial or unset */
|
||||
font-size: 100px;
|
||||
white-space: pre; /* or pre-line or pre-wrap or break-spaces */
|
||||
}
|
||||
|
||||
div#subtest3::selection
|
||||
{
|
||||
background-color: red;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
function startTest()
|
||||
{
|
||||
var targetRange = document.createRange();
|
||||
/* We first create an empty range */
|
||||
targetRange.selectNodeContents(document.getElementById("test"));
|
||||
/* Then we set the range boundaries to the children of div#test */
|
||||
window.getSelection().addRange(targetRange);
|
||||
/* Finally, we now select such range of content */
|
||||
}
|
||||
</script>
|
||||
|
||||
<body onload="startTest();">
|
||||
|
||||
<p>Test passes if there is nothing below.</p>
|
||||
|
||||
<div id="test">
|
||||
|
||||
<div id="subtest1"> </div>
|
||||
|
||||
<hr id="subtest2">
|
||||
|
||||
<div id="subtest3">

</div>
|
||||
|
||||
</div>
|
|
@ -7,7 +7,7 @@
|
|||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-selectors">
|
||||
<link rel="help" href="https://www.w3.org/TR/css-text-3/#tab-size-property">
|
||||
<link rel="match" href="reference/ref-filled-green-100px-square.xht">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
|
||||
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
|
||||
|
||||
<meta content="" name="flags">
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>CSS Reftest Reference</title>
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
|
||||
<style type="text/css"><![CDATA[
|
||||
div
|
||||
{
|
||||
background-color: green;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
}
|
||||
]]></style>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div></div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,18 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
|
||||
<title>CSS Reftest Reference</title>
|
||||
|
||||
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<p>Test passes if there is nothing below.</p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -47,7 +47,7 @@ origin.forEach(([origin_name, origin]) => {
|
|||
|
||||
const reportTo = reportToHeaders(report_token);
|
||||
const openee_url = origin+ executor_path +
|
||||
reportTo.header + reportTo.coopSameOriginHeader + coep_header +
|
||||
reportTo.header + reportTo.coopReportOnlySameOriginHeader + coep_header +
|
||||
`&uuid=${executor_token}`;
|
||||
const openee = window.open(openee_url);
|
||||
t.add_cleanup(() => send(executor_token, "window.close()"))
|
||||
|
|
27
tests/wpt/web-platform-tests/interfaces/anchors.idl
Normal file
27
tests/wpt/web-platform-tests/interfaces/anchors.idl
Normal file
|
@ -0,0 +1,27 @@
|
|||
// GENERATED CONTENT - DO NOT EDIT
|
||||
// Content was automatically extracted by Reffy into reffy-reports
|
||||
// (https://github.com/tidoust/reffy-reports)
|
||||
// Source: WebXR Anchors Module (https://immersive-web.github.io/anchors/)
|
||||
|
||||
[SecureContext, Exposed=Window]
|
||||
interface XRAnchor {
|
||||
readonly attribute XRSpace anchorSpace;
|
||||
|
||||
void delete();
|
||||
};
|
||||
|
||||
partial interface XRFrame {
|
||||
Promise<XRAnchor> createAnchor(XRRigidTransform pose, XRSpace space);
|
||||
};
|
||||
|
||||
partial interface XRHitTestResult {
|
||||
Promise<XRAnchor> createAnchor();
|
||||
};
|
||||
|
||||
interface XRAnchorSet {
|
||||
readonly setlike<XRAnchor>;
|
||||
};
|
||||
|
||||
partial interface XRFrame {
|
||||
[SameObject] readonly attribute XRAnchorSet trackedAnchors;
|
||||
};
|
31
tests/wpt/web-platform-tests/interfaces/dom-overlays.idl
Normal file
31
tests/wpt/web-platform-tests/interfaces/dom-overlays.idl
Normal file
|
@ -0,0 +1,31 @@
|
|||
// GENERATED CONTENT - DO NOT EDIT
|
||||
// Content was automatically extracted by Reffy into reffy-reports
|
||||
// (https://github.com/tidoust/reffy-reports)
|
||||
// Source: WebXR DOM Overlays Module (https://immersive-web.github.io/dom-overlays/)
|
||||
|
||||
partial interface mixin GlobalEventHandlers {
|
||||
attribute EventHandler onbeforexrselect;
|
||||
};
|
||||
|
||||
partial dictionary XRSessionInit {
|
||||
XRDOMOverlayInit? domOverlay;
|
||||
};
|
||||
|
||||
partial interface XRSession {
|
||||
readonly attribute XRDOMOverlayState? domOverlayState;
|
||||
};
|
||||
|
||||
dictionary XRDOMOverlayInit {
|
||||
required Element root;
|
||||
};
|
||||
|
||||
enum XRDOMOverlayType {
|
||||
"screen",
|
||||
"floating",
|
||||
"head-locked"
|
||||
};
|
||||
|
||||
dictionary XRDOMOverlayState {
|
||||
XRDOMOverlayType type;
|
||||
|
||||
};
|
|
@ -78,3 +78,21 @@ directory_test(async (t, root) => {
|
|||
names.sort();
|
||||
assert_array_equals(names, [file_name1, file_name2]);
|
||||
}, 'keys: full iteration works');
|
||||
|
||||
directory_test(async (t, root) => {
|
||||
const file_name1 = 'foo1.txt';
|
||||
await createFileWithContents(t, file_name1, 'contents', /*parent=*/ root);
|
||||
|
||||
const next = (() => {
|
||||
const iterator = root.entries();
|
||||
return iterator.next();
|
||||
})();
|
||||
garbageCollect();
|
||||
let entry = await next;
|
||||
assert_false(entry.done);
|
||||
assert_true(Array.isArray(entry.value));
|
||||
assert_equals(entry.value.length, 2);
|
||||
assert_equals(entry.value[0], file_name1);
|
||||
assert_true(entry.value[1] instanceof FileSystemFileHandle);
|
||||
assert_equals(entry.value[1].name, file_name1);
|
||||
}, 'iteration while iterator gets garbage collected');
|
||||
|
|
|
@ -4,6 +4,11 @@
|
|||
|
||||
'use strict';
|
||||
|
||||
setup(async () => {
|
||||
assert_implements(nativeIO.rename,
|
||||
"nativeIO.rename is not implemented.");
|
||||
});
|
||||
|
||||
promise_test(async testCase => {
|
||||
const file1 = await nativeIO.open('test_file_1');
|
||||
const file2 = await nativeIO.open('test_file_2');
|
||||
|
|
|
@ -4,6 +4,12 @@
|
|||
|
||||
'use strict';
|
||||
|
||||
setup(() => {
|
||||
// Without this assertion, one test passes even if renameSync is not defined
|
||||
assert_implements(nativeIO.renameSync,
|
||||
"nativeIO.renameSync is not implemented.");
|
||||
});
|
||||
|
||||
test(testCase => {
|
||||
const file1 = nativeIO.openSync('test_file_1');
|
||||
const file2 = nativeIO.openSync('test_file_2');
|
||||
|
|
|
@ -7,7 +7,7 @@ cd $WPT_ROOT
|
|||
|
||||
test_infrastructure() {
|
||||
PY3_FLAG="$2"
|
||||
TERM=dumb ./wpt $PY3_FLAG run --log-mach - --yes --manifest ~/meta/MANIFEST.json --metadata infrastructure/metadata/ --install-fonts $1 $PRODUCT infrastructure/
|
||||
TERM=dumb ./wpt $PY3_FLAG run --log-mach - --yes --manifest ~/meta/MANIFEST.json --metadata infrastructure/metadata/ --install-fonts --install-webdriver $1 $PRODUCT infrastructure/
|
||||
}
|
||||
|
||||
main() {
|
||||
|
|
|
@ -12,13 +12,14 @@ browser_specific_args = {
|
|||
"servo": ["--install-browser", "--processes=12"]
|
||||
}
|
||||
|
||||
|
||||
def get_browser_args(product):
|
||||
if product == "firefox":
|
||||
local_binary = os.path.expanduser(os.path.join("~", "build", "firefox", "firefox"))
|
||||
if os.path.exists(local_binary):
|
||||
return ["--binary=%s" % local_binary]
|
||||
print("WARNING: Local firefox binary not found")
|
||||
return ["--install-browser"]
|
||||
return ["--install-browser", "--install-webdriver"]
|
||||
return browser_specific_args.get(product, [])
|
||||
|
||||
|
||||
|
|
|
@ -3,14 +3,18 @@ import json
|
|||
|
||||
from six import itervalues
|
||||
|
||||
|
||||
class WebDriverException(Exception):
|
||||
http_status = None
|
||||
status_code = None
|
||||
|
||||
def __init__(self, http_status=None, status_code=None, message=None, stacktrace=None):
|
||||
super(WebDriverException, self)
|
||||
self.http_status = http_status
|
||||
self.status_code = status_code
|
||||
|
||||
if http_status is not None:
|
||||
self.http_status = http_status
|
||||
if status_code is not None:
|
||||
self.status_code = status_code
|
||||
self.message = message
|
||||
self.stacktrace = stacktrace
|
||||
|
||||
|
|
|
@ -52,6 +52,9 @@ def create_parser():
|
|||
parser.add_argument("--install-browser", action="store_true",
|
||||
help="Install the browser from the release channel specified by --channel "
|
||||
"(or the nightly channel by default).")
|
||||
parser.add_argument("--install-webdriver", action="store_true",
|
||||
help="Install WebDriver from the release channel specified by --channel "
|
||||
"(or the nightly channel by default).")
|
||||
parser._add_container_actions(wptcommandline.create_parser())
|
||||
return parser
|
||||
|
||||
|
@ -217,14 +220,19 @@ Consider installing certutil via your OS package manager or directly.""")
|
|||
kwargs["certutil_binary"] = certutil
|
||||
|
||||
if kwargs["webdriver_binary"] is None and "wdspec" in kwargs["test_types"]:
|
||||
webdriver_binary = self.browser.find_webdriver()
|
||||
webdriver_binary = None
|
||||
if not kwargs["install_webdriver"]:
|
||||
webdriver_binary = self.browser.find_webdriver()
|
||||
|
||||
if webdriver_binary is None:
|
||||
install = self.prompt_install("geckodriver")
|
||||
|
||||
if install:
|
||||
logger.info("Downloading geckodriver")
|
||||
webdriver_binary = self.browser.install_webdriver(dest=self.venv.bin_path)
|
||||
webdriver_binary = self.browser.install_webdriver(
|
||||
dest=self.venv.bin_path,
|
||||
channel=kwargs["browser_channel"],
|
||||
browser_binary=kwargs["binary"])
|
||||
else:
|
||||
logger.info("Using webdriver binary %s" % webdriver_binary)
|
||||
|
||||
|
@ -314,7 +322,9 @@ class Chrome(BrowserSetup):
|
|||
else:
|
||||
raise WptrunError("Unable to locate Chrome binary")
|
||||
if kwargs["webdriver_binary"] is None:
|
||||
webdriver_binary = self.browser.find_webdriver()
|
||||
webdriver_binary = None
|
||||
if not kwargs["install_webdriver"]:
|
||||
webdriver_binary = self.browser.find_webdriver()
|
||||
|
||||
if webdriver_binary is None:
|
||||
install = self.prompt_install("chromedriver")
|
||||
|
@ -323,6 +333,7 @@ class Chrome(BrowserSetup):
|
|||
logger.info("Downloading chromedriver")
|
||||
webdriver_binary = self.browser.install_webdriver(
|
||||
dest=self.venv.bin_path,
|
||||
channel=browser_channel,
|
||||
browser_binary=kwargs["binary"],
|
||||
)
|
||||
else:
|
||||
|
@ -355,7 +366,9 @@ class ChromeAndroid(BrowserSetup):
|
|||
kwargs["package_name"] = self.browser.find_binary(
|
||||
channel=browser_channel)
|
||||
if kwargs["webdriver_binary"] is None:
|
||||
webdriver_binary = self.browser.find_webdriver()
|
||||
webdriver_binary = None
|
||||
if not kwargs["install_webdriver"]:
|
||||
webdriver_binary = self.browser.find_webdriver()
|
||||
|
||||
if webdriver_binary is None:
|
||||
install = self.prompt_install("chromedriver")
|
||||
|
@ -364,6 +377,7 @@ class ChromeAndroid(BrowserSetup):
|
|||
logger.info("Downloading chromedriver")
|
||||
webdriver_binary = self.browser.install_webdriver(
|
||||
dest=self.venv.bin_path,
|
||||
channel=browser_channel,
|
||||
browser_binary=kwargs["package_name"],
|
||||
)
|
||||
else:
|
||||
|
@ -397,14 +411,18 @@ class AndroidWeblayer(BrowserSetup):
|
|||
if kwargs.get("device_serial"):
|
||||
self.browser.device_serial = kwargs["device_serial"]
|
||||
if kwargs["webdriver_binary"] is None:
|
||||
webdriver_binary = self.browser.find_webdriver()
|
||||
webdriver_binary = None
|
||||
if not kwargs["install_webdriver"]:
|
||||
webdriver_binary = self.browser.find_webdriver()
|
||||
|
||||
if webdriver_binary is None:
|
||||
install = self.prompt_install("chromedriver")
|
||||
|
||||
if install:
|
||||
logger.info("Downloading chromedriver")
|
||||
webdriver_binary = self.browser.install_webdriver(dest=self.venv.bin_path)
|
||||
webdriver_binary = self.browser.install_webdriver(
|
||||
dest=self.venv.bin_path,
|
||||
channel=kwargs["browser_channel"])
|
||||
else:
|
||||
logger.info("Using webdriver binary %s" % webdriver_binary)
|
||||
|
||||
|
@ -422,14 +440,18 @@ class AndroidWebview(BrowserSetup):
|
|||
if kwargs.get("device_serial"):
|
||||
self.browser.device_serial = kwargs["device_serial"]
|
||||
if kwargs["webdriver_binary"] is None:
|
||||
webdriver_binary = self.browser.find_webdriver()
|
||||
webdriver_binary = None
|
||||
if not kwargs["install_webdriver"]:
|
||||
webdriver_binary = self.browser.find_webdriver()
|
||||
|
||||
if webdriver_binary is None:
|
||||
install = self.prompt_install("chromedriver")
|
||||
|
||||
if install:
|
||||
logger.info("Downloading chromedriver")
|
||||
webdriver_binary = self.browser.install_webdriver(dest=self.venv.bin_path)
|
||||
webdriver_binary = self.browser.install_webdriver(
|
||||
dest=self.venv.bin_path,
|
||||
channel=kwargs["browser_channel"])
|
||||
else:
|
||||
logger.info("Using webdriver binary %s" % webdriver_binary)
|
||||
|
||||
|
@ -445,14 +467,18 @@ class Opera(BrowserSetup):
|
|||
|
||||
def setup_kwargs(self, kwargs):
|
||||
if kwargs["webdriver_binary"] is None:
|
||||
webdriver_binary = self.browser.find_webdriver()
|
||||
webdriver_binary = None
|
||||
if not kwargs["install_webdriver"]:
|
||||
webdriver_binary = self.browser.find_webdriver()
|
||||
|
||||
if webdriver_binary is None:
|
||||
install = self.prompt_install("operadriver")
|
||||
|
||||
if install:
|
||||
logger.info("Downloading operadriver")
|
||||
webdriver_binary = self.browser.install_webdriver(dest=self.venv.bin_path)
|
||||
webdriver_binary = self.browser.install_webdriver(
|
||||
dest=self.venv.bin_path,
|
||||
channel=kwargs["browser_channel"])
|
||||
else:
|
||||
logger.info("Using webdriver binary %s" % webdriver_binary)
|
||||
|
||||
|
@ -475,7 +501,9 @@ class EdgeChromium(BrowserSetup):
|
|||
else:
|
||||
raise WptrunError("Unable to locate Edge binary")
|
||||
if kwargs["webdriver_binary"] is None:
|
||||
webdriver_binary = self.browser.find_webdriver()
|
||||
webdriver_binary = None
|
||||
if not kwargs["install_webdriver"]:
|
||||
webdriver_binary = self.browser.find_webdriver()
|
||||
|
||||
# Install browser if none are found or if it's found in venv path
|
||||
if webdriver_binary is None or webdriver_binary in self.venv.bin_path:
|
||||
|
@ -483,7 +511,9 @@ class EdgeChromium(BrowserSetup):
|
|||
|
||||
if install:
|
||||
logger.info("Downloading msedgedriver")
|
||||
webdriver_binary = self.browser.install_webdriver(dest=self.venv.bin_path, channel=browser_channel)
|
||||
webdriver_binary = self.browser.install_webdriver(
|
||||
dest=self.venv.bin_path,
|
||||
channel=browser_channel)
|
||||
else:
|
||||
logger.info("Using webdriver binary %s" % webdriver_binary)
|
||||
|
||||
|
@ -695,7 +725,7 @@ def setup_logging(kwargs, default_config=None, formatter_defaults=None):
|
|||
return logger
|
||||
|
||||
|
||||
def setup_wptrunner(venv, prompt=True, install_browser=False, **kwargs):
|
||||
def setup_wptrunner(venv, **kwargs):
|
||||
from wptrunner import wptcommandline
|
||||
from six import iteritems
|
||||
|
||||
|
@ -709,10 +739,10 @@ def setup_wptrunner(venv, prompt=True, install_browser=False, **kwargs):
|
|||
if kwargs["product"] not in product_setup:
|
||||
raise WptrunError("Unsupported product %s" % kwargs["product"])
|
||||
|
||||
setup_cls = product_setup[kwargs["product"]](venv, prompt)
|
||||
setup_cls = product_setup[kwargs["product"]](venv, kwargs["prompt"])
|
||||
setup_cls.install_requirements()
|
||||
|
||||
affected_revish = kwargs.pop("affected", None)
|
||||
affected_revish = kwargs.get("affected")
|
||||
if affected_revish is not None:
|
||||
# TODO: Consolidate with `./wpt tests-affected --ignore-rules`:
|
||||
# https://github.com/web-platform-tests/wpt/issues/14560
|
||||
|
@ -731,7 +761,7 @@ def setup_wptrunner(venv, prompt=True, install_browser=False, **kwargs):
|
|||
kwargs["test_list"] += test_list
|
||||
kwargs["default_exclude"] = True
|
||||
|
||||
if install_browser and not kwargs["channel"]:
|
||||
if kwargs["install_browser"] and not kwargs["channel"]:
|
||||
logger.info("--install-browser is given but --channel is not set, default to nightly channel")
|
||||
kwargs["channel"] = "nightly"
|
||||
|
||||
|
@ -745,15 +775,23 @@ def setup_wptrunner(venv, prompt=True, install_browser=False, **kwargs):
|
|||
else:
|
||||
logger.info("Valid channels for %s not known; using argument unmodified" % kwargs["product"])
|
||||
kwargs["browser_channel"] = kwargs["channel"]
|
||||
del kwargs["channel"]
|
||||
|
||||
if install_browser:
|
||||
if kwargs["install_browser"]:
|
||||
logger.info("Installing browser")
|
||||
kwargs["binary"] = setup_cls.install(channel=channel)
|
||||
|
||||
setup_cls.setup(kwargs)
|
||||
|
||||
wptcommandline.check_args(kwargs)
|
||||
# Remove kwargs we handle here
|
||||
wptrunner_kwargs = kwargs.copy()
|
||||
for kwarg in ["affected",
|
||||
"install_browser",
|
||||
"install_webdriver",
|
||||
"channel",
|
||||
"prompt"]:
|
||||
del wptrunner_kwargs[kwarg]
|
||||
|
||||
wptcommandline.check_args(wptrunner_kwargs)
|
||||
|
||||
wptrunner_path = os.path.join(wpt_root, "tools", "wptrunner")
|
||||
|
||||
|
@ -762,28 +800,21 @@ def setup_wptrunner(venv, prompt=True, install_browser=False, **kwargs):
|
|||
|
||||
# Only update browser_version if it was not given as a command line
|
||||
# argument, so that it can be overridden on the command line.
|
||||
if not kwargs["browser_version"]:
|
||||
kwargs["browser_version"] = setup_cls.browser.version(
|
||||
binary=kwargs.get("binary") or kwargs.get("package_name"),
|
||||
webdriver_binary=kwargs.get("webdriver_binary"),
|
||||
if not wptrunner_kwargs["browser_version"]:
|
||||
wptrunner_kwargs["browser_version"] = setup_cls.browser.version(
|
||||
binary=wptrunner_kwargs.get("binary") or wptrunner_kwargs.get("package_name"),
|
||||
webdriver_binary=wptrunner_kwargs.get("webdriver_binary"),
|
||||
)
|
||||
|
||||
return kwargs
|
||||
return wptrunner_kwargs
|
||||
|
||||
|
||||
def run(venv, **kwargs):
|
||||
setup_logging(kwargs)
|
||||
|
||||
# Remove arguments that aren't passed to wptrunner
|
||||
prompt = kwargs.pop("prompt", True)
|
||||
install_browser = kwargs.pop("install_browser", False)
|
||||
wptrunner_kwargs = setup_wptrunner(venv, **kwargs)
|
||||
|
||||
kwargs = setup_wptrunner(venv,
|
||||
prompt=prompt,
|
||||
install_browser=install_browser,
|
||||
**kwargs)
|
||||
|
||||
rv = run_single(venv, **kwargs) > 0
|
||||
rv = run_single(venv, **wptrunner_kwargs) > 0
|
||||
|
||||
return rv
|
||||
|
||||
|
|
|
@ -4,6 +4,6 @@ mozlog==6.0
|
|||
mozdebug==0.2
|
||||
# Pillow 7 requires Python 3
|
||||
pillow==6.2.2 # pyup: <7.0
|
||||
urllib3[secure]==1.25.9
|
||||
urllib3[secure]==1.25.10
|
||||
requests==2.24.0
|
||||
six==1.15.0
|
||||
|
|
|
@ -2,6 +2,8 @@ import collections
|
|||
import sys
|
||||
import time
|
||||
|
||||
import six
|
||||
|
||||
from webdriver import error
|
||||
|
||||
|
||||
|
@ -107,7 +109,7 @@ class Poll(object):
|
|||
be returned by this function.
|
||||
"""
|
||||
rv = None
|
||||
last_exc = None
|
||||
tb = None
|
||||
start = self.clock.time()
|
||||
end = start + self.timeout
|
||||
|
||||
|
@ -118,7 +120,7 @@ class Poll(object):
|
|||
except (KeyboardInterrupt, SystemExit):
|
||||
raise
|
||||
except self.exceptions:
|
||||
last_exc = sys.exc_info()
|
||||
_, _, tb = sys.exc_info()
|
||||
|
||||
# re-adjust the interval depending on how long
|
||||
# the callback took to evaluate the condition
|
||||
|
@ -135,11 +137,9 @@ class Poll(object):
|
|||
|
||||
if self.exc_cls is not None:
|
||||
elapsed = round((self.clock.time() - start), 1)
|
||||
message = ""
|
||||
message = "Timed out after {} seconds".format(elapsed)
|
||||
if self.exc_msg is not None:
|
||||
message = " with message: {}".format(self.exc_msg)
|
||||
raise self.exc_cls(
|
||||
"Timed out after {} seconds{}".format(elapsed, message),
|
||||
cause=last_exc)
|
||||
message = "{} with message: {}".format(message, self.exc_msg)
|
||||
six.reraise(self.exc_cls, self.exc_cls(message=message), tb)
|
||||
else:
|
||||
return rv
|
||||
|
|
|
@ -230,4 +230,29 @@ a=ssrc:1001 cname:some
|
|||
await new Promise(resolve => t.step_timeout(resolve, 100));
|
||||
}, `addTransceiver() with inactive direction should not cause remote connection to fire ontrack when setRemoteDescription()`);
|
||||
|
||||
["audio", "video"].forEach(type => promise_test(async t => {
|
||||
const pc1 = new RTCPeerConnection();
|
||||
t.add_cleanup(() => pc1.close());
|
||||
const pc2 = new RTCPeerConnection();
|
||||
t.add_cleanup(() => pc2.close());
|
||||
|
||||
const checkNoUnexpectedTrack = ({track}) => {
|
||||
assert_equals(track.kind, type, `ontrack event should not fire for ${track.kind}`);
|
||||
};
|
||||
|
||||
pc2.ontrack = t.step_func(checkNoUnexpectedTrack);
|
||||
pc1.ontrack = t.step_func(checkNoUnexpectedTrack);
|
||||
|
||||
await pc1.setLocalDescription(await pc1.createOffer(
|
||||
{ offerToReceiveVideo: true, offerToReceiveAudio: true }));
|
||||
|
||||
pc2.addTrack(...await getTrackFromUserMedia(type));
|
||||
|
||||
await pc2.setRemoteDescription(pc1.localDescription);
|
||||
await pc2.setLocalDescription(await pc2.createAnswer());
|
||||
await pc1.setRemoteDescription(pc2.localDescription);
|
||||
|
||||
await new Promise(resolve => t.step_timeout(resolve, 100));
|
||||
}, `Using offerToReceiveAudio and offerToReceiveVideo should only cause a ${type} track event to fire, if ${type} was the only type negotiated`));
|
||||
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
// META: script=/resources/WebIDLParser.js
|
||||
// META: script=/resources/idlharness.js
|
||||
|
||||
'use strict';
|
||||
|
||||
// https://immersive-web.github.io/anchors/
|
||||
|
||||
idl_test(
|
||||
['anchors'],
|
||||
['hit-test', 'webxr', 'dom'],
|
||||
async idl_array => {
|
||||
idl_array.add_objects({
|
||||
// TODO: Add object instances
|
||||
});
|
||||
}
|
||||
);
|
|
@ -0,0 +1,16 @@
|
|||
// META: script=/resources/WebIDLParser.js
|
||||
// META: script=/resources/idlharness.js
|
||||
|
||||
'use strict';
|
||||
|
||||
// https://immersive-web.github.io/dom-overlays/
|
||||
|
||||
idl_test(
|
||||
['dom-overlays'],
|
||||
['webxr', 'html', 'dom'],
|
||||
async idl_array => {
|
||||
idl_array.add_objects({
|
||||
// TODO: Add object instances
|
||||
});
|
||||
}
|
||||
);
|
Loading…
Add table
Add a link
Reference in a new issue