summaryrefslogtreecommitdiffstats
path: root/browser/extensions/formautofill/test/browser/address
diff options
context:
space:
mode:
Diffstat (limited to 'browser/extensions/formautofill/test/browser/address')
-rw-r--r--browser/extensions/formautofill/test/browser/address/browser.toml2
-rw-r--r--browser/extensions/formautofill/test/browser/address/browser_address_capture_form_removal.js2
-rw-r--r--browser/extensions/formautofill/test/browser/address/browser_address_capture_trimmed_data.js100
-rw-r--r--browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_not_shown.js2
-rw-r--r--browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_state.js103
-rw-r--r--browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_unsupported_region.js4
-rw-r--r--browser/extensions/formautofill/test/browser/address/browser_address_telemetry.js2
7 files changed, 209 insertions, 6 deletions
diff --git a/browser/extensions/formautofill/test/browser/address/browser.toml b/browser/extensions/formautofill/test/browser/address/browser.toml
index bff24a88b0..8b7f1ec760 100644
--- a/browser/extensions/formautofill/test/browser/address/browser.toml
+++ b/browser/extensions/formautofill/test/browser/address/browser.toml
@@ -18,6 +18,8 @@ support-files = [
["browser_address_capture_page_navigation.js"]
+["browser_address_capture_trimmed_data.js"]
+
["browser_address_doorhanger_confirmation_popup.js"]
["browser_address_doorhanger_display.js"]
diff --git a/browser/extensions/formautofill/test/browser/address/browser_address_capture_form_removal.js b/browser/extensions/formautofill/test/browser/address/browser_address_capture_form_removal.js
index f94fc8241f..fed89d4599 100644
--- a/browser/extensions/formautofill/test/browser/address/browser_address_capture_form_removal.js
+++ b/browser/extensions/formautofill/test/browser/address/browser_address_capture_form_removal.js
@@ -118,7 +118,7 @@ add_task(async function test_address_not_captured_without_prior_fetch() {
});
info("Ensure that address doorhanger is not shown");
- await ensureNoDoorhanger(browser);
+ await ensureNoDoorhanger();
}
);
});
diff --git a/browser/extensions/formautofill/test/browser/address/browser_address_capture_trimmed_data.js b/browser/extensions/formautofill/test/browser/address/browser_address_capture_trimmed_data.js
new file mode 100644
index 0000000000..c0856dfb8d
--- /dev/null
+++ b/browser/extensions/formautofill/test/browser/address/browser_address_capture_trimmed_data.js
@@ -0,0 +1,100 @@
+"use strict";
+
+const DEFAULT_TEST_DOC = `
+<form id="form">
+ <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="email" autocomplete="email">
+<input id="tel" autocomplete="tel">
+<input type="submit"/>
+</form>`;
+
+const TESTCASES = [
+ {
+ description: "Save address with trimmed address data",
+ document: DEFAULT_TEST_DOC,
+ targetElementId: "street-address",
+ formValue: {
+ "#street-address": "331 E. Evelyn Avenue ",
+ "#country": "US",
+ "#email": " ",
+ "#tel": "1-650-903-0800",
+ },
+ expected: [
+ {
+ "street-address": "331 E. Evelyn Avenue",
+ country: "US",
+ email: "",
+ tel: "+16509030800",
+ },
+ ],
+ },
+];
+
+async function expectSavedAddresses(expectedAddresses) {
+ const addresses = await getAddresses();
+ is(
+ addresses.length,
+ expectedAddresses.length,
+ `${addresses.length} address in the storage`
+ );
+
+ for (let i = 0; i < expectedAddresses.length; i++) {
+ for (const [key, value] of Object.entries(expectedAddresses[i])) {
+ is(addresses[i][key] ?? "", value, `field ${key} should be equal`);
+ }
+ }
+ return addresses;
+}
+
+add_setup(async function () {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["extensions.formautofill.addresses.enabled", true],
+ ["extensions.formautofill.addresses.supported", "on"],
+ ["extensions.formautofill.addresses.capture.enabled", true],
+ ],
+ });
+});
+
+add_task(async function test_address_capture_trimmed_data() {
+ for (const TEST of TESTCASES) {
+ info(`Test ${TEST.description}`);
+
+ const onChanged = waitForStorageChangedEvents("add");
+ await BrowserTestUtils.withNewTab(EMPTY_URL, async function (browser) {
+ await SpecialPowers.spawn(browser, [TEST.document], doc => {
+ content.document.body.innerHTML = doc;
+ });
+
+ await SimpleTest.promiseFocus(browser);
+
+ const onPopupShown = waitForPopupShown();
+ await focusUpdateSubmitForm(browser, {
+ focusSelector: `#${TEST.targetElementId}`,
+ newValues: TEST.formValue,
+ });
+
+ await onPopupShown;
+ await clickDoorhangerButton(MAIN_BUTTON, 0);
+ });
+ await onChanged;
+
+ await expectSavedAddresses(TEST.expected);
+ await removeAllRecords();
+ }
+});
diff --git a/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_not_shown.js b/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_not_shown.js
index b1b8a6b9d2..84508189bd 100644
--- a/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_not_shown.js
+++ b/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_not_shown.js
@@ -87,7 +87,7 @@ add_task(async function test_save_doorhanger_not_shown() {
newValues: TEST.formValue,
});
- await ensureNoDoorhanger(browser);
+ await ensureNoDoorhanger();
});
if (TEST.prefs) {
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();
+ }
+});
diff --git a/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_unsupported_region.js b/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_unsupported_region.js
index fc3d1c7cf4..243f857fbb 100644
--- a/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_unsupported_region.js
+++ b/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_unsupported_region.js
@@ -53,7 +53,7 @@ add_task(async function test_save_doorhanger_unsupported_region_from_record() {
},
});
- await ensureNoDoorhanger(browser);
+ await ensureNoDoorhanger();
}
);
});
@@ -79,7 +79,7 @@ add_task(async function test_save_doorhanger_unsupported_region_from_pref() {
},
});
- await ensureNoDoorhanger(browser);
+ await ensureNoDoorhanger();
}
);
diff --git a/browser/extensions/formautofill/test/browser/address/browser_address_telemetry.js b/browser/extensions/formautofill/test/browser/address/browser_address_telemetry.js
index acd7a7c364..b55abd6c72 100644
--- a/browser/extensions/formautofill/test/browser/address/browser_address_telemetry.js
+++ b/browser/extensions/formautofill/test/browser/address/browser_address_telemetry.js
@@ -7,7 +7,7 @@ const { TelemetryTestUtils } = ChromeUtils.importESModule(
);
const { AddressTelemetry } = ChromeUtils.importESModule(
- "resource://autofill/AutofillTelemetry.sys.mjs"
+ "resource://gre/modules/shared/AutofillTelemetry.sys.mjs"
);
// Telemetry definitions