106 lines
3.3 KiB
JavaScript
106 lines
3.3 KiB
JavaScript
/*
|
|
* Test for keeping the valid fields information in sharedData.
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
let FormAutofillStatus;
|
|
|
|
add_setup(async () => {
|
|
({ FormAutofillStatus } = ChromeUtils.importESModule(
|
|
"resource://autofill/FormAutofillParent.sys.mjs"
|
|
));
|
|
});
|
|
|
|
add_task(async function test_profileSavedFieldNames_init() {
|
|
FormAutofillStatus.init();
|
|
sinon.stub(FormAutofillStatus, "updateSavedFieldNames");
|
|
|
|
await FormAutofillStatus.formAutofillStorage.initialize();
|
|
Assert.equal(FormAutofillStatus.updateSavedFieldNames.called, true);
|
|
|
|
FormAutofillStatus.uninit();
|
|
});
|
|
|
|
add_task(async function test_profileSavedFieldNames_observe() {
|
|
FormAutofillStatus.init();
|
|
|
|
// profile changed => Need to trigger updateValidFields
|
|
["add", "update", "remove", "reconcile", "removeAll"].forEach(event => {
|
|
FormAutofillStatus.observe(null, "formautofill-storage-changed", event);
|
|
Assert.equal(FormAutofillStatus.updateSavedFieldNames.called, true);
|
|
});
|
|
|
|
// profile metadata updated => no need to trigger updateValidFields
|
|
FormAutofillStatus.updateSavedFieldNames.resetHistory();
|
|
FormAutofillStatus.observe(
|
|
null,
|
|
"formautofill-storage-changed",
|
|
"notifyUsed"
|
|
);
|
|
Assert.equal(FormAutofillStatus.updateSavedFieldNames.called, false);
|
|
FormAutofillStatus.updateSavedFieldNames.restore();
|
|
});
|
|
|
|
add_task(async function test_profileSavedFieldNames_update() {
|
|
registerCleanupFunction(function cleanup() {
|
|
Services.prefs.clearUserPref("extensions.formautofill.addresses.enabled");
|
|
});
|
|
|
|
Object.defineProperty(
|
|
FormAutofillStatus.formAutofillStorage.addresses,
|
|
"_data",
|
|
{ writable: true }
|
|
);
|
|
|
|
FormAutofillStatus.formAutofillStorage.addresses._data = [];
|
|
|
|
// The set is empty if there's no profile in the store.
|
|
await FormAutofillStatus.updateSavedFieldNames();
|
|
Assert.equal(
|
|
Services.ppmm.sharedData.get("FormAutofill:savedFieldNames").size,
|
|
0
|
|
);
|
|
|
|
// 2 profiles with 4 valid fields.
|
|
FormAutofillStatus.formAutofillStorage.addresses._data = [
|
|
{
|
|
guid: "test-guid-1",
|
|
organization: "Sesame Street",
|
|
"street-address": "123 Sesame Street.",
|
|
tel: "1-345-345-3456",
|
|
email: "",
|
|
timeCreated: 0,
|
|
timeLastUsed: 0,
|
|
timeLastModified: 0,
|
|
timesUsed: 0,
|
|
},
|
|
{
|
|
guid: "test-guid-2",
|
|
organization: "Mozilla",
|
|
"street-address": "331 E. Evelyn Avenue",
|
|
tel: "1-650-903-0800",
|
|
country: "US",
|
|
timeCreated: 0,
|
|
timeLastUsed: 0,
|
|
timeLastModified: 0,
|
|
timesUsed: 0,
|
|
},
|
|
];
|
|
|
|
await FormAutofillStatus.updateSavedFieldNames();
|
|
|
|
let autofillSavedFieldNames = Services.ppmm.sharedData.get(
|
|
"FormAutofill:savedFieldNames"
|
|
);
|
|
Assert.equal(autofillSavedFieldNames.size, 4);
|
|
Assert.equal(autofillSavedFieldNames.has("organization"), true);
|
|
Assert.equal(autofillSavedFieldNames.has("street-address"), true);
|
|
Assert.equal(autofillSavedFieldNames.has("tel"), true);
|
|
Assert.equal(autofillSavedFieldNames.has("email"), false);
|
|
Assert.equal(autofillSavedFieldNames.has("guid"), false);
|
|
Assert.equal(autofillSavedFieldNames.has("timeCreated"), false);
|
|
Assert.equal(autofillSavedFieldNames.has("timeLastUsed"), false);
|
|
Assert.equal(autofillSavedFieldNames.has("timeLastModified"), false);
|
|
Assert.equal(autofillSavedFieldNames.has("timesUsed"), false);
|
|
});
|