mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-24 10:45:42 +00:00
cec5ad7159
--HG-- extra : commitid : 5VJJygNMmAr extra : rebase_source : 7bb93d4549c584486312ec628acb34d7e8ab8fa5
109 lines
3.6 KiB
JavaScript
109 lines
3.6 KiB
JavaScript
"use strict";
|
|
|
|
var gTestTab;
|
|
var gContentAPI;
|
|
var gContentWindow;
|
|
|
|
Components.utils.import("resource://gre/modules/UITelemetry.jsm");
|
|
Components.utils.import("resource:///modules/BrowserUITelemetry.jsm");
|
|
|
|
add_task(function* setup_telemetry() {
|
|
UITelemetry._enabled = true;
|
|
|
|
registerCleanupFunction(function() {
|
|
Services.prefs.clearUserPref("browser.uitour.seenPageIDs");
|
|
resetSeenPageIDsLazyGetter();
|
|
UITelemetry._enabled = undefined;
|
|
BrowserUITelemetry.setBucket(null);
|
|
delete window.UITelemetry;
|
|
delete window.BrowserUITelemetry;
|
|
});
|
|
});
|
|
|
|
add_task(setup_UITourTest);
|
|
|
|
function resetSeenPageIDsLazyGetter() {
|
|
delete UITour.seenPageIDs;
|
|
// This should be kept in sync with how UITour.init() sets this.
|
|
Object.defineProperty(UITour, "seenPageIDs", {
|
|
get: UITour.restoreSeenPageIDs.bind(UITour),
|
|
configurable: true,
|
|
});
|
|
}
|
|
|
|
function checkExpectedSeenPageIDs(expected) {
|
|
is(UITour.seenPageIDs.size, expected.length, "Should be " + expected.length + " total seen page IDs");
|
|
|
|
for (let id of expected)
|
|
ok(UITour.seenPageIDs.has(id), "Should have seen '" + id + "' page ID");
|
|
|
|
let prefData = Services.prefs.getCharPref("browser.uitour.seenPageIDs");
|
|
prefData = new Map(JSON.parse(prefData));
|
|
|
|
is(prefData.size, expected.length, "Should be " + expected.length + " total seen page IDs persisted");
|
|
|
|
for (let id of expected)
|
|
ok(prefData.has(id), "Should have seen '" + id + "' page ID persisted");
|
|
}
|
|
|
|
|
|
add_UITour_task(function test_seenPageIDs_restore() {
|
|
info("Setting up seenPageIDs to be restored from pref");
|
|
let data = JSON.stringify([
|
|
["savedID1", { lastSeen: Date.now() }],
|
|
["savedID2", { lastSeen: Date.now() }],
|
|
// 9 weeks ago, should auto expire.
|
|
["savedID3", { lastSeen: Date.now() - 9 * 7 * 24 * 60 * 60 * 1000 }],
|
|
]);
|
|
Services.prefs.setCharPref("browser.uitour.seenPageIDs",
|
|
data);
|
|
|
|
resetSeenPageIDsLazyGetter();
|
|
checkExpectedSeenPageIDs(["savedID1", "savedID2"]);
|
|
});
|
|
|
|
add_UITour_task(function* test_seenPageIDs_set_1() {
|
|
yield gContentAPI.registerPageID("testpage1");
|
|
|
|
yield waitForConditionPromise(() => UITour.seenPageIDs.size == 3, "Waiting for page to be registered.");
|
|
|
|
checkExpectedSeenPageIDs(["savedID1", "savedID2", "testpage1"]);
|
|
|
|
const PREFIX = BrowserUITelemetry.BUCKET_PREFIX;
|
|
const SEP = BrowserUITelemetry.BUCKET_SEPARATOR;
|
|
|
|
let bucket = PREFIX + "UITour" + SEP + "testpage1";
|
|
is(BrowserUITelemetry.currentBucket, bucket, "Bucket should have correct name");
|
|
|
|
gBrowser.selectedTab = gBrowser.addTab("about:blank");
|
|
bucket = PREFIX + "UITour" + SEP + "testpage1" + SEP + "inactive" + SEP + "1m";
|
|
is(BrowserUITelemetry.currentBucket, bucket,
|
|
"After switching tabs, bucket should be expiring");
|
|
|
|
gBrowser.removeTab(gBrowser.selectedTab);
|
|
gBrowser.selectedTab = gTestTab;
|
|
BrowserUITelemetry.setBucket(null);
|
|
});
|
|
|
|
add_UITour_task(function* test_seenPageIDs_set_2() {
|
|
yield gContentAPI.registerPageID("testpage2");
|
|
|
|
yield waitForConditionPromise(() => UITour.seenPageIDs.size == 4, "Waiting for page to be registered.");
|
|
|
|
checkExpectedSeenPageIDs(["savedID1", "savedID2", "testpage1", "testpage2"]);
|
|
|
|
const PREFIX = BrowserUITelemetry.BUCKET_PREFIX;
|
|
const SEP = BrowserUITelemetry.BUCKET_SEPARATOR;
|
|
|
|
let bucket = PREFIX + "UITour" + SEP + "testpage2";
|
|
is(BrowserUITelemetry.currentBucket, bucket, "Bucket should have correct name");
|
|
|
|
gBrowser.removeTab(gTestTab);
|
|
gTestTab = null;
|
|
bucket = PREFIX + "UITour" + SEP + "testpage2" + SEP + "closed" + SEP + "1m";
|
|
is(BrowserUITelemetry.currentBucket, bucket,
|
|
"After closing tab, bucket should be expiring");
|
|
|
|
BrowserUITelemetry.setBucket(null);
|
|
});
|