widget/tests/test_position_on_resize.xul
author Brindusan Cristian <cbrindusan@mozilla.com>
Tue, 05 Mar 2019 22:42:15 +0200
changeset 520316 be4b780a7783cdf7d3ead37c98917dc0d2e94a1d
parent 458159 7bbd1a09eacb8a31f4caef5c1e526d8d32569ae9
child 528459 0d9b9b96f5475adbed73922da696aeff7cbbaed3
permissions -rw-r--r--
Backed out 5 changesets (bug 1508976, bug 1522581) for android geckoview bustages at /usr/bin/python2.7. CLOSED TREE Backed out changeset 7a6be593b0be (bug 1522581) Backed out changeset c47b37ac1775 (bug 1522581) Backed out changeset 91c31d2a7706 (bug 1508976) Backed out changeset da57df805c56 (bug 1508976) Backed out changeset 4e5d97c93515 (bug 1508976)

<?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 type="application/javascript"
          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
  <script type="application/javascript"
          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.openDialog("about:blank",
                            null,
                            "chrome,dialog=no,outerHeight=170,outerWidth=200");
    waitForSuccess(function() { return win.mozPaintCount },
                   "No paint received", checkInitialSize);
  }

  function checkInitialSize() {
    let runtime = Cc["@mozilla.org/xre/app-info;1"]
                    .getService(Ci.nsIXULRuntime);
    let test = runtime.widgetToolkit == "windows" ? todo_is : is; // bug 602745
    test(win.outerHeight,170, "initial outerHeight");
    test(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>