browser/modules/test/browser_UITour_registerPageID.js

Fri, 16 Jan 2015 18:13:44 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2015 18:13:44 +0100
branch
TOR_BUG_9701
changeset 14
925c144e1f1f
permissions
-rw-r--r--

Integrate suggestion from review to improve consistency with existing code.

     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 ];

mercurial