diff --git a/core/state-manager.js b/core/state-manager.js index f6389a8e4a3fa7dac1ba8123d400f0f30839aeb6..3d38ebd1f6cc7b307aa371dabe877f2800047960 100644 --- a/core/state-manager.js +++ b/core/state-manager.js @@ -161,6 +161,22 @@ stateManager._updateTab = function (details) { } }; +stateManager._stripMetadata = function (requestDetails) { + + for (let i = 0; i < requestDetails.requestHeaders.length; ++i) { + + if (requestDetails.requestHeaders[i].name === 'Origin') { + requestDetails.requestHeaders.splice(i, 1); + } else if (requestDetails.requestHeaders[i].name === 'Referer') { + requestDetails.requestHeaders.splice(i, 1); + } + } + + return { + 'requestHeaders': requestDetails.requestHeaders + }; +}; + stateManager._handleStorageChanged = function (changes) { if ('showIconBadge' in changes) { @@ -174,6 +190,24 @@ stateManager._handleStorageChanged = function (changes) { }); } } + + if ('stripMetadata' in changes) { + + let onBeforeSendHeaders; + + onBeforeSendHeaders = chrome.webRequest.onBeforeSendHeaders; + + onBeforeSendHeaders.removeListener(stateManager._stripMetadata, { + 'urls': stateManager.validHosts + }, [BLOCKING_ACTION, REQUEST_HEADERS]); + + if (changes.stripMetadata.newValue !== false) { + + onBeforeSendHeaders.addListener(stateManager._stripMetadata, { + 'urls': stateManager.validHosts + }, [BLOCKING_ACTION, REQUEST_HEADERS]); + } + } }; stateManager._removeIconBadgeFromTab = function (tab) { @@ -241,19 +275,8 @@ chrome.webRequest.onBeforeRedirect.addListener(function (requestDetails) { }, {'urls': ['*://*/*']}); -chrome.webRequest.onBeforeSendHeaders.addListener(function (requestDetails) { - - for (let i = 0; i < requestDetails.requestHeaders.length; ++i) { - - if (requestDetails.requestHeaders[i].name === 'Origin') { - requestDetails.requestHeaders.splice(i, 1); - } else if (requestDetails.requestHeaders[i].name === 'Referer') { - requestDetails.requestHeaders.splice(i, 1); - } - } - - return {requestHeaders: requestDetails.requestHeaders}; - -}, {urls: stateManager.validHosts}, [BLOCKING_ACTION, REQUEST_HEADERS]); +chrome.webRequest.onBeforeSendHeaders.addListener(stateManager._stripMetadata, { + '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 8ecc2d01c15d418425a8af86dc51f23b5941f96e..e564648d0aed2d5010c6aa419659bea692b6247b 100644 --- a/pages/options/options.html +++ b/pages/options/options.html @@ -78,7 +78,7 @@ <label class="label-checkbox"> - <input class="input-checkbox" data-option="stripMetadata" type="checkbox" disabled> + <input class="input-checkbox" data-option="stripMetadata" type="checkbox"> <span data-i18n-content="stripMetadataTitle"></span> </label>