summaryrefslogtreecommitdiffstats
path: root/browser/components/sessionstore/test/browser_merge_closed_tabs.js
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /browser/components/sessionstore/test/browser_merge_closed_tabs.js
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'browser/components/sessionstore/test/browser_merge_closed_tabs.js')
-rw-r--r--browser/components/sessionstore/test/browser_merge_closed_tabs.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/browser/components/sessionstore/test/browser_merge_closed_tabs.js b/browser/components/sessionstore/test/browser_merge_closed_tabs.js
new file mode 100644
index 000000000..b26e86f22
--- /dev/null
+++ b/browser/components/sessionstore/test/browser_merge_closed_tabs.js
@@ -0,0 +1,71 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/**
+ * This test ensures that closed tabs are merged when restoring
+ * a window state without overwriting tabs.
+ */
+add_task(function () {
+ const initialState = {
+ windows: [{
+ tabs: [
+ { entries: [{ url: "about:blank" }] }
+ ],
+ _closedTabs: [
+ { state: { entries: [{ ID: 1000, url: "about:blank" }]} },
+ { state: { entries: [{ ID: 1001, url: "about:blank" }]} }
+ ]
+ }]
+ }
+
+ const restoreState = {
+ windows: [{
+ tabs: [
+ { entries: [{ url: "about:robots" }] }
+ ],
+ _closedTabs: [
+ { state: { entries: [{ ID: 1002, url: "about:robots" }]} },
+ { state: { entries: [{ ID: 1003, url: "about:robots" }]} },
+ { state: { entries: [{ ID: 1004, url: "about:robots" }]} }
+ ]
+ }]
+ }
+
+ const maxTabsUndo = 4;
+ gPrefService.setIntPref("browser.sessionstore.max_tabs_undo", maxTabsUndo);
+
+ // Open a new window and restore it to an initial state.
+ let win = yield promiseNewWindowLoaded({private: false});
+ SessionStore.setWindowState(win, JSON.stringify(initialState), true);
+ is(SessionStore.getClosedTabCount(win), 2, "2 closed tabs after restoring initial state");
+
+ // Restore the new state but do not overwrite existing tabs (this should
+ // cause the closed tabs to be merged).
+ SessionStore.setWindowState(win, JSON.stringify(restoreState), false);
+
+ // Verify the windows closed tab data is correct.
+ let iClosed = initialState.windows[0]._closedTabs;
+ let rClosed = restoreState.windows[0]._closedTabs;
+ let cData = JSON.parse(SessionStore.getClosedTabData(win));
+
+ is(cData.length, Math.min(iClosed.length + rClosed.length, maxTabsUndo),
+ "Number of closed tabs is correct");
+
+ // When the closed tabs are merged the restored tabs are considered to be
+ // closed more recently.
+ for (let i = 0; i < cData.length; i++) {
+ if (i < rClosed.length) {
+ is(cData[i].state.entries[0].ID, rClosed[i].state.entries[0].ID,
+ "Closed tab entry matches");
+ } else {
+ is(cData[i].state.entries[0].ID, iClosed[i - rClosed.length].state.entries[0].ID,
+ "Closed tab entry matches");
+ }
+ }
+
+ // Clean up.
+ gPrefService.clearUserPref("browser.sessionstore.max_tabs_undo");
+ yield BrowserTestUtils.closeWindow(win);
+});
+
+