mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Auto merge of #26393 - servo-wpt-sync:wpt_update_02-05-2020, r=jdm
Sync WPT with upstream (02-05-2020) Automated downstream sync of changes from upstream as of 02-05-2020. [no-wpt-sync] r? @servo-wpt-sync
This commit is contained in:
commit
292d6ec588
114 changed files with 878 additions and 334 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
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-003.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-004.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[mix-blend-mode-animation.html]
|
||||
expected: FAIL
|
|
@ -509,3 +509,93 @@
|
|||
[min-width length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[left length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[left length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[left length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -17,6 +17,3 @@
|
|||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
[test some point of the element: top left corner]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,6 +2,3 @@
|
|||
[elementsFromPoint on the root document for points in iframe elements]
|
||||
expected: FAIL
|
||||
|
||||
[elementsFromPoint on inner documents]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
[EventListener-invoke-legacy.html]
|
||||
expected: TIMEOUT
|
||||
[Legacy listener of animationend]
|
||||
expected: TIMEOUT
|
||||
|
||||
[Listener of animationstart]
|
||||
expected: TIMEOUT
|
||||
|
||||
[Listener of animationend]
|
||||
expected: FAIL
|
||||
|
||||
[Legacy listener of transitionend]
|
||||
expected: TIMEOUT
|
||||
|
||||
[Legacy listener of animationstart]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -321,9 +321,18 @@
|
|||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||
[<iframe>: combined response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -56,9 +56,6 @@
|
|||
[separate text/javascript x/x]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_2.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[size.attributes.parse.empty.html]
|
||||
[Parsing of non-negative integers]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[size.attributes.parse.empty.worker.html]
|
||||
[Parsing of non-negative integers]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[size.attributes.parse.onlyspace.html]
|
||||
[Parsing of non-negative integers]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[size.attributes.parse.onlyspace.worker.html]
|
||||
[Parsing of non-negative integers]
|
||||
expected: FAIL
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
[supported-elements.html]
|
||||
expected: TIMEOUT
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||
expected: NOTRUN
|
||||
|
||||
[Element with tabindex should support autofocus]
|
||||
expected: TIMEOUT
|
||||
expected: NOTRUN
|
||||
|
||||
[Area element should support autofocus]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -119,3 +119,6 @@
|
|||
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44054 more errors.\n\tMax AbsError of 1.9961981773376465e+0 at index of 31768.\n\t[31768\]\t-9.9879217147827148e-1\t9.9740600585937500e-1\t1.9961981773376465e+0\t2.0013897706758867e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
|
||||
expected: FAIL
|
||||
|
||||
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 42291 more errors.\n\tMax AbsError of 1.9986916780471802e+0 at index of 42250.\n\t[42250\]\t9.9994289875030518e-1\t-9.9874877929687500e-1\t1.9986916780471802e+0\t2.0011956154322119e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[xrInputSource_gamepad_disconnect.https.html]
|
||||
[WebXR InputSource's gamepad gets disconnected when the input source is removed]
|
||||
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
|
||||
|
|
|
@ -24334,6 +24334,21 @@
|
|||
]
|
||||
]
|
||||
},
|
||||
"contenteditable": {
|
||||
"synthetic-height.tentative.html": [
|
||||
"4d466bff412e6de924b9886ef808b49f7ff2b44d",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/contenteditable/synthetic-height-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"css": {
|
||||
"CSS2": {
|
||||
"abspos": {
|
||||
|
@ -264457,6 +264472,10 @@
|
|||
"META.yml": [
|
||||
"3618b8d29d08c2315f6480c0e02578bb4784b344",
|
||||
[]
|
||||
],
|
||||
"synthetic-height-ref.html": [
|
||||
"a64b545f03c369a900ad6fee1971b60a176c6508",
|
||||
[]
|
||||
]
|
||||
},
|
||||
"cookie-store": {
|
||||
|
@ -317728,6 +317747,10 @@
|
|||
"0cc259b24f3829f665dc97b5d5edd98a3e0147c3",
|
||||
[]
|
||||
],
|
||||
"feature-policy-frame-policy-allowed-for-some-override.https.sub.html.sub.headers": [
|
||||
"c2493a089031aa89fc6c689e0bdc1ea717da81c3",
|
||||
[]
|
||||
],
|
||||
"feature-policy-frame-policy-allowed-for-some.https.sub.html.sub.headers": [
|
||||
"c2493a089031aa89fc6c689e0bdc1ea717da81c3",
|
||||
[]
|
||||
|
@ -322191,7 +322214,7 @@
|
|||
[]
|
||||
],
|
||||
"tests2d-offscreen.yaml": [
|
||||
"f4a605c0eca5a2305223da743d8c5ff8a50ca508",
|
||||
"5fe168a66d572f2b3d8e33f3982d70702db849e3",
|
||||
[]
|
||||
],
|
||||
"tests2d.yaml": [
|
||||
|
@ -331568,7 +331591,7 @@
|
|||
[]
|
||||
],
|
||||
"http2-context.sub.h2.any.js.ini": [
|
||||
"6537b7eae0705cfee6ff43145b505b2bc1880836",
|
||||
"665258c9d94c2fc934b07fdb33d7e54eac6bc0cb",
|
||||
[]
|
||||
],
|
||||
"order-of-metas.any.js.ini": [
|
||||
|
@ -331584,7 +331607,7 @@
|
|||
[]
|
||||
],
|
||||
"wpt-server-http.sub.html.ini": [
|
||||
"e2f26c7e4b697c77c5ee195cad763279bd1ecde0",
|
||||
"b1e18f8948acf097d415209d18f084da58e02fa9",
|
||||
[]
|
||||
],
|
||||
"wpt-server-websocket.sub.html.ini": [
|
||||
|
@ -332315,7 +332338,7 @@
|
|||
[]
|
||||
],
|
||||
"web-nfc.idl": [
|
||||
"155bf267a206719e64e5bc505b7602f8804643bf",
|
||||
"f2e31b7352867d39edc9c43a4f1fffb3a02cb985",
|
||||
[]
|
||||
],
|
||||
"web-share.idl": [
|
||||
|
@ -332496,6 +332519,10 @@
|
|||
}
|
||||
},
|
||||
"largest-contentful-paint": {
|
||||
"META.yml": [
|
||||
"b7e2497681e98960fd00d70ced82aa9e3a48d144",
|
||||
[]
|
||||
],
|
||||
"resources": {
|
||||
"iframe-stores-entry.html": [
|
||||
"cd600254805570deab8447ea843657d7f268b7c5",
|
||||
|
@ -332512,6 +332539,10 @@
|
|||
}
|
||||
},
|
||||
"layout-instability": {
|
||||
"META.yml": [
|
||||
"10c6aa36cecf918928298102d1934c2ff79d01f2",
|
||||
[]
|
||||
],
|
||||
"resources": {
|
||||
"slow-image.py": [
|
||||
"ee7988c551f6429eea2b929af083ad30cbd5c73d",
|
||||
|
@ -332563,7 +332594,7 @@
|
|||
[]
|
||||
]
|
||||
},
|
||||
"lint.whitelist": [
|
||||
"lint.ignore": [
|
||||
"5f793cb6f3ec885017eeaf4cd7b4074d93e4d605",
|
||||
[]
|
||||
],
|
||||
|
@ -342064,7 +342095,7 @@
|
|||
[]
|
||||
],
|
||||
"ci_wptrunner_infrastructure.sh": [
|
||||
"f98385dd95d89a63eba12a4600b14dd2822816da",
|
||||
"89267b50cb6432c495d428a180c59659b5c5a60a",
|
||||
[]
|
||||
],
|
||||
"commands.json": [
|
||||
|
@ -342122,7 +342153,7 @@
|
|||
],
|
||||
"tasks": {
|
||||
"test.yml": [
|
||||
"d2d76df13a753643e0e32d4237ad19b9823e1742",
|
||||
"3157fb6f273810a6cb75278af7920d8af41022ab",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -342154,7 +342185,7 @@
|
|||
[]
|
||||
],
|
||||
"test_valid.py": [
|
||||
"aa1ce20cd6d36191d96e2080393a70b13d8aa1df",
|
||||
"85c015e521a6fcbe9e4050e4db7b9a191c3e113c",
|
||||
[]
|
||||
]
|
||||
}
|
||||
|
@ -342256,7 +342287,7 @@
|
|||
[]
|
||||
],
|
||||
"lint.py": [
|
||||
"fad93662a4465c7d1cb266f8ef475b26ed24f764",
|
||||
"74b3c8cf9301a9d5ee3f0356a8a5604eea41fa3c",
|
||||
[]
|
||||
],
|
||||
"rules.py": [
|
||||
|
@ -342383,7 +342414,7 @@
|
|||
"29296f4c5876fc8c4cd052548616005c1e46f0e4",
|
||||
[]
|
||||
],
|
||||
"lint.whitelist": [
|
||||
"lint.ignore": [
|
||||
"a763e4432e5afa2123035345e130d018710ffdd0",
|
||||
[]
|
||||
],
|
||||
|
@ -342437,7 +342468,7 @@
|
|||
[]
|
||||
],
|
||||
"test_lint.py": [
|
||||
"af2b7d3d4aa19f0c1d72a5575b5013c7897e1dc4",
|
||||
"43da2f9ff21904868431533eaae846a403b7379a",
|
||||
[]
|
||||
],
|
||||
"test_path_lints.py": [
|
||||
|
@ -348084,7 +348115,7 @@
|
|||
[]
|
||||
],
|
||||
"firefox.py": [
|
||||
"9532bd03cb7d8bd7b21543c756ba9197707947d0",
|
||||
"f60185eb25f2e3140562dde5d96624f7081e4571",
|
||||
[]
|
||||
],
|
||||
"firefox_android.py": [
|
||||
|
@ -348507,7 +348538,7 @@
|
|||
[]
|
||||
],
|
||||
"wpttest.py": [
|
||||
"8f828ff43abf72c9e3332e7e1eb0bf09f5caaf88",
|
||||
"838a3ece325e8d58e952ea63b69508255fbb880f",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -353530,7 +353561,7 @@
|
|||
[]
|
||||
],
|
||||
"webxr_util.js": [
|
||||
"fcee893036799f917ed175d0444058103c4287b5",
|
||||
"7c157518755dfef1f0ffe2e00cbb27d8a2939dcb",
|
||||
[]
|
||||
]
|
||||
},
|
||||
|
@ -354866,7 +354897,7 @@
|
|||
[]
|
||||
],
|
||||
"access-control-preflight-denied.py": [
|
||||
"889ee6b0eca6ca68e7b8345fa2a1031103a8886c",
|
||||
"e8010cc0ef71d8d1db3c4e381df45b56d541026e",
|
||||
[]
|
||||
],
|
||||
"access-control-preflight-request-header-lowercase.py": [
|
||||
|
@ -380924,6 +380955,13 @@
|
|||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"viewport-user-scalable-no-wide-content.tentative.html": [
|
||||
"6cf0bfa236a0cb5806c5deeeb7d45c07afb9f16f",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
]
|
||||
},
|
||||
"css-display": {
|
||||
|
@ -399725,7 +399763,7 @@
|
|||
]
|
||||
],
|
||||
"CSSStyleSheet-constructable-replace-on-regular-sheet.html": [
|
||||
"5ce0cbee97a2a1593018089f9252870bdb47587b",
|
||||
"76bee452a661bb95908c66e176797dd62f918ab2",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -420303,8 +420341,17 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"feature-policy-frame-policy-allowed-for-some-override.https.sub.html": [
|
||||
"17c9cc6b8dbbb67891871874a5632b3cbaa89b3a",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"feature-policy-frame-policy-allowed-for-some.https.sub.html": [
|
||||
"9a020f9e6b5d513adaf2d36b25bd62b239789e50",
|
||||
"d519743a4384c7242d849c011cf02e835eecd2ba",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -444233,14 +444280,14 @@
|
|||
]
|
||||
],
|
||||
"size.attributes.parse.empty.html": [
|
||||
"69e834f510ee1a4d2ded63b9e7820eb0bd89502d",
|
||||
"382914954109d81fe79a20be1ab13907902b5724",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"size.attributes.parse.empty.worker.js": [
|
||||
"1888d2ef132010d087a7379acdc75f585d6dfc88",
|
||||
"0fb9808d36b10784a2d3a052f9e3edb06d477e84",
|
||||
[
|
||||
"html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.empty.worker.html",
|
||||
{}
|
||||
|
@ -444317,14 +444364,14 @@
|
|||
]
|
||||
],
|
||||
"size.attributes.parse.onlyspace.html": [
|
||||
"cbd9c1e3e3fb91a1caad7201c291eb0d5a4253a8",
|
||||
"55d05b88c3f88508f387299ac4e75c492f96f518",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"size.attributes.parse.onlyspace.worker.js": [
|
||||
"21c8cfc32baa462e2c543631cbcb26cbdc15a56d",
|
||||
"b2e5d6c6726a599ff77ae7066127dfa6d5cfad9c",
|
||||
[
|
||||
"html/canvas/offscreen/the-offscreen-canvas/size.attributes.parse.onlyspace.worker.html",
|
||||
{}
|
||||
|
@ -447538,6 +447585,13 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"preventScroll-textarea.html": [
|
||||
"446284b1863d73f03b845a121189f273b77decd1",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"preventScroll.html": [
|
||||
"97d341b30ec849fefc13adb8b3376307fea58b69",
|
||||
[
|
||||
|
@ -485858,6 +485912,15 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"scroll-timeline-snapshotting.html": [
|
||||
"f2ba23fd4dc9cb4da40b4008071a7a109e6edb37",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"setting-current-time.html": [
|
||||
"d46206d8257702d443e3b1e620bf9bad4f327ee3",
|
||||
[
|
||||
|
@ -510054,7 +510117,7 @@
|
|||
]
|
||||
],
|
||||
"RTCPeerConnection-setRemoteDescription-offer.html": [
|
||||
"21ecf17fef6aa8b242b22a55e78c3bb0280a28cb",
|
||||
"b4702446613255daec7db5325f64089a917fdee9",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -510075,7 +510138,7 @@
|
|||
]
|
||||
],
|
||||
"RTCPeerConnection-setRemoteDescription-rollback.html": [
|
||||
"516cb57025b195552ade0e600c02f7c92c8f4aa8",
|
||||
"a031a6015f4274d783fc3a5a1bce03a7e23dffe8",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -516120,7 +516183,7 @@
|
|||
},
|
||||
"dom-overlay": {
|
||||
"ar_dom_overlay.https.html": [
|
||||
"e6f7a9d455cf22d1fa070f269ee9715992e5e2c8",
|
||||
"de0cb68744956558541b574fd88800d262d23e97",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -516142,14 +516205,14 @@
|
|||
]
|
||||
],
|
||||
"events_input_sources_change.https.html": [
|
||||
"107cc9b544e3a395c14655d0f4356485f05d7bf5",
|
||||
"7c784c34479842148a3310b3f48d41990fcd4c34",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"events_referenceSpace_reset_immersive.https.html": [
|
||||
"2da3788a39a20db3396d542f7fb0dc5d486c2aa3",
|
||||
"9643bf61c877ed50fa70e49015828e1b58ba7870",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -516163,21 +516226,21 @@
|
|||
]
|
||||
],
|
||||
"events_session_select.https.html": [
|
||||
"bc501b693497ddf58ccabd4491858263c4dfbdbc",
|
||||
"f83d3c4f85421999d2480049dc4daa62acf07666",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"events_session_select_subframe.https.html": [
|
||||
"0e2c23424c0893b6a563c2aa2fbd999e50b1cfef",
|
||||
"96fa11713dd480b947b0c64b624dc6022cb7e8d0",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"events_session_squeeze.https.html": [
|
||||
"59e4e3f72c5d63cff47b6a7e1dfbac6194203534",
|
||||
"101f1dc7c886906a9f6bc9db8bba0e01fdcb4b73",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -516210,14 +516273,14 @@
|
|||
]
|
||||
],
|
||||
"xrInputSource_gamepad_disconnect.https.html": [
|
||||
"7b8ff4a59c8e503d4f31fe33f9fa1dee6af10003",
|
||||
"f69f943b5b58451f75a4f21ac149676066d1f799",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"xrInputSource_gamepad_input_registered.https.html": [
|
||||
"038e28dcffbd507105da57fb1ced055ea83896c0",
|
||||
"1ff9dcf3b40c9a9c9f41fcc756f6bab1d3add7b3",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -516225,21 +516288,21 @@
|
|||
]
|
||||
},
|
||||
"getInputPose_handedness.https.html": [
|
||||
"5a310c6dd77274631d0ef9e751c6f195def9c3d3",
|
||||
"c5c13fd08f4ec43cb33155c9ea92ad2177b6035e",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"getInputPose_pointer.https.html": [
|
||||
"9c2bf5217f81fc6f345a15e79170ec7aa6b2f750",
|
||||
"30dbe4c5304a33d2131548d8c168c85225cd4b82",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"getViewerPose_emulatedPosition.https.html": [
|
||||
"d3f83dad26ac8280888f85a451016cefa78aa04a",
|
||||
"acba79136a2925ef8c37ffe0a992c5a8da967976",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -516247,7 +516310,7 @@
|
|||
],
|
||||
"hit-test": {
|
||||
"ar_hittest_subscription_inputSources.https.html": [
|
||||
"7b609d5e3a7b0990493af37f614086b552af7945",
|
||||
"d419055ab264276ab6c2c2f064ab11785440bdfe",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -516275,7 +516338,7 @@
|
|||
]
|
||||
],
|
||||
"ar_hittest_subscription_transientInputSources.https.html": [
|
||||
"385bb667b318cb5d043bafc74aebb59be805b826",
|
||||
"e38e9c601b312f1207cce29bd64d588381275e3c",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -516383,7 +516446,7 @@
|
|||
]
|
||||
],
|
||||
"xrBoundedReferenceSpace_updates.https.html": [
|
||||
"9043d59e3b2318fab182b85ab29d15ea4e2b41cb",
|
||||
"3d5040436657d7b09b290562f1cfde086b924495",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -516495,49 +516558,49 @@
|
|||
]
|
||||
],
|
||||
"xrInputSource_add_remove.https.html": [
|
||||
"33264ddd68ab09e2ed6a596614116bd1225f2665",
|
||||
"7764017910d2e5ada78febe954e9543aca89226b",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"xrInputSource_emulatedPosition.https.html": [
|
||||
"7b0fda4508748c81a0865d137847fd7f13a3ff97",
|
||||
"2bc21ffe6c395de22a1aa840cb8a97e44a81eebe",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"xrInputSource_profiles.https.html": [
|
||||
"32073c631f8ecfc3b19c33ed03e6b9999553cfec",
|
||||
"f55e682b67528c0e01406163490fa433a69d0592",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"xrInputSource_sameObject.https.html": [
|
||||
"78240de2f9019218061e45359cfad7cd28057d52",
|
||||
"305e5f9e0fccc8ef7a7d96d9e65da130b5f54239",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"xrPose_transform_sameObject.https.html": [
|
||||
"79eed4cdec4663b3a0a401aff80126e4dad767f9",
|
||||
"8e2239cff167cbb88b8702c4f3f413d447b5015e",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"xrReferenceSpace_originOffset.https.html": [
|
||||
"3d244b8ce29e2c74dd6f5c243dd2ab6679122c82",
|
||||
"f6929f27af0ee73676c09be7de25afa2ed3d1fd4",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"xrReferenceSpace_originOffsetBounded.https.html": [
|
||||
"c50aff2515b85ab119c3c1c43487a98c5bf8dddb",
|
||||
"7ce4acafd35ef7ccad553cdf15ebd43a0e24d6c7",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -516614,7 +516677,7 @@
|
|||
]
|
||||
],
|
||||
"xrSession_input_events_end.https.html": [
|
||||
"a932aad2fad78ceb2449928773da3ecfe237b8e7",
|
||||
"636562dd6ec06c1d5d84d73b0b10ed38d7950ad5",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -516670,7 +516733,7 @@
|
|||
]
|
||||
],
|
||||
"xrSession_sameObject.https.html": [
|
||||
"837fa0a008d6cdfcbd9ee134e7ec78bce7c2b95b",
|
||||
"66aeef81c50c36ff2fc50dcc7c45749f25605893",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -516698,7 +516761,7 @@
|
|||
]
|
||||
],
|
||||
"xrStationaryReferenceSpace_floorlevel_updates.https.html": [
|
||||
"3f33cf354b8d3fde3d0a2efd3d92b78037a9178a",
|
||||
"967291609c0f05a9e457e3ffa2a77f601fa9d461",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-002.html]
|
||||
[Hit test float]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-003.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
[hit-test-floats-004.html]
|
||||
[Miss float below something else]
|
||||
expected: FAIL
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
[mix-blend-mode-animation.html]
|
||||
expected: FAIL
|
|
@ -509,3 +509,93 @@
|
|||
[border-left-width length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[left length(px) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top length(in) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[left length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(em) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top length(mm) / values]
|
||||
expected: FAIL
|
||||
|
||||
[left length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(pc) / values]
|
||||
expected: FAIL
|
||||
|
||||
[top length(ex) / values]
|
||||
expected: FAIL
|
||||
|
||||
[right length(pt) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom percentage(%) / values]
|
||||
expected: FAIL
|
||||
|
||||
[bottom length(cm) / values]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,6 +2,3 @@
|
|||
[listeners are called when <iframe> is resized]
|
||||
expected: FAIL
|
||||
|
||||
[listeners are called correct number of times]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -21,6 +21,3 @@
|
|||
[test the top of layer]
|
||||
expected: FAIL
|
||||
|
||||
[test some point of the element: top left corner]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -2,6 +2,3 @@
|
|||
[elementsFromPoint on the root document for points in iframe elements]
|
||||
expected: FAIL
|
||||
|
||||
[elementsFromPoint on inner documents]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
expected: TIMEOUT
|
||||
|
||||
[Listener of animationend]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Legacy listener of animationend]
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -312,12 +312,6 @@
|
|||
[fetch(): separate response Content-Type: text/plain ]
|
||||
expected: NOTRUN
|
||||
|
||||
[<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/html;x=" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -327,3 +321,18 @@
|
|||
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*;charset=gbk]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -59,6 +59,3 @@
|
|||
[separate text/javascript;charset=windows-1252 text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_1.html]
|
||||
[Multiple history traversals from the same task]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_2.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[traverse_the_history_5.html]
|
||||
[Multiple history traversals, last would be aborted]
|
||||
expected: FAIL
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
[cross-origin-objects-on-new-window.html]
|
||||
expected: TIMEOUT
|
|
@ -1,4 +0,0 @@
|
|||
[size.attributes.parse.empty.html]
|
||||
[Parsing of non-negative integers]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[size.attributes.parse.empty.worker.html]
|
||||
[Parsing of non-negative integers]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[size.attributes.parse.onlyspace.html]
|
||||
[Parsing of non-negative integers]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
[size.attributes.parse.onlyspace.worker.html]
|
||||
[Parsing of non-negative integers]
|
||||
expected: FAIL
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
[supported-elements.html]
|
||||
expected: TIMEOUT
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Element with tabindex should support autofocus]
|
||||
expected: TIMEOUT
|
||||
expected: NOTRUN
|
||||
|
||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
type: testharness
|
||||
expected: CRASH
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_nonescaping-3.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
expected: CRASH
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: NOTRUN
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -191,3 +191,6 @@
|
|||
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 44054 more errors.\n\tMax AbsError of 1.9961981773376465e+0 at index of 31768.\n\t[31768\]\t-9.9879217147827148e-1\t9.9740600585937500e-1\t1.9961981773376465e+0\t2.0013897706758867e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 10584.\n\t[10584\]\t-5.8778524398803711e-1\t0.0000000000000000e+0\t5.8778524398803711e-1\tInfinity\t3.0517578125000000e-5\n]
|
||||
expected: FAIL
|
||||
|
||||
[X Rendered audio for channel 5 does not equal [0,0.0626220703125,0.125030517578125,0.18695068359375,0.24810791015625,0.308319091796875,0.3673095703125,0.42486572265625,0.480743408203125,0.53472900390625,0.58660888671875,0.636199951171875,0.68328857421875,0.727691650390625,0.76922607421875,0.8077392578125...\] with an element-wise tolerance of {"absoluteThreshold":0.000030517578125,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[1\]\t3.6732959747314453e-1\t6.2622070312500000e-2\t3.0470752716064453e-1\t4.8658168859649127e+0\t3.0517578125000000e-5\n\t[2\]\t6.8329977989196777e-1\t1.2503051757812500e-1\t5.5826926231384277e-1\t4.4650639949963384e+0\t3.0517578125000000e-5\n\t[3\]\t9.0373212099075317e-1\t1.8695068359375000e-1\t7.1678143739700317e-1\t3.8340669508039502e+0\t3.0517578125000000e-5\n\t[4\]\t9.9780619144439697e-1\t2.4810791015625000e-1\t7.4969828128814697e-1\t3.0216621502152523e+0\t3.0517578125000000e-5\n\t[5\]\t9.5236867666244507e-1\t3.0831909179687500e-1\t6.4404958486557007e-1\t2.0889059484187866e+0\t3.0517578125000000e-5\n\t...and 42291 more errors.\n\tMax AbsError of 1.9986916780471802e+0 at index of 42250.\n\t[42250\]\t9.9994289875030518e-1\t-9.9874877929687500e-1\t1.9986916780471802e+0\t2.0011956154322119e+0\t3.0517578125000000e-5\n\tMax RelError of Infinity at index of 12348.\n\t[12348\]\t9.5105654001235962e-1\t0.0000000000000000e+0\t9.5105654001235962e-1\tInfinity\t3.0517578125000000e-5\n]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[017.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, about:blank]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[018.html]
|
||||
expected: TIMEOUT
|
||||
[origin of the script that invoked the method, javascript:]
|
||||
expected: TIMEOUT
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
[xrInputSource_gamepad_disconnect.https.html]
|
||||
expected: ERROR
|
||||
[WebXR InputSource's gamepad gets disconnected when the input source is removed]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -10868,7 +10868,7 @@
|
|||
[]
|
||||
]
|
||||
},
|
||||
"lint.whitelist": [
|
||||
"lint.ignore": [
|
||||
"314a9e5b44443be1a4e28dd3c5047a5082a7ccab",
|
||||
[]
|
||||
],
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
<!doctype html>
|
||||
<title>CSS test reference</title>
|
||||
<style>
|
||||
div { background: green; border: 1px solid; }
|
||||
</style>
|
||||
<div><br></div>
|
||||
<div><br></div>
|
||||
<div><br></div>
|
||||
<div><br></div>
|
|
@ -0,0 +1,21 @@
|
|||
<!doctype html>
|
||||
<title>contenteditable causes blocks to have a synthesized height</title>
|
||||
<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://bugzilla.mozilla.org/show_bug.cgi?id=1098151">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1634543">
|
||||
<link rel="help" href="https://github.com/w3c/editing/issues/70">
|
||||
<link rel="match" href="synthetic-height-ref.html">
|
||||
<style>
|
||||
div { background: green; border: 1px solid; }
|
||||
.pseudo::before {
|
||||
content: "";
|
||||
}
|
||||
.abspos-pseudo::before {
|
||||
position: absolute;
|
||||
}
|
||||
</style>
|
||||
<div contenteditable></div>
|
||||
<div contenteditable><span style="position: absolute"></span></div>
|
||||
<div contenteditable class="pseudo"></div>
|
||||
<div contenteditable class="pseudo abspos-pseudo"></div>
|
|
@ -0,0 +1,28 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<meta name="viewport" content="width=device-width, user-scalable=no">
|
||||
<link rel="help" href="https://drafts.csswg.org/css-device-adapt/">
|
||||
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/5016">
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
#content {
|
||||
width: 10000px;
|
||||
height: 10000px;
|
||||
background: green;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="content">Content</div>
|
||||
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script>
|
||||
'use strict';
|
||||
test(() => {
|
||||
assert_equals(window.visualViewport.scale, 1.0,
|
||||
'visual viewport scale should be 1.0');
|
||||
}, 'Page with meta viewport "width=device-width, user-scalable=no" ' +
|
||||
'should scale document with very wide content to 1.0.');
|
||||
</script>
|
|
@ -4,29 +4,39 @@
|
|||
<link rel="help" href="https://wicg.github.io/construct-stylesheets/">
|
||||
<script src = '/resources/testharness.js'></script>
|
||||
<script src = '/resources/testharnessreport.js'></script>
|
||||
<style id="style">:root { background-color: lime }</style>
|
||||
<style id="style">
|
||||
@import url("support/constructable-import.css");
|
||||
:root { background-color: lime }
|
||||
</style>
|
||||
<script>
|
||||
|
||||
test(() => {
|
||||
promise_test(async () => {
|
||||
await new Promise(resolve => window.addEventListener("load", resolve));
|
||||
assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "precondition")
|
||||
let sheet = document.styleSheets[0];
|
||||
let childSheet = sheet.cssRules[0].styleSheet;
|
||||
assert_throws_dom("NotAllowedError", () => sheet.replaceSync(":root { background-color: red }"), "replaceSync on non-constructed sheet should throw");
|
||||
assert_throws_dom("NotAllowedError", () => childSheet.replaceSync(":root { background-color: red }"), "replaceSync on non-constructed sheet should throw");
|
||||
assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "old sheet should still apply after replace");
|
||||
}, "CSSStyleSheet.replaceSync throws NotAllowedError for non-constructed sheets")
|
||||
|
||||
promise_test(async function(t) {
|
||||
assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "precondition")
|
||||
let sheet = document.styleSheets[0];
|
||||
let childSheet = sheet.cssRules[0].styleSheet;
|
||||
await promise_rejects_dom(t, "NotAllowedError", sheet.replace(":root { background-color: red }"), "replace on non-constructed sheet should return a rejected promise");
|
||||
await promise_rejects_dom(t, "NotAllowedError", childSheet.replace(":root { background-color: red }"), "replace on non-constructed sheet should return a rejected promise");
|
||||
assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "old sheet should still apply after replace");
|
||||
}, "CSSStyleSheet.replace returns a rejected promise for non-constructed sheets")
|
||||
|
||||
promise_test(async function(t) {
|
||||
assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "precondition")
|
||||
let sheet = document.styleSheets[0];
|
||||
let childSheet = sheet.cssRules[0].styleSheet;
|
||||
style.remove() // sheet's associated document becomes null.
|
||||
await promise_rejects_dom(t, "NotAllowedError", sheet.replace(":root { background-color: red }"), "replace on non-constructed sheet should return a rejected promise");
|
||||
assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgb(0, 255, 0)", "old sheet should still apply after replace");
|
||||
await promise_rejects_dom(t, "NotAllowedError", childSheet.replace(":root { background-color: red }"), "replace on non-constructed sheet should return a rejected promise");
|
||||
assert_equals(getComputedStyle(document.documentElement).backgroundColor, "rgba(0, 0, 0, 0)", "old sheet was removed, so the default color should apply");
|
||||
}, "CSSStyleSheet.replace returns a rejected promise for non-constructed sheets that have no associated document")
|
||||
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,83 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="timeout" content="long">
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
</head>
|
||||
<body>
|
||||
<script src=/feature-policy/resources/featurepolicy.js></script>
|
||||
<!-- Feature-Policy: fullscreen 'self' cross_origin https://www.example.com; -->
|
||||
<script>
|
||||
'use strict';
|
||||
var same_origin = 'https://{{domains[]}}:{{ports[https][0]}}';
|
||||
var cross_origin = 'https://{{domains[www]}}:{{ports[https][0]}}';
|
||||
var cross_origin1 = 'https://{{domains[www1]}}:{{ports[https][0]}}';
|
||||
var same_origin_src = '/feature-policy/resources/feature-policy-allowedfeatures.html';
|
||||
var cross_origin_src = cross_origin + same_origin_src;
|
||||
var cross_origin_src1 = cross_origin1 + same_origin_src;
|
||||
var data_src = 'data:text/html,<h1>data: URL</h1>';
|
||||
// Test feature policy with same_origin_src and cross_origin_src.
|
||||
var policies = [
|
||||
{allow: "*", sameOriginTestExpect: true, crossOriginTestExpect: true, crossOrigin1TestExpect: true, dataOriginTestExpect: false},
|
||||
{allow: "'self'", sameOriginTestExpect: true, crossOriginTestExpect: false, crossOrigin1TestExpect: false, dataOriginTestExpect: false},
|
||||
{allow: "'none'", sameOriginTestExpect: false, crossOriginTestExpect: false, crossOrigin1TestExpect: false, dataOriginTestExpect: false},
|
||||
{allow: "'self' " + cross_origin + " https://www.example.com", sameOriginTestExpect: true, crossOriginTestExpect: true, crossOrigin1TestExpect: false, dataOriginTestExpect: false}];
|
||||
|
||||
// Test that the allow attribute overrides allowfullscreen.
|
||||
for (var i = 0; i < policies.length; i++) {
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', same_origin_src, undefined,
|
||||
policies[i].sameOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on same origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', cross_origin_src, undefined,
|
||||
policies[i].crossOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on cross origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', cross_origin_src1, undefined,
|
||||
policies[i].crossOrigin1TestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on another cross origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', undefined, true, policies[i].sameOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on srcdoc iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', same_origin_src, true, policies[i].sameOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on srcdoc + same origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', cross_origin_src, true, policies[i].sameOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on srcdoc + cross origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', cross_origin_src1, true, policies[i].sameOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on srcdoc + another cross origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', data_src, undefined, policies[i].dataOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on data: URL cross origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1 @@
|
|||
Feature-Policy: fullscreen 'self' https://{{domains[www]}}:{{ports[https][0]}} https://www.example.com;
|
|
@ -131,61 +131,6 @@
|
|||
'" and header policy = "Feature-Policy: fullscreen ' + header_policies[j] + ';".');
|
||||
}
|
||||
}
|
||||
|
||||
// Test that the allow attribute overrides allowfullscreen.
|
||||
for (var i = 0; i < policies.length; i++) {
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', same_origin_src, undefined,
|
||||
policies[i].sameOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on same origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', cross_origin_src, undefined,
|
||||
policies[i].crossOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on cross origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', cross_origin_src1, undefined,
|
||||
policies[i].crossOrigin1TestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on another cross origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', undefined, true, policies[i].sameOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on srcdoc iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', same_origin_src, true, policies[i].sameOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on srcdoc + same origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', cross_origin_src, true, policies[i].sameOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on srcdoc + cross origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', cross_origin_src1, true, policies[i].sameOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on srcdoc + another cross origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
test(function() {
|
||||
test_frame_policy(
|
||||
'fullscreen', data_src, undefined, policies[i].dataOriginTestExpect,
|
||||
'fullscreen ' + policies[i].allow + ';', /*allowfullscreen*/true);
|
||||
}, 'Test frame policy on data: URL cross origin iframe with allow = "' + policies[i].allow +
|
||||
'" and allowfullscreen.');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -22,8 +22,8 @@ var ctx = offscreenCanvas.getContext('2d');
|
|||
|
||||
offscreenCanvas.width = '';
|
||||
offscreenCanvas.height = '';
|
||||
_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100");
|
||||
_assertSame(offscreenCanvas.height, 50, "offscreenCanvas.height", "50");
|
||||
_assertSame(offscreenCanvas.width, 0, "offscreenCanvas.width", "0");
|
||||
_assertSame(offscreenCanvas.height, 0, "offscreenCanvas.height", "0");
|
||||
t.done();
|
||||
|
||||
});
|
||||
|
|
|
@ -18,8 +18,8 @@ var ctx = offscreenCanvas.getContext('2d');
|
|||
|
||||
offscreenCanvas.width = '';
|
||||
offscreenCanvas.height = '';
|
||||
_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100");
|
||||
_assertSame(offscreenCanvas.height, 50, "offscreenCanvas.height", "50");
|
||||
_assertSame(offscreenCanvas.width, 0, "offscreenCanvas.width", "0");
|
||||
_assertSame(offscreenCanvas.height, 0, "offscreenCanvas.height", "0");
|
||||
t.done();
|
||||
|
||||
});
|
||||
|
|
|
@ -22,8 +22,8 @@ var ctx = offscreenCanvas.getContext('2d');
|
|||
|
||||
offscreenCanvas.width = ' ';
|
||||
offscreenCanvas.height = ' ';
|
||||
_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100");
|
||||
_assertSame(offscreenCanvas.height, 50, "offscreenCanvas.height", "50");
|
||||
_assertSame(offscreenCanvas.width, 0, "offscreenCanvas.width", "0");
|
||||
_assertSame(offscreenCanvas.height, 0, "offscreenCanvas.height", "0");
|
||||
t.done();
|
||||
|
||||
});
|
||||
|
|
|
@ -18,8 +18,8 @@ var ctx = offscreenCanvas.getContext('2d');
|
|||
|
||||
offscreenCanvas.width = ' ';
|
||||
offscreenCanvas.height = ' ';
|
||||
_assertSame(offscreenCanvas.width, 100, "offscreenCanvas.width", "100");
|
||||
_assertSame(offscreenCanvas.height, 50, "offscreenCanvas.height", "50");
|
||||
_assertSame(offscreenCanvas.width, 0, "offscreenCanvas.width", "0");
|
||||
_assertSame(offscreenCanvas.height, 0, "offscreenCanvas.height", "0");
|
||||
t.done();
|
||||
|
||||
});
|
||||
|
|
|
@ -9778,8 +9778,8 @@
|
|||
- meta: |
|
||||
cases = [
|
||||
("zero", "0", 0),
|
||||
("empty", "", None),
|
||||
("onlyspace", " ", None),
|
||||
("empty", "", 0),
|
||||
("onlyspace", " ", 0),
|
||||
("space", " 100", 100),
|
||||
("whitespace", "\t\f100", 100),
|
||||
("plus", "+100", 100),
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
<!doctype html>
|
||||
<title>focus(options) - preventScroll on textarea element</title>
|
||||
<link rel="author" href="https://mozilla.org" title="Mozilla">
|
||||
<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
|
||||
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1634153">
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<div style="height: 200vh"></div>
|
||||
<textarea>ABCD</textarea>
|
||||
<input value="EFGH">
|
||||
<button></button>
|
||||
<div style="height: 200vh"></div>
|
||||
<script>
|
||||
promise_test(async function(t) {
|
||||
await new Promise(resolve => window.addEventListener("load", resolve));
|
||||
let elements = document.querySelectorAll("textarea, input, button");
|
||||
assert_equals(elements.length, 3, `Precondition`);
|
||||
for (let element of elements) {
|
||||
let name = element.nodeName;
|
||||
assert_equals(window.scrollY, 0, `${name}: Precondition`);
|
||||
element.focus({ preventScroll: true });
|
||||
assert_equals(window.scrollY, 0, `${name}: Should not have scrolled`);
|
||||
assert_equals(document.activeElement, element, `${name}: Should have been focused`);
|
||||
|
||||
// Wait a couple event loop turns because the original bug was triggered off
|
||||
// an async event.
|
||||
await new Promise(resolve => t.step_timeout(resolve, 0));
|
||||
await new Promise(resolve => t.step_timeout(resolve, 0));
|
||||
assert_equals(window.scrollY, 0, `${name}: Should not have scrolled after a couple event loop ticks`);
|
||||
assert_equals(document.activeElement, element, `${name}: Should remain focused`);
|
||||
|
||||
// Also wait for rendering, just out of paranoia.
|
||||
await new Promise(resolve => requestAnimationFrame(resolve));
|
||||
await new Promise(resolve => requestAnimationFrame(resolve));
|
||||
|
||||
assert_equals(window.scrollY, 0, `${name}: Should not have scrolled after rendering`);
|
||||
assert_equals(document.activeElement, element, `${name}: Should remain focused after rendering`);
|
||||
}
|
||||
}, "preventScroll: true on a textarea element");
|
||||
</script>
|
|
@ -1,4 +1,17 @@
|
|||
[http2-context.sub.h2.any.sharedworker.html]
|
||||
bug: https://bugs.webkit.org/show_bug.cgi?id=149850
|
||||
expected:
|
||||
if product == "safari" or product == "epiphany" or product == "webkit": ERROR
|
||||
if product == "safari" or product == "epiphany" or product == "webkit" or python_version == 3: ERROR
|
||||
|
||||
[http2-context.sub.h2.any.serviceworker.html]
|
||||
expected:
|
||||
if python_version == 3: ERROR
|
||||
|
||||
[http2-context.sub.h2.any.html]
|
||||
expected:
|
||||
if python_version == 3: ERROR
|
||||
|
||||
[http2-context.sub.h2.any.worker.html]
|
||||
expected:
|
||||
if python_version == 3: ERROR
|
||||
|
||||
|
|
|
@ -18,3 +18,28 @@
|
|||
[HTTPS protocol, punycode subdomain #2]
|
||||
expected:
|
||||
if product == "epiphany" or product == "webkit": FAIL
|
||||
|
||||
[H2 protocol, no subdomain]
|
||||
expected:
|
||||
if python_version == 3: FAIL
|
||||
|
||||
[H2 protocol, www subdomain #1]
|
||||
expected:
|
||||
if python_version == 3: FAIL
|
||||
|
||||
[H2 protocol, www subdomain #2]
|
||||
expected:
|
||||
if python_version == 3: FAIL
|
||||
|
||||
[H2 protocol, www subdomain #3]
|
||||
expected:
|
||||
if python_version == 3: FAIL
|
||||
|
||||
[H2 protocol, punycode subdomain #1]
|
||||
expected:
|
||||
if python_version == 3: FAIL
|
||||
|
||||
[H2 protocol, punycode subdomain #2]
|
||||
expected:
|
||||
if python_version == 3: FAIL
|
||||
|
||||
|
|
|
@ -80,5 +80,8 @@ dictionary NDEFWriteOptions {
|
|||
};
|
||||
|
||||
dictionary NDEFScanOptions {
|
||||
USVString id;
|
||||
USVString recordType;
|
||||
USVString mediaType;
|
||||
AbortSignal? signal;
|
||||
};
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
spec: https://wicg.github.io/largest-contentful-paint/
|
||||
suggested_reviewers:
|
||||
- npm1
|
||||
- yoavweiss
|
4
tests/wpt/web-platform-tests/layout-instability/META.yml
Normal file
4
tests/wpt/web-platform-tests/layout-instability/META.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
spec: https://wicg.github.io/layout-instability/
|
||||
suggested_reviewers:
|
||||
- skobes
|
||||
- npm1
|
|
@ -0,0 +1,41 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>ScrollTimeline snapshotting</title>
|
||||
<link rel="help" href="https://wicg.github.io/scroll-animations/#avoiding-cycles">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/resources/testdriver-actions.js"></script>
|
||||
<script src="/web-animations/testcommon.js"></script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
height: 800px;
|
||||
width: 800px;
|
||||
}
|
||||
</style>
|
||||
<div id="log"></div>
|
||||
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
promise_test(async t => {
|
||||
const scroller = document.scrollingElement;
|
||||
const maxScroll = scroller.scrollHeight - scroller.clientHeight;
|
||||
const timeline = new ScrollTimeline(
|
||||
{scrollSource: scroller, timeRange: maxScroll});
|
||||
scroller.scrollTo(0, 0);
|
||||
assert_equals(scroller.scrollTop, 0, "verify test pre-condition");
|
||||
|
||||
scroller.scrollBy({top:100, behavior:'smooth'})
|
||||
// Wait for the scroll to change.
|
||||
const startScroll = scroller.scrollTop;
|
||||
do {
|
||||
await waitForNextFrame();
|
||||
} while(scroller.scrollTop == startScroll);
|
||||
assert_times_equal(timeline.currentTime, scroller.scrollTop,
|
||||
'Scroll timeline current time corresponds to the scroll position.');
|
||||
}, 'ScrollTimeline current time is updated after programmatic animated scroll.');
|
||||
|
||||
</script>
|
|
@ -6,19 +6,24 @@ WPT_ROOT=$SCRIPT_DIR/../..
|
|||
cd $WPT_ROOT
|
||||
|
||||
test_infrastructure() {
|
||||
TERM=dumb ./wpt run --log-mach - --yes --manifest ~/meta/MANIFEST.json --metadata infrastructure/metadata/ --install-fonts $1 $PRODUCT 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/
|
||||
}
|
||||
|
||||
main() {
|
||||
if [[ $# -eq 1 && "$1" = "--py3" ]]; then
|
||||
PRODUCTS=( "chrome" )
|
||||
else
|
||||
PRODUCTS=( "firefox" "chrome" )
|
||||
fi
|
||||
./wpt manifest --rebuild -p ~/meta/MANIFEST.json
|
||||
for PRODUCT in "${PRODUCTS[@]}"; do
|
||||
if [[ "$PRODUCT" == "chrome" ]]; then
|
||||
test_infrastructure "--binary=$(which google-chrome-unstable) --channel dev"
|
||||
test_infrastructure "--binary=$(which google-chrome-unstable) --channel dev" "$1"
|
||||
else
|
||||
test_infrastructure "--binary=~/build/firefox/firefox"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
main
|
||||
main $1
|
||||
|
|
|
@ -454,3 +454,28 @@ tasks:
|
|||
schedule-if:
|
||||
run-job:
|
||||
- wptrunner_infrastructure
|
||||
|
||||
- infrastructure/ tests (Python 3):
|
||||
description: >-
|
||||
Smoketests for wptrunner
|
||||
vars:
|
||||
channel: nightly
|
||||
use:
|
||||
- wpt-base
|
||||
- trigger-pr
|
||||
command: ./tools/ci/ci_wptrunner_infrastructure.sh --py3
|
||||
install:
|
||||
- python3-pip
|
||||
- libnss3-tools
|
||||
- libappindicator1
|
||||
- fonts-liberation
|
||||
options:
|
||||
oom-killer: true
|
||||
browser:
|
||||
- chrome
|
||||
channel: experimental
|
||||
xvfb: true
|
||||
hosts: false
|
||||
schedule-if:
|
||||
run-job:
|
||||
- wptrunner_infrastructure
|
||||
|
|
|
@ -132,7 +132,8 @@ def test_verify_payload():
|
|||
'tools/wpt/ tests (Python 3.6)',
|
||||
'tools/wpt/ tests (Python 3.8)',
|
||||
'resources/ tests',
|
||||
'infrastructure/ tests'}),
|
||||
'infrastructure/ tests',
|
||||
'infrastructure/ tests (Python 3)'}),
|
||||
# More tests are affected in the actual PR but it shouldn't affect the scheduled tasks
|
||||
("pr_event_tests_affected.json", True, {"layout-instability/clip-negative-bottom-margin.html",
|
||||
"layout-instability/composited-element-movement.html"},
|
||||
|
|
|
@ -41,7 +41,12 @@ if MYPY:
|
|||
from typing import Type
|
||||
from typing import Union
|
||||
|
||||
Whitelist = Dict[Text, Dict[Text, Set[Optional[int]]]]
|
||||
# The Ignorelist is a two level dictionary. The top level is indexed by
|
||||
# error names (e.g. 'TRAILING WHITESPACE'). Each of those then has a map of
|
||||
# file patterns (e.g. 'foo/*') to a set of specific line numbers for the
|
||||
# exception. The line numbers are optional; if missing the entire file
|
||||
# ignores the error.
|
||||
Ignorelist = Dict[Text, Dict[Text, Set[Optional[int]]]]
|
||||
|
||||
|
||||
logger = None # type: Optional[logging.Logger]
|
||||
|
@ -75,12 +80,12 @@ ERROR_MSG = """You must fix all errors; for details on how to fix them, see
|
|||
https://web-platform-tests.org/writing-tests/lint-tool.html
|
||||
|
||||
However, instead of fixing a particular error, it's sometimes
|
||||
OK to add a line to the lint.whitelist file in the root of the
|
||||
OK to add a line to the lint.ignore file in the root of the
|
||||
web-platform-tests directory to make the lint tool ignore it.
|
||||
|
||||
For example, to make the lint tool ignore all '%s'
|
||||
errors in the %s file,
|
||||
you could add the following line to the lint.whitelist file.
|
||||
you could add the following line to the lint.ignore file.
|
||||
|
||||
%s: %s"""
|
||||
|
||||
|
@ -318,14 +323,17 @@ def check_css_globally_unique(repo_root, paths):
|
|||
return errors
|
||||
|
||||
|
||||
def parse_whitelist(f):
|
||||
# type: (IO[bytes]) -> Tuple[Whitelist, Set[Text]]
|
||||
def parse_ignorelist(f):
|
||||
# type: (IO[bytes]) -> Tuple[Ignorelist, Set[Text]]
|
||||
"""
|
||||
Parse the whitelist file given by `f`, and return the parsed structure.
|
||||
Parse the ignorelist file given by `f`, and return the parsed structure.
|
||||
|
||||
:returns: a tuple of an Ignorelist and a set of files that are completely
|
||||
skipped by the linter (i.e. have a '*' entry).
|
||||
"""
|
||||
|
||||
data = defaultdict(lambda:defaultdict(set)) # type: Whitelist
|
||||
ignored_files = set() # type: Set[Text]
|
||||
data = defaultdict(lambda:defaultdict(set)) # type: Ignorelist
|
||||
skipped_files = set() # type: Set[Text]
|
||||
|
||||
for line in f:
|
||||
line = line.strip()
|
||||
|
@ -344,37 +352,37 @@ def parse_whitelist(f):
|
|||
file_match = os.path.normcase(file_match)
|
||||
|
||||
if "*" in error_types:
|
||||
ignored_files.add(file_match)
|
||||
skipped_files.add(file_match)
|
||||
else:
|
||||
for error_type in error_types:
|
||||
data[error_type][file_match].add(line_number)
|
||||
|
||||
return data, ignored_files
|
||||
return data, skipped_files
|
||||
|
||||
|
||||
def filter_whitelist_errors(data, errors):
|
||||
# type: (Whitelist, Sequence[rules.Error]) -> List[rules.Error]
|
||||
def filter_ignorelist_errors(data, errors):
|
||||
# type: (Ignorelist, Sequence[rules.Error]) -> List[rules.Error]
|
||||
"""
|
||||
Filter out those errors that are whitelisted in `data`.
|
||||
Filter out those errors that are ignored in `data`.
|
||||
"""
|
||||
|
||||
if not errors:
|
||||
return []
|
||||
|
||||
whitelisted = [False for item in range(len(errors))]
|
||||
skipped = [False for item in range(len(errors))]
|
||||
|
||||
for i, (error_type, msg, path, line) in enumerate(errors):
|
||||
normpath = os.path.normcase(path)
|
||||
# Allow whitelisting all lint errors except the IGNORED PATH lint,
|
||||
# which explains how to fix it correctly and shouldn't be ignored.
|
||||
# Allow skipping all lint errors except the IGNORED PATH lint,
|
||||
# which explains how to fix it correctly and shouldn't be skipped.
|
||||
if error_type in data and error_type != "IGNORED PATH":
|
||||
wl_files = data[error_type]
|
||||
for file_match, allowed_lines in iteritems(wl_files):
|
||||
if None in allowed_lines or line in allowed_lines:
|
||||
if fnmatch.fnmatchcase(normpath, file_match):
|
||||
whitelisted[i] = True
|
||||
skipped[i] = True
|
||||
|
||||
return [item for i, item in enumerate(errors) if not whitelisted[i]]
|
||||
return [item for i, item in enumerate(errors) if not skipped[i]]
|
||||
|
||||
|
||||
regexps = [item() for item in # type: ignore
|
||||
|
@ -805,7 +813,7 @@ def lint_paths(kwargs, wpt_root):
|
|||
force_all = False
|
||||
for path in changed_paths:
|
||||
path = path.replace(os.path.sep, "/")
|
||||
if path == "lint.whitelist" or path.startswith("tools/lint/"):
|
||||
if path == "lint.ignore" or path.startswith("tools/lint/"):
|
||||
force_all = True
|
||||
break
|
||||
paths = (list(changed_paths) if not force_all # type: ignore
|
||||
|
@ -859,11 +867,11 @@ def lint(repo_root, paths, output_format, ignore_glob=str()):
|
|||
error_count = defaultdict(int) # type: Dict[Text, int]
|
||||
last = None
|
||||
|
||||
with open(os.path.join(repo_root, "lint.whitelist")) as f:
|
||||
whitelist, ignored_files = parse_whitelist(f)
|
||||
with open(os.path.join(repo_root, "lint.ignore")) as f:
|
||||
ignorelist, skipped_files = parse_ignorelist(f)
|
||||
|
||||
if ignore_glob:
|
||||
ignored_files.add(ignore_glob)
|
||||
skipped_files.add(ignore_glob)
|
||||
|
||||
output_errors = {"json": output_errors_json,
|
||||
"markdown": output_errors_markdown,
|
||||
|
@ -879,7 +887,7 @@ def lint(repo_root, paths, output_format, ignore_glob=str()):
|
|||
a tuple of the error type and the path otherwise
|
||||
"""
|
||||
|
||||
errors = filter_whitelist_errors(whitelist, errors)
|
||||
errors = filter_ignorelist_errors(ignorelist, errors)
|
||||
|
||||
if not errors:
|
||||
return None
|
||||
|
@ -896,7 +904,7 @@ def lint(repo_root, paths, output_format, ignore_glob=str()):
|
|||
paths.remove(path)
|
||||
continue
|
||||
|
||||
if any(fnmatch.fnmatch(path, file_match) for file_match in ignored_files):
|
||||
if any(fnmatch.fnmatch(path, file_match) for file_match in skipped_files):
|
||||
paths.remove(path)
|
||||
continue
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ import six
|
|||
|
||||
from ...localpaths import repo_root
|
||||
from .. import lint as lint_mod
|
||||
from ..lint import filter_whitelist_errors, parse_whitelist, lint, create_parser
|
||||
from ..lint import filter_ignorelist_errors, parse_ignorelist, lint, create_parser
|
||||
|
||||
_dummy_repo = os.path.join(os.path.dirname(__file__), "dummy")
|
||||
|
||||
|
@ -17,8 +17,8 @@ def _mock_lint(name, **kwargs):
|
|||
return mock.patch(lint_mod.__name__ + "." + name, wraps=wrapped, **kwargs)
|
||||
|
||||
|
||||
def test_filter_whitelist_errors():
|
||||
whitelist = {
|
||||
def test_filter_ignorelist_errors():
|
||||
ignorelist = {
|
||||
'CONSOLE': {
|
||||
'svg/*': {12}
|
||||
},
|
||||
|
@ -26,34 +26,34 @@ def test_filter_whitelist_errors():
|
|||
'svg/*': {None}
|
||||
}
|
||||
}
|
||||
# parse_whitelist normalises the case/path of the match string so need to do the same
|
||||
whitelist = {e: {os.path.normcase(k): v for k, v in p.items()}
|
||||
for e, p in whitelist.items()}
|
||||
# paths passed into filter_whitelist_errors are always Unix style
|
||||
# parse_ignorelist normalises the case/path of the match string so need to do the same
|
||||
ignorelist = {e: {os.path.normcase(k): v for k, v in p.items()}
|
||||
for e, p in ignorelist.items()}
|
||||
# paths passed into filter_ignorelist_errors are always Unix style
|
||||
filteredfile = 'svg/test.html'
|
||||
unfilteredfile = 'html/test.html'
|
||||
# Tests for passing no errors
|
||||
filtered = filter_whitelist_errors(whitelist, [])
|
||||
filtered = filter_ignorelist_errors(ignorelist, [])
|
||||
assert filtered == []
|
||||
filtered = filter_whitelist_errors(whitelist, [])
|
||||
filtered = filter_ignorelist_errors(ignorelist, [])
|
||||
assert filtered == []
|
||||
# Tests for filtering on file and line number
|
||||
filtered = filter_whitelist_errors(whitelist, [['CONSOLE', '', filteredfile, 12]])
|
||||
filtered = filter_ignorelist_errors(ignorelist, [['CONSOLE', '', filteredfile, 12]])
|
||||
assert filtered == []
|
||||
filtered = filter_whitelist_errors(whitelist, [['CONSOLE', '', unfilteredfile, 12]])
|
||||
filtered = filter_ignorelist_errors(ignorelist, [['CONSOLE', '', unfilteredfile, 12]])
|
||||
assert filtered == [['CONSOLE', '', unfilteredfile, 12]]
|
||||
filtered = filter_whitelist_errors(whitelist, [['CONSOLE', '', filteredfile, 11]])
|
||||
filtered = filter_ignorelist_errors(ignorelist, [['CONSOLE', '', filteredfile, 11]])
|
||||
assert filtered == [['CONSOLE', '', filteredfile, 11]]
|
||||
# Tests for filtering on just file
|
||||
filtered = filter_whitelist_errors(whitelist, [['INDENT TABS', '', filteredfile, 12]])
|
||||
filtered = filter_ignorelist_errors(ignorelist, [['INDENT TABS', '', filteredfile, 12]])
|
||||
assert filtered == []
|
||||
filtered = filter_whitelist_errors(whitelist, [['INDENT TABS', '', filteredfile, 11]])
|
||||
filtered = filter_ignorelist_errors(ignorelist, [['INDENT TABS', '', filteredfile, 11]])
|
||||
assert filtered == []
|
||||
filtered = filter_whitelist_errors(whitelist, [['INDENT TABS', '', unfilteredfile, 11]])
|
||||
filtered = filter_ignorelist_errors(ignorelist, [['INDENT TABS', '', unfilteredfile, 11]])
|
||||
assert filtered == [['INDENT TABS', '', unfilteredfile, 11]]
|
||||
|
||||
|
||||
def test_parse_whitelist():
|
||||
def test_parse_ignorelist():
|
||||
input_buffer = six.StringIO("""
|
||||
# Comment
|
||||
CR AT EOL: svg/import/*
|
||||
|
@ -100,10 +100,10 @@ CR AT EOL, INDENT TABS: html/test2.js: 42
|
|||
}
|
||||
expected_data = {e: {os.path.normcase(k): v for k, v in p.items()}
|
||||
for e, p in expected_data.items()}
|
||||
expected_ignored = {os.path.normcase(x) for x in {"*.pdf", "resources/*", "*.png"}}
|
||||
data, ignored = parse_whitelist(input_buffer)
|
||||
expected_skipped = {os.path.normcase(x) for x in {"*.pdf", "resources/*", "*.png"}}
|
||||
data, skipped_files = parse_ignorelist(input_buffer)
|
||||
assert data == expected_data
|
||||
assert ignored == expected_ignored
|
||||
assert skipped_files == expected_skipped
|
||||
|
||||
|
||||
def test_lint_no_files(caplog):
|
||||
|
|
|
@ -272,9 +272,6 @@ class FirefoxInstanceManager(object):
|
|||
if self.enable_webrender:
|
||||
env["MOZ_WEBRENDER"] = "1"
|
||||
env["MOZ_ACCELERATED"] = "1"
|
||||
# Set MOZ_X_SYNC and GDK_SYNCHRONIZE for investigation; bug 1625250.
|
||||
env["MOZ_X_SYNC"] = "1"
|
||||
env["GDK_SYNCHRONIZE"] = "1"
|
||||
else:
|
||||
env["MOZ_WEBRENDER"] = "0"
|
||||
|
||||
|
@ -428,8 +425,11 @@ class OutputHandler(object):
|
|||
|
||||
self.symbols_path = symbols_path
|
||||
if stackfix_dir:
|
||||
# We hide errors because they cause disconcerting `CRITICAL`
|
||||
# warnings in web platform test output.
|
||||
self.stack_fixer = get_stack_fixer_function(stackfix_dir,
|
||||
self.symbols_path)
|
||||
self.symbols_path,
|
||||
hideErrors=True)
|
||||
else:
|
||||
self.stack_fixer = None
|
||||
self.asan = asan
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
from six.moves.urllib.parse import urljoin
|
||||
from collections import defaultdict
|
||||
from six import iteritems, string_types
|
||||
|
@ -102,6 +103,7 @@ class RunInfo(dict):
|
|||
if rev:
|
||||
self["revision"] = rev
|
||||
|
||||
self["python_version"] = sys.version_info.major
|
||||
self["product"] = product
|
||||
if debug is not None:
|
||||
self["debug"] = debug
|
||||
|
|
|
@ -307,4 +307,22 @@
|
|||
assert_equals(pc1.pendingRemoteDescription, null);
|
||||
await promise_rejects_dom(t, 'RTCError', p);
|
||||
}, 'setRemoteDescription(invalidOffer) from have-local-offer does not undo rollback');
|
||||
|
||||
promise_test(async t => {
|
||||
const pc1 = new RTCPeerConnection();
|
||||
t.add_cleanup(() => pc1.close());
|
||||
const pc2 = new RTCPeerConnection();
|
||||
t.add_cleanup(() => pc2.close());
|
||||
pc1.addTransceiver('video');
|
||||
const offer = await pc1.createOffer();
|
||||
await pc2.setRemoteDescription(offer);
|
||||
assert_equals(pc2.getTransceivers().length, 1);
|
||||
await pc2.setRemoteDescription(offer);
|
||||
assert_equals(pc2.getTransceivers().length, 1);
|
||||
await pc1.setLocalDescription(offer);
|
||||
const answer = await pc2.createAnswer();
|
||||
await pc2.setLocalDescription(answer);
|
||||
await pc1.setRemoteDescription(answer);
|
||||
}, 'repeated sRD(offer) works');
|
||||
|
||||
</script>
|
||||
|
|
|
@ -282,7 +282,7 @@
|
|||
const offer = await pc.createOffer();
|
||||
await pc.setLocalDescription(offer);
|
||||
assert_not_equals(pc.getTransceivers()[0].sender.transport, null);
|
||||
await pc.setRemoteDescription({type: "rollback"});
|
||||
await pc.setLocalDescription({type: "rollback"});
|
||||
assert_equals(pc.getTransceivers().length, 1);
|
||||
assert_equals(pc.getTransceivers()[0].mid, null)
|
||||
assert_equals(pc.getTransceivers()[0].sender.transport, null);
|
||||
|
@ -292,6 +292,35 @@
|
|||
assert_array_equals(states, ['have-local-offer', 'stable', 'have-local-offer']);
|
||||
}, "explicit rollback of local offer should remove transceivers and transport");
|
||||
|
||||
promise_test(async t => {
|
||||
const pc1 = new RTCPeerConnection();
|
||||
t.add_cleanup(() => pc1.close());
|
||||
const pc2 = new RTCPeerConnection();
|
||||
t.add_cleanup(() => pc2.close());
|
||||
|
||||
const states = [];
|
||||
const signalingstatechangeResolver = new Resolver();
|
||||
pc1.onsignalingstatechange = () => {
|
||||
states.push(pc1.signalingState);
|
||||
signalingstatechangeResolver.resolve();
|
||||
};
|
||||
const stream1 = await getNoiseStream({audio: true});
|
||||
t.add_cleanup(() => stream1.getTracks().forEach(track => track.stop()));
|
||||
pc1.addTransceiver(stream1.getTracks()[0], stream1);
|
||||
|
||||
const stream2 = await getNoiseStream({audio: true});
|
||||
t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop()));
|
||||
pc2.addTransceiver(stream2.getTracks()[0], stream2);
|
||||
|
||||
await pc1.setLocalDescription(await pc1.createOffer());
|
||||
pc1.onnegotiationneeded = t.step_func(() => assert_true(false, "There should be no negotiationneeded event right now"));
|
||||
await pc1.setRemoteDescription(await pc2.createOffer());
|
||||
await pc1.setLocalDescription(await pc1.createAnswer());
|
||||
await signalingstatechangeResolver.promise;
|
||||
assert_array_equals(states, ['have-local-offer', 'stable', 'have-remote-offer', 'stable']);
|
||||
await new Promise(r => pc1.onnegotiationneeded = r);
|
||||
}, "when using addTransceiver, implicit rollback of a local offer should visit stable state, but not fire negotiationneeded until we settle in stable");
|
||||
|
||||
promise_test(async t => {
|
||||
const pc1 = new RTCPeerConnection();
|
||||
t.add_cleanup(() => pc1.close());
|
||||
|
@ -308,24 +337,17 @@
|
|||
t.add_cleanup(() => stream1.getTracks().forEach(track => track.stop()));
|
||||
pc1.addTrack(stream1.getTracks()[0], stream1);
|
||||
|
||||
const stream2 = await getNoiseStream({video: true});
|
||||
const stream2 = await getNoiseStream({audio: true});
|
||||
t.add_cleanup(() => stream2.getTracks().forEach(track => track.stop()));
|
||||
pc2.addTrack(stream2.getTracks()[0], stream2);
|
||||
|
||||
await pc1.setLocalDescription(await pc1.createOffer());
|
||||
var onnegotiationneededCount = 0;
|
||||
const negotiationneededResolver = new Resolver();
|
||||
pc1.onnegotiationneeded = () => {
|
||||
onnegotiationneededCount += 1;
|
||||
negotiationneededResolver.resolve();
|
||||
};
|
||||
pc1.onnegotiationneeded = t.step_func(() => assert_true(false, "There should be no negotiationneeded event in this test"));
|
||||
await pc1.setRemoteDescription(await pc2.createOffer());
|
||||
await pc1.setLocalDescription(await pc1.createAnswer());
|
||||
await negotiationneededResolver.promise;
|
||||
assert_equals(onnegotiationneededCount, 1);
|
||||
await signalingstatechangeResolver.promise;
|
||||
assert_array_equals(states, ['have-local-offer', 'stable', 'have-remote-offer', 'stable']);
|
||||
}, "implicit rollback of a local offer should visit stable state and fire negotiationneeded");
|
||||
await new Promise(r => t.step_timeout(r, 0));
|
||||
}, "when using addTrack, implicit rollback of a local offer should visit stable state, but not fire negotiationneeded");
|
||||
|
||||
promise_test(async t => {
|
||||
const pc1 = new RTCPeerConnection();
|
||||
|
@ -385,7 +407,7 @@
|
|||
await pc2.setLocalDescription(await pc2.createOffer());
|
||||
assert_equals(pc2.getTransceivers().length, 2);
|
||||
assert_not_equals(pc2.getTransceivers()[1].sender.transport, null);
|
||||
await pc2.setRemoteDescription({type: "rollback"});
|
||||
await pc2.setLocalDescription({type: "rollback"});
|
||||
assert_equals(pc2.getTransceivers().length, 2);
|
||||
// Rollback didn't touch audio transceiver and transport is intact.
|
||||
assert_not_equals(pc2.getTransceivers()[0].sender.transport, null);
|
||||
|
@ -423,7 +445,7 @@
|
|||
assert_equals(pc2.getTransceivers()[0].direction, "sendrecv");
|
||||
await pc2.setLocalDescription(await pc2.createOffer());
|
||||
assert_equals(pc2.getTransceivers()[0].direction, "sendrecv");
|
||||
await pc2.setRemoteDescription({type: "rollback"});
|
||||
await pc2.setLocalDescription({type: "rollback"});
|
||||
assert_equals(pc2.getTransceivers().length, 1);
|
||||
// setLocalDescription didn't change direction. So direction remains "sendrecv"
|
||||
assert_equals(pc2.getTransceivers()[0].direction, "sendrecv");
|
||||
|
|
|
@ -137,7 +137,7 @@ let testInput = function(overlayElement, session, fakeDeviceController, t) {
|
|||
session.requestReferenceSpace('viewer').then(function(viewerSpace) {
|
||||
// Press the primary input button and then release it a short time later.
|
||||
debug('got viewerSpace');
|
||||
session.requestAnimationFrame((time, xrFrame) => {
|
||||
requestSkipAnimationFrame(session, (time, xrFrame) => {
|
||||
debug('got rAF 1');
|
||||
input_source.setOverlayPointerPosition(inner_a.offsetLeft + 1,
|
||||
inner_a.offsetTop + 1);
|
||||
|
@ -202,7 +202,7 @@ let testCrossOriginContent = function(overlayElement, session, fakeDeviceControl
|
|||
fakeDeviceController.simulateInputSourceConnection(SCREEN_CONTROLLER);
|
||||
session.requestReferenceSpace('viewer').then(function(viewerSpace) {
|
||||
// Press the primary input button and then release it a short time later.
|
||||
session.requestAnimationFrame((time, xrFrame) => {
|
||||
requestSkipAnimationFrame(session, (time, xrFrame) => {
|
||||
debug('got rAF 1');
|
||||
input_source.setOverlayPointerPosition(iframe.offsetLeft + 1,
|
||||
iframe.offsetTop + 1);
|
||||
|
|
|
@ -101,7 +101,7 @@ let testFunction = function(session, fakeDeviceController, t) {
|
|||
|
||||
// Make our input source disappear after one frame, and wait an additional
|
||||
// frame for that disappearance to propogate.
|
||||
session.requestAnimationFrame((time, xrFrame) => {
|
||||
requestSkipAnimationFrame(session, (time, xrFrame) => {
|
||||
input_source.disconnect();
|
||||
session.requestAnimationFrame((time, xrFrame) => {});
|
||||
});
|
||||
|
|
|
@ -40,7 +40,7 @@ let testFunction = function(session, fakeDeviceController, t) {
|
|||
fakeDeviceController.simulateResetPose();
|
||||
|
||||
// The triggered resetPose event should arrive after the next Animation Frame
|
||||
session.requestAnimationFrame(() => {});
|
||||
requestSkipAnimationFrame(session, () => {});
|
||||
|
||||
return resetPromise;
|
||||
};
|
||||
|
|
|
@ -92,7 +92,7 @@ let testFunction = function(session, fakeDeviceController, t) {
|
|||
currentReferenceSpace = referenceSpace;
|
||||
|
||||
// Press the primary input button and then release it a short time later.
|
||||
session.requestAnimationFrame((time, xrFrame) => {
|
||||
requestSkipAnimationFrame(session, (time, xrFrame) => {
|
||||
input_source.startSelection();
|
||||
|
||||
session.requestAnimationFrame((time, xrFrame) => {
|
||||
|
|
|
@ -51,7 +51,7 @@ let testFunction = function(session, fakeDeviceController, t) {
|
|||
let input_source = fakeDeviceController.simulateInputSourceConnection(VALID_CONTROLLER);
|
||||
|
||||
// Press the primary input button and then release it a short time later.
|
||||
session.requestAnimationFrame((time, xrFrame) => {
|
||||
requestSkipAnimationFrame(session, (time, xrFrame) => {
|
||||
input_source.simulateSelect();
|
||||
|
||||
session.requestAnimationFrame((time, xrFrame) => {
|
||||
|
|
|
@ -114,7 +114,7 @@ let testFunction = function(session, fakeDeviceController, t) {
|
|||
currentReferenceSpace = referenceSpace;
|
||||
|
||||
//Simulate a grip starting then release it a short time later.
|
||||
session.requestAnimationFrame((time, xrFrame) => {
|
||||
requestSkipAnimationFrame(session, (time, xrFrame) => {
|
||||
input_source.updateButtonState(pressed_grip_button);
|
||||
|
||||
session.requestAnimationFrame((time, xrFrame) => {
|
||||
|
|
|
@ -132,7 +132,7 @@ let testFunction = function(session, fakeDeviceController, t) {
|
|||
// 5. Waits for all of the input events to finish propagating, then ends the
|
||||
// session, at which point the controller should be disconnected.
|
||||
return new Promise((resolve) => {
|
||||
session.requestAnimationFrame(() => {
|
||||
requestSkipAnimationFrame(session, () => {
|
||||
input_source.setSupportedButtons([]);
|
||||
session.requestAnimationFrame(() => {
|
||||
input_source.setSupportedButtons(gamepadButtons);
|
||||
|
|
|
@ -69,7 +69,7 @@ let testFunction = function(session, fakeDeviceController, t) {
|
|||
// updated values make their way to the WebXR gamepad and that it does not
|
||||
// fire an inputsourceschange event).
|
||||
return new Promise((resolve) => {
|
||||
session.requestAnimationFrame(() => {
|
||||
requestSkipAnimationFrame(session, () => {
|
||||
// Make sure the exposed gamepad has the number of buttons and axes we
|
||||
// requested.
|
||||
// 3 Buttons: trigger, grip, touchpad
|
||||
|
|
|
@ -75,7 +75,7 @@ let testFunction =
|
|||
}
|
||||
|
||||
// Handedness only updates during an XR frame.
|
||||
session.requestAnimationFrame(CheckNone);
|
||||
requestSkipAnimationFrame(session, CheckNone);
|
||||
});
|
||||
|
||||
xr_session_promise_test(
|
||||
|
|
|
@ -87,7 +87,7 @@ let testFunction =
|
|||
}
|
||||
|
||||
// Can only request input poses in an xr frame.
|
||||
session.requestAnimationFrame(CheckInvalidGrip);
|
||||
requestSkipAnimationFrame(session, CheckInvalidGrip);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
resolve();
|
||||
}
|
||||
|
||||
session.requestAnimationFrame(CheckPositionNotEmulated);
|
||||
requestSkipAnimationFrame(session, CheckPositionNotEmulated);
|
||||
}));
|
||||
};
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ let testFunctionGenerator = function(ray, expectedPoses, inputFromPointer, nextF
|
|||
|
||||
const input_source_controller = fakeDeviceController.simulateInputSourceConnection(screen_controller_init);
|
||||
|
||||
session.requestAnimationFrame((time, frame) => {
|
||||
requestSkipAnimationFrame(session, (time, frame) => {
|
||||
t.step(() => {
|
||||
assert_equals(session.inputSources.length, 1);
|
||||
});
|
||||
|
|
|
@ -56,7 +56,7 @@ let testFunctionGenerator = function(ray, expectedPoses, inputFromPointer, nextF
|
|||
|
||||
const input_source_controller = fakeDeviceController.simulateInputSourceConnection(screen_controller_init);
|
||||
|
||||
session.requestAnimationFrame((time, frame) => {
|
||||
requestSkipAnimationFrame(session, (time, frame) => {
|
||||
debug('rAF 1');
|
||||
t.step(() => {
|
||||
assert_equals(session.inputSources.length, 1);
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue