tor-browser

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

test_forms_tracker.js (2575B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 const { FormEngine } = ChromeUtils.importESModule(
      5  "resource://services-sync/engines/forms.sys.mjs"
      6 );
      7 const { Service } = ChromeUtils.importESModule(
      8  "resource://services-sync/service.sys.mjs"
      9 );
     10 
     11 add_task(async function run_test() {
     12  _("Verify we've got an empty tracker to work with.");
     13  let engine = new FormEngine(Service);
     14  await engine.initialize();
     15  let tracker = engine._tracker;
     16 
     17  let changes = await tracker.getChangedIDs();
     18  do_check_empty(changes);
     19  Log.repository.rootLogger.addAppender(new Log.DumpAppender());
     20 
     21  async function addEntry(name, value) {
     22    await engine._store.create({ name, value });
     23    await engine._tracker.asyncObserver.promiseObserversComplete();
     24  }
     25  async function removeEntry(name, value) {
     26    let guid = await engine._findDupe({ name, value });
     27    await engine._store.remove({ id: guid });
     28    await engine._tracker.asyncObserver.promiseObserversComplete();
     29  }
     30 
     31  try {
     32    _("Create an entry. Won't show because we haven't started tracking yet");
     33    await addEntry("name", "John Doe");
     34    changes = await tracker.getChangedIDs();
     35    do_check_empty(changes);
     36 
     37    _("Tell the tracker to start tracking changes.");
     38    tracker.start();
     39    await removeEntry("name", "John Doe");
     40    await addEntry("email", "john@doe.com");
     41    changes = await tracker.getChangedIDs();
     42    do_check_attribute_count(changes, 2);
     43 
     44    _("Notifying twice won't do any harm.");
     45    tracker.start();
     46    await addEntry("address", "Memory Lane");
     47    changes = await tracker.getChangedIDs();
     48    do_check_attribute_count(changes, 3);
     49 
     50    _("Check that ignoreAll is respected");
     51    await tracker.clearChangedIDs();
     52    tracker.score = 0;
     53    tracker.ignoreAll = true;
     54    await addEntry("username", "johndoe123");
     55    await addEntry("favoritecolor", "green");
     56    await removeEntry("name", "John Doe");
     57    tracker.ignoreAll = false;
     58    changes = await tracker.getChangedIDs();
     59    do_check_empty(changes);
     60    equal(tracker.score, 0);
     61 
     62    _("Let's stop tracking again.");
     63    await tracker.clearChangedIDs();
     64    await tracker.stop();
     65    await removeEntry("address", "Memory Lane");
     66    changes = await tracker.getChangedIDs();
     67    do_check_empty(changes);
     68 
     69    _("Notifying twice won't do any harm.");
     70    await tracker.stop();
     71    await removeEntry("email", "john@doe.com");
     72    changes = await tracker.getChangedIDs();
     73    do_check_empty(changes);
     74  } finally {
     75    _("Clean up.");
     76    await engine._store.wipe();
     77  }
     78 });