1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/widget/tests/test_sizemode_events.xul Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,105 @@ 1.4 +<?xml version="1.0"?> 1.5 +<?xml-stylesheet href="chrome://global/skin" type="text/css"?> 1.6 +<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" 1.7 + type="text/css"?> 1.8 +<window title="Test for bug 715867" 1.9 + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 1.10 + 1.11 + <script type="application/javascript" 1.12 + src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" /> 1.13 + 1.14 +<body xmlns="http://www.w3.org/1999/xhtml"> 1.15 +<p id="display"></p> 1.16 +<div id="content" style="display: none"> 1.17 + 1.18 +</div> 1.19 +<pre id="test"> 1.20 +</pre> 1.21 +</body> 1.22 + 1.23 +<script class="testbody" type="application/javascript"> 1.24 +<![CDATA[ 1.25 + 1.26 +const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; 1.27 + 1.28 +gWindow = null; 1.29 + 1.30 +gSizeModeDidChange = false; 1.31 +gSizeModeDidChangeTo = 0; 1.32 + 1.33 +function sizemodeChanged(e) { 1.34 + gSizeModeDidChange = true; 1.35 + gSizeModeDidChangeTo = gWindow.windowState; 1.36 +} 1.37 + 1.38 +function expectSizeModeChange(newMode, duringActionCallback) { 1.39 + gSizeModeDidChange = false; 1.40 + 1.41 + duringActionCallback(); 1.42 + 1.43 + if (newMode == 0) { 1.44 + // No change should have taken place, no event should have fired. 1.45 + ok(!gSizeModeDidChange, "No sizemodechange event should have fired."); 1.46 + } else { 1.47 + // Size mode change event was expected to fire. 1.48 + ok(gSizeModeDidChange, "A sizemodechanged event should have fired."); 1.49 + is(gSizeModeDidChangeTo, newMode, "The new sizemode should have the expected value."); 1.50 + } 1.51 +} 1.52 + 1.53 +function startTest() { 1.54 + if (navigator.platform.indexOf("Lin") != -1) { 1.55 + ok(true, "This test is disabled on Linux because it expects window sizemode changes to be synchronous (which is not the case on Linux)."); 1.56 + SimpleTest.finish(); 1.57 + return; 1.58 + }; 1.59 + openWindow(); 1.60 +} 1.61 + 1.62 +function openWindow() { 1.63 + gWindow = open('empty_window.xul', '_blank', 'chrome,screenX=50,screenY=50,width=200,height=200,resizable'); 1.64 + SimpleTest.waitForFocus(runTest, gWindow); 1.65 +} 1.66 + 1.67 +function runTest() { 1.68 + // Install event handler. 1.69 + gWindow.addEventListener("sizemodechange", sizemodeChanged, false); 1.70 + 1.71 + // Run tests. 1.72 + expectSizeModeChange(gWindow.STATE_MINIMIZED, function () { 1.73 + gWindow.minimize(); 1.74 + }); 1.75 + 1.76 + expectSizeModeChange(gWindow.STATE_NORMAL, function () { 1.77 + gWindow.restore(); 1.78 + }); 1.79 + 1.80 + expectSizeModeChange(gWindow.STATE_MAXIMIZED, function () { 1.81 + gWindow.maximize(); 1.82 + }); 1.83 + 1.84 + expectSizeModeChange(gWindow.STATE_NORMAL, function () { 1.85 + gWindow.restore(); 1.86 + }); 1.87 + 1.88 + // Normal window resizing shouldn't fire a sizemodechanged event, bug 715867. 1.89 + expectSizeModeChange(0, function () { 1.90 + gWindow.resizeTo(gWindow.outerWidth + 10, gWindow.outerHeight); 1.91 + }); 1.92 + 1.93 + expectSizeModeChange(0, function () { 1.94 + gWindow.resizeTo(gWindow.outerWidth, gWindow.outerHeight + 10); 1.95 + }); 1.96 + 1.97 + gWindow.removeEventListener("sizemodechange", sizemodeChanged, false); 1.98 + gWindow.close(); 1.99 + SimpleTest.finish(); 1.100 +} 1.101 + 1.102 +SimpleTest.waitForExplicitFinish(); 1.103 +SimpleTest.waitForFocus(startTest); 1.104 + 1.105 +]]> 1.106 +</script> 1.107 + 1.108 +</window>