From e9426c83aa5a1b5a357603b82b7b91f075c9220d Mon Sep 17 00:00:00 2001 From: Noemi Erli Date: Sat, 24 Aug 2019 02:43:14 +0300 Subject: [PATCH] Backed out changeset ffda592c113d (bug 1573924) for failures in browser_sessionRestore.js --- .../aboutlogins/content/aboutLogins.js | 177 ++++++++---------- .../aboutlogins/tests/browser/browser.ini | 1 - .../tests/browser/browser_sessionRestore.js | 65 ------- 3 files changed, 77 insertions(+), 166 deletions(-) delete mode 100644 browser/components/aboutlogins/tests/browser/browser_sessionRestore.js diff --git a/browser/components/aboutlogins/content/aboutLogins.js b/browser/components/aboutlogins/content/aboutLogins.js index d4422e3a6570..c770193b651b 100644 --- a/browser/components/aboutlogins/content/aboutLogins.js +++ b/browser/components/aboutlogins/content/aboutLogins.js @@ -2,106 +2,83 @@ * 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/. */ -let aboutLogins = { - loaded: false, - handleEvent(event) { - // Run the initialization code for DOMContentLoaded and - // pageshow to handle normal loads and sessionrestore/bfcache. - if (this.loaded) { - return; - } - this.loaded = true; - this._onLoad(event); - }, - - _onLoad(event2) { - const gElements = { - fxAccountsButton: document.querySelector("fxaccounts-button"), - loginList: document.querySelector("login-list"), - loginIntro: document.querySelector("login-intro"), - loginItem: document.querySelector("login-item"), - loginFilter: document.querySelector("login-filter"), - // loginFooter is nested inside of loginItem - get loginFooter() { - return this.loginItem.shadowRoot.querySelector("login-footer"); - }, - }; - - let numberOfLogins = 0; - - let { searchParams } = new URL(document.location); - if (searchParams.get("filter")) { - gElements.loginFilter.value = searchParams.get("filter"); - } - - gElements.loginFilter.focus(); - - function updateNoLogins() { - document.documentElement.classList.toggle( - "no-logins", - numberOfLogins == 0 - ); - gElements.loginList.classList.toggle("no-logins", numberOfLogins == 0); - } - - window.addEventListener("AboutLoginsChromeToContent", event => { - switch (event.detail.messageType) { - case "AllLogins": { - gElements.loginList.setLogins(event.detail.value); - numberOfLogins = event.detail.value.length; - updateNoLogins(); - break; - } - case "InitialInfo": { - gElements.loginFooter.hidden = event.detail.value.hideMobileFooter; - break; - } - case "LocalizeBadges": { - gElements.loginFooter.showStoreIconsForLocales(event.detail.value); - break; - } - case "LoginAdded": { - gElements.loginList.loginAdded(event.detail.value); - gElements.loginItem.loginAdded(event.detail.value); - numberOfLogins++; - updateNoLogins(); - break; - } - case "LoginModified": { - gElements.loginList.loginModified(event.detail.value); - gElements.loginItem.loginModified(event.detail.value); - break; - } - case "LoginRemoved": { - gElements.loginList.loginRemoved(event.detail.value); - gElements.loginItem.loginRemoved(event.detail.value); - numberOfLogins--; - updateNoLogins(); - break; - } - case "SendFavicons": { - gElements.loginList.addFavicons(event.detail.value); - break; - } - case "SyncState": { - gElements.fxAccountsButton.updateState(event.detail.value); - break; - } - case "UpdateBreaches": { - gElements.loginList.updateBreaches(event.detail.value); - gElements.loginItem.updateBreaches(event.detail.value); - break; - } - } - }); - - document.dispatchEvent( - new CustomEvent("AboutLoginsInit", { bubbles: true }) - ); +// The init code isn't wrapped in a DOMContentLoaded/load event listener so the +// page works properly when restored from session restore. +const gElements = { + fxAccountsButton: document.querySelector("fxaccounts-button"), + loginList: document.querySelector("login-list"), + loginIntro: document.querySelector("login-intro"), + loginItem: document.querySelector("login-item"), + loginFilter: document.querySelector("login-filter"), + // loginFooter is nested inside of loginItem + get loginFooter() { + return this.loginItem.shadowRoot.querySelector("login-footer"); }, }; -// Run the initialization code for DOMContentLoaded and -// pageshow to handle normal loads and sessionrestore/bfcache. -window.addEventListener("DOMContentLoaded", aboutLogins, { once: true }); -window.addEventListener("pageshow", aboutLogins, { once: true }); +let numberOfLogins = 0; + +let { searchParams } = new URL(document.location); +if (searchParams.get("filter")) { + gElements.loginFilter.value = searchParams.get("filter"); +} + +gElements.loginFilter.focus(); + +function updateNoLogins() { + document.documentElement.classList.toggle("no-logins", numberOfLogins == 0); + gElements.loginList.classList.toggle("no-logins", numberOfLogins == 0); +} + +window.addEventListener("AboutLoginsChromeToContent", event => { + switch (event.detail.messageType) { + case "AllLogins": { + gElements.loginList.setLogins(event.detail.value); + numberOfLogins = event.detail.value.length; + updateNoLogins(); + break; + } + case "InitialInfo": { + gElements.loginFooter.hidden = event.detail.value.hideMobileFooter; + break; + } + case "LocalizeBadges": { + gElements.loginFooter.showStoreIconsForLocales(event.detail.value); + break; + } + case "LoginAdded": { + gElements.loginList.loginAdded(event.detail.value); + gElements.loginItem.loginAdded(event.detail.value); + numberOfLogins++; + updateNoLogins(); + break; + } + case "LoginModified": { + gElements.loginList.loginModified(event.detail.value); + gElements.loginItem.loginModified(event.detail.value); + break; + } + case "LoginRemoved": { + gElements.loginList.loginRemoved(event.detail.value); + gElements.loginItem.loginRemoved(event.detail.value); + numberOfLogins--; + updateNoLogins(); + break; + } + case "SendFavicons": { + gElements.loginList.addFavicons(event.detail.value); + break; + } + case "SyncState": { + gElements.fxAccountsButton.updateState(event.detail.value); + break; + } + case "UpdateBreaches": { + gElements.loginList.updateBreaches(event.detail.value); + gElements.loginItem.updateBreaches(event.detail.value); + break; + } + } +}); + +document.dispatchEvent(new CustomEvent("AboutLoginsInit", { bubbles: true })); diff --git a/browser/components/aboutlogins/tests/browser/browser.ini b/browser/components/aboutlogins/tests/browser/browser.ini index 5a55f671e780..2a485725f2b3 100644 --- a/browser/components/aboutlogins/tests/browser/browser.ini +++ b/browser/components/aboutlogins/tests/browser/browser.ini @@ -26,5 +26,4 @@ skip-if = (os != "win") # import is only available on Windows [browser_openPreferences.js] [browser_openPreferencesExternal.js] [browser_openSite.js] -[browser_sessionRestore.js] [browser_updateLogin.js] diff --git a/browser/components/aboutlogins/tests/browser/browser_sessionRestore.js b/browser/components/aboutlogins/tests/browser/browser_sessionRestore.js deleted file mode 100644 index 87b83b64861b..000000000000 --- a/browser/components/aboutlogins/tests/browser/browser_sessionRestore.js +++ /dev/null @@ -1,65 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - * http://creativecommons.org/publicdomain/zero/1.0/ */ - -"use strict"; - -const { TabState } = ChromeUtils.import( - "resource:///modules/sessionstore/TabState.jsm" -); - -add_task(async function() { - TEST_LOGIN1 = await addLogin(TEST_LOGIN1); - const testGuid = TEST_LOGIN1.guid; - const tab = BrowserTestUtils.addTab(gBrowser, "about:logins"); - const browser = gBrowser.getBrowserForTab(tab); - await BrowserTestUtils.browserLoaded(browser); - - await ContentTask.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"); - ok(loginFound, "Confirming that login is displayed in page"); - }); - - BrowserTestUtils.removeTab(tab); - info("Adding a lazy about:logins tab..."); - let lazyTab = BrowserTestUtils.addTab(gBrowser, "about:logins", { - createLazyBrowser: true, - }); - - is(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"); - await BrowserTestUtils.switchTab(gBrowser, lazyTab); - - await tabLoaded; - - let lazyBrowser = lazyTab.linkedBrowser; - await ContentTask.spawn(lazyBrowser, 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 restored page"); - ok(loginFound, "Confirming that login is displayed in restored page"); - }); - - BrowserTestUtils.removeTab(lazyTab); -});