summaryrefslogtreecommitdiffstats
path: root/devtools/client/responsive/test/browser/browser_window_close.js
blob: 2af3d7fdd858b9a2e1e97882e35850fd98514560 (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
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

addRDMTask(
  null,
  async function () {
    const NEW_WINDOW_URL =
      "data:text/html;charset=utf-8,New window opened via window.open";
    const newWindowPromise = BrowserTestUtils.waitForNewWindow({
      // Passing the url param so the Promise will resolve once DOMContentLoaded is emitted
      // on the new window tab
      url: NEW_WINDOW_URL,
    });
    window.open(NEW_WINDOW_URL, "_blank", "noopener,all");

    const newWindow = await newWindowPromise;
    ok(true, "Got new window");

    info("Focus new window");
    newWindow.focus();

    info("Open RDM");
    const tab = newWindow.gBrowser.selectedTab;
    const { ui } = await openRDM(tab);
    await waitForDeviceAndViewportState(ui);

    ok(
      ResponsiveUIManager.isActiveForTab(tab),
      "ResponsiveUI should be active for tab when the window is closed"
    );

    // Close the window on a tab with an active responsive design UI and
    // wait for the UI to gracefully shutdown.  This has leaked the window
    // in the past.
    info("Close the new window");
    const offPromise = once(ResponsiveUIManager, "off");
    await BrowserTestUtils.closeWindow(newWindow);
    await offPromise;
  },
  { onlyPrefAndTask: true }
);