test_scroll_event_ordering.html (1740B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=785588 5 --> 6 <head> 7 <title>Test for Bug 785588 --- ordering of scroll-related events</title> 8 <script src="/tests/SimpleTest/SimpleTest.js"></script> 9 <script src="/tests/SimpleTest/EventUtils.js"></script> 10 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 11 </head> 12 <body> 13 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=785588">Mozilla Bug 785588</a> 14 <div id="content"> 15 <div id="d" style="border:2px solid black; width:100px; height:100px; overflow:auto"> 16 <div id="inner" style="height:200px;">Hello</div> 17 </div> 18 </div> 19 <pre id="test"> 20 <script> 21 SimpleTest.waitForExplicitFinish(); 22 23 var smoothScrollPref = "general.smoothScroll"; 24 25 var d = document.getElementById("d"); 26 d.scrollTop = 0; 27 var inner = document.getElementById("inner"); 28 29 var state = "initial"; 30 31 function onFrame() { 32 is(state, "didOnScroll", "Must have got scroll event already"); 33 state = "didOnFrame"; 34 SimpleTest.finish(); 35 } 36 37 function onScroll() { 38 is(state, "initial", "Must be in initial state"); 39 ok(d.scrollTop > 0, "Must have scrolled by some amount (got " + d.scrollTop + ")"); 40 state = "didOnScroll"; 41 } 42 43 function doTest() { 44 window.getSelection().collapse(inner.firstChild, 0); 45 window.requestAnimationFrame(onFrame); 46 d.onscroll = onScroll; 47 d.scroll(0, 100); 48 } 49 50 function prepareTest() { 51 // Start the test after we've gotten at least one rAF callback, to make sure 52 // that rAF is no longer throttled. (See bug 1145439.) 53 window.requestAnimationFrame(function() { 54 SpecialPowers.pushPrefEnv({"set":[[smoothScrollPref, false]]}, doTest); 55 }); 56 } 57 58 SimpleTest.waitForFocus(prepareTest); 59 60 </script> 61 </pre> 62 </body> 63 </html>