summaryrefslogtreecommitdiffstats
path: root/browser/components/aboutlogins/tests/browser/browser_sessionRestore.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/aboutlogins/tests/browser/browser_sessionRestore.js')
-rw-r--r--browser/components/aboutlogins/tests/browser/browser_sessionRestore.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/browser/components/aboutlogins/tests/browser/browser_sessionRestore.js b/browser/components/aboutlogins/tests/browser/browser_sessionRestore.js
new file mode 100644
index 0000000000..5ab03f9867
--- /dev/null
+++ b/browser/components/aboutlogins/tests/browser/browser_sessionRestore.js
@@ -0,0 +1,62 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+async function checkLoginDisplayed(browser, testGuid) {
+ await SpecialPowers.spawn(browser, [testGuid], async function (guid) {
+ let loginList = Cu.waiveXrays(content.document.querySelector("login-list"));
+ let loginFound = await ContentTaskUtils.waitForCondition(() => {
+ return (
+ loginList._loginGuidsSortedOrder.length == 1 &&
+ loginList._loginGuidsSortedOrder[0] == guid
+ );
+ }, "Waiting for login to be displayed in page");
+ Assert.ok(loginFound, "Confirming that login is displayed in page");
+ });
+}
+
+add_task(async function () {
+ TEST_LOGIN1 = await addLogin(TEST_LOGIN1);
+ registerCleanupFunction(() => {
+ Services.logins.removeAllUserFacingLogins();
+ });
+
+ const testGuid = TEST_LOGIN1.guid;
+ const tab = BrowserTestUtils.addTab(gBrowser, "about:logins");
+ const browser = gBrowser.getBrowserForTab(tab);
+ await BrowserTestUtils.browserLoaded(browser);
+
+ await checkLoginDisplayed(browser, testGuid);
+
+ BrowserTestUtils.removeTab(tab);
+ info("Adding a lazy about:logins tab...");
+ let lazyTab = BrowserTestUtils.addTab(gBrowser, "about:logins", {
+ createLazyBrowser: true,
+ });
+
+ Assert.equal(lazyTab.linkedPanel, "", "Tab is lazy");
+ let tabLoaded = new Promise(resolve => {
+ gBrowser.addTabsProgressListener({
+ async onLocationChange(aBrowser) {
+ if (lazyTab.linkedBrowser == aBrowser) {
+ gBrowser.removeTabsProgressListener(this);
+ await Promise.resolve();
+ resolve();
+ }
+ },
+ });
+ });
+
+ info("Switching tab to cause it to get restored");
+ const browserLoaded = BrowserTestUtils.browserLoaded(lazyTab.linkedBrowser);
+ await BrowserTestUtils.switchTab(gBrowser, lazyTab);
+
+ await tabLoaded;
+ await browserLoaded;
+
+ let lazyBrowser = lazyTab.linkedBrowser;
+ await checkLoginDisplayed(lazyBrowser, testGuid);
+
+ BrowserTestUtils.removeTab(lazyTab);
+});