diff options
Diffstat (limited to 'layout/generic/test/test_bug784410.html')
-rw-r--r-- | layout/generic/test/test_bug784410.html | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/layout/generic/test/test_bug784410.html b/layout/generic/test/test_bug784410.html new file mode 100644 index 000000000..efaf6f943 --- /dev/null +++ b/layout/generic/test/test_bug784410.html @@ -0,0 +1,69 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Test bug 784410</title> + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script> + <script src="/tests/SimpleTest/paint_listener.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<p id="display"></p> +<div id="outer" style="overflow:auto; height:200px; border:2px dotted black; transform: translateY(1px)" onscroll="doneScroll()"> + <div id="d" style="overflow:auto; height:102px;" onscroll="doneScroll()"> + <div id="inner" style="height:100.1px; border:1px solid black; background:yellow;">Hello</div> + </div> + <div style="height:500px;"></div> +</div> +<pre id="test"> +<script class="testbody" type="text/javascript;version=1.7"> +var sel = window.getSelection(); +var outer = document.getElementById("outer"); +var d = document.getElementById("d"); +var inner = document.getElementById("inner"); +var smoothScrollPref = "general.smoothScroll"; + +function innerScrollOffset() { + return inner.getBoundingClientRect().top - d.getBoundingClientRect().top; +} +var innerStartScrollOffset = innerScrollOffset(); + +var step = 0; +function doneScroll() { + ++step; + switch (step) { + case 1: + is(innerScrollOffset(), innerStartScrollOffset, "Inner element should not have scrolled down"); + ok(outer.scrollTop > 0, "Outer element should have scrolled down"); + + outer.scrollTop = 0; + break; + case 2: + // Wait for paints to flush, so APZ is notified of the new scroll offset. + sendWheelAndPaint(inner, 4, 4, + { deltaMode: WheelEvent.DOM_DELTA_LINE, deltaY: 1 }, + function() {}); + break; + case 3: + is(innerScrollOffset(), innerStartScrollOffset, "Inner element should not have scrolled down"); + ok(outer.scrollTop > 0, "Outer element should have scrolled down"); + + SpecialPowers.DOMWindowUtils.restoreNormalRefresh(); + SimpleTest.finish(); + break; + } +} + +function test() { + sel.collapse(inner.firstChild, 2); + synthesizeKey("VK_PAGE_DOWN", {}); +} + +SimpleTest.waitForExplicitFinish(); +SimpleTest.waitForFocus(function() { + SpecialPowers.pushPrefEnv({"set":[[smoothScrollPref, false]]}, test); +}); +</script> +</pre> +</body> +</html> |