| <!DOCTYPE html> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script src="resources/snav-testharness.js"></script> |
| |
| <style> |
| body,html { |
| width: 100%; |
| height: 100%; |
| margin: 0; |
| } |
| |
| #spacer { |
| height: 1000px; |
| } |
| </style> |
| |
| <div id="spacer"></div> |
| |
| <script> |
| // This test ensures that, when zoomed in, spatial navigation scrolling will |
| // also cause the visual viewport to be scrolled. |
| snav.assertSnavEnabledAndTestable(); |
| t = async_test("Spatial Navigation scrolls visual viewport."); |
| |
| addEventListener('load', () => { |
| t.step(() => { |
| const scale = 2; |
| const spacer = document.getElementById('spacer'); |
| |
| window.internals.setPageScaleFactor(scale); |
| |
| assert_equals(window.visualViewport.offsetTop, 0, |
| "Visual Viewport should start unscrolled."); |
| |
| snav.triggerMove('Down'); |
| |
| assert_greater_than(window.visualViewport.offsetTop, 0, |
| "Visual Viewport should have been scrolled."); |
| |
| // Scroll a bunch and check if we reached the bottom. |
| for(let i = 0; i < 20; ++i) |
| snav.triggerMove('Down'); |
| |
| assert_equals(window.visualViewport.offsetTop, window.innerHeight / scale, |
| "Visual viewport should have been fully scrolled."); |
| assert_equals(window.scrollY, spacer.clientHeight - window.innerHeight, |
| "Layout viewport should have been fully scrolled."); |
| |
| t.done(); |
| }); |
| }); |
| </script> |