tor-browser

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

test_savedFieldNames.js (3328B)


      1 /*
      2 * Test for keeping the valid fields information in sharedData.
      3 */
      4 
      5 "use strict";
      6 
      7 let FormAutofillStatus;
      8 
      9 add_setup(async () => {
     10  ({ FormAutofillStatus } = ChromeUtils.importESModule(
     11    "resource://autofill/FormAutofillParent.sys.mjs"
     12  ));
     13 });
     14 
     15 add_task(async function test_profileSavedFieldNames_init() {
     16  FormAutofillStatus.init();
     17  sinon.stub(FormAutofillStatus, "updateSavedFieldNames");
     18 
     19  await FormAutofillStatus.formAutofillStorage.initialize();
     20  Assert.equal(FormAutofillStatus.updateSavedFieldNames.called, true);
     21 
     22  FormAutofillStatus.uninit();
     23 });
     24 
     25 add_task(async function test_profileSavedFieldNames_observe() {
     26  FormAutofillStatus.init();
     27 
     28  // profile changed => Need to trigger updateValidFields
     29  ["add", "update", "remove", "reconcile", "removeAll"].forEach(event => {
     30    FormAutofillStatus.observe(null, "formautofill-storage-changed", event);
     31    Assert.equal(FormAutofillStatus.updateSavedFieldNames.called, true);
     32  });
     33 
     34  // profile metadata updated => no need to trigger updateValidFields
     35  FormAutofillStatus.updateSavedFieldNames.resetHistory();
     36  FormAutofillStatus.observe(
     37    null,
     38    "formautofill-storage-changed",
     39    "notifyUsed"
     40  );
     41  Assert.equal(FormAutofillStatus.updateSavedFieldNames.called, false);
     42  FormAutofillStatus.updateSavedFieldNames.restore();
     43 });
     44 
     45 add_task(async function test_profileSavedFieldNames_update() {
     46  registerCleanupFunction(function cleanup() {
     47    Services.prefs.clearUserPref("extensions.formautofill.addresses.enabled");
     48  });
     49 
     50  Object.defineProperty(
     51    FormAutofillStatus.formAutofillStorage.addresses,
     52    "_data",
     53    { writable: true }
     54  );
     55 
     56  FormAutofillStatus.formAutofillStorage.addresses._data = [];
     57 
     58  // The set is empty if there's no profile in the store.
     59  await FormAutofillStatus.updateSavedFieldNames();
     60  Assert.equal(
     61    Services.ppmm.sharedData.get("FormAutofill:savedFieldNames").size,
     62    0
     63  );
     64 
     65  // 2 profiles with 4 valid fields.
     66  FormAutofillStatus.formAutofillStorage.addresses._data = [
     67    {
     68      guid: "test-guid-1",
     69      organization: "Sesame Street",
     70      "street-address": "123 Sesame Street.",
     71      tel: "1-345-345-3456",
     72      email: "",
     73      timeCreated: 0,
     74      timeLastUsed: 0,
     75      timeLastModified: 0,
     76      timesUsed: 0,
     77    },
     78    {
     79      guid: "test-guid-2",
     80      organization: "Mozilla",
     81      "street-address": "331 E. Evelyn Avenue",
     82      tel: "1-650-903-0800",
     83      country: "US",
     84      timeCreated: 0,
     85      timeLastUsed: 0,
     86      timeLastModified: 0,
     87      timesUsed: 0,
     88    },
     89  ];
     90 
     91  await FormAutofillStatus.updateSavedFieldNames();
     92 
     93  let autofillSavedFieldNames = Services.ppmm.sharedData.get(
     94    "FormAutofill:savedFieldNames"
     95  );
     96  Assert.equal(autofillSavedFieldNames.size, 4);
     97  Assert.equal(autofillSavedFieldNames.has("organization"), true);
     98  Assert.equal(autofillSavedFieldNames.has("street-address"), true);
     99  Assert.equal(autofillSavedFieldNames.has("tel"), true);
    100  Assert.equal(autofillSavedFieldNames.has("email"), false);
    101  Assert.equal(autofillSavedFieldNames.has("guid"), false);
    102  Assert.equal(autofillSavedFieldNames.has("timeCreated"), false);
    103  Assert.equal(autofillSavedFieldNames.has("timeLastUsed"), false);
    104  Assert.equal(autofillSavedFieldNames.has("timeLastModified"), false);
    105  Assert.equal(autofillSavedFieldNames.has("timesUsed"), false);
    106 });