diff --git a/app/panel/reducers/blocking.js b/app/panel/reducers/blocking.js index 597645a80..cbbc6243b 100644 --- a/app/panel/reducers/blocking.js +++ b/app/panel/reducers/blocking.js @@ -108,7 +108,6 @@ const _updateTrackerTrustRestrict = (state, action) => { sendMessage('setPanelData', { site_specific_unblocks: updated_site_specific_unblocks, site_specific_blocks: updated_site_specific_blocks, - brokenPageMetricsTrackerTrustOrUnblock: msg.trust || (!msg.trust && !msg.restrict), }); return { diff --git a/app/panel/reducers/summary.js b/app/panel/reducers/summary.js index b459ca57c..514cc8e4c 100644 --- a/app/panel/reducers/summary.js +++ b/app/panel/reducers/summary.js @@ -118,7 +118,6 @@ const _updateSitePolicy = (state, action) => { sendMessage('setPanelData', { site_whitelist: updated_whitelist, site_blacklist: updated_blacklist, - brokenPageMetricsWhitelistSite: updated_site_policy === 2, }); return { diff --git a/app/panel/utils/blocking.js b/app/panel/utils/blocking.js index ab2d7b0c9..d3166355d 100644 --- a/app/panel/utils/blocking.js +++ b/app/panel/utils/blocking.js @@ -214,10 +214,7 @@ export function updateTrackerBlocked(state, action) { }); // persist to background - sendMessage('setPanelData', { - selected_app_ids: updated_app_ids, - brokenPageMetricsTrackerTrustOrUnblock: !blocked - }); + sendMessage('setPanelData', { selected_app_ids: updated_app_ids }); return { categories: updated_categories, diff --git a/src/background.js b/src/background.js index 88a71298e..1644488a0 100644 --- a/src/background.js +++ b/src/background.js @@ -1214,8 +1214,6 @@ function initializeDispatcher() { log('Conf value changed for a watched user setting:', key); }, 200)); dispatcher.on('globals.save.paused_blocking', () => { - // if user has paused Ghostery, suspect broken page - if (globals.SESSION.paused_blocking) { metrics.handleBrokenPageTrigger(globals.BROKEN_PAGE_PAUSE); } // update content script state when blocking is paused/unpaused cliqz.modules.core.action('refreshAppState'); }); diff --git a/src/classes/EventHandlers.js b/src/classes/EventHandlers.js index 77d9b1ed0..ccba49597 100644 --- a/src/classes/EventHandlers.js +++ b/src/classes/EventHandlers.js @@ -25,7 +25,6 @@ import conf from './Conf'; import foundBugs from './FoundBugs'; import globals from './Globals'; import latency from './Latency'; -import metrics from './Metrics'; import panelData from './PanelData'; import Policy, { BLOCK_REASON_SS_UNBLOCKED, BLOCK_REASON_C2P_ALLOWED_THROUGH } from './Policy'; import PolicySmartBlock from './PolicySmartBlock'; @@ -109,7 +108,6 @@ class EventHandlers { if (frameId === 0) { // update reload info before creating/clearing tab info if (transitionType === 'reload' && !transitionQualifiers.includes('forward_back')) { - metrics.handleBrokenPageTrigger(globals.BROKEN_PAGE_REFRESH); tabInfo.setTabInfo(tabId, 'numOfReloads', tabInfo.getTabInfo(tabId, 'numOfReloads') + 1); } else if (transitionType !== 'auto_subframe' && transitionType !== 'manual_subframe') { tabInfo.setTabInfo(tabId, 'reloaded', false); @@ -539,11 +537,7 @@ class EventHandlers { * * @param {Object} tab Details of the tab that was created */ - static onTabCreated(tab) { - const { url } = tab; - - metrics.handleBrokenPageTrigger(globals.BROKEN_PAGE_NEW_TAB, url); - } + static onTabCreated() {} /** * Handler for tabs.onActivated event. diff --git a/src/classes/Globals.js b/src/classes/Globals.js index 8040ed8f5..c98ed82be 100644 --- a/src/classes/Globals.js +++ b/src/classes/Globals.js @@ -73,13 +73,6 @@ class Globals { this.BLACKLISTED = 1; this.WHITELISTED = 2; - // Broken page metrics named constants - this.BROKEN_PAGE_REFRESH = 1; - this.BROKEN_PAGE_WHITELIST = 2; - this.BROKEN_PAGE_PAUSE = 3; - this.BROKEN_PAGE_TRACKER_TRUST_OR_UNBLOCK = 4; - this.BROKEN_PAGE_NEW_TAB = 5; - // data stores this.REDIRECT_MAP = new Map(); this.BLOCKED_REDIRECT_DATA = {}; diff --git a/src/classes/Metrics.js b/src/classes/Metrics.js index 9907ad27c..84c9c23c8 100644 --- a/src/classes/Metrics.js +++ b/src/classes/Metrics.js @@ -14,7 +14,7 @@ import globals from './Globals'; import conf from './Conf'; import { log, prefsSet, prefsGet } from '../utils/common'; -import { getActiveTab, processUrlQuery } from '../utils/utils'; +import { processUrlQuery } from '../utils/utils'; // CONSTANTS const FREQUENCIES = { // in milliseconds @@ -28,11 +28,6 @@ const CAMPAIGN_METRICS = ['install', 'active', 'uninstall']; const { METRICS_BASE_URL, EXTENSION_VERSION, BROWSER_INFO } = globals; const MAX_DELAYED_PINGS = 100; -// Note that this threshold is intentionally different from the 30 second threshold in PolicySmartBlock, -// which is used to set the reloaded property on tab objects and to activate smart unblock behavior -// see GH-1797 for more details -const BROKEN_PAGE_METRICS_THRESHOLD = 60000; // 60 seconds - /** * Class for handling telemetry pings. * @memberOf BackgroundClasses @@ -42,13 +37,6 @@ class Metrics { this.utm_source = ''; this.utm_campaign = ''; this.ping_set = new Set(); - this._brokenPageWatcher = { - on: false, - triggerId: '', - triggerTime: '', - timeoutId: null, - url: '', - }; } /** @@ -94,75 +82,6 @@ class Metrics { }); } - /** - * Responds to individual user actions and sequences of user actions that may indicate a broken page, - * sending broken_page pings as needed - * For example, sends a broken_page ping when the user whitelists a site, - * then refreshes the page less than a minute later - * @param {number} triggerId 'what specifically triggered this broken_page ping?' identifier sent along to the metrics server - * @param {string} newTabUrl for checking whether user has opened the same url in a new tab, which confirms a suspicion raised by certain triggers - */ - handleBrokenPageTrigger(triggerId, newTabUrl = null) { - if (this._brokenPageWatcher.on && triggerId === globals.BROKEN_PAGE_REFRESH) { - this.ping('broken_page'); - this._unplugBrokenPageWatcher(); - return; - } - - if (this._brokenPageWatcher.on && triggerId === globals.BROKEN_PAGE_NEW_TAB && this._brokenPageWatcher.url === newTabUrl) { - this.ping('broken_page'); - this._unplugBrokenPageWatcher(); - return; - } - - if (triggerId === globals.BROKEN_PAGE_NEW_TAB) { return; } - - this._resetBrokenPageWatcher(triggerId); - } - - /** - * handleBrokenPageTrigger helper - * starts the temporary watch for a second suspicious user action in response to a first - * @param {number} triggerId 'what specifically triggered this broken_page ping?' identifier sent along to the metrics server - * @private - */ - _resetBrokenPageWatcher(triggerId) { - this._clearBrokenPageWatcherTimeout(); - - getActiveTab((tab) => { - const tabUrl = tab && tab.url ? tab.url : ''; - - this._brokenPageWatcher = { - on: true, - triggerId, - triggerTime: Date.now(), - timeoutId: setTimeout(this._clearBrokenPageWatcherTimeout.bind(this), BROKEN_PAGE_METRICS_THRESHOLD), - url: tabUrl - }; - }); - } - - /** - * handleBrokenPageTrigger helper - * @private - */ - _unplugBrokenPageWatcher() { - this._clearBrokenPageWatcherTimeout(); - - this._brokenPageWatcher = { - on: false, - triggerId: '', - triggerTime: '', - timeoutId: null, - url: '' - }; - } - - _clearBrokenPageWatcherTimeout() { - const { timeoutId } = this._brokenPageWatcher; - if (timeoutId) { clearTimeout(timeoutId); } - } - /** * Prepare data and send telemetry pings. * @param {string} type type of the telemetry ping @@ -240,7 +159,6 @@ class Metrics { case 'priority_support_submit': case 'theme_change': case 'manage_subscription': - case 'broken_page': this._sendReq(type, ['all']); break; @@ -390,14 +308,7 @@ class Metrics { `&us=${encodeURIComponent(this.utm_source)}` + // Marketing campaign (Former utm_campaign) `&uc=${encodeURIComponent(this.utm_campaign)}`; - } else if (type === 'broken_page' && this._brokenPageWatcher.on) { - metrics_url += - // What triggered the broken page ping? - `&setup_path=${encodeURIComponent(this._brokenPageWatcher.triggerId.toString())}` + - // How much time passed between the trigger and the page refresh / open in new tab? - `&setup_block=${encodeURIComponent((Date.now() - this._brokenPageWatcher.triggerTime).toString())}`; } - return metrics_url; } diff --git a/src/classes/PanelData.js b/src/classes/PanelData.js index eb2734ff3..c47f542d1 100644 --- a/src/classes/PanelData.js +++ b/src/classes/PanelData.js @@ -20,7 +20,6 @@ import conf from './Conf'; import foundBugs from './FoundBugs'; import bugDb from './BugDb'; import globals from './Globals'; -import metrics from './Metrics'; import Policy from './Policy'; import tabInfo from './TabInfo'; import Rewards from './Rewards'; @@ -636,14 +635,6 @@ class PanelData { tabInfo.setTabInfo(this._activeTab.id, 'needsReload', data.needsReload); } - if (data.brokenPageMetricsTrackerTrustOrUnblock) { - metrics.handleBrokenPageTrigger(globals.BROKEN_PAGE_TRACKER_TRUST_OR_UNBLOCK); - } - - if (data.brokenPageMetricsWhitelistSite) { - metrics.handleBrokenPageTrigger(globals.BROKEN_PAGE_WHITELIST); - } - if (syncSetDataChanged) { // Push conf changes to the server account.saveUserSettings().catch(err => log('PanelData saveUserSettings', err)); diff --git a/src/classes/PolicySmartBlock.js b/src/classes/PolicySmartBlock.js index efac2a000..76d1f8538 100644 --- a/src/classes/PolicySmartBlock.js +++ b/src/classes/PolicySmartBlock.js @@ -224,8 +224,6 @@ class PolicySmartBlock { static checkReloadThreshold(tabId) { if (!PolicySmartBlock.shouldCheck(tabId)) { return false; } - // Note that this threshold is different from the broken page ping threshold in Metrics, which is 60 seconds - // see GH-1797 for more details const SMART_BLOCK_BEHAVIOR_THRESHOLD = 30000; // 30 seconds return (