/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; // Verify RDM closes synchronously when tabs are discarded. const TEST_URL = "https://example.com/"; addRDMTask( null, async function () { const tab = await addTab(TEST_URL); const { ui } = await openRDM(tab); await waitForDeviceAndViewportState(ui); const clientClosed = waitForClientClose(ui); closeRDM(tab, { reason: "TabBrowserDiscarded", }); // This flag is set at the end of `ResponsiveUI.destroy`. If it is true // without waiting for `closeRDM` above, then we must have closed // synchronously. is(ui.destroyed, true, "RDM closed synchronously"); await clientClosed; await removeTab(tab); }, { onlyPrefAndTask: true } ); addRDMTask( null, async function () { const tab = await addTab(TEST_URL); const { ui } = await openRDM(tab); await waitForDeviceAndViewportState(ui); const clientClosed = waitForClientClose(ui); // If the tab is selected, it is not allowed to be discarded. info("Create another tab to deselect the tab to discard"); const tab2 = await addTab(TEST_URL); info("Discard the initial tab"); gBrowser.discardBrowser(tab); // This flag is set at the end of `ResponsiveUI.destroy`. If it is true without // waiting for `closeRDM` itself and only removing the tab, then we must have closed // synchronously in response to tab closing. is(ui.destroyed, true, "RDM closed synchronously"); await clientClosed; await removeTab(tab); await removeTab(tab2); }, { onlyPrefAndTask: true } );