Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 <?xml version="1.0"?>
2 <?xml-stylesheet type="text/css" href="chrome://global/skin"?>
3 <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
4 type="text/css"?>
5 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
6 <script type="application/javascript"
7 src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
9 <!-- test results are displayed in the html:body -->
10 <body xmlns="http://www.w3.org/1999/xhtml">
11 </body>
13 <!-- test code goes here -->
14 <script type="application/javascript">
15 <![CDATA[
16 SimpleTest.waitForExplicitFinish();
18 var winLowerThanVista = navigator.platform.indexOf("Win") == 0;
19 if (winLowerThanVista) {
20 var version = Components.classes["@mozilla.org/system-info;1"]
21 .getService(Components.interfaces.nsIPropertyBag2)
22 .getProperty("version");
23 winLowerThanVista = parseFloat(version) < 6.0;
24 }
26 var tests = [{maximize: false}, {maximize: true}];
27 var testIndex = 0;
28 var win;
30 function testInfo() {
31 return tests[testIndex].maximize ? " (maximized)" : " (non-maximized)";
32 }
34 function doTest(evt) {
35 var initialCount = win.mozPaintCount;
37 function nextStep() {
38 if (win.mozPaintCount == initialCount || win.isMozAfterPaintPending) {
39 SimpleTest.info("Waiting for mozPaintCount (= " + initialCount + ") to increase" + testInfo());
40 // Do not use SimpleTest.executeSoon() here: give a little more time.
41 setTimeout(nextStep, 100);
42 return;
43 }
45 isnot(win.mozPaintCount, initialCount, "mozPaintCount has increased" + testInfo());
47 function testLeafLayersPartitionWindow() {
48 var success = win.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
49 .getInterface(Components.interfaces.nsIDOMWindowUtils)
50 .leafLayersPartitionWindow();
51 // "[leafLayersPartitionWindow()] Always returns true in non-DEBUG builds."
52 // To prevent random failures on Windows, try to run this again after a timeout.
53 if (!success && navigator.platform.indexOf("Win") >= 0) {
54 setTimeout(testLeafLayersPartitionWindow, 100);
55 return;
56 }
57 ok(success,
58 "Leaf layers should form a non-overlapping partition of the browser window" + testInfo() +
59 (success ? "" : ". [Set MOZ_DUMP_PAINT_LIST=1 env var to investigate.]"));
61 win.close();
62 ++testIndex;
63 nextTest();
64 }
65 testLeafLayersPartitionWindow();
66 }
68 if (tests[testIndex].maximize) {
69 function resizeListener() {
70 win.removeEventListener("resize", resizeListener, true);
71 // We want a paint after resize.
72 initialCount = win.mozPaintCount;
73 SimpleTest.executeSoon(nextStep);
74 }
75 win.addEventListener("resize", resizeListener, true);
76 SimpleTest.info("Maximizing test " + testIndex + " window" + testInfo());
77 Components.classes["@mozilla.org/appshell/window-mediator;1"]
78 .getService(Components.interfaces.nsIWindowMediator)
79 .getMostRecentWindow("navigator:browser")
80 .maximize();
81 } else {
82 SimpleTest.executeSoon(nextStep);
83 }
84 }
86 function nextTest() {
87 if (testIndex >= tests.length) {
88 SimpleTest.finish();
89 return;
90 }
92 if (winLowerThanVista && !tests[testIndex].maximize) {
93 ok(true, "Skipping non-maximized test " + testIndex + " on winLowerThanVista since the resizer causes overlapping layers");
94 ++testIndex;
95 nextTest();
96 return;
97 }
99 // Run the test in a separate window so we get a clean browser window.
100 win = window.open("data:text/html,<html style='overflow:scroll'>",
101 "", "scrollbars=yes,toolbar,menubar,width=500,height=500");
102 win.addEventListener("load", doTest, false);
103 }
105 nextTest();
106 ]]>
107 </script>
108 </window>