diff options
Diffstat (limited to 'browser/components/sessionstore/test/browser_590563.js')
-rw-r--r-- | browser/components/sessionstore/test/browser_590563.js | 74 |
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); +} |