| <!DOCTYPE html> <!-- webkit-test-runner [ AsyncOverflowScrollingEnabled=true ] --> |
| <head> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <script src="../../../resources/ui-helper.js"></script> |
| <script src="../../../resources/basic-gestures.js"></script> |
| <script src="../../../resources/js-test-pre.js"></script> |
| <style> |
| .disable-scroll { pointer-events: none; } |
| .outer-scroll { height: 100vh; } |
| .inner-scroll { height: 100vh; overflow-y: auto; } |
| .box { height: 100vh; } |
| </style> |
| <script> |
| window.jsTestIsAsync = true; |
| |
| async function runTest() { |
| if (!window.testRunner) { |
| finishJSTest(); |
| return; |
| } |
| |
| description("Tests that toggling `pointer-events: none;` doesn't prevent scrolling."); |
| |
| globalThis.outerScrollElement = document.querySelector(".outer-scroll"); |
| globalThis.innerScrollElement = document.querySelector(".inner-scroll"); |
| |
| let scrollStartX = outerScrollElement.offsetLeft + (outerScrollElement.offsetWidth / 2); |
| let scrollStartY = outerScrollElement.offsetTop + (outerScrollElement.offsetHeight / 2) + 50; |
| let scrollEndX = scrollStartX; |
| let scrollEndY = scrollStartY - 100; |
| |
| shouldBeZero("window.scrollY"); |
| shouldBeZero("outerScrollElement.scrollTop"); |
| shouldBeZero("innerScrollElement.scrollTop"); |
| |
| debug("Disabling pointer events..."); |
| outerScrollElement.classList.add("disable-scroll"); |
| await UIHelper.renderingUpdate(); |
| await touchAndDragFromPointToPoint(scrollStartX, scrollStartY, scrollEndX, scrollEndY); |
| await liftUpAtPoint(scrollEndX, scrollEndY); |
| shouldBeNonZero("window.scrollY"); |
| shouldBeZero("outerScrollElement.scrollTop"); |
| shouldBeZero("innerScrollElement.scrollTop"); |
| |
| await UIHelper.immediateScrollTo(0, 0); |
| |
| debug("Enabling pointer events..."); |
| outerScrollElement.classList.remove("disable-scroll"); |
| await UIHelper.renderingUpdate(); |
| await touchAndDragFromPointToPoint(scrollStartX, scrollStartY, scrollEndX, scrollEndY); |
| await liftUpAtPoint(scrollEndX, scrollEndY); |
| shouldBeZero("window.scrollY"); |
| shouldBeZero("outerScrollElement.scrollTop"); |
| shouldBeNonZero("innerScrollElement.scrollTop"); |
| |
| finishJSTest(); |
| } |
| </script> |
| <body onload="runTest()"> |
| <div class="outer-scroll"> |
| <div class="inner-scroll"> |
| <div class="box" style="background-color: red;"></div> |
| <div class="box" style="background-color: green;"></div> |
| <div class="box" style="background-color: blue;"></div> |
| </div> |
| </div> |
| <p id="description"></p> |
| <div id="console"></div> |
| <script src="../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |