From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- .../sessionstore/test/browser_formdata_max_size.js | 131 +++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 browser/components/sessionstore/test/browser_formdata_max_size.js (limited to 'browser/components/sessionstore/test/browser_formdata_max_size.js') diff --git a/browser/components/sessionstore/test/browser_formdata_max_size.js b/browser/components/sessionstore/test/browser_formdata_max_size.js new file mode 100644 index 0000000000..00b49985e3 --- /dev/null +++ b/browser/components/sessionstore/test/browser_formdata_max_size.js @@ -0,0 +1,131 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const URL = + "http://mochi.test:8888/browser/browser/components/" + + "sessionstore/test/browser_formdata_sample.html"; + +const SHORT_VALUE = "abc"; +const LONG_VALUE = "abcdef"; + +add_task(async function test_form_limit() { + await SpecialPowers.pushPrefEnv({ + set: [ + // "browser.sessionstore.dom_form_limit" limits the length of values in + // forms to 5. Here we have that SHORT_VALUE is less than 5 and + // LONG_VALUE is greater than 5. + ["browser.sessionstore.dom_form_limit", 5], + ["browser.sessionstore.debug.no_auto_updates", true], + ], + }); + + await BrowserTestUtils.withNewTab({ gBrowser, url: URL }, async browser => { + await setPropertyOfFormField(browser, "#txt", "value", SHORT_VALUE); + await TabStateFlusher.flush(browser); + + let tab = gBrowser.getTabForBrowser(browser); + let state = JSON.parse(ss.getTabState(tab)); + is( + state.formdata.id.txt, + SHORT_VALUE, + "values shorter than browser.sessionstore.dom_form_limit is ok." + ); + + await setPropertyOfFormField(browser, "#txt", "value", LONG_VALUE); + await TabStateFlusher.flush(browser); + + state = JSON.parse(ss.getTabState(tab)); + ok( + !state?.formdata?.id?.txt, + "values shorter than browser.sessionstore.dom_form_limit isn't ok." + ); + }); + + await SpecialPowers.popPrefEnv(); +}); + +add_task(async function test_form_max_limit() { + await SpecialPowers.pushPrefEnv({ + set: [ + // "browser.sessionstore.dom_form_max_limit" limits the total length + // of values AND length id/xpath collected from a form. Here we have + // that SHORT_VALUE + 'txt' is less than 7 and LONG_VALUE + 'txt' is + // greater than 7. + ["browser.sessionstore.dom_form_max_limit", 7], + ["browser.sessionstore.debug.no_auto_updates", true], + ], + }); + + await BrowserTestUtils.withNewTab({ gBrowser, url: URL }, async browser => { + await setPropertyOfFormField(browser, "#txt", "value", SHORT_VALUE); + await TabStateFlusher.flush(browser); + + let tab = gBrowser.getTabForBrowser(browser); + let state = JSON.parse(ss.getTabState(tab)); + is( + state.formdata.id.txt, + SHORT_VALUE, + "total length shorter than browser.sessionstore.dom_form_max_limit is ok." + ); + + await setPropertyOfFormField(browser, "#txt", "value", LONG_VALUE); + await TabStateFlusher.flush(browser); + + state = JSON.parse(ss.getTabState(tab)); + is( + state.formdata.id.txt, + SHORT_VALUE, + "total length shorter than browser.sessionstore.dom_form_max_limit isn't ok." + ); + }); + + await SpecialPowers.popPrefEnv(); +}); + +add_task(async function test_form_max_limit_many_fields() { + await SpecialPowers.pushPrefEnv({ + set: [ + // "browser.sessionstore.dom_form_max_limit" limits the total length + // of values AND length id/xpath collected from a form. Here we have + // that SHORT_VALUE * 2 + 'text' + 'txt' is less than 15 and LONG_VALUE + // + SHORT_VALUE + 'text' + 'txt' is greater than 15. + ["browser.sessionstore.dom_form_max_limit", 15], + ["browser.sessionstore.debug.no_auto_updates", true], + ], + }); + + await BrowserTestUtils.withNewTab({ gBrowser, url: URL }, async browser => { + await SpecialPowers.spawn(browser, [], () => { + let element = content.document.createElement("input"); + element.id = "text"; + element.type = "text"; + content.document.body.appendChild(element); + }); + + await setPropertyOfFormField(browser, "#txt", "value", SHORT_VALUE); + await setPropertyOfFormField(browser, "#text", "value", SHORT_VALUE); + await TabStateFlusher.flush(browser); + + let tab = gBrowser.getTabForBrowser(browser); + let state = JSON.parse(ss.getTabState(tab)); + is( + state.formdata.id.txt, + SHORT_VALUE, + "total length shorter than browser.sessionstore.dom_form_max_limit is ok." + ); + + await setPropertyOfFormField(browser, "#txt", "value", LONG_VALUE); + await TabStateFlusher.flush(browser); + + state = JSON.parse(ss.getTabState(tab)); + is( + state.formdata.id.txt, + SHORT_VALUE, + "total length shorter than browser.sessionstore.dom_form_max_limit isn't ok." + ); + }); + + await SpecialPowers.popPrefEnv(); +}); -- cgit v1.2.3