Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
4 "use strict";
6 let gTestTab;
7 let gContentAPI;
8 let gContentWindow;
10 Components.utils.import("resource:///modules/UITour.jsm");
11 Components.utils.import("resource://gre/modules/UITelemetry.jsm");
12 Components.utils.import("resource:///modules/BrowserUITelemetry.jsm");
14 function test() {
15 UITelemetry._enabled = true;
17 registerCleanupFunction(function() {
18 Services.prefs.clearUserPref("browser.uitour.seenPageIDs");
19 resetSeenPageIDsLazyGetter();
20 UITelemetry._enabled = undefined;
21 BrowserUITelemetry.setBucket(null);
22 delete window.UITelemetry;
23 delete window.BrowserUITelemetry;
24 });
25 UITourTest();
26 }
28 function resetSeenPageIDsLazyGetter() {
29 delete UITour.seenPageIDs;
30 // This should be kept in sync with how UITour.init() sets this.
31 Object.defineProperty(UITour, "seenPageIDs", {
32 get: UITour.restoreSeenPageIDs.bind(UITour),
33 configurable: true,
34 });
35 }
37 function checkExpectedSeenPageIDs(expected) {
38 is(UITour.seenPageIDs.size, expected.length, "Should be " + expected.length + " total seen page IDs");
40 for (let id of expected)
41 ok(UITour.seenPageIDs.has(id), "Should have seen '" + id + "' page ID");
43 let prefData = Services.prefs.getCharPref("browser.uitour.seenPageIDs");
44 prefData = new Map(JSON.parse(prefData));
46 is(prefData.size, expected.length, "Should be " + expected.length + " total seen page IDs persisted");
48 for (let id of expected)
49 ok(prefData.has(id), "Should have seen '" + id + "' page ID persisted");
50 }
52 let tests = [
53 function test_seenPageIDs_restore(done) {
54 info("Setting up seenPageIDs to be restored from pref");
55 let data = JSON.stringify([
56 ["savedID1", { lastSeen: Date.now() }],
57 ["savedID2", { lastSeen: Date.now() }],
58 // 9 weeks ago, should auto expire.
59 ["savedID3", { lastSeen: Date.now() - 9 * 7 * 24 * 60 * 60 * 1000 }],
60 ]);
61 Services.prefs.setCharPref("browser.uitour.seenPageIDs",
62 data);
64 resetSeenPageIDsLazyGetter();
65 checkExpectedSeenPageIDs(["savedID1", "savedID2"]);
67 done();
68 },
69 function test_seenPageIDs_set_1(done) {
70 gContentAPI.registerPageID("testpage1");
72 checkExpectedSeenPageIDs(["savedID1", "savedID2", "testpage1"]);
74 const PREFIX = BrowserUITelemetry.BUCKET_PREFIX;
75 const SEP = BrowserUITelemetry.BUCKET_SEPARATOR;
77 let bucket = PREFIX + "UITour" + SEP + "testpage1";
78 is(BrowserUITelemetry.currentBucket, bucket, "Bucket should have correct name");
80 gBrowser.selectedTab = gBrowser.addTab("about:blank");
81 bucket = PREFIX + "UITour" + SEP + "testpage1" + SEP + "inactive" + SEP + "1m";
82 is(BrowserUITelemetry.currentBucket, bucket,
83 "After switching tabs, bucket should be expiring");
85 gBrowser.removeTab(gBrowser.selectedTab);
86 gBrowser.selectedTab = gTestTab;
87 BrowserUITelemetry.setBucket(null);
88 done();
89 },
90 function test_seenPageIDs_set_2(done) {
91 gContentAPI.registerPageID("testpage2");
93 checkExpectedSeenPageIDs(["savedID1", "savedID2", "testpage1", "testpage2"]);
95 const PREFIX = BrowserUITelemetry.BUCKET_PREFIX;
96 const SEP = BrowserUITelemetry.BUCKET_SEPARATOR;
98 let bucket = PREFIX + "UITour" + SEP + "testpage2";
99 is(BrowserUITelemetry.currentBucket, bucket, "Bucket should have correct name");
101 gBrowser.removeTab(gTestTab);
102 gTestTab = null;
103 bucket = PREFIX + "UITour" + SEP + "testpage2" + SEP + "closed" + SEP + "1m";
104 is(BrowserUITelemetry.currentBucket, bucket,
105 "After closing tab, bucket should be expiring");
107 BrowserUITelemetry.setBucket(null);
108 done();
109 },
110 ];