Bug 1361855 - Filter TAB_COUNT histogram to record only on 5 minute intervals; r=Gijs

MozReview-Commit-ID: F5mI1eiffWN

--HG--
extra : rebase_source : 477b4c7df0c6c7dec0fad0648ff069037fc8e696
This commit is contained in:
Lie Ryan 2017-06-16 12:48:19 +00:00
Родитель 360b5ce3ad
Коммит 0270e19add
2 изменённых файлов: 63 добавлений и 7 удалений

Просмотреть файл

@ -9,6 +9,7 @@ this.EXPORTED_SYMBOLS = [
"BrowserUsageTelemetry",
"URLBAR_SELECTED_RESULT_TYPES",
"URLBAR_SELECTED_RESULT_METHODS",
"MINIMUM_TAB_COUNT_INTERVAL_MS",
];
const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
@ -84,6 +85,10 @@ const URLBAR_SELECTED_RESULT_METHODS = {
click: 2,
};
const MINIMUM_TAB_COUNT_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes, in ms
function getOpenTabsAndWinsCounts() {
let tabCount = 0;
let winCount = 0;
@ -317,6 +322,7 @@ let urlbarListener = {
let BrowserUsageTelemetry = {
init() {
this._lastRecordTabCount = 0;
urlbarListener.init();
this._setupAfterRestore();
},
@ -645,7 +651,14 @@ let BrowserUsageTelemetry = {
win.addEventListener("load", onLoad);
},
_recordTabCount(tabCount = getTabCount()) {
Services.telemetry.getHistogramById("TAB_COUNT").add(tabCount);
},
_recordTabCount(tabCount) {
let currentTime = Date.now();
if (currentTime > this._lastRecordTabCount + MINIMUM_TAB_COUNT_INTERVAL_MS) {
if (tabCount === undefined) {
tabCount = getTabCount();
}
Services.telemetry.getHistogramById("TAB_COUNT").add(tabCount);
this._lastRecordTabCount = currentTime;
}
}
};

Просмотреть файл

@ -10,6 +10,9 @@ const UNFILTERED_URI_COUNT = "browser.engagement.unfiltered_uri_count";
const TELEMETRY_SUBSESSION_TOPIC = "internal-telemetry-after-subsession-split";
XPCOMUtils.defineLazyModuleGetter(this, "MINIMUM_TAB_COUNT_INTERVAL_MS",
"resource:///modules/BrowserUsageTelemetry.jsm");
// Reset internal URI counter in case URIs were opened by other tests.
Services.obs.notifyObservers(null, TELEMETRY_SUBSESSION_TOPIC);
@ -280,28 +283,68 @@ add_task(async function test_tabsHistogram() {
checkTabCountHistogram(tabCountHist.snapshot(), [0, 0], "TAB_COUNT telemetry - initial tab counts")
// Add a new tab and check that the count is right.
BrowserUsageTelemetry._lastRecordTabCount = 0;
openedTabs.push(await BrowserTestUtils.openNewForegroundTab(gBrowser, "about:blank"));
checkTabCountHistogram(tabCountHist.snapshot(), [0, 0, 1], "TAB_COUNT telemetry - opening tabs");
// Open a different page and check the counts.
BrowserUsageTelemetry._lastRecordTabCount = 0;
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, "about:blank");
openedTabs.push(tab);
BrowserUsageTelemetry._lastRecordTabCount = 0;
await BrowserTestUtils.loadURI(tab.linkedBrowser, "http://example.com/");
await BrowserTestUtils.browserLoaded(tab.linkedBrowser);
checkTabCountHistogram(tabCountHist.snapshot(), [0, 0, 1, 2], "TAB_COUNT telemetry - loading page");
// Open another tab
BrowserUsageTelemetry._lastRecordTabCount = 0;
openedTabs.push(await BrowserTestUtils.openNewForegroundTab(gBrowser, "about:blank"));
checkTabCountHistogram(tabCountHist.snapshot(), [0, 0, 1, 2, 1], "TAB_COUNT telemetry - opening more tabs");
// Add a new window and then some tabs in it. A new window starts with one tab.
BrowserUsageTelemetry._lastRecordTabCount = 0;
let win = await BrowserTestUtils.openNewBrowserWindow();
checkTabCountHistogram(tabCountHist.snapshot(), [0, 0, 1, 2, 1, 1], "TAB_COUNT telemetry - opening window");
openedTabs.push(await BrowserTestUtils.openNewForegroundTab(win.gBrowser, "about:blank"));
openedTabs.push(await BrowserTestUtils.openNewForegroundTab(win.gBrowser, "about:blank"));
openedTabs.push(await BrowserTestUtils.openNewForegroundTab(win.gBrowser, "about:blank"));
checkTabCountHistogram(tabCountHist.snapshot(), [0, 0, 1, 2, 1, 1, 1, 1, 1], "TAB_COUNT telemetry - opening more tabs in another window");
// Do not trigger a recount if _lastRecordTabCount is recent on new tab
BrowserUsageTelemetry._lastRecordTabCount = Date.now() - (MINIMUM_TAB_COUNT_INTERVAL_MS / 2);
{
let oldLastRecordTabCount = BrowserUsageTelemetry._lastRecordTabCount;
openedTabs.push(await BrowserTestUtils.openNewForegroundTab(win.gBrowser, "about:blank"));
checkTabCountHistogram(tabCountHist.snapshot(), [0, 0, 1, 2, 1, 1, 0], "TAB_COUNT telemetry - new tab, recount event ignored");
ok(BrowserUsageTelemetry._lastRecordTabCount == oldLastRecordTabCount, "TAB_COUNT telemetry - _lastRecordTabCount unchanged");
}
// Trigger a recount if _lastRecordTabCount has passed on new tab
BrowserUsageTelemetry._lastRecordTabCount = Date.now() - (MINIMUM_TAB_COUNT_INTERVAL_MS + 1000);
{
let oldLastRecordTabCount = BrowserUsageTelemetry._lastRecordTabCount;
openedTabs.push(await BrowserTestUtils.openNewForegroundTab(win.gBrowser, "about:blank"));
checkTabCountHistogram(tabCountHist.snapshot(), [0, 0, 1, 2, 1, 1, 0, 1], "TAB_COUNT telemetry - new tab, recount event included");
ok(BrowserUsageTelemetry._lastRecordTabCount != oldLastRecordTabCount, "TAB_COUNT telemetry - _lastRecordTabCount updated");
ok(BrowserUsageTelemetry._lastRecordTabCount > Date.now() - MINIMUM_TAB_COUNT_INTERVAL_MS, "TAB_COUNT telemetry - _lastRecordTabCount invariant");
}
// Do not trigger a recount if _lastRecordTabCount is recent on page load
BrowserUsageTelemetry._lastRecordTabCount = Date.now() - (MINIMUM_TAB_COUNT_INTERVAL_MS / 2);
{
let oldLastRecordTabCount = BrowserUsageTelemetry._lastRecordTabCount;
await BrowserTestUtils.loadURI(tab.linkedBrowser, "http://example.com/");
await BrowserTestUtils.browserLoaded(tab.linkedBrowser);
checkTabCountHistogram(tabCountHist.snapshot(), [0, 0, 1, 2, 1, 1, 0, 1], "TAB_COUNT telemetry - page load, recount event ignored");
ok(BrowserUsageTelemetry._lastRecordTabCount == oldLastRecordTabCount, "TAB_COUNT telemetry - _lastRecordTabCount unchanged");
}
// Trigger a recount if _lastRecordTabCount has passed on page load
BrowserUsageTelemetry._lastRecordTabCount = Date.now() - (MINIMUM_TAB_COUNT_INTERVAL_MS + 1000);
{
let oldLastRecordTabCount = BrowserUsageTelemetry._lastRecordTabCount;
await BrowserTestUtils.loadURI(tab.linkedBrowser, "http://example.com/");
await BrowserTestUtils.browserLoaded(tab.linkedBrowser);
checkTabCountHistogram(tabCountHist.snapshot(), [0, 0, 1, 2, 1, 1, 0, 2], "TAB_COUNT telemetry - page load, recount event included");
ok(BrowserUsageTelemetry._lastRecordTabCount != oldLastRecordTabCount, "TAB_COUNT telemetry - _lastRecordTabCount updated");
ok(BrowserUsageTelemetry._lastRecordTabCount > Date.now() - MINIMUM_TAB_COUNT_INTERVAL_MS, "TAB_COUNT telemetry - _lastRecordTabCount invariant");
}
// Remove all the extra windows and tabs.
for (let openTab of openedTabs) {