Move away from having "tab" objects. Instead focus on bare minimal data. * Two distinct list of URLs (Array of strings), for all source URLs which should be: - opened in tabs (state.tabs.urls) - pretty printed (state.tabs.prettyPrintedURLs) These two lists are persisted in async storage and re-appliead on page reload and after devtools restarts. * List of source objects (Array of objects) which are currently displayed in tabs (state.tabs.openedSources). This list is transient and cleared on page reload. This simplify lots of logics as this is now URL and source based. Also, we don't need to store the precise `sourceActor` selected by the tab as it only display source information. Differential Revision: https://phabricator.services.mozilla.com/D259173
27 lines
1.1 KiB
JavaScript
27 lines
1.1 KiB
JavaScript
/* 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/>. */
|
|
|
|
// Tests that the editor does not crash when closing a tab (using the contextmenu)
|
|
|
|
"use strict";
|
|
|
|
add_task(async function testEditorExceptionClose() {
|
|
const dbg = await initDebugger("doc-exceptions.html", "exceptions.js");
|
|
await selectSource(dbg, "exceptions.js");
|
|
is(countTabs(dbg), 1, "Tab for the exceptions.js source is open");
|
|
await openActiveTabContextMenuAndSelectCloseTabItem(dbg);
|
|
is(countTabs(dbg), 0, "All tabs are closed");
|
|
});
|
|
|
|
async function openActiveTabContextMenuAndSelectCloseTabItem(dbg) {
|
|
const waitForOpen = waitForContextMenu(dbg);
|
|
info(`Open the current active tab context menu`);
|
|
rightClickElement(dbg, "activeTab");
|
|
await waitForOpen;
|
|
const wait = waitForDispatch(dbg.store, "CLOSE_TABS_FOR_SOURCES");
|
|
info(`Select the close tab context menu item`);
|
|
selectContextMenuItem(dbg, `#node-menu-close-tab`);
|
|
return wait;
|
|
}
|