| <!DOCTYPE html> |
| <script src="../../../resources/testharness.js"></script> |
| <script src="../../../resources/testharnessreport.js"></script> |
| <script src="../../../resources/gesture-util.js"></script> |
| <div id="overflow" style="border:2px solid black;overflow:auto;height:200px;width:200px;"> |
| <div style="background-color:red;height:200px;width:400px;"></div> |
| <div style="background-color:green;height:200px;width:400px;"></div> |
| <div style="background-color:red;height:200px;width:400px;"></div> |
| </div> |
| <div id="console"></div> |
| <script> |
| // scroll diagonally for 1 tick. |
| var expectedScroll = pixelsPerTick(); |
| |
| var overflowElement = document.getElementById("overflow"); |
| overflowElement.addEventListener("mousewheel", mousewheelHandler, false); |
| var eventHandlerResolve; |
| eventHandlerPromise = new Promise(function(resolve) { |
| eventHandlerResolve = resolve; |
| }); |
| |
| promise_test (async () => { |
| var x = overflowElement.offsetLeft + 5; |
| var y = overflowElement.offsetTop + 5 |
| await mouseMoveTo(x, y); |
| await smoothScroll(pixelsPerTick(), x, y, GestureSourceType.MOUSE_INPUT, |
| "downright", SPEED_INSTANT); |
| await waitFor( () => { |
| return overflowElement.scrollTop == expectedScroll && |
| overflowElement.scrollLeft == expectedScroll; |
| }); |
| // The test will timeout if the event handler doesn't resolve this promise. |
| await eventHandlerPromise; |
| }); |
| |
| function mousewheelHandler(e) { |
| // e.wheelDeltaX/Y is equal to number of ticks * 120. See kTickMultiplier |
| // in src/third_party/blink/renderer/core/events/wheel_event.h |
| if (e.deltaY == expectedScroll && e.deltaX == expectedScroll && |
| e.wheelDeltaY == -120 && e.wheelDeltaX == -120 && e.wheelDelta == -120) { |
| eventHandlerResolve(); |
| } |
| } |
| </script> |