|
1 <!DOCTYPE HTML> |
|
2 <html> |
|
3 <head> |
|
4 <title>Test bug 791616</title> |
|
5 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> |
|
6 <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script> |
|
7 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> |
|
8 <style> |
|
9 #t { |
|
10 overflow: auto; |
|
11 position: absolute; |
|
12 left: 200px; |
|
13 top: 100px; |
|
14 font: 14px/1.1em "Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace; |
|
15 } |
|
16 </style> |
|
17 </head> |
|
18 <body> |
|
19 <p id="display"></p> |
|
20 <div id="t" contenteditable> |
|
21 <div>66666666666666</div> |
|
22 <div id="target">777777777777777777777777777777777777777</div> |
|
23 </div> |
|
24 </div> |
|
25 <pre id="test"> |
|
26 <script class="testbody"> |
|
27 var t = document.getElementById("t"); |
|
28 var target = document.getElementById("target"); |
|
29 var sel = window.getSelection(); |
|
30 var smoothScrollPref = "general.smoothScroll"; |
|
31 |
|
32 SimpleTest.waitForExplicitFinish(); |
|
33 SpecialPowers.setBoolPref(smoothScrollPref, false); |
|
34 t.scrollTop = 0; |
|
35 var targetY = target.getBoundingClientRect().top; |
|
36 |
|
37 SimpleTest.waitForFocus(function() { |
|
38 is(target.getBoundingClientRect().top, targetY, "Target should not have scrolled due to waitForFocus"); |
|
39 t.focus(); |
|
40 is(target.getBoundingClientRect().top, targetY, "Target should not have scrolled due to focus change"); |
|
41 |
|
42 // Move the caret to scroll it into view |
|
43 sel.collapse(target.firstChild, 2); |
|
44 synthesizeKey("VK_LEFT", {}); |
|
45 |
|
46 // Delay until next repaint in case stuff is asynchronous. Also |
|
47 // take a trip through the event loop. |
|
48 setTimeout(function() { |
|
49 window.mozRequestAnimationFrame(function() { |
|
50 is(sel.anchorNode, target.firstChild, "Should have selected 'target' text node"); |
|
51 is(sel.anchorOffset, 1, "Selection should have moved left one character"); |
|
52 // We should not have needed to scroll the caret into view |
|
53 is(target.getBoundingClientRect().top, targetY, "Target should not have scrolled"); |
|
54 SpecialPowers.clearUserPref(smoothScrollPref); |
|
55 SimpleTest.finish(); |
|
56 }); |
|
57 // Make sure repainting actually happens. |
|
58 target.style.background = "yellow"; |
|
59 }); |
|
60 }); |
|
61 |
|
62 </script> |
|
63 </pre> |
|
64 </body> |
|
65 </html> |