{ // We're going to register a mock file source // with region names based on en-US. This is // necessary for tests that expect to match // on region code display names. const fs = [
{
path: "toolkit/intl/regionNames.ftl",
source: `
region-name-us = United States
region-name-nz = New Zealand
region-name-au = Australia
region-name-ca = Canada
region-name-tw = Taiwan
`,
},
];
// Return the current date rounded in the manner that sync does. function getDateForSync() { return Math.round(Date.now() / 10) / 100;
}
// Returns a reference to a temporary file that is guaranteed not to exist and // is cleaned up later. See FileTestUtils.getTempFile for details. function getTempFile(leafName) { return FileTestUtils.getTempFile(leafName);
}
async function initProfileStorage(
fileName,
records,
collectionName = "addresses"
) {
let { FormAutofillStorage } = ChromeUtils.importESModule( "resource://autofill/FormAutofillStorage.sys.mjs"
);
let path = getTempFile(fileName).path;
let profileStorage = new FormAutofillStorage(path);
await profileStorage.initialize();
// AddonTestUtils inserts its own directory provider that manages TmpD. // It removes that directory at shutdown, which races with shutdown // handing in JSONFile/DeferredTask (which is used by FormAutofillStorage). // Avoid the race by explicitly finalizing any formautofill JSONFile // instances created manually by individual tests when the test finishes.
registerCleanupFunction(function finalizeAutofillStorage() { return profileStorage._finalize();
});
if (!records || !Array.isArray(records)) { return profileStorage;
}
let onChanged = TestUtils.topicObserved( "formautofill-storage-changed",
(subject, data) =>
data == "add" && subject.wrappedJSObject.collectionName == collectionName
); for (let record of records) { Assert.ok(await profileStorage[collectionName].add(record));
await onChanged;
}
await profileStorage._saveImmediately(); return profileStorage;
}
Assert.equal(
expeceted.autofill,
field.element.value,
`Autofilled value for element(id=${field.element.id}, field name=${field.fieldName}) should be equal`
);
});
});
}
// Enable SCOPE_APPLICATION for builtin testing. Default in tests is only SCOPE_PROFILE. const scopes = AddonManager.SCOPE_PROFILE | AddonManager.SCOPE_APPLICATION;
Services.prefs.setIntPref("extensions.enabledScopes", scopes);
// Clean up after every test.
registerCleanupFunction(function head_cleanup() {
Services.prefs.clearUserPref("extensions.experiments.enabled");
Services.prefs.clearUserPref( "extensions.formautofill.creditCards.supported"
);
Services.prefs.clearUserPref("extensions.formautofill.addresses.supported");
Services.prefs.clearUserPref("extensions.formautofill.creditCards.enabled");
Services.prefs.clearUserPref("dom.forms.autocomplete.formautofill");
Services.prefs.clearUserPref("extensions.formautofill.addresses.enabled");
Services.prefs.clearUserPref("extensions.formautofill.creditCards.enabled");
Services.prefs.clearUserPref("extensions.enabledScopes");
});
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.