1<!DOCTYPE HTML> 2<script src="/resources/testharness.js"></script> 3<script src="/resources/testharnessreport.js"></script> 4<script src="/resources/testdriver.js"></script> 5<script src="/resources/testdriver-actions.js"></script> 6<script src="/resources/testdriver-vendor.js"></script> 7<script src="scroll_support.js"></script> 8<style> 9#scrollableDiv { 10 width: 200px; 11 height: 200px; 12 overflow: scroll; 13} 14 15#innerDiv { 16 width: 400px; 17 height: 400px; 18} 19</style> 20 21<body style="margin:0" onload=runTest()> 22<div id="scrollableDiv"> 23 <div id="innerDiv"> 24 </div> 25</div> 26</body> 27 28<script> 29var scrolling_div = document.getElementById('scrollableDiv'); 30var overscrolled_x_delta = 0; 31var overscrolled_y_delta = 0; 32function onOverscroll(event) { 33 assert_false(event.cancelable); 34 assert_false(event.bubbles); 35 overscrolled_x_delta = event.deltaX; 36 overscrolled_y_delta = event.deltaY; 37} 38scrolling_div.addEventListener("overscroll", onOverscroll); 39 40function runTest() { 41 promise_test (async (t) => { 42 // Make sure that no overscroll event is sent to document. 43 document.addEventListener("overscroll", 44 t.unreached_func("Document got unexpected overscroll event.")); 45 await waitForCompositorCommit(); 46 47 // Do a horizontal scroll and wait for overscroll event. 48 await touchScrollInTarget(300, scrolling_div , 'right'); 49 await waitFor(() => { return overscrolled_x_delta > 0; }, 50 'Scroller did not receive overscroll event after horizontal scroll.'); 51 assert_equals(scrolling_div.scrollWidth - scrolling_div.scrollLeft, 52 scrolling_div.clientWidth); 53 54 overscrolled_x_delta = 0; 55 overscrolled_y_delta = 0; 56 57 // Do a vertical scroll and wait for overscroll event. 58 await touchScrollInTarget(300, scrolling_div, 'down'); 59 await waitFor(() => { return overscrolled_y_delta > 0; }, 60 'Scroller did not receive overscroll event after vertical scroll.'); 61 assert_equals(scrolling_div.scrollHeight - scrolling_div.scrollTop, 62 scrolling_div.clientHeight); 63 }, 'Tests that the scrolled element gets overscroll event after fully scrolling by touch.'); 64} 65</script> 66