1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/browser/metro/base/tests/mochitest/browser_sessionstore.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,55 @@ 1.4 +/* vim: set ts=2 et sw=2 tw=80: */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 +"use strict"; 1.10 + 1.11 +var gSessionStore = Cc["@mozilla.org/browser/sessionstore;1"] 1.12 + .getService(Ci.nsISessionStore); 1.13 + 1.14 +function test() { 1.15 + runTests(); 1.16 +} 1.17 + 1.18 +function getState() { 1.19 + return JSON.parse(gSessionStore.getBrowserState()); 1.20 +} 1.21 + 1.22 +function getTabData() { 1.23 + return getState().windows[0].tabs; 1.24 +} 1.25 + 1.26 +function isValidTabData(aData) { 1.27 + return aData && aData.entries && aData.entries.length && 1.28 + typeof aData.index == "number"; 1.29 +} 1.30 + 1.31 +gTests.push({ 1.32 + desc: "getBrowserState tests", 1.33 + run: function() { 1.34 + // Wait for Session Manager to be initialized. 1.35 + yield waitForCondition(() => window.__SSID); 1.36 + info(window.__SSID); 1.37 + let tabData1 = getTabData(); 1.38 + ok(tabData1.every(isValidTabData), "Tab data starts out valid"); 1.39 + 1.40 + // Open a tab. 1.41 + let tab = Browser.addTab("about:mozilla"); 1.42 + let tabData2 = getTabData(); 1.43 + is(tabData2.length, tabData1.length, "New tab not added yet."); 1.44 + 1.45 + // Wait for the tab's session data to be initialized. 1.46 + yield waitForMessage("Content:SessionHistory", tab.browser.messageManager); 1.47 + yield waitForMs(0); 1.48 + let tabData3 = getTabData(); 1.49 + is(tabData3.length, tabData1.length + 1, "New tab added."); 1.50 + ok(tabData3.every(isValidTabData), "Tab data still valid"); 1.51 + 1.52 + // Close the tab. 1.53 + Browser.closeTab(tab, { forceClose: true } ); 1.54 + let tabData4 = getTabData(); 1.55 + is(tabData4.length, tabData1.length, "Closed tab removed."); 1.56 + ok(tabData4.every(isValidTabData), "Tab data valid again"); 1.57 + } 1.58 +});