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:
bors-servo 2020-05-02 11:27:48 -04:00 committed by GitHub
commit 292d6ec588
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
114 changed files with 878 additions and 334 deletions

View file

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

View file

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

View file

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

View file

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

View file

@ -0,0 +1,2 @@
[mix-blend-mode-animation.html]
expected: FAIL

View file

@ -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

View file

@ -17,6 +17,3 @@
[test the top of layer]
expected: FAIL
[test some point of the element: top left corner]
expected: FAIL

View file

@ -2,6 +2,3 @@
[elementsFromPoint on the root document for points in iframe elements]
expected: FAIL
[elementsFromPoint on inner documents]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -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

View file

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

View file

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

View file

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

View file

@ -1,4 +0,0 @@
[size.attributes.parse.empty.html]
[Parsing of non-negative integers]
expected: FAIL

View file

@ -1,4 +0,0 @@
[size.attributes.parse.empty.worker.html]
[Parsing of non-negative integers]
expected: FAIL

View file

@ -1,4 +0,0 @@
[size.attributes.parse.onlyspace.html]
[Parsing of non-negative integers]
expected: FAIL

View file

@ -1,4 +0,0 @@
[size.attributes.parse.onlyspace.worker.html]
[Parsing of non-negative integers]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -3,3 +3,6 @@
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: FAIL

View file

@ -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

View file

@ -1,5 +0,0 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -1,5 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -0,0 +1,4 @@
[xrInputSource_gamepad_disconnect.https.html]
[WebXR InputSource's gamepad gets disconnected when the input source is removed]
expected: FAIL

View file

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

View file

@ -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,
{}

View file

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

View file

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

View file

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

View file

@ -0,0 +1,2 @@
[mix-blend-mode-animation.html]
expected: FAIL

View file

@ -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

View file

@ -2,6 +2,3 @@
[listeners are called when <iframe> is resized]
expected: FAIL
[listeners are called correct number of times]
expected: FAIL

View file

@ -21,6 +21,3 @@
[test the top of layer]
expected: FAIL
[test some point of the element: top left corner]
expected: FAIL

View file

@ -2,6 +2,3 @@
[elementsFromPoint on the root document for points in iframe elements]
expected: FAIL
[elementsFromPoint on inner documents]
expected: FAIL

View file

@ -5,7 +5,7 @@
expected: TIMEOUT
[Listener of animationend]
expected: TIMEOUT
expected: FAIL
[Legacy listener of animationend]
expected: TIMEOUT

View file

@ -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

View file

@ -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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,4 +0,0 @@
[size.attributes.parse.empty.html]
[Parsing of non-negative integers]
expected: FAIL

View file

@ -1,4 +0,0 @@
[size.attributes.parse.empty.worker.html]
[Parsing of non-negative integers]
expected: FAIL

View file

@ -1,4 +0,0 @@
[size.attributes.parse.onlyspace.html]
[Parsing of non-negative integers]
expected: FAIL

View file

@ -1,4 +0,0 @@
[size.attributes.parse.onlyspace.worker.html]
[Parsing of non-negative integers]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -4,3 +4,6 @@
[The incumbent settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: TIMEOUT
[The entry settings object while executing the compiled callback via Web IDL's invoke must be that of the node document]
expected: FAIL

View file

@ -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

View file

@ -1,5 +0,0 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -1,5 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -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

View file

@ -10868,7 +10868,7 @@
[]
]
},
"lint.whitelist": [
"lint.ignore": [
"314a9e5b44443be1a4e28dd3c5047a5082a7ccab",
[]
],

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -0,0 +1 @@
Feature-Policy: fullscreen 'self' https://{{domains[www]}}:{{ports[https][0]}} https://www.example.com;

View file

@ -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>

View file

@ -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();
});

View file

@ -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();
});

View file

@ -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();
});

View file

@ -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();
});

View file

@ -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),

View file

@ -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>

View file

@ -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

View file

@ -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

View file

@ -80,5 +80,8 @@ dictionary NDEFWriteOptions {
};
dictionary NDEFScanOptions {
USVString id;
USVString recordType;
USVString mediaType;
AbortSignal? signal;
};

View file

@ -0,0 +1,4 @@
spec: https://wicg.github.io/largest-contentful-paint/
suggested_reviewers:
- npm1
- yoavweiss

View file

@ -0,0 +1,4 @@
spec: https://wicg.github.io/layout-instability/
suggested_reviewers:
- skobes
- npm1

View file

@ -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>

View file

@ -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

View file

@ -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

View file

@ -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"},

View file

@ -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

View file

@ -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):

View file

@ -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

View file

@ -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

View file

@ -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>

View file

@ -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");

View file

@ -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);

View file

@ -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) => {});
});

View file

@ -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;
};

View file

@ -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) => {

View file

@ -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) => {

View file

@ -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) => {

View file

@ -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);

View file

@ -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

View file

@ -75,7 +75,7 @@ let testFunction =
}
// Handedness only updates during an XR frame.
session.requestAnimationFrame(CheckNone);
requestSkipAnimationFrame(session, CheckNone);
});
xr_session_promise_test(

View file

@ -87,7 +87,7 @@ let testFunction =
}
// Can only request input poses in an xr frame.
session.requestAnimationFrame(CheckInvalidGrip);
requestSkipAnimationFrame(session, CheckInvalidGrip);
});
});

View file

@ -45,7 +45,7 @@
resolve();
}
session.requestAnimationFrame(CheckPositionNotEmulated);
requestSkipAnimationFrame(session, CheckPositionNotEmulated);
}));
};

View file

@ -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);
});

View file

@ -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