michael@0: /* vim: set ts=2 et sw=2 tw=80: */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: "use strict"; michael@0: michael@0: var gSessionStore = Cc["@mozilla.org/browser/sessionstore;1"] michael@0: .getService(Ci.nsISessionStore); michael@0: michael@0: function test() { michael@0: runTests(); michael@0: } michael@0: michael@0: function getState() { michael@0: return JSON.parse(gSessionStore.getBrowserState()); michael@0: } michael@0: michael@0: function getTabData() { michael@0: return getState().windows[0].tabs; michael@0: } michael@0: michael@0: function isValidTabData(aData) { michael@0: return aData && aData.entries && aData.entries.length && michael@0: typeof aData.index == "number"; michael@0: } michael@0: michael@0: gTests.push({ michael@0: desc: "getBrowserState tests", michael@0: run: function() { michael@0: // Wait for Session Manager to be initialized. michael@0: yield waitForCondition(() => window.__SSID); michael@0: info(window.__SSID); michael@0: let tabData1 = getTabData(); michael@0: ok(tabData1.every(isValidTabData), "Tab data starts out valid"); michael@0: michael@0: // Open a tab. michael@0: let tab = Browser.addTab("about:mozilla"); michael@0: let tabData2 = getTabData(); michael@0: is(tabData2.length, tabData1.length, "New tab not added yet."); michael@0: michael@0: // Wait for the tab's session data to be initialized. michael@0: yield waitForMessage("Content:SessionHistory", tab.browser.messageManager); michael@0: yield waitForMs(0); michael@0: let tabData3 = getTabData(); michael@0: is(tabData3.length, tabData1.length + 1, "New tab added."); michael@0: ok(tabData3.every(isValidTabData), "Tab data still valid"); michael@0: michael@0: // Close the tab. michael@0: Browser.closeTab(tab, { forceClose: true } ); michael@0: let tabData4 = getTabData(); michael@0: is(tabData4.length, tabData1.length, "Closed tab removed."); michael@0: ok(tabData4.every(isValidTabData), "Tab data valid again"); michael@0: } michael@0: });