diff options
Diffstat (limited to 'layout/base/tests/test_scroll_event_ordering.html')
-rw-r--r-- | layout/base/tests/test_scroll_event_ordering.html | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/layout/base/tests/test_scroll_event_ordering.html b/layout/base/tests/test_scroll_event_ordering.html new file mode 100644 index 000000000..be1764a7a --- /dev/null +++ b/layout/base/tests/test_scroll_event_ordering.html @@ -0,0 +1,63 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=785588 +--> +<head> + <title>Test for Bug 785588 --- ordering of scroll-related events</title> + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=785588">Mozilla Bug 785588</a> +<div id="content"> + <div id="d" style="border:2px solid black; width:100px; height:100px; overflow:auto"> + <div id="inner" style="height:200px;">Hello</div> + </div> +</div> +<pre id="test"> +<script> +SimpleTest.waitForExplicitFinish(); + +var smoothScrollPref = "general.smoothScroll"; + +var d = document.getElementById("d"); +d.scrollTop = 0; +var inner = document.getElementById("inner"); + +var state = "initial"; + +function onFrame() { + is(state, "initial", "Must be in initial state"); + ok(d.scrollTop > 0, "Must have scrolled by some amount (got " + d.scrollTop + ")"); + state = "didOnFrame"; +} + +function onScroll() { + is(state, "didOnFrame", "Must have got requestAnimationFrame callback already"); + ok(d.scrollTop > 0, "Must have scrolled by some amount (got " + d.scrollTop + ")"); + SimpleTest.finish(); +} + +function doTest() { + window.getSelection().collapse(inner.firstChild, 0); + window.requestAnimationFrame(onFrame); + d.onscroll = onScroll; + sendKey("DOWN"); +} + +function prepareTest() { + // Start the test after we've gotten at least one rAF callback, to make sure + // that rAF is no longer throttled. (See bug 1145439.) + window.requestAnimationFrame(function() { + SpecialPowers.pushPrefEnv({"set":[[smoothScrollPref, false]]}, doTest); + }); +} + +SimpleTest.waitForFocus(prepareTest); + +</script> +</pre> +</body> +</html> |