summaryrefslogtreecommitdiffstats
path: root/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js')
-rw-r--r--browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js103
1 files changed, 102 insertions, 1 deletions
diff --git a/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js b/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js
index a247341fef..f3b04d7f9c 100644
--- a/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js
+++ b/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js
@@ -1,4 +1,5 @@
"use strict";
+requestLongerTimeout(3);
async function expectSavedAddresses(expectedAddresses) {
const addresses = await getAddresses();
@@ -18,7 +19,11 @@ async function expectSavedAddresses(expectedAddresses) {
add_setup(async function () {
await SpecialPowers.pushPrefEnv({
- set: [["extensions.formautofill.addresses.capture.enabled", true]],
+ set: [
+ ["extensions.formautofill.addresses.enabled", true],
+ ["extensions.formautofill.addresses.supported", "on"],
+ ["extensions.formautofill.addresses.capture.enabled", true],
+ ],
});
});
@@ -102,6 +107,7 @@ add_task(async function test_save_doorhanger_state_valid() {
for (const TEST of TEST_CASES) {
await expectSavedAddresses([]);
+ const onChanged = waitForStorageChangedEvents("add");
await BrowserTestUtils.withNewTab(
{ gBrowser, url: ADDRESS_FORM_URL },
async function (browser) {
@@ -122,8 +128,103 @@ add_task(async function test_save_doorhanger_state_valid() {
await clickDoorhangerButton(MAIN_BUTTON, 0);
}
);
+ await onChanged;
await expectSavedAddresses([Object.assign(DEFAULT, TEST.expected)]);
await removeAllRecords();
}
});
+
+add_task(async function test_save_doorhanger_state_is_select() {
+ const DEFAULT_TEST_DOC = `
+ <form id="form">
+ <input id="name" autocomplete="name">
+ <input id="street-address" autocomplete="street-address">
+ <select id="address-level1" autocomplete="address-level1">
+ <option value=""></option>
+ <option value="AL">Alabama</option>
+ <option value="AK">Alaska</option>
+ <option value="AP">Armed Forces Pacific</option>
+
+ <option value="ca">california</option>
+ <option value="AR">US-Arkansas</option>
+ <option value="US-CA">California</option>
+ <option value="CA">California</option>
+ <option value="US-AZ">US_Arizona</option>
+ <option value="Ariz">Arizonac</option>
+ </select>
+ <input id="city" autocomplete="address-level2">
+ <input id="country" autocomplete="country">
+ <input id="submit" type="submit">
+ </form>`;
+
+ const TEST_CASES = [
+ {
+ description: "Save state with regular select option",
+ filled: { "address-level1": "CA" },
+ expected: { "address-level1": "CA" },
+ },
+ {
+ description: "Save state with lowercase value",
+ filled: { "address-level1": "ca" },
+ expected: { "address-level1": "CA" },
+ },
+ {
+ description: "Save state with a country code prefixed to the label",
+ filled: { "address-level1": "AR" },
+ expected: { "address-level1": "AR" },
+ },
+ {
+ description: "Save state with a country code prefixed to the value",
+ filled: { "address-level1": "US-CA" },
+ expected: { "address-level1": "CA" },
+ },
+ {
+ description:
+ "Save state with a country code prefixed to the value and label",
+ filled: { "address-level1": "US-AZ" },
+ expected: { "address-level1": "AZ" },
+ },
+ {
+ description: "Should not save when failed to abbreviate the value",
+ filled: { "address-level1": "Ariz" },
+ expected: { "address-level1": "" },
+ },
+ {
+ description: "Should not save select with multiple selections",
+ filled: { "address-level1": ["AL", "AK", "AP"] },
+ expected: { "address-level1": "" },
+ },
+ ];
+
+ for (const TEST of TEST_CASES) {
+ const onChanged = waitForStorageChangedEvents("add");
+ await BrowserTestUtils.withNewTab(EMPTY_URL, async function (browser) {
+ info(`Test ${TEST.description}`);
+
+ await SpecialPowers.spawn(browser, [DEFAULT_TEST_DOC], doc => {
+ content.document.body.innerHTML = doc;
+ });
+
+ await SimpleTest.promiseFocus(browser);
+
+ const onPopupShown = waitForPopupShown();
+ await focusUpdateSubmitForm(browser, {
+ focusSelector: "#name",
+ newValues: {
+ "#name": "John Doe",
+ "#street-address": "Main Street",
+ "#country": "US",
+ "#address-level1": TEST.filled["address-level1"],
+ },
+ });
+
+ await onPopupShown;
+ await clickDoorhangerButton(MAIN_BUTTON, 0);
+ });
+ await onChanged;
+
+ await expectSavedAddresses([TEST.expected]);
+ await removeAllRecords();
+ }
+});