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);