fune/browser/components/sessionstore/test/browser_aboutSessionRestore.js
Mark Banner 01008c7d57 Bug 1412778 - Enable ESLint rule no-cpows-in-tests across the whole tree. r=florian
MozReview-Commit-ID: 8pidN7x6MYh

--HG--
extra : rebase_source : 6a0d6800091231fc1535223bd7fc6df0ba40d47b
2017-10-30 09:55:39 +00:00

56 lines
2 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const CRASH_URL = "about:mozilla";
const CRASH_FAVICON = "chrome://branding/content/icon32.png";
const CRASH_SHENTRY = {url: CRASH_URL, triggeringPrincipal_base64};
const CRASH_TAB = {entries: [CRASH_SHENTRY], image: CRASH_FAVICON};
const CRASH_STATE = {windows: [{tabs: [CRASH_TAB]}]};
const TAB_URL = "about:sessionrestore";
const TAB_FORMDATA = {url: TAB_URL, id: {sessionData: CRASH_STATE}};
const TAB_SHENTRY = {url: TAB_URL, triggeringPrincipal_base64};
const TAB_STATE = {entries: [TAB_SHENTRY], formdata: TAB_FORMDATA};
const FRAME_SCRIPT = "data:," +
"content.document.getElementById('errorTryAgain').click()";
add_task(async function() {
// Prepare a blank tab.
let tab = BrowserTestUtils.addTab(gBrowser, "about:blank");
let browser = tab.linkedBrowser;
await promiseBrowserLoaded(browser);
// Fake a post-crash tab.
ss.setTabState(tab, JSON.stringify(TAB_STATE));
await promiseTabRestored(tab);
ok(gBrowser.tabs.length > 1, "we have more than one tab");
// eslint-disable-next-line mozilla/no-cpows-in-tests
let view = browser.contentDocument.getElementById("tabList").view;
ok(view.isContainer(0), "first entry is the window");
is(view.getCellProperties(1, { id: "title" }), "icon",
"second entry is the tab and has a favicon");
browser.messageManager.loadFrameScript(FRAME_SCRIPT, true);
// Wait until the new window was restored.
let win = await waitForNewWindow();
await BrowserTestUtils.closeWindow(win);
let [{tabs: [{entries: [{url}]}]}] = JSON.parse(ss.getClosedWindowData());
is(url, CRASH_URL, "session was restored correctly");
ss.forgetClosedWindow(0);
});
function waitForNewWindow() {
return new Promise(resolve => {
Services.obs.addObserver(function observe(win, topic) {
Services.obs.removeObserver(observe, topic);
resolve(win);
}, "browser-delayed-startup-finished");
});
}