gecko/browser/components/sessionstore/test/browser_581593.js
2012-05-21 12:12:37 +01:00

53 lines
1.6 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
let stateBackup = ss.getBrowserState();
function test() {
/** Test for bug 581593 **/
waitForExplicitFinish();
ignoreAllUncaughtExceptions();
let oldState = { windows: [{ tabs: [{ entries: [{ url: "example.com" }] }] }]};
let pageData = {
url: "about:sessionrestore",
formdata: { id: { "sessionData": "(" + JSON.stringify(oldState) + ")" } }
};
let state = { windows: [{ tabs: [{ entries: [pageData] }] }] };
// The form data will be restored before SSTabRestored, so we want to listen
// for that on the currently selected tab (it will be reused)
gBrowser.selectedTab.addEventListener("SSTabRestored", onSSTabRestored, true);
ss.setBrowserState(JSON.stringify(state));
}
function onSSTabRestored(aEvent) {
info("SSTabRestored event");
gBrowser.selectedTab.removeEventListener("SSTabRestored", onSSTabRestored, true);
gBrowser.selectedBrowser.addEventListener("input", onInput, true);
}
function onInput(aEvent) {
info("input event");
gBrowser.selectedBrowser.removeEventListener("input", onInput, true);
// This is an ok way to check this because we will make sure that the text
// field is parsable.
let val = gBrowser.selectedBrowser.contentDocument.getElementById("sessionData").value;
try {
JSON.parse(val);
ok(true, "JSON.parse succeeded");
}
catch (e) {
ok(false, "JSON.parse failed");
}
cleanup();
}
function cleanup() {
ss.setBrowserState(stateBackup);
executeSoon(finish);
}