gecko-dev/toolkit/profile/notifications.txt
Jens Stutte 1e19379853 Bug 1689953: Harmonize shutdown phase definitions across nsTerminator and AppShutdown r=dthayer,chutten
This patch wants to solve several quirks around the shutdown terminator.

 - Use the same shutdown phase definitions in AppShutdown and nsTerminator. This touches quite a few files.
 - Ensure that the terminator phase shift is handled before any shutdown observer notifications are sent and reduce its heartbeat duration.
 - Add missing phases to the shutdown telemetry.

Please note that this changes the unit of "tick" to 100ms rather than 1s.
As a side effect, we also remove the obsolete "shutdown-persist" context.

While the existing test coverage continues to prove the most important functions, we acknowledge the wish for better test coverage with [[ https://bugzilla.mozilla.org/show_bug.cgi?id=1693966 | bug 1693966 ]].

Differential Revision: https://phabricator.services.mozilla.com/D103626
2021-02-27 14:38:14 +00:00

53 lines
2.0 KiB
Plaintext

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/.
nsIObserver topics for profile changing. Profile changing happens in phases
in the order given below. An observer may register separately for each phase
of the process depending on its needs.
"profile-change-teardown"
All async activity must be stopped in this phase. Typically,
the application level observer will close all open windows.
This is the last phase in which the subject's vetoChange()
method may still be called.
The next notification will be either
profile-change-teardown-veto or profile-before-change.
"profile-before-change"
Called before the profile has changed. Use this notification
to prepare for the profile going away. If a component is
holding any state which needs to be flushed to a profile-relative
location, it should be done here.
"profile-do-change"
Called after the profile has changed. Do the work to
respond to having a new profile. Any change which
affects others must be done in this phase.
"profile-after-change"
Called after the profile has changed. Use this notification
to make changes that are dependent on what some other listener
did during its profile-do-change. For example, to respond to
new preferences.
"profile-initial-state"
Called after all phases of a change have completed. Typically
in this phase, an application level observer will open a new window.
Contexts for profile changes. These are passed as the someData param to the
observer's Observe() method.
"startup"
Going from no profile to a profile.
The following topics happen in this context:
profile-do-change
profile-after-change
See https://wiki.mozilla.org/XPCOM_Shutdown for more details about the shutdown
process.
NOTE: Long ago there was be a "shutdown-cleanse" version of shutdown which was
intended to clear profile data. This is no longer sent and observer code should
remove support for it.