diff --git a/browser/extensions/pocket/bootstrap.js b/browser/extensions/pocket/bootstrap.js index 1c867e78a93c..bdc99a0b53ab 100644 --- a/browser/extensions/pocket/bootstrap.js +++ b/browser/extensions/pocket/bootstrap.js @@ -383,8 +383,12 @@ var PocketOverlay = { CreatePocketWidget(reason); PocketContextMenu.init(); - for (let win of allBrowserWindows()) { - this.onWindowOpened(win); + if (reason != APP_STARTUP) { + for (let win of allBrowserWindows()) { + this.setWindowScripts(win); + this.addStyles(win); + this.updateWindow(win); + } } }, shutdown: function(reason) { @@ -410,8 +414,6 @@ var PocketOverlay = { PocketReader.shutdown(); }, onWindowOpened: function(window) { - if (window.hasOwnProperty("pktUI")) - return; this.setWindowScripts(window); this.addStyles(window); this.updateWindow(window); diff --git a/browser/extensions/pocket/test/browser.ini b/browser/extensions/pocket/test/browser.ini index 0a92a2ab63dc..d6a2fd4bc45e 100644 --- a/browser/extensions/pocket/test/browser.ini +++ b/browser/extensions/pocket/test/browser.ini @@ -1,6 +1 @@ -[DEFAULT] -support-files = - head.js - [browser_pocket_ui_check.js] -support-files = test.html diff --git a/browser/extensions/pocket/test/browser_pocket_ui_check.js b/browser/extensions/pocket/test/browser_pocket_ui_check.js index 3a763251f8d0..5c5741eb3814 100644 --- a/browser/extensions/pocket/test/browser_pocket_ui_check.js +++ b/browser/extensions/pocket/test/browser_pocket_ui_check.js @@ -1,54 +1,21 @@ "use strict"; -function checkWindowProperties(expectPresent, l) { - for (let name of l) { - is(!!window.hasOwnProperty(name), expectPresent, "property " + name + (expectPresent ? " is" : " is not") + " present"); - } -} -function checkElements(expectPresent, l) { - for (let id of l) { - is(!!document.getElementById(id), expectPresent, "element " + id + (expectPresent ? " is" : " is not") + " present"); - } -} - add_task(function*() { - let enabledOnStartup = yield promisePocketEnabled(); - registerCleanupFunction(() => { - // Extra insurance that this is disabled again, but it should have been set - // in promisePocketReset. - Services.prefs.setBoolPref("extensions.pocket.enabled", enabledOnStartup); + let pocketAddon = yield new Promise(resolve => { + AddonManager.getAddonByID("firefox@getpocket.com", resolve); }); + if (!pocketAddon) { + ok(true, "Pocket is not installed"); + return; + } + if (!Services.prefs.getBoolPref("extensions.pocket.enabled")) { + ok(true, "Pocket add-on is not enabled"); + return; + } - checkWindowProperties(true, ["Pocket", "pktUI", "pktUIMessaging"]); - checkElements(true, ["pocket-button", "panelMenu_pocket", "menu_pocket", "BMB_pocket", - "panelMenu_pocketSeparator", "menu_pocketSeparator", - "BMB_pocketSeparator"]); - - // check context menu exists - info("checking content context menu"); - let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "https://example.com/browser/browser/extensions/pocket/test/test.html"); - - let contextMenu = document.getElementById("contentAreaContextMenu"); - let popupShown = BrowserTestUtils.waitForEvent(contextMenu, "popupshown"); - let popupHidden = BrowserTestUtils.waitForEvent(contextMenu, "popuphidden"); - yield BrowserTestUtils.synthesizeMouseAtCenter("body", { - type: "contextmenu", - button: 2 - }, tab.linkedBrowser); - yield popupShown; - - checkElements(true, ["context-pocket", "context-savelinktopocket"]); - - contextMenu.hidePopup(); - yield popupHidden; - yield BrowserTestUtils.removeTab(tab); - - yield promisePocketDisabled(); - - checkWindowProperties(false, ["Pocket", "pktUI", "pktUIMessaging"]); - checkElements(false, ["pocket-button", "panelMenu_pocket", "menu_pocket", "BMB_pocket", - "panelMenu_pocketSeparator", "menu_pocketSeparator", - "BMB_pocketSeparator", "context-pocket", "context-savelinktopocket"]); - - yield promisePocketReset(); + for (let id of ["panelMenu_pocket", "menu_pocket", "BMB_pocket", + "panelMenu_pocketSeparator", "menu_pocketSeparator", + "BMB_pocketSeparator"]) { + ok(document.getElementById(id), "Should see element with id " + id); + } }); diff --git a/browser/extensions/pocket/test/head.js b/browser/extensions/pocket/test/head.js deleted file mode 100644 index ccab995fab61..000000000000 --- a/browser/extensions/pocket/test/head.js +++ /dev/null @@ -1,68 +0,0 @@ -// Currently Pocket is disabled in tests. We want these tests to work under -// either case that Pocket is disabled or enabled on startup of the browser, -// and that at the end we're reset to the correct state. -let enabledOnStartup = false; - -// PocketEnabled/Disabled promises return true if it was already -// Enabled/Disabled, and false if it need to Enable/Disable. -function promisePocketEnabled() { - if (Services.prefs.getPrefType("extensions.pocket.enabled") != Services.prefs.PREF_INVALID && - Services.prefs.getBoolPref("extensions.pocket.enabled")) { - info( "pocket was already enabled, assuming enabled by default for tests"); - enabledOnStartup = true; - return Promise.resolve(true); - } - info( "pocket is not enabled"); - return new Promise((resolve, reject) => { - let listener = { - onWidgetAfterCreation(widgetid) { - if (widgetid == "pocket-button") { - info("pocket-button created"); - CustomizableUI.removeListener(listener); - resolve(false); - } - } - } - CustomizableUI.addListener(listener); - Services.prefs.setBoolPref("extensions.pocket.enabled", true); - }); -} - -function promisePocketDisabled() { - if (Services.prefs.getPrefType("extensions.pocket.enabled") == Services.prefs.PREF_INVALID || - !Services.prefs.getBoolPref("extensions.pocket.enabled")) { - info("pocket-button already disabled"); - return Promise.resolve(true); - } - return new Promise((resolve, reject) => { - let listener = { - onWidgetDestroyed: function(widgetid) { - if (widgetid == "pocket-button") { - CustomizableUI.removeListener(listener); - info( "pocket-button destroyed"); - // wait for a full unload of pocket - BrowserTestUtils.waitForCondition(() => { - return !window.hasOwnProperty("pktUI"); - }, "pocket properties removed from window").then(() => { - resolve(false); - }) - } - } - } - CustomizableUI.addListener(listener); - info("reset pocket enabled pref"); - // testing/profiles/prefs_general.js uses user_pref to disable pocket, set - // back to false. - Services.prefs.setBoolPref("extensions.pocket.enabled", false); - }); -} - -function promisePocketReset() { - if (enabledOnStartup) { - info("reset is enabling pocket addon"); - return promisePocketEnabled(); - } else { - info("reset is disabling pocket addon"); - return promisePocketDisabled(); - } -} diff --git a/browser/extensions/pocket/test/test.html b/browser/extensions/pocket/test/test.html deleted file mode 100644 index aa08cd566c6e..000000000000 --- a/browser/extensions/pocket/test/test.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Page Title - - - - - -