Mercurial > nightly_tester_tools
diff chrome/content/session/session.js @ 2:472a16863ecc
expanded nightly.jar
author | Yoshiki Yazawa <yaz@honeyplanet.jp> |
---|---|
date | Tue, 02 Dec 2008 20:38:20 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/chrome/content/session/session.js Tue Dec 02 20:38:20 2008 +0900 @@ -0,0 +1,78 @@ +var session = { + +init: function(event) +{ + var menu = document.getElementById("nightly-session-restore"); + var ds = Components.classes["@mozilla.org/file/directory_service;1"] + .getService(Components.interfaces.nsIProperties); + var file = ds.get("ProfD", Ci.nsIFile); + file.append("sessionstore.bak"); + if (!file.exists) + menu.setAttribute("disabled", "true"); +}, + +_readFile: function(file) +{ + try + { + var stream = Components.classes["@mozilla.org/network/file-input-stream;1"] + .createInstance(Components.interfaces.nsIFileInputStream); + stream.init(file, 0x01, 0, 0); + var cvstream = Components.classes["@mozilla.org/intl/converter-input-stream;1"] + .createInstance(Components.interfaces.nsIConverterInputStream); + cvstream.init(stream, "UTF-8", 1024, Components.interfaces.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER); + + var content = ""; + var data = {}; + while (cvstream.readString(4096, data)) + content += data.value; + cvstream.close(); + + return content.replace(/\r\n?/g, "\n"); + } + catch (ex) { } + + return null; +}, + +restore: function() +{ + var ds = Components.classes["@mozilla.org/file/directory_service;1"] + .getService(Components.interfaces.nsIProperties); + var file = ds.get("ProfD", Ci.nsIFile); + file.append("sessionstore.bak"); + if (file.exists) + { + var data = this._readFile(file); + if (data) + { + try + { + var s = Components.utils.Sandbox("about:blank"); + var state = Components.utils.evalInSandbox(data, s); + var args = { + state: state, + result: false + }; + window.openDialog("chrome://nightly/content/session/session.xul", "_blank", "chrome,all,modal", args); + if (args.result) + { + var ss = Components.classes["@mozilla.org/browser/sessionstore;1"] + .getService(Components.interfaces.nsISessionStore); + var win = OpenBrowserWindow(); + win.addEventListener("load", function() { ss.setWindowState(win, args.state.toSource(), true); }, false); + } + return; + } + catch (ex) + { + } + } + alert("Unable to read from file, this is unrecoverable."); + } + else + alert("There is no session information to restore."); +} +} + +window.addEventListener("load", session.init, false);