summaryrefslogtreecommitdiffstats
path: root/browser/components/sessionstore/test/browser_739805.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
commit6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /browser/components/sessionstore/test/browser_739805.js
parentInitial commit. (diff)
downloadthunderbird-upstream.tar.xz
thunderbird-upstream.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'browser/components/sessionstore/test/browser_739805.js')
-rw-r--r--browser/components/sessionstore/test/browser_739805.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/browser/components/sessionstore/test/browser_739805.js b/browser/components/sessionstore/test/browser_739805.js
new file mode 100644
index 0000000000..94be3f3d35
--- /dev/null
+++ b/browser/components/sessionstore/test/browser_739805.js
@@ -0,0 +1,49 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+var url = "data:text/html;charset=utf-8,<input%20id='foo'>";
+var tabState = {
+ entries: [{ url, triggeringPrincipal_base64 }],
+ formdata: { id: { foo: "bar" }, url },
+};
+
+function test() {
+ waitForExplicitFinish();
+ Services.prefs.setBoolPref("browser.sessionstore.restore_on_demand", true);
+
+ registerCleanupFunction(function () {
+ if (gBrowser.tabs.length > 1) {
+ gBrowser.removeTab(gBrowser.tabs[1]);
+ }
+ Services.prefs.clearUserPref("browser.sessionstore.restore_on_demand");
+ });
+
+ let tab = BrowserTestUtils.addTab(gBrowser, "about:blank");
+ let browser = tab.linkedBrowser;
+
+ promiseBrowserLoaded(browser).then(() => {
+ isnot(gBrowser.selectedTab, tab, "newly created tab is not selected");
+
+ ss.setTabState(tab, JSON.stringify(tabState));
+ is(
+ ss.getInternalObjectState(browser),
+ TAB_STATE_NEEDS_RESTORE,
+ "tab needs restoring"
+ );
+
+ let { formdata } = JSON.parse(ss.getTabState(tab));
+ is(formdata && formdata.id.foo, "bar", "tab state's formdata is valid");
+
+ promiseTabRestored(tab).then(() => {
+ SpecialPowers.spawn(browser, [], function () {
+ let input = content.document.getElementById("foo");
+ is(input.value, "bar", "formdata has been restored correctly");
+ }).then(() => {
+ finish();
+ });
+ });
+
+ // Restore the tab by selecting it.
+ gBrowser.selectedTab = tab;
+ });
+}