summaryrefslogtreecommitdiffstats
path: root/widget/tests/window_bug522217.xhtml
blob: 80eb4b6e5ad9e90351c35c19ffbdcffa4e921d46 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<window title="Mozilla Bug 522217"
  onload="start();"
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

  <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js" />

<body xmlns="http://www.w3.org/1999/xhtml" id="body">
</body>

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

function ok(aCondition, aMessage)
{
  window.arguments[0].SimpleTest.ok(aCondition, aMessage);
}

function is(aLeft, aRight, aMessage)
{
  window.arguments[0].SimpleTest.is(aLeft, aRight, aMessage);
}

function isnot(aLeft, aRight, aMessage)
{
  window.arguments[0].SimpleTest.isnot(aLeft, aRight, aMessage);
}

function executeSoon() {
  return new Promise(resolve => {
    window.arguments[0].SimpleTest.executeSoon(resolve);
  });
}

function waitForEvent(obj, name) {
  return new Promise(resolve => {
    obj.addEventListener(name, resolve, { once: true });
  });
}

async function start() {
  await waitForEvent(window, "focus");
  var oldOuterWidth = window.outerWidth, oldOuterHeight = window.outerHeight;
  var oldInnerWidth = window.innerWidth, oldInnerHeight = window.innerHeight;
  document.documentElement.setAttribute("chromemargin", "0,0,0,0");

  await executeSoon();
  is(window.outerWidth, oldOuterWidth, "chromemargin shouldn't change the window's outerWidth");
  is(window.outerHeight, oldOuterHeight, "chromemargin shouldn't change the window's outerHeight");
  is(window.innerWidth, oldOuterWidth, "if chromemargin is set, innerWidth and outerWidth should be the same");
  is(window.innerHeight, oldOuterHeight, "if chromemargin is set, innerHeight and outerHeight should be the same");

  // Wait for going full screen and back.
  let sizemodeChange = waitForEvent(window, "sizemodechange");
  window.fullScreen = true;
  await sizemodeChange;
  sizemodeChange = waitForEvent(window, "sizemodechange");
  window.fullScreen = false;
  await sizemodeChange;
  is(window.outerWidth, oldOuterWidth, "wrong outerWidth after fullscreen mode");
  is(window.outerHeight, oldOuterHeight, "wrong outerHeight after fullscreen mode");
  is(window.innerWidth, oldOuterWidth, "wrong innerWidth after fullscreen mode");
  is(window.innerHeight, oldOuterHeight, "wrong innerHeight after fullscreen mode");
  document.documentElement.removeAttribute("chromemargin");

  await executeSoon();
  is(window.outerWidth, oldOuterWidth, "wrong outerWidth after removing chromemargin");
  is(window.outerHeight, oldOuterHeight, "wrong outerHeight after removing chromemargin");
  is(window.innerWidth, oldInnerWidth, "wrong innerWidth after removing chromemargin");
  is(window.innerHeight, oldInnerHeight, "wrong innerHeight after removing chromemargin");
  window.arguments[0].SimpleTest.finish();
  window.close();
}


]]>
</script>

</window>