Mercurial > nightly_tester_tools
view 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 source
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);