diff --git a/webextension/js/background/badge.js b/webextension/js/background/badge.js index 3a9abc7..d947d40 100644 --- a/webextension/js/background/badge.js +++ b/webextension/js/background/badge.js @@ -1,9 +1,15 @@ const MAJOR_VERSIONS = ["2.3.0", "2.4.0"]; const badge = { - init() { - this.displayBrowserActionBadge(); + async init() { + const currentWindow = await browser.windows.getCurrent(); + this.displayBrowserActionBadge(currentWindow.incognito); }, - async displayBrowserActionBadge() { + async displayBrowserActionBadge(disable) { + if (disable) { + browser.browserAction.disable(); + } else { + browser.browserAction.enable(); + } const extensionInfo = await backgroundLogic.getExtensionInfo(); const storage = await browser.storage.local.get({browserActionBadgesClicked: []}); diff --git a/webextension/js/background/messageHandler.js b/webextension/js/background/messageHandler.js index d675b19..e45a0fa 100644 --- a/webextension/js/background/messageHandler.js +++ b/webextension/js/background/messageHandler.js @@ -109,20 +109,7 @@ const messageHandler = { }); browser.windows.onFocusChanged.addListener((windowId) => { - assignManager.removeContextMenu(); - // browserAction loses background color in new windows ... - // https://bugzil.la/1314674 - // https://github.com/mozilla/testpilot-containers/issues/608 - // ... so re-call displayBrowserActionBadge on window changes - badge.displayBrowserActionBadge(); - browser.tabs.query({active: true, windowId}).then((tabs) => { - if (tabs && tabs[0]) { - tabPageCounter.initTabCounter(tabs[0]); - assignManager.calculateContextMenu(tabs[0]); - } - }).catch((e) => { - throw e; - }); + this.onFocusChangedCallback(windowId); }); browser.idle.onStateChanged.addListener((newState) => { @@ -161,6 +148,24 @@ const messageHandler = { }, this.LAST_CREATED_TAB_TIMER); }); + }, + + async onFocusChangedCallback(windowId) { + assignManager.removeContextMenu(); + const currentWindow = await browser.windows.getCurrent(); + // browserAction loses background color in new windows ... + // https://bugzil.la/1314674 + // https://github.com/mozilla/testpilot-containers/issues/608 + // ... so re-call displayBrowserActionBadge on window changes + badge.displayBrowserActionBadge(currentWindow.incognito); + browser.tabs.query({active: true, windowId}).then((tabs) => { + if (tabs && tabs[0]) { + tabPageCounter.initTabCounter(tabs[0]); + assignManager.calculateContextMenu(tabs[0]); + } + }).catch((e) => { + throw e; + }); } }; diff --git a/webextension/js/popup.js b/webextension/js/popup.js index 82f9658..edd3014 100644 --- a/webextension/js/popup.js +++ b/webextension/js/popup.js @@ -451,7 +451,7 @@ Logic.registerPanel(P_CONTAINERS_LIST, { panelSelector: "#container-panel", // This method is called when the object is registered. - initialize() { + async initialize() { Logic.addEnterHandler(document.querySelector("#container-add-link"), () => { Logic.showPanel(P_CONTAINER_EDIT, { name: Logic.generateIdentityName() }); });