Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gh 1763/metrics feature/new triggers for broken page pings #430

Closed
Changes from 1 commit
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
4ecd3d0
Update broken ping reload threshhold to 60 seconds
wlycdgr Jul 17, 2019
9c74083
Merge branch 'develop' into GH-1763/metrics-feature/new-triggers-for-…
wlycdgr Jul 19, 2019
1ed578e
Add startPossibleBrokenPageTimer method to Metrics, implement the del…
wlycdgr Jul 22, 2019
99305fc
Implement metrics broken page trigger handler that uses existing even…
wlycdgr Jul 22, 2019
52e9a7a
Add setup_pth and setup_block parameters to broken_page ping
wlycdgr Jul 22, 2019
311b498
Clear and reset broken page watcher setTimeout handler if a new trigg…
wlycdgr Jul 22, 2019
dd1d215
Add pause Ghostery trigger for Metrics broken page watcher
wlycdgr Jul 22, 2019
49281a8
Add local tracker unblock trigger for Metrics broken page watcher.
wlycdgr Jul 22, 2019
5e5d996
Handle new tab creation for broken page watcher. Add documentation co…
wlycdgr Jul 23, 2019
f2c49ab
Remove broken page metrics ping call from TabInfo#create
wlycdgr Jul 23, 2019
0664aa5
Revert smart unblock threshold to 30 seconds. Add comments explaining…
wlycdgr Jul 23, 2019
28da0df
Trigger metrics broken page watcher on individual tracker site specif…
wlycdgr Jul 23, 2019
e7cd1bc
Pacify linter
wlycdgr Jul 23, 2019
e0076c1
Only set broken page watcher on whitelist add, not both add and remove
wlycdgr Jul 23, 2019
b9cf1ee
Change this.BROKEN_APGE_NEW_TAB value to a less mysterious 5. RIP Age…
wlycdgr Jul 23, 2019
0f5a592
Merge branch 'develop' into GH-1763/metrics-feature/new-triggers-for-…
wlycdgr Jul 29, 2019
d286689
Correct timeout handler name in Metrics#_resetBrokenPageWatcher
wlycdgr Jul 29, 2019
aa76f53
Correct broken_page ping name in Metrics#handleBrokenPageTrigger
wlycdgr Jul 29, 2019
4e18aaa
Bind setTimeout handler to Metrics instance in getActiveTab callback …
wlycdgr Jul 29, 2019
6634a9b
Merge branch 'develop' into GH-1763/metrics-feature/new-triggers-for-…
christophertino Jul 29, 2019
File filter
Filter file types
Jump to
Jump to file
Failed to load files.

Always

Just for now

Handle new tab creation for broken page watcher. Add documentation co…
…mments to broken page Metrics methods
  • Loading branch information
wlycdgr committed Jul 23, 2019
commit 5e5d9968b7adba4971b950cd7808da0691db3f81
@@ -25,6 +25,7 @@ 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';
@@ -546,7 +547,11 @@ class EventHandlers {
*
* @param {Object} tab Details of the tab that was created
*/
onTabCreated() {}
onTabCreated(tab) {
const { url } = tab;

metrics.handleBrokenPageTrigger(globals.BROKEN_PAGE_NEW_TAB, url);
}

/**
* Handler for tabs.onActivated event.
@@ -75,6 +75,7 @@ class Globals {
this.BROKEN_PAGE_WHITELIST = 2;
this.BROKEN_PAGE_PAUSE = 3;
this.BROKEN_PAGE_LOCAL_TRACKER_UNBLOCK = 4;
this.BROKEN_PAGE_NEW_TAB = 86;

// data stores
this.REDIRECT_MAP = new Map();
@@ -14,7 +14,7 @@
import globals from './Globals';
import conf from './Conf';
import { log, prefsSet, prefsGet } from '../utils/common';
import { processUrlQuery } from '../utils/utils';
import { getActiveTab, processUrlQuery } from '../utils/utils';
import rewards from './Rewards';

// CONSTANTS
@@ -45,6 +45,7 @@ class Metrics {
triggerId: '',
triggerTime: '',
timeoutId: null,
url: '',
};
}

@@ -114,16 +115,56 @@ class Metrics {
});
}

handleBrokenPageTrigger(triggerId) {
/**
* 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 {int} 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 {int} 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 = Object.assign({}, {
on: true,
triggerId,
triggerTime: Date.now(),
timeoutId: setTimeout(this._clearBrokenPageWatcher, BROKEN_PAGE_WATCH_THRESHOLD),
url: tabUrl,
});
});
}
/**
* handleBrokenPageTrigger helper
* @private
*/
_unplugBrokenPageWatcher() {
this._clearBrokenPageWatcherTimeout();

@@ -132,17 +173,7 @@ class Metrics {
triggerId: '',
triggerTime: '',
timeoutId: null,
});
}

_resetBrokenPageWatcher(triggerId) {
this._clearBrokenPageWatcherTimeout();

this._brokenPageWatcher = Object.assign({}, {
on: true,
triggerId,
triggerTime: Date.now(),
timeoutId: setTimeout(this._clearBrokenPageWatcher, BROKEN_PAGE_WATCH_THRESHOLD),
url: '',
});
}

@@ -366,7 +397,7 @@ class Metrics {
metrics_url +=
// Reward ID
`&rid=${encodeURIComponent(this._getRewardId().toString())}`;
} else if (type === 'broken_page' && this._brokenPageWatcher.flag) {
} else if (type === 'broken_page' && this._brokenPageWatcher.on) {
metrics_url +=
// What triggered the broken page ping?
`&setup_path=${encodeURIComponent(this._brokenPageWatcher.triggerId.toString())}` +
ProTip! Use n and p to navigate between commits in a pull request.