browser/metro/base/tests/mochitest/browser_sessionstore.js

changeset 0
6474c204b198
     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 +});

mercurial