<!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>