tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_prefs_tracker.js (3651B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 const { Service } = ChromeUtils.importESModule(
      5  "resource://services-sync/service.sys.mjs"
      6 );
      7 
      8 let prefsWithUserValue = new Set();
      9 add_setup(function record_prefsWithUserValue() {
     10  for (const pref of Services.prefs.getChildList("")) {
     11    if (Services.prefs.prefHasUserValue(pref)) {
     12      prefsWithUserValue.add(pref);
     13    }
     14  }
     15 });
     16 
     17 function clearValues() {
     18  for (const pref of Services.prefs.getChildList("")) {
     19    if (!prefsWithUserValue.has(pref)) {
     20      Services.prefs.clearUserPref(pref);
     21    }
     22  }
     23 }
     24 
     25 add_task(async function run_test() {
     26  let engine = Service.engineManager.get("prefs");
     27  let tracker = engine._tracker;
     28 
     29  try {
     30    _("tracker.modified corresponds to preference.");
     31    // Assert preference is not defined.
     32    Assert.equal(
     33      Svc.PrefBranch.getPrefType("engine.prefs.modified"),
     34      Ci.nsIPrefBranch.PREF_INVALID
     35    );
     36    Assert.ok(!tracker.modified);
     37 
     38    tracker.modified = true;
     39    Assert.equal(Svc.PrefBranch.getBoolPref("engine.prefs.modified"), true);
     40    Assert.ok(tracker.modified);
     41 
     42    _("Engine's getChangedID() just returns the one GUID we have.");
     43    let changedIDs = await engine.getChangedIDs();
     44    let ids = Object.keys(changedIDs);
     45    Assert.equal(ids.length, 1);
     46    Assert.equal(ids[0], CommonUtils.encodeBase64URL(Services.appinfo.ID));
     47 
     48    Svc.PrefBranch.setBoolPref("engine.prefs.modified", false);
     49    Assert.ok(!tracker.modified);
     50 
     51    _("No modified state, so no changed IDs.");
     52    do_check_empty(await engine.getChangedIDs());
     53 
     54    _("Initial score is 0");
     55    Assert.equal(tracker.score, 0);
     56 
     57    _("Test fixtures.");
     58    Svc.PrefBranch.setBoolPref("prefs.sync.testing.int", true);
     59 
     60    _(
     61      "Test fixtures haven't upped the tracker score yet because it hasn't started tracking yet."
     62    );
     63    Assert.equal(tracker.score, 0);
     64 
     65    _("Tell the tracker to start tracking changes.");
     66    tracker.start();
     67    Services.prefs.setIntPref("testing.int", 23);
     68    await tracker.asyncObserver.promiseObserversComplete();
     69    Assert.equal(tracker.score, SCORE_INCREMENT_XLARGE);
     70    Assert.equal(tracker.modified, true);
     71 
     72    _("Clearing changed IDs reset modified status.");
     73    await tracker.clearChangedIDs();
     74    Assert.equal(tracker.modified, false);
     75 
     76    _("Resetting a pref ups the score, too.");
     77    Services.prefs.clearUserPref("testing.int");
     78    await tracker.asyncObserver.promiseObserversComplete();
     79    Assert.equal(tracker.score, SCORE_INCREMENT_XLARGE * 2);
     80    Assert.equal(tracker.modified, true);
     81    await tracker.clearChangedIDs();
     82 
     83    _("So does changing a pref sync pref.");
     84    Svc.PrefBranch.setBoolPref("prefs.sync.testing.int", false);
     85    await tracker.asyncObserver.promiseObserversComplete();
     86    Assert.equal(tracker.score, SCORE_INCREMENT_XLARGE * 3);
     87    Assert.equal(tracker.modified, true);
     88    await tracker.clearChangedIDs();
     89 
     90    _(
     91      "Now that the pref sync pref has been flipped, changes to it won't be picked up."
     92    );
     93    Services.prefs.setIntPref("testing.int", 42);
     94    await tracker.asyncObserver.promiseObserversComplete();
     95    Assert.equal(tracker.score, SCORE_INCREMENT_XLARGE * 3);
     96    Assert.equal(tracker.modified, false);
     97    await tracker.clearChangedIDs();
     98 
     99    _("Changing some other random pref won't do anything.");
    100    Services.prefs.setStringPref("testing.other", "blergh");
    101    await tracker.asyncObserver.promiseObserversComplete();
    102    Assert.equal(tracker.score, SCORE_INCREMENT_XLARGE * 3);
    103    Assert.equal(tracker.modified, false);
    104  } finally {
    105    await tracker.stop();
    106    clearValues();
    107  }
    108 });