Wed, 31 Dec 2014 06:55:50 +0100
Added tag UPSTREAM_283F7C6 for changeset ca08bd8f51b2
1 /* vim: set ts=2 et sw=2 tw=80: */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 "use strict";
8 var gSessionStore = Cc["@mozilla.org/browser/sessionstore;1"]
9 .getService(Ci.nsISessionStore);
11 function test() {
12 runTests();
13 }
15 function getState() {
16 return JSON.parse(gSessionStore.getBrowserState());
17 }
19 function getTabData() {
20 return getState().windows[0].tabs;
21 }
23 function isValidTabData(aData) {
24 return aData && aData.entries && aData.entries.length &&
25 typeof aData.index == "number";
26 }
28 gTests.push({
29 desc: "getBrowserState tests",
30 run: function() {
31 // Wait for Session Manager to be initialized.
32 yield waitForCondition(() => window.__SSID);
33 info(window.__SSID);
34 let tabData1 = getTabData();
35 ok(tabData1.every(isValidTabData), "Tab data starts out valid");
37 // Open a tab.
38 let tab = Browser.addTab("about:mozilla");
39 let tabData2 = getTabData();
40 is(tabData2.length, tabData1.length, "New tab not added yet.");
42 // Wait for the tab's session data to be initialized.
43 yield waitForMessage("Content:SessionHistory", tab.browser.messageManager);
44 yield waitForMs(0);
45 let tabData3 = getTabData();
46 is(tabData3.length, tabData1.length + 1, "New tab added.");
47 ok(tabData3.every(isValidTabData), "Tab data still valid");
49 // Close the tab.
50 Browser.closeTab(tab, { forceClose: true } );
51 let tabData4 = getTabData();
52 is(tabData4.length, tabData1.length, "Closed tab removed.");
53 ok(tabData4.every(isValidTabData), "Tab data valid again");
54 }
55 });