/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
enumclass AppShutdownReason { // No reason.
Unknown, // Normal application shutdown.
AppClose, // The application wants to restart.
AppRestart, // The OS is force closing us.
OSForceClose, // The user is logging off from the OS session, the system may stay alive.
OSSessionEnd, // The system is shutting down (and maybe restarting).
OSShutdown,
};
class AppShutdown { public: static ShutdownPhase GetCurrentShutdownPhase(); staticbool IsInOrBeyond(ShutdownPhase aPhase);
/** * Returns the current exit code that the process will be terminated with.
*/ staticint GetExitCode();
/** * Save environment variables that we might need if the app initiates a * restart later in its lifecycle.
*/ staticvoid SaveEnvVarsForPotentialRestart();
/** * Init the shutdown with the requested shutdown mode, exit code and optional * a reason (if missing it will be derived from aMode).
*/ staticvoid Init(AppShutdownMode aMode, int aExitCode,
AppShutdownReason aReason);
/** * Confirm that we are in fact going to be shutting down.
*/ staticvoid OnShutdownConfirmed();
/** * If we've attempted to initiate a restart, this call will set up the * necessary environment variables and launch the new process.
*/ staticvoid MaybeDoRestart();
/** * The _exit() call is not a safe way to terminate your own process on * Windows, because _exit runs DLL detach callbacks which run static * destructors for xul.dll. * * This method terminates the current process without those issues. * * Optionally a custom exit code can be supplied.
*/ staticvoid DoImmediateExit(int aExitCode = 0);
/** * True if the application is currently attempting to shut down in order to * restart.
*/ staticbool IsRestarting();
/** * Wrapper for shutdown notifications that informs the terminator before * we notify other observers. Calls MaybeFastShutdown.
*/ staticvoid AdvanceShutdownPhase(
ShutdownPhase aPhase, const char16_t* aNotificationData = nullptr, const nsCOMPtr<nsISupports>& aNotificationSubject =
nsCOMPtr<nsISupports>(nullptr));
/** * XXX: Before tackling bug 1697745 we need the * possibility to advance the phase without notification * in the content process.
*/ staticvoid AdvanceShutdownPhaseWithoutNotify(ShutdownPhase aPhase);
#ifdef DEBUG /** * Check, if we are allowed to send a shutdown notification. * Shutdown specific topics are only allowed during calls to * AdvanceShutdownPhase itself.
*/ staticbool IsNoOrLegalShutdownTopic(constchar* aTopic); #endif
private: /** * Set the shutdown reason annotation.
*/ staticvoid AnnotateShutdownReason(AppShutdownReason aReason);
/** * This will perform a fast shutdown via _exit(0) or similar if the user's * prefs are configured to do so at this phase.
*/ staticvoid MaybeFastShutdown(ShutdownPhase aPhase);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.