|
1 <!DOCTYPE HTML> |
|
2 <html> |
|
3 <head> |
|
4 <title>Test that scaled elements with scrolled contents don't repaint unnecessarily when we scroll inside them</title> |
|
5 <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/paint_listener.js"></script> |
|
6 </head> |
|
7 <!-- Need a timeout here to allow paint unsuppression before we start the test --> |
|
8 <body onload="setTimeout(startTest,0)" style="background:white;"> |
|
9 <iframe id="t" style="-moz-transform: scale(0.48979); -moz-transform-origin:top left; width:500px; height:300px;" |
|
10 src="data:text/html, |
|
11 <body style='background:yellow;'> |
|
12 <p>My graduate adviser was the most patient, understanding, and helpful |
|
13 person I've ever had the joy of dealing with. That doesn't change that |
|
14 there are some real dicks out there, and some of them happen to be |
|
15 scientists. |
|
16 <p id='e'>My graduate adviser was the most patient, understanding, and helpful |
|
17 person I've ever had the joy of dealing with. That doesn't change that |
|
18 there are some real dicks out there, and some of them happen to be |
|
19 scientists. |
|
20 <p>My graduate adviser was the most patient, understanding, and helpful |
|
21 person I've ever had the joy of dealing with. That doesn't change that |
|
22 there are some real dicks out there, and some of them happen to be |
|
23 scientists. |
|
24 <p>My graduate adviser was the most patient, understanding, and helpful |
|
25 person I've ever had the joy of dealing with. That doesn't change that |
|
26 there are some real dicks out there, and some of them happen to be |
|
27 scientists. |
|
28 <p>My graduate adviser was the most patient, understanding, and helpful |
|
29 person I've ever had the joy of dealing with. That doesn't change that |
|
30 there are some real dicks out there, and some of them happen to be |
|
31 scientists. |
|
32 <p>My graduate adviser was the most patient, understanding, and helpful |
|
33 person I've ever had the joy of dealing with. That doesn't change that |
|
34 there are some real dicks out there, and some of them happen to be |
|
35 scientists. |
|
36 </body>"></iframe> |
|
37 <pre id="test"> |
|
38 <script type="application/javascript"> |
|
39 var SimpleTest = window.opener.wrappedJSObject.SimpleTest; |
|
40 var SpecialPowers = window.opener.wrappedJSObject.SpecialPowers; |
|
41 var is = window.opener.wrappedJSObject.is; |
|
42 |
|
43 var smoothScrollPref = "general.smoothScroll"; |
|
44 SpecialPowers.setBoolPref(smoothScrollPref, false); |
|
45 |
|
46 function startTest() { |
|
47 var t = document.getElementById("t"); |
|
48 var e = t.contentDocument.getElementById("e"); |
|
49 t.contentWindow.scrollTo(0,0); |
|
50 var utils = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor). |
|
51 getInterface(Components.interfaces.nsIDOMWindowUtils); |
|
52 var iterations = 0; |
|
53 |
|
54 function nextIteration() { |
|
55 var painted = utils.checkAndClearPaintedState(e); |
|
56 is(painted, false, "Fully-visible scrolled element should not have been painted"); |
|
57 if (++iterations == 10) { |
|
58 SpecialPowers.clearUserPref(smoothScrollPref); |
|
59 SimpleTest.finish(); |
|
60 window.close(); |
|
61 } else { |
|
62 t.contentWindow.scrollByLines(1); |
|
63 waitForAllPaintsFlushed(nextIteration); |
|
64 } |
|
65 } |
|
66 |
|
67 // Do a couple of scrolls to ensure we've triggered activity heuristics. |
|
68 waitForAllPaintsFlushed(function () { |
|
69 t.contentWindow.scrollByLines(1); |
|
70 waitForAllPaintsFlushed(function () { |
|
71 t.contentWindow.scrollByLines(1); |
|
72 waitForAllPaintsFlushed(function () { |
|
73 // Clear paint state now and scroll again. |
|
74 utils.checkAndClearPaintedState(e); |
|
75 t.contentWindow.scrollByLines(1); |
|
76 waitForAllPaintsFlushed(nextIteration); |
|
77 }); |
|
78 }); |
|
79 }); |
|
80 } |
|
81 </script> |
|
82 </pre> |
|
83 </body> |
|
84 </html> |