michael@0: let Cu = Components.utils; michael@0: let Cc = Components.classes; michael@0: let Ci = Components.interfaces; michael@0: michael@0: Components.utils.import("resource://gre/modules/Services.jsm"); michael@0: michael@0: // Call a function once initialization of SessionStartup is complete michael@0: let afterSessionStartupInitialization = michael@0: function afterSessionStartupInitialization(cb) { michael@0: do_print("Waiting for session startup initialization"); michael@0: let observer = function() { michael@0: try { michael@0: do_print("Session startup initialization observed"); michael@0: Services.obs.removeObserver(observer, "sessionstore-state-finalized"); michael@0: cb(); michael@0: } catch (ex) { michael@0: do_throw(ex); michael@0: } michael@0: }; michael@0: michael@0: // We need the Crash Monitor initialized for sessionstartup to run michael@0: // successfully. michael@0: Components.utils.import("resource://gre/modules/CrashMonitor.jsm"); michael@0: CrashMonitor.init(); michael@0: michael@0: // Start sessionstartup initialization. michael@0: let startup = Cc["@mozilla.org/browser/sessionstartup;1"]. michael@0: getService(Ci.nsIObserver); michael@0: Services.obs.addObserver(startup, "final-ui-startup", false); michael@0: Services.obs.addObserver(startup, "quit-application", false); michael@0: Services.obs.notifyObservers(null, "final-ui-startup", ""); michael@0: Services.obs.addObserver(observer, "sessionstore-state-finalized", false); michael@0: };