From 89d0191e1d1da2a0fdd6419453bf606011558076 Mon Sep 17 00:00:00 2001 From: Thomas Rientjes <synzvato@protonmail.com> Date: Thu, 21 Sep 2017 23:12:55 -0400 Subject: [PATCH] Resolve #163 by making metadata sanitation optional --- core/state-manager.js | 51 +++++++++++++++++++++++++++----------- pages/options/options.html | 2 +- 2 files changed, 38 insertions(+), 15 deletions(-) diff --git a/core/state-manager.js b/core/state-manager.js index f6389a8..3d38ebd 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 8ecc2d0..e564648 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> -- GitLab