%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
<!DOCTYPE HTML> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/testdriver.js"></script> <script src="/resources/testdriver-actions.js"></script> <script src="/resources/testdriver-vendor.js"></script> <script src="scroll_support.js"></script> <style> #targetDiv { width: 500px; height: 500px; background: red; } html, body { /* Prevent any built-in browser overscroll features from consuming the scroll * deltas */ overscroll-behavior: none; } </style> <body style="margin:0;" onload=runTest()> <div id="targetDiv"> </div> </body> <script> var target_div = document.getElementById('targetDiv'); var overscrolled_x_deltas = []; var overscrolled_y_deltas = []; var scrollend_received = false; function onOverscroll(event) { overscrolled_x_deltas.push(event.deltaX); overscrolled_y_deltas.push(event.deltaY); } function onScrollend(event) { scrollend_received = true; } document.addEventListener("overscroll", onOverscroll); document.addEventListener("scrollend", onScrollend); function runTest() { promise_test (async (t) => { await waitForCompositorCommit(); // Scroll up on target div and wait for the doc to get overscroll event. await touchScrollInTarget(300, target_div, 'up'); await waitFor(() => { return scrollend_received; }, 'Document did not receive scrollend event.'); // Even though we request 300 pixels of scroll, the API above doesn't // guarantee how much scroll delta will be generated - different browsers // can consume different amounts for "touch slop" (for example). Ensure the // overscroll reaches at least 100 pixels which is a fairly conservative // value. assert_greater_than(overscrolled_y_deltas.length, 0, "There should be at least one overscroll events when overscrolling."); assert_equals(overscrolled_x_deltas.filter(function(x){ return x!=0; }).length, 0, "The deltaX attribute must be 0 when there is no scrolling in x direction."); assert_less_than_equal(Math.max(...overscrolled_y_deltas), 0, "The deltaY attribute must be <= 0 when there is overscrolling in up direction."); assert_less_than_equal(Math.min(...overscrolled_y_deltas),-100, "The deltaY attribute must be the number of pixels overscrolled."); await waitForCompositorCommit(); overscrolled_x_deltas = []; overscrolled_y_deltas = []; scrollend_received = false; // Scroll left on target div and wait for the doc to get overscroll event. await touchScrollInTarget(300, target_div, 'left'); await waitFor(() => { return scrollend_received; }, 'Document did not receive scrollend event.'); // TODO(bokan): It looks like Chrome inappropriately filters some scroll // events despite |overscroll-behavior| being set to none. The overscroll // amount here has been loosened but this should be fixed in Chrome. // https://crbug.com/1112183. assert_greater_than(overscrolled_y_deltas.length, 0, "There should be at least one overscroll events when overscrolling."); assert_equals(overscrolled_y_deltas.filter(function(x){ return x!=0; }).length, 0, "The deltaY attribute must be 0 when there is no scrolling in y direction."); assert_less_than_equal(Math.max(...overscrolled_x_deltas), 0, "The deltaX attribute must be <= 0 when there is overscrolling in left direction."); assert_less_than_equal(Math.min(...overscrolled_x_deltas),-50, "The deltaX attribute must be the number of pixels overscrolled."); }, 'Tests that the document gets overscroll event with right deltaX/Y attributes.'); } </script>