Mercurial > nightly_tester_tools
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 1:93e46514f20d | 2:472a16863ecc |
|---|---|
| 1 var session = { | |
| 2 | |
| 3 init: function(event) | |
| 4 { | |
| 5 var menu = document.getElementById("nightly-session-restore"); | |
| 6 var ds = Components.classes["@mozilla.org/file/directory_service;1"] | |
| 7 .getService(Components.interfaces.nsIProperties); | |
| 8 var file = ds.get("ProfD", Ci.nsIFile); | |
| 9 file.append("sessionstore.bak"); | |
| 10 if (!file.exists) | |
| 11 menu.setAttribute("disabled", "true"); | |
| 12 }, | |
| 13 | |
| 14 _readFile: function(file) | |
| 15 { | |
| 16 try | |
| 17 { | |
| 18 var stream = Components.classes["@mozilla.org/network/file-input-stream;1"] | |
| 19 .createInstance(Components.interfaces.nsIFileInputStream); | |
| 20 stream.init(file, 0x01, 0, 0); | |
| 21 var cvstream = Components.classes["@mozilla.org/intl/converter-input-stream;1"] | |
| 22 .createInstance(Components.interfaces.nsIConverterInputStream); | |
| 23 cvstream.init(stream, "UTF-8", 1024, Components.interfaces.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER); | |
| 24 | |
| 25 var content = ""; | |
| 26 var data = {}; | |
| 27 while (cvstream.readString(4096, data)) | |
| 28 content += data.value; | |
| 29 cvstream.close(); | |
| 30 | |
| 31 return content.replace(/\r\n?/g, "\n"); | |
| 32 } | |
| 33 catch (ex) { } | |
| 34 | |
| 35 return null; | |
| 36 }, | |
| 37 | |
| 38 restore: function() | |
| 39 { | |
| 40 var ds = Components.classes["@mozilla.org/file/directory_service;1"] | |
| 41 .getService(Components.interfaces.nsIProperties); | |
| 42 var file = ds.get("ProfD", Ci.nsIFile); | |
| 43 file.append("sessionstore.bak"); | |
| 44 if (file.exists) | |
| 45 { | |
| 46 var data = this._readFile(file); | |
| 47 if (data) | |
| 48 { | |
| 49 try | |
| 50 { | |
| 51 var s = Components.utils.Sandbox("about:blank"); | |
| 52 var state = Components.utils.evalInSandbox(data, s); | |
| 53 var args = { | |
| 54 state: state, | |
| 55 result: false | |
| 56 }; | |
| 57 window.openDialog("chrome://nightly/content/session/session.xul", "_blank", "chrome,all,modal", args); | |
| 58 if (args.result) | |
| 59 { | |
| 60 var ss = Components.classes["@mozilla.org/browser/sessionstore;1"] | |
| 61 .getService(Components.interfaces.nsISessionStore); | |
| 62 var win = OpenBrowserWindow(); | |
| 63 win.addEventListener("load", function() { ss.setWindowState(win, args.state.toSource(), true); }, false); | |
| 64 } | |
| 65 return; | |
| 66 } | |
| 67 catch (ex) | |
| 68 { | |
| 69 } | |
| 70 } | |
| 71 alert("Unable to read from file, this is unrecoverable."); | |
| 72 } | |
| 73 else | |
| 74 alert("There is no session information to restore."); | |
| 75 } | |
| 76 } | |
| 77 | |
| 78 window.addEventListener("load", session.init, false); |
