diff options
Diffstat (limited to 'layout/generic/test/test_bug791616.html')
-rw-r--r-- | layout/generic/test/test_bug791616.html | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/layout/generic/test/test_bug791616.html b/layout/generic/test/test_bug791616.html new file mode 100644 index 000000000..e2816ea73 --- /dev/null +++ b/layout/generic/test/test_bug791616.html @@ -0,0 +1,65 @@ +<!DOCTYPE HTML> +<html> +<head> + <title>Test bug 791616</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" /> + <style> +#t { + overflow: auto; + position: absolute; + left: 200px; + top: 100px; + font: 14px/1.3em "Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace; +} + </style> +</head> +<body> +<p id="display"></p> +<div id="t" contenteditable> + <div>66666666666666</div> + <div id="target">777777777777777777777777777777777777777</div> +</div> +</div> +<pre id="test"> +<script class="testbody"> +var t = document.getElementById("t"); +var target = document.getElementById("target"); +var sel = window.getSelection(); +var smoothScrollPref = "general.smoothScroll"; + +SimpleTest.waitForExplicitFinish(); +t.scrollTop = 0; +var targetY = target.getBoundingClientRect().top; + +SimpleTest.waitForFocus(function() { + SpecialPowers.pushPrefEnv({"set":[[smoothScrollPref, false]]}, runTest); +}); +function runTest() { + is(target.getBoundingClientRect().top, targetY, "Target should not have scrolled due to waitForFocus"); + t.focus(); + is(target.getBoundingClientRect().top, targetY, "Target should not have scrolled due to focus change"); + + // Move the caret to scroll it into view + sel.collapse(target.firstChild, 2); + synthesizeKey("VK_LEFT", {}); + + // Delay until next repaint in case stuff is asynchronous. Also + // take a trip through the event loop. + setTimeout(function() { + window.requestAnimationFrame(function() { + is(sel.anchorNode, target.firstChild, "Should have selected 'target' text node"); + is(sel.anchorOffset, 1, "Selection should have moved left one character"); + // We should not have needed to scroll the caret into view + is(target.getBoundingClientRect().top, targetY, "Target should not have scrolled"); + SimpleTest.finish(); + }); + // Make sure repainting actually happens. + target.style.background = "yellow"; + }); +} +</script> +</pre> +</body> +</html> |