summaryrefslogtreecommitdiffstats
path: root/browser/components/sessionstore/test/browser_590563.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/sessionstore/test/browser_590563.js')
-rw-r--r--browser/components/sessionstore/test/browser_590563.js74
1 files changed, 74 insertions, 0 deletions
diff --git a/browser/components/sessionstore/test/browser_590563.js b/browser/components/sessionstore/test/browser_590563.js
new file mode 100644
index 000000000..5d1d8f866
--- /dev/null
+++ b/browser/components/sessionstore/test/browser_590563.js
@@ -0,0 +1,74 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+function test() {
+ let sessionData = {
+ windows: [{
+ tabs: [
+ { entries: [{ url: "about:mozilla" }], hidden: true },
+ { entries: [{ url: "about:blank" }], hidden: false }
+ ]
+ }]
+ };
+ let url = "about:sessionrestore";
+ let formdata = {id: {sessionData}, url};
+ let state = { windows: [{ tabs: [{ entries: [{url}], formdata }] }] };
+
+ waitForExplicitFinish();
+
+ newWindowWithState(state, function (win) {
+ registerCleanupFunction(() => BrowserTestUtils.closeWindow(win));
+
+ is(gBrowser.tabs.length, 1, "The total number of tabs should be 1");
+ is(gBrowser.visibleTabs.length, 1, "The total number of visible tabs should be 1");
+
+ executeSoon(function () {
+ waitForFocus(function () {
+ middleClickTest(win);
+ finish();
+ }, win);
+ });
+ });
+}
+
+function middleClickTest(win) {
+ let browser = win.gBrowser.selectedBrowser;
+ let tree = browser.contentDocument.getElementById("tabList");
+ is(tree.view.rowCount, 3, "There should be three items");
+
+ // click on the first tab item
+ var rect = tree.treeBoxObject.getCoordsForCellItem(1, tree.columns[1], "text");
+ EventUtils.synthesizeMouse(tree.body, rect.x, rect.y, { button: 1 },
+ browser.contentWindow);
+ // click on the second tab item
+ rect = tree.treeBoxObject.getCoordsForCellItem(2, tree.columns[1], "text");
+ EventUtils.synthesizeMouse(tree.body, rect.x, rect.y, { button: 1 },
+ browser.contentWindow);
+
+ is(win.gBrowser.tabs.length, 3,
+ "The total number of tabs should be 3 after restoring 2 tabs by middle click.");
+ is(win.gBrowser.visibleTabs.length, 3,
+ "The total number of visible tabs should be 3 after restoring 2 tabs by middle click");
+}
+
+function newWindowWithState(state, callback) {
+ let opts = "chrome,all,dialog=no,height=800,width=800";
+ let win = window.openDialog(getBrowserURL(), "_blank", opts);
+
+ win.addEventListener("load", function onLoad() {
+ win.removeEventListener("load", onLoad, false);
+
+ let tab = win.gBrowser.selectedTab;
+
+ // The form data will be restored before SSTabRestored, so we want to listen
+ // for that on the currently selected tab (it will be reused)
+ tab.addEventListener("SSTabRestored", function onRestored() {
+ tab.removeEventListener("SSTabRestored", onRestored, true);
+ callback(win);
+ }, true);
+
+ executeSoon(function () {
+ ss.setWindowState(win, JSON.stringify(state), true);
+ });
+ }, false);
+}