|
1 let Cu = Components.utils; |
|
2 let Cc = Components.classes; |
|
3 let Ci = Components.interfaces; |
|
4 |
|
5 Components.utils.import("resource://gre/modules/Services.jsm"); |
|
6 |
|
7 // Call a function once initialization of SessionStartup is complete |
|
8 let afterSessionStartupInitialization = |
|
9 function afterSessionStartupInitialization(cb) { |
|
10 do_print("Waiting for session startup initialization"); |
|
11 let observer = function() { |
|
12 try { |
|
13 do_print("Session startup initialization observed"); |
|
14 Services.obs.removeObserver(observer, "sessionstore-state-finalized"); |
|
15 cb(); |
|
16 } catch (ex) { |
|
17 do_throw(ex); |
|
18 } |
|
19 }; |
|
20 |
|
21 // We need the Crash Monitor initialized for sessionstartup to run |
|
22 // successfully. |
|
23 Components.utils.import("resource://gre/modules/CrashMonitor.jsm"); |
|
24 CrashMonitor.init(); |
|
25 |
|
26 // Start sessionstartup initialization. |
|
27 let startup = Cc["@mozilla.org/browser/sessionstartup;1"]. |
|
28 getService(Ci.nsIObserver); |
|
29 Services.obs.addObserver(startup, "final-ui-startup", false); |
|
30 Services.obs.addObserver(startup, "quit-application", false); |
|
31 Services.obs.notifyObservers(null, "final-ui-startup", ""); |
|
32 Services.obs.addObserver(observer, "sessionstore-state-finalized", false); |
|
33 }; |