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 --- .../browser_creditCard_doorhanger_iframe.js | 103 +++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 browser/extensions/formautofill/test/browser/creditCard/browser_creditCard_doorhanger_iframe.js (limited to 'browser/extensions/formautofill/test/browser/creditCard/browser_creditCard_doorhanger_iframe.js') diff --git a/browser/extensions/formautofill/test/browser/creditCard/browser_creditCard_doorhanger_iframe.js b/browser/extensions/formautofill/test/browser/creditCard/browser_creditCard_doorhanger_iframe.js new file mode 100644 index 0000000000..2781e5acf6 --- /dev/null +++ b/browser/extensions/formautofill/test/browser/creditCard/browser_creditCard_doorhanger_iframe.js @@ -0,0 +1,103 @@ +"use strict"; + +add_task(async function test_iframe_submit_untouched_creditCard_form() { + if (!OSKeyStoreTestUtils.canTestOSKeyStoreLogin()) { + todo( + OSKeyStoreTestUtils.canTestOSKeyStoreLogin(), + "Cannot test OS key store login on official builds." + ); + return; + } + + await setStorage(TEST_CREDIT_CARD_1); + let creditCards = await getCreditCards(); + is(creditCards.length, 1, "1 credit card in storage"); + + // This test triggers two form submission events so cc 'timesUsed' count is 2. + // The first submission is triggered by standard form submission, and the + // second is triggered by page hiding. + const EXPECTED_ON_USED_COUNT = 2; + let notifyUsedCounter = EXPECTED_ON_USED_COUNT; + let onUsed = TestUtils.topicObserved( + "formautofill-storage-changed", + (subject, data) => { + if (data == "notifyUsed") { + notifyUsedCounter--; + } + return notifyUsedCounter == 0; + } + ); + await BrowserTestUtils.withNewTab( + { gBrowser, url: CREDITCARD_FORM_IFRAME_URL }, + async function (browser) { + let osKeyStoreLoginShown = + OSKeyStoreTestUtils.waitForOSKeyStoreLogin(true); + let iframeBC = browser.browsingContext.children[0]; + await openPopupOnSubframe(browser, iframeBC, "form #cc-name"); + + EventUtils.synthesizeKey("VK_DOWN", {}); + EventUtils.synthesizeKey("VK_RETURN", {}); + await osKeyStoreLoginShown; + await waitForAutofill(iframeBC, "#cc-name", "John Doe"); + + await SpecialPowers.spawn(iframeBC, [], 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; + + creditCards = await getCreditCards(); + is(creditCards.length, 1, "Still 1 credit card"); + is( + creditCards[0].timesUsed, + EXPECTED_ON_USED_COUNT, + "timesUsed field set to 2" + ); + await removeAllRecords(); +}); + +add_task(async function test_iframe_unload_save_card() { + let onChanged = waitForStorageChangedEvents("add"); + await BrowserTestUtils.withNewTab( + { gBrowser, url: CREDITCARD_FORM_IFRAME_URL }, + async function (browser) { + let onPopupShown = waitForPopupShown(); + let iframeBC = browser.browsingContext.children[0]; + await focusUpdateSubmitForm( + iframeBC, + { + focusSelector: "#cc-name", + newValues: { + "#cc-name": "User 1", + "#cc-number": "4556194630960970", + "#cc-exp-month": "10", + "#cc-exp-year": "2024", + "#cc-type": "visa", + }, + }, + false + ); + + info("Removing iframe without submitting"); + await SpecialPowers.spawn(browser, [], async function () { + let frame = content.document.querySelector("iframe"); + frame.remove(); + }); + + await onPopupShown; + await clickDoorhangerButton(MAIN_BUTTON); + } + ); + await onChanged; + + let creditCards = await getCreditCards(); + is(creditCards.length, 1, "1 credit card in storage"); + is(creditCards[0]["cc-name"], "User 1", "Verify the name field"); + is(creditCards[0]["cc-type"], "visa", "Verify the cc-type field"); + await removeAllRecords(); +}); -- cgit v1.2.3