helper_bug1780701.html (2047B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <title>Test that scroll snap wont't happen on zoomed content</title> 7 <script src="apz_test_utils.js"></script> 8 <script src="apz_test_native_event_utils.js"></script> 9 <script src="/tests/SimpleTest/paint_listener.js"></script> 10 <style> 11 body { 12 margin: 0; 13 } 14 html { 15 overflow-y: scroll; 16 scroll-snap-type: y proximity; 17 } 18 .snap { 19 width: 100vw; 20 height: 100vh; 21 background-color: blue; 22 position: absolute; 23 top: 200px; 24 scroll-snap-align: start; 25 } 26 </style> 27 </head> 28 <body> 29 <div class="snap"></div> 30 <div style="width: 100%; height: 500vh;"></div> 31 <script type="application/javascript"> 32 async function test() { 33 let transformEndPromise = promiseTransformEnd(); 34 35 // Use scrollToVisual() to scroll visual viewport. 36 SpecialPowers.DOMWindowUtils.scrollToVisual( 37 100, 400, 38 SpecialPowers.DOMWindowUtils.UPDATE_TYPE_MAIN_THREAD, 39 SpecialPowers.DOMWindowUtils.SCROLL_MODE_SMOOTH); 40 41 // Wait for the end of the scroll. 42 await transformEndPromise; 43 await waitToClearOutAnyPotentialScrolls(); 44 45 const pageTop = visualViewport.pageTop; 46 const pageLeft = visualViewport.pageLeft; 47 48 let eventFired = false; 49 window.visualViewport.addEventListener("scroll", () => { 50 eventFired = true; 51 }); 52 53 // Trigger a scroll snap, it should nothing. 54 SpecialPowers.wrap(document.documentElement).mozScrollSnap(); 55 56 await waitToClearOutAnyPotentialScrolls(); 57 ok(!eventFired, "No visual scroll should happen"); 58 59 // Sanity checks to see whether the visual viewport hasn't been changed. 60 is(visualViewport.pageTop, pageTop); 61 is(visualViewport.pageLeft, pageLeft); 62 } 63 64 SpecialPowers.DOMWindowUtils.setResolutionAndScaleTo(10.0); 65 waitUntilApzStable() 66 .then(test) 67 .then(subtestDone, subtestFailed); 68 </script> 69 </body> 70 </html>