123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- <!DOCTYPE html>
- <html>
- <!--
- https://bugzilla.mozilla.org/show_bug.cgi?id=369370
- -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Test for Bug 369370</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
- </head>
- <body>
- <script type="text/javascript">
- /*
- * Test strategy:
- */
- function makeClickFor(x, y) {
- var event = kidDoc.createEvent("mouseevent");
- event.initMouseEvent("click",
- true, true, kidWin, 1, // bubbles, cancelable, view, single-click
- x, y, x, y, // screen X/Y, client X/Y
- false, false, false, false, // no key modifiers
- 0, null); // left click, not relatedTarget
- return event;
- }
- function childLoaded() {
- kidDoc = kidWin.document;
- ok(true, "Child window loaded");
- var elements = kidDoc.getElementsByTagName("img");
- is(elements.length, 1, "looking for imagedoc img");
- var img = elements[0];
- // Need to use innerWidth/innerHeight of the window
- // since the containing image is absolutely positioned,
- // causing clientHeight to be zero.
- is(kidWin.innerWidth, 400, "Checking doc width");
- is(kidWin.innerHeight, 300, "Checking doc height");
- // Image just loaded and is scaled to window size.
- is(img.width, 400, "image width");
- is(img.height, 300, "image height");
- is(kidDoc.body.scrollLeft, 0, "Checking scrollLeft");
- is(kidDoc.body.scrollTop, 0, "Checking scrollTop");
- // ========== test 1 ==========
- // Click in the upper left to zoom in
- var event = makeClickFor(25,25);
- img.dispatchEvent(event);
- ok(true, "----- click 1 -----");
- is(img.width, 800, "image width");
- is(img.height, 600, "image height");
- is(kidDoc.body.scrollLeft, 0, "Checking scrollLeft");
- is(kidDoc.body.scrollTop, 0, "Checking scrollTop");
- // ========== test 2 ==========
- // Click there again to zoom out
- event = makeClickFor(25,25);
- img.dispatchEvent(event);
- ok(true, "----- click 2 -----");
- is(img.width, 400, "image width");
- is(img.height, 300, "image height");
- is(kidDoc.body.scrollLeft, 0, "Checking scrollLeft");
- is(kidDoc.body.scrollTop, 0, "Checking scrollTop");
- // ========== test 3 ==========
- // Click in the lower right to zoom in
- event = makeClickFor(350, 250);
- img.dispatchEvent(event);
- ok(true, "----- click 3 -----");
- is(img.width, 800, "image width");
- is(img.height, 600, "image height");
- is(kidDoc.body.scrollLeft, 400, "Checking scrollLeft");
- is(kidDoc.body.scrollTop, 300, "Checking scrollTop");
- // ========== test 4 ==========
- // Click there again to zoom out
- event = makeClickFor(350, 250);
- img.dispatchEvent(event);
- ok(true, "----- click 4 -----");
- is(img.width, 400, "image width");
- is(img.height, 300, "image height");
- is(kidDoc.body.scrollLeft, 0, "Checking scrollLeft");
- is(kidDoc.body.scrollTop, 0, "Checking scrollTop");
- // ========== test 5 ==========
- // Click in the upper left to zoom in again
- event = makeClickFor(25, 25);
- img.dispatchEvent(event);
- ok(true, "----- click 5 -----");
- is(img.width, 800, "image width");
- is(img.height, 600, "image height");
- is(kidDoc.body.scrollLeft, 0, "Checking scrollLeft");
- is(kidDoc.body.scrollTop, 0, "Checking scrollTop");
- is(img.getBoundingClientRect().top, 0, "Image is in view vertically");
- // ========== test 6 ==========
- // Now try resizing the window so the image fits vertically.
- function test6() {
- kidWin.addEventListener("resize", function resizeListener() {
- kidWin.removeEventListener("resize", resizeListener);
- // Give the image document time to respond
- SimpleTest.executeSoon(function() {
- is(img.height, 600, "image height");
- is(img.getBoundingClientRect().top, 25, "Image is vertically centered");
- test7();
- });
- });
- var decorationSize = kidWin.outerHeight - kidWin.innerHeight;
- kidWin.resizeTo(400, 600 + 50 + decorationSize);
- }
- // ========== test 7 ==========
- // Now try resizing the window so the image no longer fits vertically.
- function test7() {
- kidWin.addEventListener("resize", function resizeListener() {
- kidWin.removeEventListener("resize", resizeListener);
- // Give the image document time to respond
- SimpleTest.executeSoon(function() {
- is(img.height, 600, "image height");
- is(img.getBoundingClientRect().top, 0, "Image is at top again");
- kidWin.close();
- SimpleTest.finish();
- });
- });
- var decorationSize = kidWin.outerHeight - kidWin.innerHeight;
- kidWin.resizeTo(400, 300 + decorationSize);
- }
- test6();
- }
- var kidWin;
- var kidDoc;
- SimpleTest.waitForExplicitFinish();
- SpecialPowers.pushPrefEnv({"set":[["browser.enable_automatic_image_resizing", true]]}, function() {
- kidWin = window.open("bug369370-popup.png", "bug369370", "width=400,height=300,scrollbars=no");
- // will init onload
- ok(kidWin, "opened child window");
- kidWin.onload = childLoaded;
- });
- </script>
- </body>
- </html>
|