Home | History | Annotate | Download | only in ManualTests
      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>
    127