81 lines
2 KiB
JavaScript
81 lines
2 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const TEST_URL = "data:text/html;charset=utf-8,";
|
|
|
|
// Test global exit button
|
|
addRDMTask(TEST_URL, async function (...args) {
|
|
await testExitButton(...args);
|
|
});
|
|
|
|
// Test global exit button on detached tab.
|
|
// See Bug 1262806
|
|
addRDMTask(
|
|
null,
|
|
async function () {
|
|
let tab = await addTab(TEST_URL);
|
|
const { ui, manager } = await openRDM(tab);
|
|
|
|
await waitBootstrap(ui);
|
|
|
|
const waitTabIsDetached = Promise.all([
|
|
once(tab, "TabClose"),
|
|
once(tab.linkedBrowser, "SwapDocShells"),
|
|
]);
|
|
|
|
// Detach the tab with RDM open.
|
|
const newWindow = gBrowser.replaceTabWithWindow(tab);
|
|
|
|
// Wait until the tab is detached and the new window is fully initialized.
|
|
await waitTabIsDetached;
|
|
await newWindow.delayedStartupPromise;
|
|
|
|
// Get the new tab instance.
|
|
tab = newWindow.gBrowser.tabs[0];
|
|
|
|
// Detaching a tab closes RDM.
|
|
ok(
|
|
!manager.isActiveForTab(tab),
|
|
"Responsive Design Mode is not active for the tab"
|
|
);
|
|
|
|
// Reopen the RDM and test the exit button again.
|
|
await testExitButton(await openRDM(tab));
|
|
await BrowserTestUtils.closeWindow(newWindow);
|
|
},
|
|
{ onlyPrefAndTask: true }
|
|
);
|
|
|
|
async function waitBootstrap(ui) {
|
|
const { toolWindow, tab } = ui;
|
|
const { store } = toolWindow;
|
|
const url = String(tab.linkedBrowser.currentURI.spec);
|
|
|
|
// Wait until the viewport has been added.
|
|
await waitUntilState(store, state => state.viewports.length == 1);
|
|
|
|
// Wait until the document has been loaded.
|
|
await waitForFrameLoad(ui, url);
|
|
}
|
|
|
|
async function testExitButton({ ui, manager }) {
|
|
await waitBootstrap(ui);
|
|
|
|
const exitButton = ui.toolWindow.document.getElementById("exit-button");
|
|
|
|
ok(
|
|
manager.isActiveForTab(ui.tab),
|
|
"Responsive Design Mode active for the tab"
|
|
);
|
|
|
|
exitButton.click();
|
|
|
|
await once(manager, "off");
|
|
|
|
ok(
|
|
!manager.isActiveForTab(ui.tab),
|
|
"Responsive Design Mode is not active for the tab"
|
|
);
|
|
}
|