From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../address/browser_address_doorhanger_display.js | 240 +++++++++++++++++++++ 1 file changed, 240 insertions(+) create mode 100644 browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_display.js (limited to 'browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_display.js') diff --git a/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_display.js b/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_display.js new file mode 100644 index 0000000000..970051667a --- /dev/null +++ b/browser/extensions/formautofill/test/browser/address/browser_address_doorhanger_display.js @@ -0,0 +1,240 @@ +"use strict"; + +async function expectSavedAddresses(expectedCount) { + const addresses = await getAddresses(); + is( + addresses.length, + expectedCount, + `${addresses.length} address in the storage` + ); + return addresses; +} + +add_setup(async function () { + await SpecialPowers.pushPrefEnv({ + set: [["extensions.formautofill.addresses.capture.v2.enabled", true]], + }); +}); + +add_task(async function test_save_doorhanger_shown_no_profile() { + await expectSavedAddresses(0); + + await BrowserTestUtils.withNewTab( + { gBrowser, url: ADDRESS_FORM_URL }, + async function (browser) { + let onPopupShown = waitForPopupShown(); + + await focusUpdateSubmitForm(browser, { + focusSelector: "#given-name", + newValues: { + "#given-name": "Test User", + "#organization": "Sesame Street", + "#street-address": "123 Sesame Street", + "#tel": "1-345-345-3456", + }, + }); + + await onPopupShown; + await clickDoorhangerButton(MAIN_BUTTON, 0); + } + ); + + await expectSavedAddresses(1); + await removeAllRecords(); +}); + +add_task(async function test_save_doorhanger_shown_different_address() { + await setStorage(TEST_ADDRESS_1); + await expectSavedAddresses(1); + + await BrowserTestUtils.withNewTab( + { gBrowser, url: ADDRESS_FORM_URL }, + async function (browser) { + let onPopupShown = waitForPopupShown(); + + await focusUpdateSubmitForm(browser, { + focusSelector: "#given-name", + newValues: { + "#given-name": TEST_ADDRESS_2["give-name"], + "#street-address": TEST_ADDRESS_2["street-address"], + "#country": TEST_ADDRESS_2.country, + }, + }); + + await onPopupShown; + await clickDoorhangerButton(MAIN_BUTTON, 0); + } + ); + + await expectSavedAddresses(2); + await removeAllRecords(); +}); + +add_task( + async function test_update_doorhanger_shown_change_non_mergeable_given_name() { + await setStorage(TEST_ADDRESS_1); + await expectSavedAddresses(1); + + await BrowserTestUtils.withNewTab( + { gBrowser, url: ADDRESS_FORM_URL }, + async function (browser) { + let onPopupShown = waitForPopupShown(); + await focusUpdateSubmitForm(browser, { + focusSelector: "#given-name", + newValues: { + "#given-name": "Cena", + "#street-address": TEST_ADDRESS_1["street-address"], + "#country": TEST_ADDRESS_1.country, + "#email": TEST_ADDRESS_1.email, + }, + }); + + await onPopupShown; + await clickDoorhangerButton(MAIN_BUTTON, 0); + } + ); + + await expectSavedAddresses(2); + await removeAllRecords(); + } +); + +add_task(async function test_update_doorhanger_shown_add_email_field() { + // TEST_ADDRESS_2 doesn't contain email field + await setStorage(TEST_ADDRESS_2); + await expectSavedAddresses(1); + + await BrowserTestUtils.withNewTab( + { gBrowser, url: ADDRESS_FORM_URL }, + async function (browser) { + let onPopupShown = waitForPopupShown(); + await focusUpdateSubmitForm(browser, { + focusSelector: "#given-name", + newValues: { + "#given-name": TEST_ADDRESS_2["given-name"], + "#street-address": TEST_ADDRESS_2["street-address"], + "#country": TEST_ADDRESS_2.country, + "#email": "test@mozilla.org", + }, + }); + + await onPopupShown; + await clickDoorhangerButton(MAIN_BUTTON, 0); + } + ); + + const addresses = await expectSavedAddresses(1); + is(addresses[0].email, "test@mozilla.org", "Email field is saved"); + + await removeAllRecords(); +}); + +add_task(async function test_doorhanger_not_shown_when_autofill_untouched() { + await setStorage(TEST_ADDRESS_2); + await expectSavedAddresses(1); + + let onUsed = waitForStorageChangedEvents("notifyUsed"); + await BrowserTestUtils.withNewTab( + { gBrowser, url: ADDRESS_FORM_URL }, + async function (browser) { + await sleep(1000); + await openPopupOn(browser, "form #given-name"); + await sleep(1000); + await BrowserTestUtils.synthesizeKey("VK_DOWN", {}, browser); + await sleep(1000); + await BrowserTestUtils.synthesizeKey("VK_RETURN", {}, browser); + await waitForAutofill( + browser, + "#given-name", + TEST_ADDRESS_2["given-name"] + ); + + await SpecialPowers.spawn(browser, [], async function () { + let form = content.document.getElementById("form"); + form.querySelector("input[type=submit]").click(); + }); + + await sleep(1000); + is(PopupNotifications.panel.state, "closed", "Doorhanger is hidden"); + } + ); + await onUsed; + + const addresses = await expectSavedAddresses(1); + is(addresses[0].timesUsed, 1, "timesUsed field set to 1"); + await removeAllRecords(); +}); + +add_task(async function test_doorhanger_not_shown_when_fill_duplicate() { + await setStorage(TEST_ADDRESS_4); + await expectSavedAddresses(1); + + let onUsed = waitForStorageChangedEvents("notifyUsed"); + await BrowserTestUtils.withNewTab( + { gBrowser, url: ADDRESS_FORM_URL }, + async function (browser) { + await focusUpdateSubmitForm(browser, { + focusSelector: "#given-name", + newValues: { + "#given-name": TEST_ADDRESS_4["given-name"], + "#family-name": TEST_ADDRESS_4["family-name"], + "#organization": TEST_ADDRESS_4.organization, + "#country": TEST_ADDRESS_4.country, + }, + }); + + await sleep(1000); + is(PopupNotifications.panel.state, "closed", "Doorhanger is hidden"); + } + ); + await onUsed; + + const addresses = await expectSavedAddresses(1); + is( + addresses[0]["given-name"], + TEST_ADDRESS_4["given-name"], + "Verify the name field" + ); + is(addresses[0].timesUsed, 1, "timesUsed field set to 1"); + await removeAllRecords(); +}); + +add_task( + async function test_doorhanger_not_shown_when_autofill_then_fill_everything_duplicate() { + await setStorage(TEST_ADDRESS_2, TEST_ADDRESS_3); + await expectSavedAddresses(2); + + let onUsed = waitForStorageChangedEvents("notifyUsed"); + await BrowserTestUtils.withNewTab( + { gBrowser, url: ADDRESS_FORM_URL }, + async function (browser) { + await openPopupOn(browser, "form #given-name"); + await BrowserTestUtils.synthesizeKey("VK_DOWN", {}, browser); + await BrowserTestUtils.synthesizeKey("VK_RETURN", {}, browser); + await waitForAutofill( + browser, + "#given-name", + TEST_ADDRESS_2["given-name"] + ); + + await focusUpdateSubmitForm(browser, { + focusSelector: "#given-name", + newValues: { + // Change number to the second credit card number + "#given-name": TEST_ADDRESS_3["given-name"], + "#street-address": TEST_ADDRESS_3["street-address"], + "#postal-code": TEST_ADDRESS_3["postal-code"], + "#country": "", + }, + }); + + await sleep(1000); + is(PopupNotifications.panel.state, "closed", "Doorhanger is hidden"); + } + ); + await onUsed; + + await expectSavedAddresses(2); + await removeAllRecords(); + } +); -- cgit v1.2.3