widget/tests/test_sizemode_events.xul
author Brindusan Cristian <cbrindusan@mozilla.com>
Tue, 05 Mar 2019 22:42:15 +0200
changeset 520316 be4b780a7783cdf7d3ead37c98917dc0d2e94a1d
parent 454622 d5a5ad1dbbf2c53a80386e7397ba6b32153b2b8e
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="Test for bug 715867"
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

  <script type="application/javascript"
          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />

<body  xmlns="http://www.w3.org/1999/xhtml">
<p id="display"></p>
<div id="content" style="display: none">

</div>
<pre id="test">
</pre>
</body>

<script class="testbody" type="application/javascript">
<![CDATA[

const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";

gWindow = null;

gSizeModeDidChange = false;
gSizeModeDidChangeTo = 0;

function sizemodeChanged(e) {
  gSizeModeDidChange = true;
  gSizeModeDidChangeTo = gWindow.windowState;
}

function expectSizeModeChange(newMode, duringActionCallback) {
  gSizeModeDidChange = false;

  duringActionCallback();

  if (newMode == 0) {
    // No change should have taken place, no event should have fired.
    ok(!gSizeModeDidChange, "No sizemodechange event should have fired.");
  } else {
    // Size mode change event was expected to fire.
    ok(gSizeModeDidChange, "A sizemodechanged event should have fired.");
    is(gSizeModeDidChangeTo, newMode, "The new sizemode should have the expected value.");
  }
}

function startTest() {
  if (navigator.platform.includes("Lin")) {
    ok(true, "This test is disabled on Linux because it expects window sizemode changes to be synchronous (which is not the case on Linux).");
    SimpleTest.finish();
    return;
  };
  openWindow();
}

function openWindow() {
  gWindow = open('empty_window.xul', '_blank', 'chrome,screenX=50,screenY=50,width=200,height=200,resizable');
  SimpleTest.waitForFocus(runTest, gWindow);
}

function runTest() {
  // Install event handler.
  gWindow.addEventListener("sizemodechange", sizemodeChanged, false);

  // Run tests.
  expectSizeModeChange(gWindow.STATE_MINIMIZED, function () {
    gWindow.minimize();
  });

  expectSizeModeChange(gWindow.STATE_NORMAL, function () {
    gWindow.restore();
  });

  expectSizeModeChange(gWindow.STATE_MAXIMIZED, function () {
    gWindow.maximize();
  });

  expectSizeModeChange(gWindow.STATE_NORMAL, function () {
    gWindow.restore();
  });

  // Normal window resizing shouldn't fire a sizemodechanged event, bug 715867.
  expectSizeModeChange(0, function () {
    gWindow.resizeTo(gWindow.outerWidth + 10, gWindow.outerHeight);
  });

  expectSizeModeChange(0, function () {
    gWindow.resizeTo(gWindow.outerWidth, gWindow.outerHeight + 10);
  });

  gWindow.removeEventListener("sizemodechange", sizemodeChanged, false);
  gWindow.close();
  SimpleTest.finish();
}

SimpleTest.waitForExplicitFinish();
SimpleTest.waitForFocus(startTest);

]]>
</script>

</window>