|
1 <html> |
|
2 <head> |
|
3 <script> |
|
4 var w; |
|
5 function Open(sFeatures) |
|
6 { |
|
7 if (w && !w.closed) |
|
8 w.close(); |
|
9 |
|
10 w = window.open("resources/popup200x200.html", "popup", sFeatures); |
|
11 |
|
12 } |
|
13 |
|
14 function test1() |
|
15 { |
|
16 Open("width=200, height=200, left = 0, top = 0, scrollbars, resizable"); |
|
17 |
|
18 setConsole(document.getElementById('console1')); |
|
19 clearConsole(); |
|
20 shouldBe("w.innerHeight", 200); |
|
21 shouldBe("w.innerWidth", 200); |
|
22 shouldBe("w.outerWidth", 200); |
|
23 shouldBe("w.screenLeft", 0); |
|
24 shouldBe("w.screenTop", 22); // empirical result of low dpi testing |
|
25 shouldBe("w.outerHeight", 223); // empirical result of low dpi testing |
|
26 } |
|
27 |
|
28 function test2() |
|
29 { |
|
30 console = document.getElementById('console2'); |
|
31 Open("width=200, height=200, left = 0, top = 0, scrollbars, menubar, status, toolbar, resizable"); |
|
32 |
|
33 setConsole(document.getElementById('console2')); |
|
34 clearConsole(); |
|
35 shouldBe("w.innerHeight", 200); |
|
36 shouldBe("w.innerWidth", 200); |
|
37 shouldBe("w.outerWidth", 200); |
|
38 shouldBe("w.screenLeft", 0); |
|
39 shouldBe("w.screenTop", 22); // empirical result of low dpi testing |
|
40 shouldBe("w.outerHeight", 313); // empirical result of low dpi testing |
|
41 } |
|
42 |
|
43 function test3() |
|
44 { |
|
45 Open("width=200,height=200,left=" + (screen.width - 200) + ",screenY=0, resizable"); |
|
46 w.moveBy(0, screen.height - w.screenTop - w.outerHeight); |
|
47 |
|
48 // should be no-ops |
|
49 w.moveTo(w.screenLeft - 100, w.screenTop + 100); |
|
50 w.moveBy(100, -100); |
|
51 w.resizeTo(w.outerWidth - 100 , w.outerHeight - 100); |
|
52 w.resizeBy(100, 100); |
|
53 |
|
54 setConsole(document.getElementById('console3')); |
|
55 clearConsole(); |
|
56 shouldBe("w.innerHeight", 200); |
|
57 shouldBe("w.innerWidth", 200); |
|
58 shouldBe("w.outerWidth", 200); |
|
59 shouldBe("w.screenLeft", screen.width - 200); |
|
60 shouldBe("w.screenTop", screen.height - w.outerHeight); |
|
61 shouldBe("w.outerHeight", 223); // empirical result of low dpi testing |
|
62 } |
|
63 |
|
64 var console; |
|
65 function print(message, color) |
|
66 { |
|
67 var paragraph = document.createElement("div"); |
|
68 paragraph.appendChild(document.createTextNode(message)); |
|
69 paragraph.style.fontFamily = "monospace"; |
|
70 if (color) |
|
71 paragraph.style.color = color; |
|
72 console.appendChild(paragraph); |
|
73 } |
|
74 |
|
75 function clearConsole() |
|
76 { |
|
77 console.innerHTML = ""; |
|
78 } |
|
79 |
|
80 function setConsole(c) |
|
81 { |
|
82 console = c; |
|
83 } |
|
84 |
|
85 function shouldBe(a, b) |
|
86 { |
|
87 var evalA = eval(a); |
|
88 if (evalA == b) |
|
89 print("PASS: " + a + " should be " + b + " and is.", "green"); |
|
90 else |
|
91 print("FAIL: " + a + " should be " + b + " but instead is " + evalA + ".", "red"); |
|
92 } |
|
93 </script> |
|
94 </head> |
|
95 <body> |
|
96 |
|
97 <p>This test checks our support for window sizing and positioning.</p> |
|
98 <p>To test: Click each button below. Check to make sure that the window it opens has the specified attributes. |
|
99 Also check for a series of 'PASS' messages below the button.</p> |
|
100 <p style="color:red">NOTE: Make sure to test at magnified resolutions.</p> |
|
101 <p>To test @ 2X resolution:</p> |
|
102 <ol> |
|
103 <li>Open Quartz Debug (/Developer/Applications/Performance Tools).</li> |
|
104 <li>Select Tools -> Show User Interface Resolution.</li> |
|
105 <li>Set the resolution to 2.0.</li> |
|
106 <li>Restart Safari.</li> |
|
107 </ol> |
|
108 <hr> |
|
109 |
|
110 <p>Window size (no toolbars): You should see a red 1 pixel border along every edge of this page, and no scrollbars.</p> |
|
111 <input type="button" value="open it!" onclick="test1()"> |
|
112 <div id='console1'></div> |
|
113 <hr> |
|
114 |
|
115 <p>Window size (all toolbars): You should see a red 1 pixel border along every edge of this page, and no scrollbars.</p> |
|
116 <input type="button" value="open it!" onclick="test2()"> |
|
117 <div id='console2'></div> |
|
118 <hr> |
|
119 |
|
120 <p>Window positioning: This window should be aligned exactly to the bottom right corner of the screen.</p> |
|
121 <input type="button" value="open it!" onclick="test3()"> |
|
122 <div id='console3'></div> |
|
123 <hr> |
|
124 |
|
125 </body> |
|
126 </html> |