From 2a0a3eac94364254453184a339a94634082ac675 Mon Sep 17 00:00:00 2001 From: Ethan Gooding Date: Wed, 31 Jul 2019 14:09:35 -0400 Subject: [PATCH 01/10] Use total trackers displayed for tracker count, rather than all modified requests --- app/panel/components/Summary.jsx | 4 ++-- app/panel/reducers/summary.js | 4 ++++ src/utils/cliqzModulesData.js | 16 ++++++++++++++-- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/panel/components/Summary.jsx b/app/panel/components/Summary.jsx index 97983aaf5..caab6401b 100644 --- a/app/panel/components/Summary.jsx +++ b/app/panel/components/Summary.jsx @@ -340,9 +340,9 @@ class Summary extends React.Component { } _totalTrackersFound() { - const { trackerCounts } = this.props; + const { trackerCounts, antiTracking } = this.props; - return (trackerCounts.allowed + trackerCounts.blocked + this._requestsModifiedCount()) || 0; + return (trackerCounts.allowed + trackerCounts.blocked + antiTracking.unknownTrackerCount) || 0; } _requestsModifiedCount() { diff --git a/app/panel/reducers/summary.js b/app/panel/reducers/summary.js index 759b3c543..bb6b57498 100644 --- a/app/panel/reducers/summary.js +++ b/app/panel/reducers/summary.js @@ -40,6 +40,10 @@ const initialState = { totalUnsafeCount: 0, // The amount of data points scrubbed by Anti-Tracking totalUnknownCount: 0, // The amount of data points scrubbed by Anti-Tracking for Trackers not in the Ghostery DB unknownTrackerCount: 0, // The amount of trackers blocked by Anti-Tracking + }, + adBlock: { + totalCount: 0, // The amount of ads blocked by Ad Blocking + trackerCount: 0, // The amount of trackers blocked by Ad Blocking (which are each associated with 1 or more ads) } }; /** diff --git a/src/utils/cliqzModulesData.js b/src/utils/cliqzModulesData.js index b97b95a8e..def98f896 100644 --- a/src/utils/cliqzModulesData.js +++ b/src/utils/cliqzModulesData.js @@ -99,13 +99,25 @@ export function getCliqzAntiTrackingData(tabId, tabHostUrl) { export function getCliqzAdBlockingCount(tabId) { if (!conf.enable_ad_block || !adblocker.background) { return { - totalCount: 0 + totalCount: 0, + trackerCount: 0, }; } const adBlockInfo = adblocker.background.actions.getAdBlockInfoForTab(tabId); + + if (!adBlockInfo) { + return { + totalCount: 0, + trackerCount: 0, + }; + } + + console.log('~~~sawgferw~~~', adBlockInfo) + return { - totalCount: adBlockInfo.totalCount || 0, + totalCount: adBlockInfo.totalCount, + trackerCount: Object.keys(adBlockInfo.advertisersList).length, }; } From 8a2289b29b00ae3a6fdd5c0faa8d4a442c3cb515 Mon Sep 17 00:00:00 2001 From: Ethan Gooding Date: Wed, 31 Jul 2019 14:21:29 -0400 Subject: [PATCH 02/10] Add unknownTrackerCount to adBlock in reducer in case it's needed later --- app/panel/reducers/blocking.js | 2 +- app/panel/reducers/summary.js | 4 ++-- src/utils/cliqzModulesData.js | 18 +++++------------- 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/app/panel/reducers/blocking.js b/app/panel/reducers/blocking.js index 7acca9d03..09d35f0b8 100644 --- a/app/panel/reducers/blocking.js +++ b/app/panel/reducers/blocking.js @@ -43,7 +43,7 @@ const initialState = { antiTracking: { totalUnsafeCount: 0, // The amount of data points scrubbed by Anti-Tracking totalUnknownCount: 0, // The amount of data points scrubbed by Anti-Tracking for Trackers not in the Ghostery DB - unknownTrackerCount: 0, // The amount of trackers blocked by Anti-Tracking + unknownTrackerCount: 0, // The amount of unknown trackers scrubbed by Anti-Tracking (which are each associated with 1 or more data points) unknownTrackers: [], // An array of objects associated with each unknown Tracker (includes both blocked and whitelisted trackers for this site) whitelistedUrls: {}, // An object of whitelisted url domains pointing to an object with the associated tracker name and an array of whitelisted host domains hide: false, // Whether or not to display the Anti-Tracking blocking category diff --git a/app/panel/reducers/summary.js b/app/panel/reducers/summary.js index bb6b57498..8beb4245e 100644 --- a/app/panel/reducers/summary.js +++ b/app/panel/reducers/summary.js @@ -39,11 +39,11 @@ const initialState = { antiTracking: { totalUnsafeCount: 0, // The amount of data points scrubbed by Anti-Tracking totalUnknownCount: 0, // The amount of data points scrubbed by Anti-Tracking for Trackers not in the Ghostery DB - unknownTrackerCount: 0, // The amount of trackers blocked by Anti-Tracking + unknownTrackerCount: 0, // The amount of unknown trackers scrubbed by Anti-Tracking (which are each associated with 1 or more data points) }, adBlock: { totalCount: 0, // The amount of ads blocked by Ad Blocking - trackerCount: 0, // The amount of trackers blocked by Ad Blocking (which are each associated with 1 or more ads) + unknownTrackerCount: 0, // The amount of unknown trackers blocked by Ad Blocking (which are each associated with 1 or more ads) } }; /** diff --git a/src/utils/cliqzModulesData.js b/src/utils/cliqzModulesData.js index def98f896..468b16f5b 100644 --- a/src/utils/cliqzModulesData.js +++ b/src/utils/cliqzModulesData.js @@ -100,24 +100,16 @@ export function getCliqzAdBlockingCount(tabId) { if (!conf.enable_ad_block || !adblocker.background) { return { totalCount: 0, - trackerCount: 0, + unknownTrackerCount: 0, }; } const adBlockInfo = adblocker.background.actions.getAdBlockInfoForTab(tabId); - - if (!adBlockInfo) { - return { - totalCount: 0, - trackerCount: 0, - }; - } - - console.log('~~~sawgferw~~~', adBlockInfo) + const { others } = adblocker.background.actions.getGhosteryStats(tabId); return { - totalCount: adBlockInfo.totalCount, - trackerCount: Object.keys(adBlockInfo.advertisersList).length, + totalCount: adBlockInfo ? adBlockInfo.totalCount : 0, + unknownTrackerCount: others ? Object.keys(others).length : 0, }; } @@ -147,7 +139,7 @@ export function getCliqzGhosteryBugs(tabId) { * @param {Function} callback */ export function sendCliqzModuleCounts(tabId, tabHostUrl, callback) { - const modules = { adblock: {}, antitracking: {} }; + const modules = { adblock: {}, antiTracking: {} }; modules.adblock = getCliqzAdBlockingCount(tabId); modules.antiTracking = getCliqzAntiTrackingData(tabId, tabHostUrl); From daff71e04cb6741c530fc82b4c50c44fbefc9632 Mon Sep 17 00:00:00 2001 From: Ethan Gooding Date: Wed, 31 Jul 2019 17:18:43 -0400 Subject: [PATCH 03/10] Only count requests modified by tracker, update browser button --- app/panel/components/Summary.jsx | 16 ++++++++-------- src/classes/BrowserButton.js | 4 ++-- src/utils/cliqzModulesData.js | 6 ++++-- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/app/panel/components/Summary.jsx b/app/panel/components/Summary.jsx index caab6401b..510df562f 100644 --- a/app/panel/components/Summary.jsx +++ b/app/panel/components/Summary.jsx @@ -327,7 +327,7 @@ class Summary extends React.Component { enable_ad_block, } = this.props; - return enable_ad_block && adBlock && adBlock.totalCount || 0; + return enable_ad_block && adBlock && adBlock.unknownTrackerCount || 0; } _antiTrackUnsafe() { @@ -336,19 +336,19 @@ class Summary extends React.Component { enable_anti_tracking, } = this.props; - return enable_anti_tracking && antiTracking && antiTracking.totalUnsafeCount || 0; - } - - _totalTrackersFound() { - const { trackerCounts, antiTracking } = this.props; - - return (trackerCounts.allowed + trackerCounts.blocked + antiTracking.unknownTrackerCount) || 0; + return enable_anti_tracking && antiTracking && antiTracking.unknownTrackerCount || 0; } _requestsModifiedCount() { return this._antiTrackUnsafe() + this._adBlockBlocked(); } + _totalTrackersFound() { + const { trackerCounts } = this.props; + + return (trackerCounts.allowed + trackerCounts.blocked + this._requestsModifiedCount()) || 0; + } + _sbBlocked() { const { smartBlock, trackerCounts } = this.props; diff --git a/src/classes/BrowserButton.js b/src/classes/BrowserButton.js index 8a419945d..d8c9f20f8 100644 --- a/src/classes/BrowserButton.js +++ b/src/classes/BrowserButton.js @@ -145,8 +145,8 @@ class BrowserButton { } const { appsCount, appsAlertCount } = this._getTrackerCount(tabId); - const adBlockingCount = getCliqzAdBlockingCount(tabId).totalCount; - const antiTrackingCount = getCliqzAntiTrackingData(tabId).totalUnsafeCount; + const adBlockingCount = getCliqzAdBlockingCount(tabId).unknownTrackerCount; + const antiTrackingCount = getCliqzAntiTrackingData(tabId).unknownTrackerCount; alert = (appsAlertCount > 0); trackerCount = (appsCount + antiTrackingCount + adBlockingCount).toString(); diff --git a/src/utils/cliqzModulesData.js b/src/utils/cliqzModulesData.js index 468b16f5b..d5389075d 100644 --- a/src/utils/cliqzModulesData.js +++ b/src/utils/cliqzModulesData.js @@ -105,11 +105,13 @@ export function getCliqzAdBlockingCount(tabId) { } const adBlockInfo = adblocker.background.actions.getAdBlockInfoForTab(tabId); - const { others } = adblocker.background.actions.getGhosteryStats(tabId); + const { bugs, others } = adblocker.background.actions.getGhosteryStats(tabId); + const bugCount = bugs ? Object.keys(bugs).length : 0; + const otherCount = others ? Object.keys(others).length : 0; return { totalCount: adBlockInfo ? adBlockInfo.totalCount : 0, - unknownTrackerCount: others ? Object.keys(others).length : 0, + unknownTrackerCount: bugCount + otherCount, }; } From f33b01781bdd509cc689e3efa63297c485d9546b Mon Sep 17 00:00:00 2001 From: Ethan Gooding Date: Wed, 31 Jul 2019 18:07:17 -0400 Subject: [PATCH 04/10] Update tests, use better variable names, update duplicate cases in reducers --- app/panel/components/Summary.jsx | 6 +++--- app/panel/reducers/__tests__/summary.js | 22 +++++++++++++--------- app/panel/reducers/blocking.js | 20 +++++++++++++------- app/panel/reducers/summary.js | 15 +++++---------- src/classes/BrowserButton.js | 4 ++-- src/utils/cliqzModulesData.js | 18 ++++++++++++------ 6 files changed, 48 insertions(+), 37 deletions(-) diff --git a/app/panel/components/Summary.jsx b/app/panel/components/Summary.jsx index 510df562f..21cd934a4 100644 --- a/app/panel/components/Summary.jsx +++ b/app/panel/components/Summary.jsx @@ -298,7 +298,7 @@ class Summary extends React.Component { const { body } = msg; - if (body.adblock || body.antitracking) { + if (body.adBlock || body.antiTracking) { this.props.actions.updateCliqzModuleData(body); } else { this.props.actions.updateSummaryData(body); @@ -327,7 +327,7 @@ class Summary extends React.Component { enable_ad_block, } = this.props; - return enable_ad_block && adBlock && adBlock.unknownTrackerCount || 0; + return enable_ad_block && adBlock && adBlock.trackerCount || 0; } _antiTrackUnsafe() { @@ -336,7 +336,7 @@ class Summary extends React.Component { enable_anti_tracking, } = this.props; - return enable_anti_tracking && antiTracking && antiTracking.unknownTrackerCount || 0; + return enable_anti_tracking && antiTracking && antiTracking.trackerCount || 0; } _requestsModifiedCount() { diff --git a/app/panel/reducers/__tests__/summary.js b/app/panel/reducers/__tests__/summary.js index 412422c68..652b1cf50 100644 --- a/app/panel/reducers/__tests__/summary.js +++ b/app/panel/reducers/__tests__/summary.js @@ -38,8 +38,13 @@ const initialState = Immutable({ antiTracking: { totalUnsafeCount: 0, totalUnknownCount: 0, + trackerCount: 0, unknownTrackerCount: 0, }, + adBlock: { + totalCount: 0, + trackerCount: 0, + }, }); describe('app/panel/reducers/summary.js', () => { @@ -57,33 +62,32 @@ describe('app/panel/reducers/summary.js', () => { test('reducer correctly handles UPDATE_CLIQZ_MODULE_DATA', () => { const data = { - adblock: { - unchangedData: false, - changedData: true, - newData: true + adBlock: { + totalCount: 3, + trackerCount: 2, }, antiTracking: { totalUnsafeCount: 5, totalUnknownCount: 3, - unknownTrackerCount: 1 + trackerCount: 1 } }; const action = { data, type: UPDATE_CLIQZ_MODULE_DATA }; const initState = Immutable({ tab_id: 0, adBlock: { - unchangedData: false, - changedData: false + totalCount: 1, + trackerCount: 1, }, antiTracking: { totalUnsafeCount: 1, totalUnknownCount: 0, - unknownTrackerCount: 0 + trackerCount: 0 } }); const updatedState = Immutable.merge(initState, { - adBlock: data.adblock, + adBlock: data.adBlock, antiTracking: data.antiTracking }); diff --git a/app/panel/reducers/blocking.js b/app/panel/reducers/blocking.js index 09d35f0b8..d91722abb 100644 --- a/app/panel/reducers/blocking.js +++ b/app/panel/reducers/blocking.js @@ -23,7 +23,8 @@ import { UPDATE_TRACKER_TRUST_RESTRICT, UPDATE_ANTI_TRACKING_WHITELIST, TOGGLE_EXPAND_ALL, - UPDATE_CLIQZ_MODULE_DATA + UPDATE_CLIQZ_MODULE_DATA, + UPDATE_SUMMARY_DATA } from '../constants/constants'; import { updateTrackerBlocked, updateCategoryBlocked, updateBlockAllTrackers, toggleExpandAll @@ -43,7 +44,8 @@ const initialState = { antiTracking: { totalUnsafeCount: 0, // The amount of data points scrubbed by Anti-Tracking totalUnknownCount: 0, // The amount of data points scrubbed by Anti-Tracking for Trackers not in the Ghostery DB - unknownTrackerCount: 0, // The amount of unknown trackers scrubbed by Anti-Tracking (which are each associated with 1 or more data points) + trackerCount: 0, // The amount of trackers scrubbed by Anti-Tracking (which are each associated with 1 or more data points) + unknownTrackerCount: 0, // The amount of unknown trackers scrubbed by Anti-Tracking unknownTrackers: [], // An array of objects associated with each unknown Tracker (includes both blocked and whitelisted trackers for this site) whitelistedUrls: {}, // An object of whitelisted url domains pointing to an object with the associated tracker name and an array of whitelisted host domains hide: false, // Whether or not to display the Anti-Tracking blocking category @@ -100,11 +102,15 @@ export default (state = initialState, action) => { const antiTracking = _updateAntiTrackingWhitelist(state, action); return Object.assign({}, state, { antiTracking }); } - case UPDATE_CLIQZ_MODULE_DATA: { - const { hide } = state.antiTracking; - return Object.assign({}, state, { - antiTracking: Object.assign({}, action.data.antiTracking, { hide }) - }); + case UPDATE_CLIQZ_MODULE_DATA: + case UPDATE_SUMMARY_DATA: { + if (action.data.antiTracking) { + const { hide } = state.antiTracking; + return Object.assign({}, state, { + antiTracking: Object.assign({}, action.data.antiTracking, { hide }) + }); + } + return state; } default: return state; diff --git a/app/panel/reducers/summary.js b/app/panel/reducers/summary.js index 8beb4245e..1e80aea2c 100644 --- a/app/panel/reducers/summary.js +++ b/app/panel/reducers/summary.js @@ -39,11 +39,12 @@ const initialState = { antiTracking: { totalUnsafeCount: 0, // The amount of data points scrubbed by Anti-Tracking totalUnknownCount: 0, // The amount of data points scrubbed by Anti-Tracking for Trackers not in the Ghostery DB - unknownTrackerCount: 0, // The amount of unknown trackers scrubbed by Anti-Tracking (which are each associated with 1 or more data points) + trackerCount: 0, // The amount of trackers scrubbed by Anti-Tracking (which are each associated with 1 or more data points) + unknownTrackerCount: 0, // The amount of unknown trackers scrubbed by Anti-Tracking }, adBlock: { totalCount: 0, // The amount of ads blocked by Ad Blocking - unknownTrackerCount: 0, // The amount of unknown trackers blocked by Ad Blocking (which are each associated with 1 or more ads) + trackerCount: 0, // The amount of trackers blocked by Ad Blocking (which are each associated with 1 or more ads) } }; /** @@ -56,15 +57,9 @@ const initialState = { */ export default (state = initialState, action) => { switch (action.type) { - case UPDATE_SUMMARY_DATA: { - return Object.assign({}, state, action.data); - } + case UPDATE_SUMMARY_DATA: case UPDATE_CLIQZ_MODULE_DATA: { - const { totalUnsafeCount, totalUnknownCount, unknownTrackerCount } = action.data.antiTracking; - return Object.assign({}, state, { - adBlock: action.data.adblock, - antiTracking: { totalUnsafeCount, totalUnknownCount, unknownTrackerCount }, - }); + return Object.assign({}, state, action.data); } case UPDATE_GHOSTERY_PAUSED: { return Object.assign({}, state, { paused_blocking: action.data.ghosteryPaused, paused_blocking_timeout: action.data.time }); diff --git a/src/classes/BrowserButton.js b/src/classes/BrowserButton.js index d8c9f20f8..847d71429 100644 --- a/src/classes/BrowserButton.js +++ b/src/classes/BrowserButton.js @@ -145,8 +145,8 @@ class BrowserButton { } const { appsCount, appsAlertCount } = this._getTrackerCount(tabId); - const adBlockingCount = getCliqzAdBlockingCount(tabId).unknownTrackerCount; - const antiTrackingCount = getCliqzAntiTrackingData(tabId).unknownTrackerCount; + const adBlockingCount = getCliqzAdBlockingCount(tabId).trackerCount; + const antiTrackingCount = getCliqzAntiTrackingData(tabId).trackerCount; alert = (appsAlertCount > 0); trackerCount = (appsCount + antiTrackingCount + adBlockingCount).toString(); diff --git a/src/utils/cliqzModulesData.js b/src/utils/cliqzModulesData.js index d5389075d..363352cf1 100644 --- a/src/utils/cliqzModulesData.js +++ b/src/utils/cliqzModulesData.js @@ -29,6 +29,7 @@ const { adblocker, antitracking } = cliqz.modules; export function getCliqzAntiTrackingData(tabId, tabHostUrl) { let totalUnsafeCount = 0; let totalUnknownCount = 0; + let trackerCount = 0; let unknownTrackerCount = 0; const unknownTrackers = []; const whitelistedUrls = conf.anti_tracking_whitelist; @@ -48,7 +49,10 @@ export function getCliqzAntiTrackingData(tabId, tabHostUrl) { const othersValues = Object.values(others); for (const bug of bugsValues) { - totalUnsafeCount += bug.cookies + bug.fingerprints; + if (bug.cookies || bug.fingerprints) { + totalUnsafeCount += bug.cookies + bug.fingerprints; + trackerCount++; + } } for (const other of othersValues) { @@ -67,7 +71,8 @@ export function getCliqzAntiTrackingData(tabId, tabHostUrl) { if (scrubbed) { totalUnsafeCount += other.cookies + other.fingerprints; totalUnknownCount += other.cookies + other.fingerprints; - unknownTrackerCount += 1; + trackerCount++; + unknownTrackerCount++; } if (scrubbed || whitelisted) { @@ -84,6 +89,7 @@ export function getCliqzAntiTrackingData(tabId, tabHostUrl) { return { totalUnsafeCount, totalUnknownCount, + trackerCount, unknownTrackerCount, unknownTrackers, whitelistedUrls, @@ -100,7 +106,7 @@ export function getCliqzAdBlockingCount(tabId) { if (!conf.enable_ad_block || !adblocker.background) { return { totalCount: 0, - unknownTrackerCount: 0, + trackerCount: 0, }; } @@ -111,7 +117,7 @@ export function getCliqzAdBlockingCount(tabId) { return { totalCount: adBlockInfo ? adBlockInfo.totalCount : 0, - unknownTrackerCount: bugCount + otherCount, + trackerCount: bugCount + otherCount, }; } @@ -141,9 +147,9 @@ export function getCliqzGhosteryBugs(tabId) { * @param {Function} callback */ export function sendCliqzModuleCounts(tabId, tabHostUrl, callback) { - const modules = { adblock: {}, antiTracking: {} }; + const modules = { adBlock: {}, antiTracking: {} }; - modules.adblock = getCliqzAdBlockingCount(tabId); + modules.adBlock = getCliqzAdBlockingCount(tabId); modules.antiTracking = getCliqzAntiTrackingData(tabId, tabHostUrl); callback(modules); } From b5d7668290c16ef66db5b86090e25668d8fd3712 Mon Sep 17 00:00:00 2001 From: Ethan Gooding Date: Thu, 1 Aug 2019 18:35:14 -0400 Subject: [PATCH 05/10] Combine Ad Blocking unknown trackers with Anti-Tracking into one Unknown category in the tracker list --- app/images/panel/anti_tracking_unknown.svg | 12 +--- app/images/panel/group-10-copy.svg | 6 ++ app/panel/components/Blocking.jsx | 6 +- app/panel/components/Blocking/Categories.jsx | 15 +++-- app/panel/components/Blocking/Category.jsx | 20 +----- app/panel/components/Blocking/Tracker.jsx | 1 + .../Blocking/trackerButtonRenderHelpers.jsx | 21 ++++-- app/panel/reducers/blocking.js | 38 ++++++++--- app/scss/partials/_blocking_category.scss | 23 ++----- src/background.js | 10 +-- src/classes/BrowserButton.js | 7 +- src/classes/ConfData.js | 2 +- src/classes/Policy.js | 2 +- src/utils/cliqzModulesData.js | 67 +++++++------------ 14 files changed, 102 insertions(+), 128 deletions(-) create mode 100644 app/images/panel/group-10-copy.svg diff --git a/app/images/panel/anti_tracking_unknown.svg b/app/images/panel/anti_tracking_unknown.svg index 936cfeb8c..0b5dc198c 100644 --- a/app/images/panel/anti_tracking_unknown.svg +++ b/app/images/panel/anti_tracking_unknown.svg @@ -1,11 +1 @@ - - - - - - - - - - - + \ No newline at end of file diff --git a/app/images/panel/group-10-copy.svg b/app/images/panel/group-10-copy.svg new file mode 100644 index 000000000..66930ab6e --- /dev/null +++ b/app/images/panel/group-10-copy.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/panel/components/Blocking.jsx b/app/panel/components/Blocking.jsx index a26c4c2fe..3a1de9743 100644 --- a/app/panel/components/Blocking.jsx +++ b/app/panel/components/Blocking.jsx @@ -93,7 +93,7 @@ class Blocking extends React.Component { */ setShow(filterName) { const updated_categories = JSON.parse(JSON.stringify(this.props.categories)); // deep clone - const updatedAntiTracking = JSON.parse(JSON.stringify(this.props.antiTracking)); // deep clone + const updatedAntiTracking = JSON.parse(JSON.stringify(this.props.unknownCategory)); // deep clone updated_categories.forEach((category) => { let count = 0; @@ -284,7 +284,7 @@ class Blocking extends React.Component { const { actions, categories, - antiTracking, + unknownCategory, enable_anti_tracking, expand_all_trackers, is_expanded, @@ -329,7 +329,7 @@ class Blocking extends React.Component { language={language} smartBlockActive={smartBlockActive} smartBlock={smartBlock} - antiTracking={antiTracking} + unknownCategory={unknownCategory} enable_anti_tracking={enable_anti_tracking} /> )} diff --git a/app/panel/components/Blocking/Categories.jsx b/app/panel/components/Blocking/Categories.jsx index fdfa3bbef..db750acc9 100644 --- a/app/panel/components/Blocking/Categories.jsx +++ b/app/panel/components/Blocking/Categories.jsx @@ -32,7 +32,7 @@ class Categories extends React.Component { const { categories, expandAll, - antiTracking, + unknownCategory, enable_anti_tracking, sitePolicy, } = this.props; @@ -47,15 +47,16 @@ class Categories extends React.Component { name: t('unknown'), description: t('unknown_description'), img_name: 'anti_tracking_unknown', - num_total: antiTracking.unknownTrackers.length, - num_blocked: antiTracking.unknownTrackerCount, - num_shown: antiTracking.hide ? 0 : antiTracking.unknownTrackers.length, - trackers: antiTracking.unknownTrackers.map((unknownTracker) => { + num_total: unknownCategory.unknownTrackers.length, + num_blocked: unknownCategory.unknownTrackerCount, + num_shown: unknownCategory.hide ? 0 : unknownCategory.unknownTrackers.length, + trackers: unknownCategory.unknownTrackers.map((unknownTracker) => { if (unknownTracker.whitelisted) { whitelistedTotal++; } return { name: unknownTracker.name, domains: unknownTracker.domains, whitelisted: unknownTracker.whitelisted, + type: unknownTracker.type, siteRestricted: sitePolicy === 1, blocked: false, catId: 'anti_tracking_unknown', @@ -94,13 +95,13 @@ class Categories extends React.Component { }; const categoryList = categories.map((category, index) => renderCategory(category, index)); - const unknownCategory = antiTracking && antiTracking.unknownTrackers.length + const renderUnknownCategory = unknownCategory && unknownCategory.unknownTrackers.length ? renderCategory(null, categoryList.length, true) : null; return (
{categoryList} - {unknownCategory} + {renderUnknownCategory}
); } diff --git a/app/panel/components/Blocking/Category.jsx b/app/panel/components/Blocking/Category.jsx index cd4abc709..b9ff298c0 100644 --- a/app/panel/components/Blocking/Category.jsx +++ b/app/panel/components/Blocking/Category.jsx @@ -200,11 +200,7 @@ class Category extends React.Component {
{isUnknown && ( -
-

- {t('enhanced_anti_tracking')} -

-
+
)}
@@ -272,20 +268,6 @@ class Category extends React.Component {
)} - {isUnknown && ( -
- -
- )}
diff --git a/app/panel/components/Blocking/Tracker.jsx b/app/panel/components/Blocking/Tracker.jsx index 9997bea7e..0fae61e98 100644 --- a/app/panel/components/Blocking/Tracker.jsx +++ b/app/panel/components/Blocking/Tracker.jsx @@ -345,6 +345,7 @@ class Tracker extends React.Component { this.handleAntiTrackingWhitelist, tracker.whitelisted, tracker.siteRestricted, + tracker.type, )}
diff --git a/app/panel/components/Blocking/trackerButtonRenderHelpers.jsx b/app/panel/components/Blocking/trackerButtonRenderHelpers.jsx index e3829b881..53cb50a9a 100644 --- a/app/panel/components/Blocking/trackerButtonRenderHelpers.jsx +++ b/app/panel/components/Blocking/trackerButtonRenderHelpers.jsx @@ -54,7 +54,7 @@ export const renderKnownTrackerButtons = ( ); export const renderUnknownTrackerButtons = ( - handleAntiTrackingWhitelist, whitelisted, siteRestricted + handleAntiTrackingWhitelist, whitelisted, siteRestricted, type ) => { const svgContainerClasses = ClassNames('unknown-svg-container', { whitelisted: whitelisted && !siteRestricted, @@ -82,11 +82,20 @@ export const renderUnknownTrackerButtons = ( - - - - - + {type === 'antiTracking' ? ( + + + + + + ) : ( + + + + + + + )} diff --git a/app/panel/reducers/blocking.js b/app/panel/reducers/blocking.js index d91722abb..660c0355b 100644 --- a/app/panel/reducers/blocking.js +++ b/app/panel/reducers/blocking.js @@ -41,7 +41,7 @@ const initialState = { }, site_specific_unblocks: {}, site_specific_blocks: {}, - antiTracking: { + unknownCategory: { totalUnsafeCount: 0, // The amount of data points scrubbed by Anti-Tracking totalUnknownCount: 0, // The amount of data points scrubbed by Anti-Tracking for Trackers not in the Ghostery DB trackerCount: 0, // The amount of trackers scrubbed by Anti-Tracking (which are each associated with 1 or more data points) @@ -99,16 +99,32 @@ export default (state = initialState, action) => { return Object.assign({}, state, updated); } case UPDATE_ANTI_TRACKING_WHITELIST: { - const antiTracking = _updateAntiTrackingWhitelist(state, action); + const antiTracking = _updateCliqzModuleWhitelist(state, action); return Object.assign({}, state, { antiTracking }); } case UPDATE_CLIQZ_MODULE_DATA: case UPDATE_SUMMARY_DATA: { if (action.data.antiTracking) { - const { hide } = state.antiTracking; - return Object.assign({}, state, { - antiTracking: Object.assign({}, action.data.antiTracking, { hide }) + const { antiTracking, adBlock } = action.data; + let adBlockUnknownTrackers = adBlock.unknownTrackers; + antiTracking.unknownTrackers.forEach((tracker) => { + if (tracker.whitelisted) { + adBlockUnknownTrackers = adBlockUnknownTrackers.filter(adBlockTracker => ( + adBlockTracker.name !== tracker.name + )); + } }); + + const unknownCategory = { + totalUnsafeCount: antiTracking.totalUnsafeCount + adBlock.totalUnsafeCount, + totalUnknownCount: antiTracking.totalUnknownCount + adBlock.totalUnknownCount, + trackerCount: antiTracking.trackerCount + adBlock.trackerCount, + unknownTrackerCount: antiTracking.unknownTrackerCount + adBlock.unknownTrackerCount, + unknownTrackers: Array.from(new Set(antiTracking.unknownTrackers.concat(adBlockUnknownTrackers))), + whitelistedUrls: Object.assign({}, antiTracking.whitelistedUrls, adBlock.whitelistedUrls), + hide: state.unknownCategory.hide, + }; + return Object.assign({}, state, { unknownCategory }); } return state; } @@ -192,9 +208,9 @@ const _updateTrackerTrustRestrict = (state, action) => { * @param {Object} action action which provides data * @return {Object} updated categories and site-specific blocking counters */ -const _updateAntiTrackingWhitelist = (state, action) => { - const updatedAntiTracking = JSON.parse(JSON.stringify(state.antiTracking)); - const { whitelistedUrls } = updatedAntiTracking; +const _updateCliqzModuleWhitelist = (state, action) => { + const updatedUnknownCategory = JSON.parse(JSON.stringify(state.unknownCategory)); + const { whitelistedUrls } = updatedUnknownCategory; const { unknownTracker, pageHost } = action.data; const addToWhitelist = () => { @@ -235,13 +251,13 @@ const _updateAntiTrackingWhitelist = (state, action) => { addToWhitelist(); } - updatedAntiTracking.unknownTrackers.forEach((tracker) => { + updatedUnknownCategory.unknownTrackers.forEach((tracker) => { if (tracker.name === unknownTracker.name) { tracker.whitelisted = !tracker.whitelisted; } }); - sendMessage('setPanelData', { anti_tracking_whitelist: whitelistedUrls }); + sendMessage('setPanelData', { cliqz_module_whitelist: whitelistedUrls }); - return updatedAntiTracking; + return updatedUnknownCategory; }; diff --git a/app/scss/partials/_blocking_category.scss b/app/scss/partials/_blocking_category.scss index 9f0cb86cc..75fdf1930 100644 --- a/app/scss/partials/_blocking_category.scss +++ b/app/scss/partials/_blocking_category.scss @@ -58,7 +58,7 @@ height: 62px; &.anti-tracking-header { - height: 80px; + height: 66px; border-top: 0; padding-top: 0; } @@ -141,27 +141,14 @@ } } .Category__antiTrackingDivider { - background-color: #00AEF0; width: 110%; - height: 18px; + height: 4px; + border-top: 1px solid #00AEF0; + border-bottom: 1px solid #00AEF0; margin-bottom: 9px; } - .Category__antiTrackingDividerText { - margin: 0; - padding-top: 2px; - padding-left: 15px; - font-size: 10px; - color: white; - } .Category__antiTrackingCaret { position: relative; - bottom: 14px; - left: 8px; - } - .Category__antiTrackingButton { - display: inline-block; - position: relative; - left: 4px; - bottom: 4px + left: -20px; } } diff --git a/src/background.js b/src/background.js index 4c6d49802..34541f334 100644 --- a/src/background.js +++ b/src/background.js @@ -842,13 +842,9 @@ function onMessageHandler(request, sender, callback) { return false; } if (name === 'getCliqzModuleData') { // panel-android only - if (message && message.tabId) { - sendCliqzModuleCounts(message.tabId, callback); - } else { - utils.getActiveTab((tab) => { - sendCliqzModuleCounts(tab.id, callback); - }); - } + utils.getActiveTab((tab) => { + sendCliqzModuleCounts(tab.id, tab.pageHost, callback); + }); return true; } if (name === 'getTrackerDescription') { diff --git a/src/classes/BrowserButton.js b/src/classes/BrowserButton.js index 847d71429..34731cc31 100644 --- a/src/classes/BrowserButton.js +++ b/src/classes/BrowserButton.js @@ -17,7 +17,7 @@ import conf from './Conf'; import foundBugs from './FoundBugs'; import rewards from './Rewards'; import Policy from './Policy'; -import { getCliqzAntiTrackingData, getCliqzAdBlockingCount } from '../utils/cliqzModulesData'; +import { getCliqzData } from '../utils/cliqzModulesData'; import { getTab } from '../utils/utils'; import { log } from '../utils/common'; import globals from './Globals'; @@ -131,6 +131,7 @@ class BrowserButton { */ _getIconCount(tab) { const tabId = tab.id; + const tabHostUrl = tab.pageHost; let trackerCount = ''; let alert = false; @@ -145,8 +146,8 @@ class BrowserButton { } const { appsCount, appsAlertCount } = this._getTrackerCount(tabId); - const adBlockingCount = getCliqzAdBlockingCount(tabId).trackerCount; - const antiTrackingCount = getCliqzAntiTrackingData(tabId).trackerCount; + const adBlockingCount = getCliqzData(tabId, tabHostUrl).trackerCount; + const antiTrackingCount = getCliqzData(tabId, tabHostUrl, true).trackerCount; alert = (appsAlertCount > 0); trackerCount = (appsCount + antiTrackingCount + adBlockingCount).toString(); diff --git a/src/classes/ConfData.js b/src/classes/ConfData.js index 14315cac5..c4e262ae7 100644 --- a/src/classes/ConfData.js +++ b/src/classes/ConfData.js @@ -151,7 +151,7 @@ class ConfData { _initProperty('site_specific_blocks', {}); _initProperty('site_specific_unblocks', {}); _initProperty('site_whitelist', []); - _initProperty('anti_tracking_whitelist', {}); + _initProperty('cliqz_module_whitelist', {}); _initProperty('surrogates', {}); _initProperty('version_history', []); _initProperty('account', null); diff --git a/src/classes/Policy.js b/src/classes/Policy.js index 833b1a55c..914e46902 100644 --- a/src/classes/Policy.js +++ b/src/classes/Policy.js @@ -90,7 +90,7 @@ class Policy { let isWhitelisted = false; const processedHostUrl = processUrl(hostUrl).host; const processedTrackerUrl = processUrl(trackerUrl).host; - const antiTrackingWhitelist = conf.anti_tracking_whitelist; + const antiTrackingWhitelist = conf.cliqz_module_whitelist; if (antiTrackingWhitelist[processedTrackerUrl]) { antiTrackingWhitelist[processedTrackerUrl].hosts.some((host) => { diff --git a/src/utils/cliqzModulesData.js b/src/utils/cliqzModulesData.js index 363352cf1..73f045088 100644 --- a/src/utils/cliqzModulesData.js +++ b/src/utils/cliqzModulesData.js @@ -26,17 +26,21 @@ const { adblocker, antitracking } = cliqz.modules; * @param {int} tabId * @return {object} totalUnsafeCount */ -export function getCliqzAntiTrackingData(tabId, tabHostUrl) { +export function getCliqzData(tabId, tabHostUrl, antiTracking) { let totalUnsafeCount = 0; let totalUnknownCount = 0; let trackerCount = 0; let unknownTrackerCount = 0; const unknownTrackers = []; - const whitelistedUrls = conf.anti_tracking_whitelist; - if (!conf.enable_anti_tracking || !antitracking.background) { + const whitelistedUrls = conf.cliqz_module_whitelist; + const cliqzModule = antiTracking ? antitracking : adblocker; + const cliqzModuleEnabled = antiTracking ? conf.enable_anti_tracking : conf.enable_ad_block; + + if (!cliqzModuleEnabled || !cliqzModule.background) { return { totalUnsafeCount, totalUnknownCount, + trackerCount, unknownTrackerCount, unknownTrackers, whitelistedUrls, @@ -44,44 +48,50 @@ export function getCliqzAntiTrackingData(tabId, tabHostUrl) { } // Count up number of fingerprints and cookies found - const { bugs, others } = antitracking.background.actions.getGhosteryStats(tabId); + const { bugs, others } = cliqzModule.background.actions.getGhosteryStats(tabId); const bugsValues = Object.values(bugs); const othersValues = Object.values(others); + const getDataPoints = (tracker) => { + if (antiTracking) { return tracker.cookies + tracker.fingerprints; } + return tracker.ads; + }; for (const bug of bugsValues) { - if (bug.cookies || bug.fingerprints) { - totalUnsafeCount += bug.cookies + bug.fingerprints; + const dataPoints = getDataPoints(bug); + if (dataPoints) { + totalUnsafeCount += dataPoints; trackerCount++; } } for (const other of othersValues) { let whitelisted = false; - const scrubbed = other.cookies || other.fingerprints; + const dataPoints = getDataPoints(other); other.domains.some((domain) => { - if (conf.anti_tracking_whitelist[domain] - && conf.anti_tracking_whitelist[domain].hosts.includes(tabHostUrl)) { + if (whitelistedUrls[domain] + && whitelistedUrls[domain].hosts.includes(tabHostUrl)) { whitelisted = true; return true; } return false; }); - if (scrubbed) { - totalUnsafeCount += other.cookies + other.fingerprints; - totalUnknownCount += other.cookies + other.fingerprints; + if (dataPoints) { + totalUnsafeCount += dataPoints; + totalUnknownCount += dataPoints; trackerCount++; unknownTrackerCount++; } - if (scrubbed || whitelisted) { + if (dataPoints || whitelisted) { + const type = antiTracking ? 'antiTracking' : 'adBlock'; const { name, domains, ads, cookies, fingerprints } = other; unknownTrackers.push({ - name, domains, ads, cookies, fingerprints, whitelisted + name, domains, ads, cookies, fingerprints, whitelisted, type }); } } @@ -96,31 +106,6 @@ export function getCliqzAntiTrackingData(tabId, tabHostUrl) { }; } -/** - * Get the totalCount of ads found by the Ad Blocker on this tabId - * @memberOf BackgroundUtils - * @param {int} tabId - * @return {object} - */ -export function getCliqzAdBlockingCount(tabId) { - if (!conf.enable_ad_block || !adblocker.background) { - return { - totalCount: 0, - trackerCount: 0, - }; - } - - const adBlockInfo = adblocker.background.actions.getAdBlockInfoForTab(tabId); - const { bugs, others } = adblocker.background.actions.getGhosteryStats(tabId); - const bugCount = bugs ? Object.keys(bugs).length : 0; - const otherCount = others ? Object.keys(others).length : 0; - - return { - totalCount: adBlockInfo ? adBlockInfo.totalCount : 0, - trackerCount: bugCount + otherCount, - }; -} - /** * Get list of matched bug_ids from Anti-Tracking and Ad-Blocking for this * tab, along with list of 'other' trackers found that do not match known bug_ids. @@ -149,7 +134,7 @@ export function getCliqzGhosteryBugs(tabId) { export function sendCliqzModuleCounts(tabId, tabHostUrl, callback) { const modules = { adBlock: {}, antiTracking: {} }; - modules.adBlock = getCliqzAdBlockingCount(tabId); - modules.antiTracking = getCliqzAntiTrackingData(tabId, tabHostUrl); + modules.adBlock = getCliqzData(tabId, tabHostUrl); + modules.antiTracking = getCliqzData(tabId, tabHostUrl, true); callback(modules); } From 6a152b0a84b2a9437a71ce31094de6283b9b5e78 Mon Sep 17 00:00:00 2001 From: Ethan Gooding Date: Fri, 2 Aug 2019 01:07:00 -0400 Subject: [PATCH 06/10] Fix UI whitelist update bug and update variable names --- app/panel/actions/BlockingActions.js | 12 ++++++------ app/panel/components/Blocking.jsx | 6 +++--- app/panel/components/Blocking/Tracker.jsx | 2 +- app/panel/constants/constants.js | 4 ++-- app/panel/reducers/blocking.js | 24 +++++++++++------------ 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/app/panel/actions/BlockingActions.js b/app/panel/actions/BlockingActions.js index 5e4c273f9..a9f792bc2 100644 --- a/app/panel/actions/BlockingActions.js +++ b/app/panel/actions/BlockingActions.js @@ -15,11 +15,11 @@ import { UPDATE_BLOCKING_DATA, UPDATE_BLOCK_ALL_TRACKERS, UPDATE_CATEGORIES, - UPDATE_ANTI_TRACKING_HIDE, + UPDATE_UNKNOWN_CATEGORY_HIDE, UPDATE_CATEGORY_BLOCKED, UPDATE_TRACKER_BLOCKED, UPDATE_TRACKER_TRUST_RESTRICT, - UPDATE_ANTI_TRACKING_WHITELIST, + UPDATE_CLIQZ_MODULE_WHITELIST, TOGGLE_EXPAND_ALL } from '../constants/constants'; @@ -64,9 +64,9 @@ export function updateCategories(data) { * @param {Object} data * @return {Object} */ -export function updateAntiTrackingHide(data) { +export function updateUnknownCategoryHide(data) { return { - type: UPDATE_ANTI_TRACKING_HIDE, + type: UPDATE_UNKNOWN_CATEGORY_HIDE, data, }; } @@ -123,12 +123,12 @@ export function updateTrackerTrustRestrict(data) { * @param {Object} data * @return {Object} dispatch */ -export function updateAntiTrackingWhitelist(unknownTracker) { +export function updateCliqzModuleWhitelist(unknownTracker) { return function(dispatch, getState) { // use redux-thunk to get pageHost from summary const { pageHost } = getState().summary; dispatch({ - type: UPDATE_ANTI_TRACKING_WHITELIST, + type: UPDATE_CLIQZ_MODULE_WHITELIST, data: { unknownTracker, pageHost }, }); }; diff --git a/app/panel/components/Blocking.jsx b/app/panel/components/Blocking.jsx index 3a1de9743..45ea17733 100644 --- a/app/panel/components/Blocking.jsx +++ b/app/panel/components/Blocking.jsx @@ -93,7 +93,7 @@ class Blocking extends React.Component { */ setShow(filterName) { const updated_categories = JSON.parse(JSON.stringify(this.props.categories)); // deep clone - const updatedAntiTracking = JSON.parse(JSON.stringify(this.props.unknownCategory)); // deep clone + const updatedUnknownCategory = JSON.parse(JSON.stringify(this.props.unknownCategory)); // deep clone updated_categories.forEach((category) => { let count = 0; @@ -112,9 +112,9 @@ class Blocking extends React.Component { category.num_shown = (show) ? count : 0; }); - updatedAntiTracking.hide = !(filterName === 'all' || filterName === 'unknown'); + updatedUnknownCategory.hide = !(filterName === 'all' || filterName === 'unknown'); this.props.actions.updateCategories(updated_categories); - this.props.actions.updateAntiTrackingHide(updatedAntiTracking); + this.props.actions.updateUnknownCategoryHide(updatedUnknownCategory); } /** diff --git a/app/panel/components/Blocking/Tracker.jsx b/app/panel/components/Blocking/Tracker.jsx index 0fae61e98..fa2ff387f 100644 --- a/app/panel/components/Blocking/Tracker.jsx +++ b/app/panel/components/Blocking/Tracker.jsx @@ -220,7 +220,7 @@ class Tracker extends React.Component { handleAntiTrackingWhitelist() { const { tracker } = this.props; - this.props.actions.updateAntiTrackingWhitelist(tracker); + this.props.actions.updateCliqzModuleWhitelist(tracker); this.props.actions.showNotification({ updated: `${tracker.name}-whitelisting-status-changed`, reload: true, diff --git a/app/panel/constants/constants.js b/app/panel/constants/constants.js index 1694034c2..7d5a98342 100644 --- a/app/panel/constants/constants.js +++ b/app/panel/constants/constants.js @@ -39,11 +39,11 @@ export const SEND_SIGNAL = 'SEND_SIGNAL'; // blocking export const UPDATE_BLOCKING_DATA = 'UPDATE_BLOCKING_DATA'; export const UPDATE_CATEGORIES = 'UPDATE_CATEGORIES'; -export const UPDATE_ANTI_TRACKING_HIDE = 'UPDATE_ANTI_TRACKING_HIDE'; +export const UPDATE_UNKNOWN_CATEGORY_HIDE = 'UPDATE_UNKNOWN_CATEGORY_HIDE'; export const UPDATE_CATEGORY_BLOCKED = 'UPDATE_CATEGORY_BLOCKED'; export const UPDATE_TRACKER_BLOCKED = 'UPDATE_TRACKER_BLOCKED'; export const UPDATE_TRACKER_TRUST_RESTRICT = 'UPDATE_TRACKER_TRUST_RESTRICT'; -export const UPDATE_ANTI_TRACKING_WHITELIST = 'UPDATE_ANTI_TRACKING_WHITELIST'; +export const UPDATE_CLIQZ_MODULE_WHITELIST = 'UPDATE_CLIQZ_MODULE_WHITELIST'; export const UPDATE_BLOCK_ALL_TRACKERS = 'UPDATE_BLOCK_ALL_TRACKERS'; export const TOGGLE_EXPAND_ALL = 'TOGGLE_EXPAND_ALL'; diff --git a/app/panel/reducers/blocking.js b/app/panel/reducers/blocking.js index 660c0355b..87bc75141 100644 --- a/app/panel/reducers/blocking.js +++ b/app/panel/reducers/blocking.js @@ -17,11 +17,11 @@ import { FILTER_TRACKERS, UPDATE_BLOCK_ALL_TRACKERS, UPDATE_CATEGORIES, - UPDATE_ANTI_TRACKING_HIDE, + UPDATE_UNKNOWN_CATEGORY_HIDE, UPDATE_CATEGORY_BLOCKED, UPDATE_TRACKER_BLOCKED, UPDATE_TRACKER_TRUST_RESTRICT, - UPDATE_ANTI_TRACKING_WHITELIST, + UPDATE_CLIQZ_MODULE_WHITELIST, TOGGLE_EXPAND_ALL, UPDATE_CLIQZ_MODULE_DATA, UPDATE_SUMMARY_DATA @@ -42,13 +42,13 @@ const initialState = { site_specific_unblocks: {}, site_specific_blocks: {}, unknownCategory: { - totalUnsafeCount: 0, // The amount of data points scrubbed by Anti-Tracking - totalUnknownCount: 0, // The amount of data points scrubbed by Anti-Tracking for Trackers not in the Ghostery DB - trackerCount: 0, // The amount of trackers scrubbed by Anti-Tracking (which are each associated with 1 or more data points) - unknownTrackerCount: 0, // The amount of unknown trackers scrubbed by Anti-Tracking + totalUnsafeCount: 0, // The amount of data points scrubbed by Anti-Tracking and Ad Block + totalUnknownCount: 0, // The amount of data points scrubbed by Anti-Tracking and Ad Block for Trackers not in the Ghostery DB + trackerCount: 0, // The amount of trackers scrubbed by Anti-Tracking and Ad Block (which are each associated with 1 or more data points) + unknownTrackerCount: 0, // The amount of unknown trackers scrubbed by Anti-Tracking and Ad Block unknownTrackers: [], // An array of objects associated with each unknown Tracker (includes both blocked and whitelisted trackers for this site) whitelistedUrls: {}, // An object of whitelisted url domains pointing to an object with the associated tracker name and an array of whitelisted host domains - hide: false, // Whether or not to display the Anti-Tracking blocking category + hide: false, // Whether or not to display the Unknown category } }; @@ -79,8 +79,8 @@ export default (state = initialState, action) => { case UPDATE_CATEGORIES: { return Object.assign({}, state, { categories: action.data }); } - case UPDATE_ANTI_TRACKING_HIDE: { - return Object.assign({}, state, { antiTracking: action.data }); + case UPDATE_UNKNOWN_CATEGORY_HIDE: { + return Object.assign({}, state, { unknownCategory: action.data }); } case UPDATE_CATEGORY_BLOCKED: { const updated = updateCategoryBlocked(state, action); @@ -98,9 +98,9 @@ export default (state = initialState, action) => { const updated = _updateTrackerTrustRestrict(state, action); return Object.assign({}, state, updated); } - case UPDATE_ANTI_TRACKING_WHITELIST: { - const antiTracking = _updateCliqzModuleWhitelist(state, action); - return Object.assign({}, state, { antiTracking }); + case UPDATE_CLIQZ_MODULE_WHITELIST: { + const unknownCategory = _updateCliqzModuleWhitelist(state, action); + return Object.assign({}, state, { unknownCategory }); } case UPDATE_CLIQZ_MODULE_DATA: case UPDATE_SUMMARY_DATA: { From 79257692d59426218bef1207aacc1d70eedca621 Mon Sep 17 00:00:00 2001 From: Ethan Gooding Date: Fri, 2 Aug 2019 02:37:02 -0400 Subject: [PATCH 07/10] Fix variable names and remove linter warnings --- app/panel/components/Blocking/Category.jsx | 15 --------------- src/classes/Policy.js | 10 +++++----- 2 files changed, 5 insertions(+), 20 deletions(-) diff --git a/app/panel/components/Blocking/Category.jsx b/app/panel/components/Blocking/Category.jsx index b9ff298c0..587b84567 100644 --- a/app/panel/components/Blocking/Category.jsx +++ b/app/panel/components/Blocking/Category.jsx @@ -13,8 +13,6 @@ import React from 'react'; import Trackers from './Trackers'; -import { CliqzFeature } from '../BuildingBlocks'; -import Globals from '../../../../src/classes/Globals'; /** * @class Implement Category component, which represents a @@ -165,8 +163,6 @@ class Category extends React.Component { category, paused_blocking, sitePolicy, - enable_anti_tracking, - actions, isUnknown, } = this.props; @@ -185,17 +181,6 @@ class Category extends React.Component { trackersBlockedCount = category.num_blocked || 0; } - const clickCliqzFeature = (options) => { - const { feature, status, text } = options; - this.props.actions.showNotification({ - updated: feature, - reload: true, - text, - }); - actions.toggleCliqzFeature(feature, status); - }; - const cliqzInactive = paused_blocking || sitePolicy || Globals.IS_CLIQZ; - return (
diff --git a/src/classes/Policy.js b/src/classes/Policy.js index 914e46902..deedfd69a 100644 --- a/src/classes/Policy.js +++ b/src/classes/Policy.js @@ -51,7 +51,7 @@ class Policy { return globals.BLACKLISTED; } if (this.checkSiteWhitelist(hostUrl) - || this.checkAntiTrackingWhitelist(hostUrl, trackerUrl)) { + || this.checkCliqzModuleWhitelist(hostUrl, trackerUrl)) { return globals.WHITELISTED; } return false; @@ -86,14 +86,14 @@ class Policy { * @param {string} url site url * @return {string|boolean} corresponding whitelist entry or false, if none */ - checkAntiTrackingWhitelist(hostUrl, trackerUrl) { + checkCliqzModuleWhitelist(hostUrl, trackerUrl) { let isWhitelisted = false; const processedHostUrl = processUrl(hostUrl).host; const processedTrackerUrl = processUrl(trackerUrl).host; - const antiTrackingWhitelist = conf.cliqz_module_whitelist; + const cliqzModuleWhitelist = conf.cliqz_module_whitelist; - if (antiTrackingWhitelist[processedTrackerUrl]) { - antiTrackingWhitelist[processedTrackerUrl].hosts.some((host) => { + if (cliqzModuleWhitelist[processedTrackerUrl]) { + cliqzModuleWhitelist[processedTrackerUrl].hosts.some((host) => { if (host === processedHostUrl) { isWhitelisted = true; return true; From 0c1d9adc3617f90671412ab726164681371f851d Mon Sep 17 00:00:00 2001 From: Christopher Tino Date: Fri, 2 Aug 2019 11:04:06 -0400 Subject: [PATCH 08/10] update DonutGraph to handle adBlock unknown counts --- ...{anti_tracking_unknown.svg => unknown.svg} | 0 app/panel/components/Blocking/Categories.jsx | 6 ++--- .../components/BuildingBlocks/DonutGraph.jsx | 22 +++++++++++-------- app/panel/components/Summary.jsx | 2 ++ 4 files changed, 18 insertions(+), 12 deletions(-) rename app/images/panel/{anti_tracking_unknown.svg => unknown.svg} (100%) diff --git a/app/images/panel/anti_tracking_unknown.svg b/app/images/panel/unknown.svg similarity index 100% rename from app/images/panel/anti_tracking_unknown.svg rename to app/images/panel/unknown.svg diff --git a/app/panel/components/Blocking/Categories.jsx b/app/panel/components/Blocking/Categories.jsx index db750acc9..a51b58882 100644 --- a/app/panel/components/Blocking/Categories.jsx +++ b/app/panel/components/Blocking/Categories.jsx @@ -43,10 +43,10 @@ class Categories extends React.Component { let whitelistedTotal = 0; const unknownCategoryMapping = isUnknown ? ( { - id: 'anti_tracking_unknown', + id: 'unknown', name: t('unknown'), description: t('unknown_description'), - img_name: 'anti_tracking_unknown', + img_name: 'unknown', num_total: unknownCategory.unknownTrackers.length, num_blocked: unknownCategory.unknownTrackerCount, num_shown: unknownCategory.hide ? 0 : unknownCategory.unknownTrackers.length, @@ -59,7 +59,7 @@ class Categories extends React.Component { type: unknownTracker.type, siteRestricted: sitePolicy === 1, blocked: false, - catId: 'anti_tracking_unknown', + catId: 'unknown', description: '', id: unknownTracker.name + unknownTracker.domains[0], shouldShow: true, diff --git a/app/panel/components/BuildingBlocks/DonutGraph.jsx b/app/panel/components/BuildingBlocks/DonutGraph.jsx index f22a79e84..a156b29b2 100644 --- a/app/panel/components/BuildingBlocks/DonutGraph.jsx +++ b/app/panel/components/BuildingBlocks/DonutGraph.jsx @@ -76,6 +76,7 @@ class DonutGraph extends React.Component { componentDidMount() { const { categories, + adBlock, antiTracking, renderRedscale, renderGreyscale, @@ -90,7 +91,7 @@ class DonutGraph extends React.Component { .value(d => d.value); this.prepareDonutContainer(isSmall); - this.bakeDonut(categories, antiTracking, { + this.bakeDonut(categories, antiTracking, adBlock, { renderRedscale, renderGreyscale }); @@ -102,6 +103,7 @@ class DonutGraph extends React.Component { componentWillReceiveProps(nextProps) { const { categories, + adBlock, antiTracking, renderRedscale, renderGreyscale, @@ -128,9 +130,10 @@ class DonutGraph extends React.Component { return; } - if (!antiTracking.unknownTrackerCount && !nextProps.antiTracking.unknownTrackerCount) { return; } - const unknownDataPoints = antiTracking.unknownTrackerCount; - const nextUnknownDataPoints = nextProps.antiTracking.unknownTrackerCount; + if (!antiTracking.unknownTrackerCount && !nextProps.antiTracking.unknownTrackerCount + && !adBlock.unknownTrackerCount && !nextProps.adBlock.unknownTrackerCount) { return; } + const unknownDataPoints = antiTracking.unknownTrackerCount + adBlock.unknownTrackerCount; + const nextUnknownDataPoints = nextProps.antiTracking.unknownTrackerCount + nextProps.adBlock.unknownTrackerCount; if (unknownDataPoints !== nextUnknownDataPoints) { this.nextPropsDonut(nextProps); } @@ -154,7 +157,7 @@ class DonutGraph extends React.Component { * Helper function that updates donut with nextProps values */ nextPropsDonut(nextProps) { - this.bakeDonut(nextProps.categories, nextProps.antiTracking, { + this.bakeDonut(nextProps.categories, nextProps.antiTracking, nextProps.adBlock, { renderRedscale: nextProps.renderRedscale, renderGreyscale: nextProps.renderGreyscale, isSmall: nextProps.isSmall, @@ -193,7 +196,7 @@ class DonutGraph extends React.Component { */ bakeDonut = throttle(this._bakeDonut.bind(this), 600, { leading: true, trailing: true }) // eslint-disable-line react/sort-comp - _bakeDonut(categories, antiTracking, options) { + _bakeDonut(categories, antiTracking, adBlock, options) { const { renderRedscale, renderGreyscale, @@ -221,11 +224,11 @@ class DonutGraph extends React.Component { graphData.sort((a, b) => a.value < b.value); } - if (antiTracking.unknownTrackerCount) { + if (antiTracking.unknownTrackerCount || adBlock.unknownTrackerCount) { graphData.push({ id: 'unknown', name: 'Unknown', - value: antiTracking.unknownTrackerCount, + value: antiTracking.unknownTrackerCount + adBlock.unknownTrackerCount, }); } @@ -338,6 +341,7 @@ class DonutGraph extends React.Component { const { isSmall, categories, + adBlock, antiTracking, totalCount, } = this.props; @@ -359,7 +363,7 @@ class DonutGraph extends React.Component { {cat.name} ))} - {!!antiTracking.unknownTrackerCount && ( + {!!antiTracking.unknownTrackerCount && !!adBlock.unknownTrackerCount && ( Date: Fri, 2 Aug 2019 11:41:36 -0400 Subject: [PATCH 09/10] remove unused SVG --- app/images/panel/group-10-copy.svg | 6 ------ src/classes/Policy.js | 3 +-- 2 files changed, 1 insertion(+), 8 deletions(-) delete mode 100644 app/images/panel/group-10-copy.svg diff --git a/app/images/panel/group-10-copy.svg b/app/images/panel/group-10-copy.svg deleted file mode 100644 index 66930ab6e..000000000 --- a/app/images/panel/group-10-copy.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/classes/Policy.js b/src/classes/Policy.js index deedfd69a..547784d42 100644 --- a/src/classes/Policy.js +++ b/src/classes/Policy.js @@ -50,8 +50,7 @@ class Policy { if (this.blacklisted(hostUrl)) { return globals.BLACKLISTED; } - if (this.checkSiteWhitelist(hostUrl) - || this.checkCliqzModuleWhitelist(hostUrl, trackerUrl)) { + if (this.checkSiteWhitelist(hostUrl) || this.checkCliqzModuleWhitelist(hostUrl, trackerUrl)) { return globals.WHITELISTED; } return false; From 84066603bb90ebe33b6025941f9378a45f3dfb22 Mon Sep 17 00:00:00 2001 From: Christopher Tino Date: Fri, 2 Aug 2019 12:10:49 -0400 Subject: [PATCH 10/10] temporarily remove whitelist buttons from ad-block unknowns --- CHANGELOG.md | 2 +- CODEOWNERS | 8 ++++---- app/panel/actions/BlockingActions.js | 2 +- app/panel/components/Blocking/Tracker.jsx | 11 ++++++----- .../Blocking/trackerButtonRenderHelpers.jsx | 6 +++--- app/scss/partials/_blocking_tracker.scss | 12 ++++++------ 6 files changed, 21 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f98a25bb3..a6c241a31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ ### GHOSTERY 8.4.1 (UNRELEASED) -+ Add new Data Points tracker category in detail view with anti-tracking whitelist (#417) ++ Add new Unknown tracker category in detail view with anti-tracking whitelist (#417, #433) + Fixes broken `target=_blank` links in Opera (#426) + Fixes error `Uncaught TypeError: c.querySelectorAll` (#406) + Show ad-blocking icons in detail view tracker list (#411) diff --git a/CODEOWNERS b/CODEOWNERS index fb3fb8d25..63a84492d 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -13,16 +13,16 @@ /src/classes/PolicySmartBlock.js @jsignanini /src/classes/Conf.js @zarembsky /src/classes/ConfData.js @zarembsky -/src/classes/PanelData.js @zarembsky +/src/classes/PanelData.js @wlycdgr # Background /src/background.js @zarembsky # The Ghostery Hub -/app/hub/ @IAmThePan +/app/hub/ @Eden12345 # Shared Components -/app/shared-components @IAmThePan +/app/shared-components @wlycdgr # Build Tools .eslintrc.js @christophertino @@ -30,4 +30,4 @@ babel.config.js @christophertino webpack.config.js @christophertino # Unit Tests -/test/ @IAmThePan +/test/ @Eden12345 diff --git a/app/panel/actions/BlockingActions.js b/app/panel/actions/BlockingActions.js index a9f792bc2..3964acaac 100644 --- a/app/panel/actions/BlockingActions.js +++ b/app/panel/actions/BlockingActions.js @@ -119,7 +119,7 @@ export function updateTrackerTrustRestrict(data) { } /** - * Called from Tracker.handleAntiTrackingWhitelist() + * Called from Tracker.handleCliqzTrackerWhitelist() * @param {Object} data * @return {Object} dispatch */ diff --git a/app/panel/components/Blocking/Tracker.jsx b/app/panel/components/Blocking/Tracker.jsx index fa2ff387f..2f51e50a9 100644 --- a/app/panel/components/Blocking/Tracker.jsx +++ b/app/panel/components/Blocking/Tracker.jsx @@ -42,7 +42,7 @@ class Tracker extends React.Component { this.clickTrackerStatus = this.clickTrackerStatus.bind(this); this.clickTrackerTrust = this.clickTrackerTrust.bind(this); this.clickTrackerRestrict = this.clickTrackerRestrict.bind(this); - this.handleAntiTrackingWhitelist = this.handleAntiTrackingWhitelist.bind(this); + this.handleCliqzTrackerWhitelist = this.handleCliqzTrackerWhitelist.bind(this); } /** @@ -217,7 +217,7 @@ class Tracker extends React.Component { * Trigger actions which persist the new setting and notify user * that the page should be reloaded. */ - handleAntiTrackingWhitelist() { + handleCliqzTrackerWhitelist() { const { tracker } = this.props; this.props.actions.updateCliqzModuleWhitelist(tracker); @@ -335,14 +335,15 @@ class Tracker extends React.Component { {!tracker.whitelisted && this._renderCliqzStatsContainer()}
- {!isUnknown ? renderKnownTrackerButtons( + {!isUnknown && renderKnownTrackerButtons( this.props.tracker.ss_allowed, this.props.tracker.ss_blocked, this.clickTrackerTrust, this.clickTrackerRestrict, this.clickTrackerStatus, - ) : renderUnknownTrackerButtons( - this.handleAntiTrackingWhitelist, + )} + {isUnknown && tracker.type === 'antiTracking' && renderUnknownTrackerButtons( + this.handleCliqzTrackerWhitelist, tracker.whitelisted, tracker.siteRestricted, tracker.type, diff --git a/app/panel/components/Blocking/trackerButtonRenderHelpers.jsx b/app/panel/components/Blocking/trackerButtonRenderHelpers.jsx index 53cb50a9a..2027507b6 100644 --- a/app/panel/components/Blocking/trackerButtonRenderHelpers.jsx +++ b/app/panel/components/Blocking/trackerButtonRenderHelpers.jsx @@ -54,7 +54,7 @@ export const renderKnownTrackerButtons = ( ); export const renderUnknownTrackerButtons = ( - handleAntiTrackingWhitelist, whitelisted, siteRestricted, type + handleCliqzTrackerWhitelist, whitelisted, siteRestricted, type ) => { const svgContainerClasses = ClassNames('unknown-svg-container', { whitelisted: whitelisted && !siteRestricted, @@ -65,7 +65,7 @@ export const renderUnknownTrackerButtons = (
{/* USE INLINE SVG FOR TRUST CIRCLE TO CHANGE COLORS WITH CSS */} - + @@ -78,7 +78,7 @@ export const renderUnknownTrackerButtons = ( {/* USE INLINE SVG FOR ANTI-TRACKING SHIELD TO CHANGE COLORS WITH CSS */} - + diff --git a/app/scss/partials/_blocking_tracker.scss b/app/scss/partials/_blocking_tracker.scss index 1c0e35053..a238516aa 100644 --- a/app/scss/partials/_blocking_tracker.scss +++ b/app/scss/partials/_blocking_tracker.scss @@ -144,7 +144,7 @@ justify-content: space-between; &:not(.whitelisted) { - .anti-track-trust { + .cliqz-tracker-trust { visibility: hidden; cursor: pointer; .border { stroke: #d8d8d8; } @@ -152,7 +152,7 @@ .trust-circle { stroke: #9B9B9B; } } - .anti-track-scrub { + .cliqz-tracker-scrub { pointer-events: none; } } @@ -160,10 +160,10 @@ &.whitelisted { flex-direction: row-reverse; - .anti-track-trust { + .cliqz-tracker-trust { pointer-events: none; } - .anti-track-scrub { + .cliqz-tracker-scrub { visibility: hidden; pointer-events: auto; cursor: pointer; @@ -174,13 +174,13 @@ } &:hover { - .anti-track-trust { + .cliqz-tracker-trust { visibility: visible; } } &.whitelisted:hover { - .anti-track-scrub { + .cliqz-tracker-scrub { visibility: visible; } }