|
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/. */ |
|
5 |
|
6 "use strict"; |
|
7 |
|
8 var gSessionStore = Cc["@mozilla.org/browser/sessionstore;1"] |
|
9 .getService(Ci.nsISessionStore); |
|
10 |
|
11 function test() { |
|
12 runTests(); |
|
13 } |
|
14 |
|
15 function getState() { |
|
16 return JSON.parse(gSessionStore.getBrowserState()); |
|
17 } |
|
18 |
|
19 function getTabData() { |
|
20 return getState().windows[0].tabs; |
|
21 } |
|
22 |
|
23 function isValidTabData(aData) { |
|
24 return aData && aData.entries && aData.entries.length && |
|
25 typeof aData.index == "number"; |
|
26 } |
|
27 |
|
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"); |
|
36 |
|
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."); |
|
41 |
|
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"); |
|
48 |
|
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 }); |