wheel-event-transactions-target-elements.html (2176B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1"> 6 <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"/> 7 <script src="/resources/testharness.js"></script> 8 <script src="/resources/testharnessreport.js"></script> 9 <script src="/resources/testdriver.js"></script> 10 <script src="/resources/testdriver-actions.js"></script> 11 <script src="/resources/testdriver-vendor.js"></script> 12 <script src="scroll_support.js"></script> 13 <style> 14 body { 15 margin: 0; 16 padding: 0; 17 height: 200vh; 18 } 19 20 .spacer { 21 width: 100%; 22 height: 25px; 23 padding: 0; 24 margin: 0; 25 font: 25px/1 Ahem; 26 } 27 28 </style> 29 <head> 30 <body> 31 <div id="firstRootSpacer" class="spacer" style="background: green">X</div> 32 <div id="secondRootSpacer" class="spacer" style="background: blue"></div> 33 </body> 34 35 <script> 36 37 promise_test(async (t) => { 38 // Wheel event transactions target elements, not nodes. A wheel event 39 // transaction that begins over a text node should have an event target for 40 // the containing element. 41 await waitForCompositorReady(); 42 43 await waitForCompositorCommit(); 44 45 let wheelEventTargets = []; 46 47 window.addEventListener("wheel", (e) => { 48 wheelEventTargets.push(e.target); 49 }, {passive: true}); 50 51 await waitForCompositorCommit(); 52 53 await new test_driver.Actions() 54 .addWheel("wheel1") 55 .scroll(12, 12, 0, 30, {origin: "viewport"}) 56 .pause(1) 57 .scroll(12, 12, 0, 30, {origin: "viewport"}) 58 .send(); 59 60 // TODO(dlrobertson): Use the scrollend event here to wait for the 61 // wheel scroll to finish instead of waitForAnimationEnd(). 62 await waitForAnimationEnd(() => { return document.scrollingElement.scrollTop; }); 63 await waitForCompositorCommit(); 64 65 // All of the wheel events should have the first div as their target. 66 wheelEventTargets.forEach((wheelEventTarget, i) => { 67 assert_equals(wheelEventTarget, firstRootSpacer, 68 "Wheel event at index `" + i + "` does not have the expected target"); 69 }); 70 71 assert_greater_than(document.scrollingElement.scrollTop, 0, "The document has scrolled"); 72 }, "Wheel event transactions target elements"); 73 </script> 74 </html>