diff options
Diffstat (limited to 'dom/events/test/test_bug607464.html')
-rw-r--r-- | dom/events/test/test_bug607464.html | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/dom/events/test/test_bug607464.html b/dom/events/test/test_bug607464.html new file mode 100644 index 000000000..ac8076bfd --- /dev/null +++ b/dom/events/test/test_bug607464.html @@ -0,0 +1,87 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=607464 +--> +<head> + <title>Test for Bug 607464</title> + <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script> + <script type="text/javascript" src="/tests/gfx/layers/apz/test/mochitest/apz_test_utils.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=607464">Mozilla Bug 607464</a> +<p id="display"></p> +<div id="content" style="display: none"> + +</div> +<pre id="test"> +<script type="application/javascript;version=1.7"> + +/** + * Test for Bug 607464: + * Pixel scrolling shouldn't scroll smoothly, even if general.smoothScroll is on. + **/ + +function scrollDown150PxWithPixelScrolling(scrollbox) { + var win = scrollbox.ownerDocument.defaultView; + let event = { + deltaMode: WheelEvent.DOM_DELTA_PIXEL, + deltaY: 30.0, + lineOrPageDeltaY: 1 + }; + // A pixel scroll with lineOrPageDeltaY. + synthesizeWheel(scrollbox, 10, 10, event, win); + // then 4 pixel scrolls without lineOrPageDeltaY. + event.lineOrPageDeltaY = 0; + for (let i = 0; i < 4; ++i) { + synthesizeWheel(scrollbox, 10, 10, event, win); + } + + // Note: the line scroll shouldn't have any effect because it has + // hasPixels = true set on it. We send it to emulate normal + // behavior. +} + +function runTest() { + var win = open('data:text/html,<!DOCTYPE html>\n' + + '<div id="scrollbox" style="height: 100px; overflow: auto;">' + + ' <div style="height: 1000px;"></div>' + + '</div>', '_blank', 'width=300,height=300'); + SimpleTest.waitForFocus(function () { + var scrollbox = win.document.getElementById("scrollbox"); + let scrollTopBefore = scrollbox.scrollTop; + + win.addEventListener("scroll", function(e) { + is(scrollbox.scrollTop % 30, 0, + "Pixel scrolling should happen instantly, not smoothly. The " + + "scroll position " + scrollbox.scrollTop + " in this sequence of wheel " + + "events should be a multiple of 30."); + if (scrollbox.scrollTop == 150) { + win.close(); + SimpleTest.finish(); + } + }, true); + + flushApzRepaints(function() { + scrollDown150PxWithPixelScrolling(scrollbox); + }, win); + }, win); +} + +window.onload = function() { + SpecialPowers.pushPrefEnv({ + "set":[["general.smoothScroll", true], + ["mousewheel.acceleration.start", -1], + ["mousewheel.system_scroll_override_on_root_content.enabled", false]]}, runTest); +} + +SimpleTest.waitForExplicitFinish(); +SimpleTest.testInChaosMode(); + +</script> +</pre> + +</body> +</html> |