throw new TypeError(`${k} cannot be combined with ${quitSeen}`); } quitSeen = k; } mode |= Ci.nsIAppStartup[k]; } } if (!quitSeen) { mode |= Ci.nsIAppStartup.eAttemptQuit; } // Notify all windows that an application quit has been requested. const cancelQuit = Cc["@mozilla.org/supports-PRBool;1"].createInstance( Ci.nsISupportsPRBool ); Services.obs.notifyObservers(cancelQuit, "quit-application-requested"); // If the shutdown of the application is prevented force quit it instead. if (cancelQuit.data) { mode |= Ci.nsIAppStartup.eForceQuit; } // Delay response until the application is about to quit. const quitApplication = lazy.waitForObserverTopic("quit-application"); if (safeMode) { Services.startup.restartInSafeMode(mode); } else { Services.startup.quit(mode); } return { cause: (await quitApplication).data, forced: cancelQuit.data, in_app: true, }; } PK