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 });