commit 320de5db6d53f53aadfad785ce31826b3080e890 Author: Arthur Edelstein arthuredelstein@gmail.com Date: Fri May 13 21:42:18 2016 -0700
Bug 18886: Hide pocket menu items when Pocket is disabled
If the user toggles the value of "browser.pocket.enabled", then menu items (and pocket button) will be affected only after browser restart. --- browser/base/content/browser-places.js | 9 ++++++++- browser/base/content/nsContextMenu.js | 4 +++- browser/modules/ReaderParent.jsm | 7 +++++-- 3 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/browser/base/content/browser-places.js b/browser/base/content/browser-places.js index 7e3ddcc..45a3af6 100644 --- a/browser/base/content/browser-places.js +++ b/browser/base/content/browser-places.js @@ -1553,7 +1553,14 @@ var BookmarkingUI = { },
updatePocketItemVisibility: function BUI_updatePocketItemVisibility(prefix) { - let hidden = !CustomizableUI.getPlacementOfWidget("pocket-button"); + // When the pocket button has been placed on the navigation bar or + // on the hamburger menu, then Pocket can be considered "active" and + // we should show the pocket menu item in various places. + // If, on the other hand, the pocket button is not present because + // the user has moved it out of the nav bar, or the browser started + // up with "browser.pocket.enabled" set to false, then we + // should not show the pocket menu items. + let hidden = document.getElementById("pocket-button") == null; document.getElementById(prefix + "pocket").hidden = hidden; document.getElementById(prefix + "pocketSeparator").hidden = hidden; }, diff --git a/browser/base/content/nsContextMenu.js b/browser/base/content/nsContextMenu.js index 463809f..be42f80 100644 --- a/browser/base/content/nsContextMenu.js +++ b/browser/base/content/nsContextMenu.js @@ -225,7 +225,9 @@ nsContextMenu.prototype = { this.isContentSelected || this.onImage || this.onCanvas || this.onVideo || this.onAudio); let targetURI = (this.onSaveableLink || this.onPlainTextLink) ? this.linkURI : this.browser.currentURI; - let canPocket = CustomizableUI.getPlacementOfWidget("pocket-button") && + // Pocket is only "active" if the pocket button is present on the + // navigation bar or hamburger menu. + let canPocket = (document.getElementById("pocket-button") !== null) && window.pktApi && window.pktApi.isUserLoggedIn(); canPocket = canPocket && (targetURI.schemeIs("http") || targetURI.schemeIs("https") || (targetURI.schemeIs("about") && ReaderMode.getOriginalUrl(targetURI.spec))); diff --git a/browser/modules/ReaderParent.jsm b/browser/modules/ReaderParent.jsm index 0860989..4df8210 100644 --- a/browser/modules/ReaderParent.jsm +++ b/browser/modules/ReaderParent.jsm @@ -79,8 +79,11 @@ var ReaderParent = { break;
case "Reader:PocketEnabledGet": { - let pocketPlacement = CustomizableUI.getPlacementOfWidget("pocket-button"); - let isPocketEnabled = pocketPlacement && pocketPlacement.area; + // Only when the pocket button is present on the navigation bar or + // the hamburger menu, should Pocket be considered "active". + let doc = message.target.ownerDocument; + let isPocketEnabled = (doc !== null) && + (doc.getElementById("pocket-button") !== null); message.target.messageManager.sendAsyncMessage("Reader:PocketEnabledData", { enabled: !!isPocketEnabled}); break; }