michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: function test() { michael@0: let state = { windows: [{ tabs: [ michael@0: {entries: [{url: "about:mozilla"}], hidden: true}, michael@0: {entries: [{url: "about:rights"}], hidden: true} michael@0: ] }] }; michael@0: michael@0: waitForExplicitFinish(); michael@0: michael@0: newWindowWithState(state, function (win) { michael@0: registerCleanupFunction(function () win.close()); michael@0: michael@0: is(win.gBrowser.tabs.length, 2, "two tabs were restored"); michael@0: is(win.gBrowser.visibleTabs.length, 1, "one tab is visible"); michael@0: michael@0: let tab = win.gBrowser.visibleTabs[0]; michael@0: is(tab.linkedBrowser.currentURI.spec, "about:mozilla", "visible tab is about:mozilla"); michael@0: michael@0: finish(); michael@0: }); michael@0: } michael@0: michael@0: function newWindowWithState(state, callback) { michael@0: let opts = "chrome,all,dialog=no,height=800,width=800"; michael@0: let win = window.openDialog(getBrowserURL(), "_blank", opts); michael@0: michael@0: win.addEventListener("load", function onLoad() { michael@0: win.removeEventListener("load", onLoad, false); michael@0: michael@0: executeSoon(function () { michael@0: win.addEventListener("SSWindowStateReady", function onReady() { michael@0: win.removeEventListener("SSWindowStateReady", onReady, false); michael@0: whenTabRestored(win.gBrowser.tabs[0], () => callback(win)); michael@0: }, false); michael@0: michael@0: ss.setWindowState(win, JSON.stringify(state), true); michael@0: }); michael@0: }, false); michael@0: }