summaryrefslogtreecommitdiffstats
path: root/browser/components/sessionstore/test/browser_477657.js
blob: f54c270bf5355efa4e1d1547c1ada0d27bdedffb (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
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

add_task(async function test_sizemodeDefaults() {
  /** Test for Bug 477657 **/
  let newWin = openDialog(location, "_blank", "chrome,all,dialog=no");
  await promiseWindowLoaded(newWin);
  let newState = {
    windows: [
      {
        tabs: [{ entries: [] }],
        _closedTabs: [
          {
            state: { entries: [{ url: "about:" }] },
            title: "About:",
          },
        ],
        sizemode: "maximized",
      },
    ],
  };

  let uniqueKey = "bug 477657";
  let uniqueValue = "unik" + Date.now();

  ss.setCustomWindowValue(newWin, uniqueKey, uniqueValue);
  is(
    ss.getCustomWindowValue(newWin, uniqueKey),
    uniqueValue,
    "window value was set before the window was overwritten"
  );

  await setWindowState(newWin, newState, true);
  // use newWin.setTimeout(..., 0) to mirror sss_restoreWindowFeatures
  await new Promise(resolve => newWin.setTimeout(resolve, 0));

  is(
    ss.getCustomWindowValue(newWin, uniqueKey),
    "",
    "window value was implicitly cleared"
  );

  is(newWin.windowState, newWin.STATE_MAXIMIZED, "the window was maximized");

  is(
    ss.getClosedTabDataForWindow(newWin).length,
    1,
    "the closed tab was added before the window was overwritten"
  );
  delete newState.windows[0]._closedTabs;
  delete newState.windows[0].sizemode;

  await setWindowState(newWin, newState, true);
  await new Promise(resolve => newWin.setTimeout(resolve, 0));

  is(
    ss.getClosedTabDataForWindow(newWin).length,
    0,
    "closed tabs were implicitly cleared"
  );

  is(
    newWin.windowState,
    newWin.STATE_MAXIMIZED,
    "the window remains maximized"
  );
  newState.windows[0].sizemode = "normal";

  await setWindowState(newWin, newState, true);
  await new Promise(resolve => newWin.setTimeout(resolve, 0));

  isnot(
    newWin.windowState,
    newWin.STATE_MAXIMIZED,
    "the window was explicitly unmaximized"
  );

  await BrowserTestUtils.closeWindow(newWin);
});