summaryrefslogtreecommitdiffstats
path: root/devtools/client/responsive/test/browser/browser_window_close.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/responsive/test/browser/browser_window_close.js')
-rw-r--r--devtools/client/responsive/test/browser/browser_window_close.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/devtools/client/responsive/test/browser/browser_window_close.js b/devtools/client/responsive/test/browser/browser_window_close.js
new file mode 100644
index 0000000000..2af3d7fdd8
--- /dev/null
+++ b/devtools/client/responsive/test/browser/browser_window_close.js
@@ -0,0 +1,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 }
+);