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 --- .../sessionstore/test/browser_formdata_cc.js | 107 +++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 browser/components/sessionstore/test/browser_formdata_cc.js (limited to 'browser/components/sessionstore/test/browser_formdata_cc.js') diff --git a/browser/components/sessionstore/test/browser_formdata_cc.js b/browser/components/sessionstore/test/browser_formdata_cc.js new file mode 100644 index 0000000000..7f0dac8115 --- /dev/null +++ b/browser/components/sessionstore/test/browser_formdata_cc.js @@ -0,0 +1,107 @@ +"use strict"; + +const URL = + "http://mochi.test:8888/browser/browser/components/" + + "sessionstore/test/browser_formdata_sample.html"; + +requestLongerTimeout(3); + +/** + * This test ensures that credit card numbers in form data will not be + * collected, while numbers that don't look like credit card numbers will + * still be collected. + */ +add_task(async function () { + const validCCNumbers = [ + // 15 digits + "930771457288760", + "474915027480942", + "924894781317325", + "714816113937185", + "790466087343106", + "474320195408363", + "219211148122351", + "633038472250799", + "354236732906484", + "095347810189325", + // 16 digits + "3091269135815020", + "5471839082338112", + "0580828863575793", + "5015290610002932", + "9465714503078607", + "4302068493801686", + "2721398408985465", + "6160334316984331", + "8643619970075142", + "0218246069710785", + ]; + + const invalidCCNumbers = [ + // 15 digits + "526931005800649", + "724952425140686", + "379761391174135", + "030551436468583", + "947377014076746", + "254848023655752", + "226871580283345", + "708025346034339", + "917585839076788", + "918632588027666", + // 16 digits + "9946177098017064", + "4081194386488872", + "3095975979578034", + "3662215692222536", + "6723210018630429", + "4411962856225025", + "8276996369036686", + "4449796938248871", + "3350852696538147", + "5011802870046957", + ]; + + // Creates a tab, loads a page with a form field, sets the value of the + // field, and then removes the tab to trigger data collection. + async function createAndRemoveTab(formValue) { + // Create a new tab. + let tab = BrowserTestUtils.addTab(gBrowser, URL); + let browser = tab.linkedBrowser; + await promiseBrowserLoaded(browser); + + // Set form value. + await setInputValue(browser, formValue); + + // Remove the tab. + await promiseRemoveTabAndSessionState(tab); + } + + // Test that valid CC numbers are not collected. + for (let number of validCCNumbers) { + await createAndRemoveTab(number); + let [{ state }] = ss.getClosedTabDataForWindow(window); + ok(!("formdata" in state), "valid CC numbers are not collected"); + } + + // Test that non-CC numbers are still collected. + for (let number of invalidCCNumbers) { + await createAndRemoveTab(number); + let [ + { + state: { formdata }, + }, + ] = ss.getClosedTabDataForWindow(window); + is( + formdata.id.txt, + number, + "numbers that are not valid CC numbers are still collected" + ); + } +}); + +function setInputValue(browser, formValue) { + return SpecialPowers.spawn(browser, [formValue], async function (newValue) { + content.document.getElementById("txt").setUserInput(newValue); + }); +} -- cgit v1.2.3