| <!DOCTYPE HTML> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script src='../../resources/gesture-util.js'></script> |
| <style> |
| |
| ::-webkit-scrollbar { |
| display: none; |
| } |
| body { |
| margin: 0px; |
| height: 1000px; |
| width: 1000px; |
| } |
| #scrollable { |
| background-color: #FF7F7F; |
| height: 600px; |
| width: 600px; |
| overflow: scroll; |
| } |
| #content { |
| height: 900px; |
| width: 900px; |
| } |
| |
| </style> |
| |
| <div id="scrollable"> |
| <div id="content"></div> |
| </div> |
| |
| <script> |
| // from enum WebFeature in web_feature.mojom-shared.h |
| const MIDDLE_CLICK_AUTOSCROLL = 1551; |
| const SCROLL_BY_TOUCH_COUNTER = 1847; |
| const SCROLL_BY_WHEEL_COUNTER = 1848; |
| |
| var scrollable = document.getElementById('scrollable'); |
| var rect = scrollable.getBoundingClientRect(); |
| var start_x = (rect.left + rect.right) / 2; |
| var start_y = (rect.top + rect.bottom) / 2; |
| |
| async function middleClickAutoscroll() { |
| const middle_button = 1; |
| await waitForCompositorCommit(); |
| await mouseMoveTo(start_x, start_y); |
| await mouseClickOn(start_x, start_y, middle_button); |
| await mouseMoveTo(start_x, start_y + 100); |
| await waitFor(() => { |
| return scrollable.scrollTop > 0; |
| }); |
| await waitFor(() => { |
| return internals.isUseCounted(document, MIDDLE_CLICK_AUTOSCROLL); |
| }, "Didn't record middle click autoscroll"); |
| await mouseClickOn(start_x, start_y + 100, middle_button); |
| } |
| |
| async function wheelScrollDown() { |
| const precise_deltas = false; |
| await waitForCompositorCommit(); |
| var previous_scroll_offset = scrollable.scrollTop; |
| |
| await smoothScroll(50, start_x, start_y, |
| GestureSourceType.MOUSE_INPUT,'down', SPEED_INSTANT, precise_deltas); |
| await waitFor(() => { |
| return scrollable.scrollTop - previous_scroll_offset > 0; |
| }, "Didn't scroll by wheel"); |
| await waitForCompositorCommit(); |
| } |
| |
| promise_test(async () => { |
| // Autoscroll and check that middle click autoscroll use is counted. |
| await middleClickAutoscroll(); |
| |
| // Scroll by wheel and wait for wheel scrolling use count to increase. |
| await wheelScrollDown(); |
| await waitFor(() => { |
| return internals.isUseCounted(document, SCROLL_BY_WHEEL_COUNTER); |
| }, "Didn't record wheel use count"); |
| |
| // Now check that autoscrolling has not increased the touch scrolling use |
| // count. We do this checking after wheel count increment to make sure that |
| // we have waited long enough before verifying that the touch scrolling use |
| // count is not incremented due to autoscrolling. |
| assert_false(internals.isUseCounted(document, SCROLL_BY_TOUCH_COUNTER)) |
| }, "Autoscrolling should not update touch scrolling usecounter."); |
| |
| </script> |