diff options
Diffstat (limited to '')
-rw-r--r-- | widget/tests/test_position_on_resize.xhtml | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/widget/tests/test_position_on_resize.xhtml b/widget/tests/test_position_on_resize.xhtml new file mode 100644 index 0000000000..a7c5551018 --- /dev/null +++ b/widget/tests/test_position_on_resize.xhtml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<?xml-stylesheet href="chrome://global/skin" type="text/css"?> +<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" + type="text/css"?> + +<window title="Window Position On Resize Test" + onload="startTest()" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + + <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/> + <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"/> + +<script class="testbody" type="application/javascript"><![CDATA[ + SimpleTest.waitForExplicitFinish(); + let win, x, y; + + function startTest() { + win = window.browsingContext.topChromeWindow.openDialog( + "about:blank", + null, + "chrome,dialog=no,outerHeight=170,outerWidth=200"); + waitForSuccess(function() { return SpecialPowers.DOMWindowUtils.paintCount }, + "No paint received", checkInitialSize); + } + + function checkInitialSize() { + is(win.outerHeight,170, "initial outerHeight"); + is(win.outerWidth, 200, "initial outerWidth"); + x = win.screenX; + y = win.screenY; + shrink(); + } + function shrink() { + win.resizeTo(180, 160); + waitForSuccess(function() { return win.outerHeight == 160 }, + "outerHeight did not change to 160", checkShrink); + } + function checkShrink() { + is(win.outerWidth, 180, "resized outerWidth"); + is(win.screenY, y, "resized window top should not change"); + y = win.screenY; + restore(); + } + function restore() { + win.resizeBy(20, 10); + waitForSuccess(function() { return win.outerHeight == 170 }, + "outerHeight did not change to 170", checkRestore); + } + function checkRestore() { + is(win.outerWidth, 200, "restored outerWidth"); + is(win.screenX, x, "restored window left should not change"); + is(win.screenY, y, "restored window top should not change"); + done(); + } + function done() { + win.close(); + SimpleTest.finish(); + } + + function waitForSuccess(testForSuccess, failureMsg, nextFunc) { + var waitCount = 0; + + function repeatWait() { + ++waitCount; + + if (testForSuccess()) { + nextFunc(); + } + else if (waitCount > 50) { + ok(false, failureMsg); + nextFunc(); + } else { + setTimeout(repeatWait, 100); + } + } + + repeatWait(); + } +]]></script> + +<body xmlns="http://www.w3.org/1999/xhtml"> +<p id="display"> +</p> +<div id="content" style="display: none"> +</div> +<pre id="test"> +</pre> +</body> + +</window> |