diff --git a/core/state-manager.js b/core/state-manager.js index 8907514f322bec19325f09b87c8c47ddc18fa35f..f6389a8e4a3fa7dac1ba8123d400f0f30839aeb6 100644 --- a/core/state-manager.js +++ b/core/state-manager.js @@ -42,19 +42,22 @@ stateManager.registerInjection = function (tabIdentifier, injection) { registeredTab.injections[injectionIdentifier] = injection; injectionCount = Object.keys(registeredTab.injections).length || 0; - if (injectionCount > 0) { + if (stateManager.showIconBadge === true) { - chrome.browserAction.setBadgeText({ - tabId: tabIdentifier, - text: injectionCount.toString() - }); + if (injectionCount > 0) { - } else { + chrome.browserAction.setBadgeText({ + tabId: tabIdentifier, + text: injectionCount.toString() + }); - chrome.browserAction.setBadgeText({ - tabId: tabIdentifier, - text: '' - }); + } else { + + chrome.browserAction.setBadgeText({ + tabId: tabIdentifier, + text: '' + }); + } } if (isNaN(interceptor.amountInjected)) { @@ -145,16 +148,42 @@ stateManager._updateTab = function (details) { return; } - chrome.browserAction.setBadgeText({ - tabId: tabIdentifier, - text: '' - }); + if (stateManager.showIconBadge === true) { + + chrome.browserAction.setBadgeText({ + tabId: tabIdentifier, + text: '' + }); + } if (stateManager.tabs[tabIdentifier]) { stateManager.tabs[tabIdentifier].injections = {}; } }; +stateManager._handleStorageChanged = function (changes) { + + if ('showIconBadge' in changes) { + + stateManager.showIconBadge = changes.showIconBadge.newValue; + + if (changes.showIconBadge.newValue !== true) { + + chrome.tabs.query({}, function (tabs) { + tabs.forEach(stateManager._removeIconBadgeFromTab); + }); + } + } +}; + +stateManager._removeIconBadgeFromTab = function (tab) { + + chrome.browserAction.setBadgeText({ + tabId: tab.id, + text: '' + }); +}; + /** * Initializations */ @@ -177,6 +206,10 @@ chrome.tabs.query({}, function (tabs) { tabs.forEach(stateManager._createTab); }); +chrome.storage.local.get('showIconBadge', function (items) { + stateManager.showIconBadge = items.showIconBadge || true; +}); + /** * Event Handlers */ @@ -222,3 +255,5 @@ chrome.webRequest.onBeforeSendHeaders.addListener(function (requestDetails) { return {requestHeaders: requestDetails.requestHeaders}; }, {urls: stateManager.validHosts}, [BLOCKING_ACTION, REQUEST_HEADERS]); + +chrome.storage.onChanged.addListener(stateManager._handleStorageChanged); diff --git a/pages/options/options.html b/pages/options/options.html index f974728fe535c0df70810d161644f5e793d20bc7..8ecc2d01c15d418425a8af86dc51f23b5941f96e 100644 --- a/pages/options/options.html +++ b/pages/options/options.html @@ -23,7 +23,7 @@ <label class="label-checkbox"> - <input class="input-checkbox" data-option="showIconBadge" type="checkbox" disabled> + <input class="input-checkbox" data-option="showIconBadge" type="checkbox"> <span data-i18n-content="showIconBadgeTitle"></span> </label>