Skip to content

Commit f6d5204

Browse files
committed
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
1 parent d270fbf commit f6d5204

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+370
-235
lines changed

accessible/ipc/win/DocAccessibleChild.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ DocAccessibleChild::DocAccessibleChild(DocAccessible* aDoc, IProtocol* aManager)
2222
MOZ_COUNT_CTOR_INHERITED(DocAccessibleChild, DocAccessibleChildBase);
2323
if (!sPlatformChild) {
2424
sPlatformChild = new PlatformChild();
25-
ClearOnShutdown(&sPlatformChild, ShutdownPhase::Shutdown);
25+
ClearOnShutdown(&sPlatformChild, ShutdownPhase::XPCOMShutdown);
2626
}
2727

2828
SetManager(aManager);

browser/components/enterprisepolicies/tests/browser/browser_policy_cookie_settings.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ async function fake_profile_change() {
2828
}, "cookie-db-closed");
2929
Services.cookies
3030
.QueryInterface(Ci.nsIObserver)
31-
.observe(null, "profile-before-change", "shutdown-persist");
31+
.observe(null, "profile-before-change", null);
3232
});
3333
await new Promise(resolve => {
3434
Services.obs.addObserver(function waitForDBOpen() {

dom/ipc/ContentChild.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ ContentChild::ContentChild()
575575
// happens without requiring the observer service at this time.
576576
if (!sShutdownCanary) {
577577
sShutdownCanary = new ShutdownCanary();
578-
ClearOnShutdown(&sShutdownCanary, ShutdownPhase::Shutdown);
578+
ClearOnShutdown(&sShutdownCanary, ShutdownPhase::XPCOMShutdown);
579579
}
580580
}
581581

dom/ipc/ContentParent.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -2839,7 +2839,7 @@ bool ContentParent::InitInternal(ProcessPriority aInitialPriority) {
28392839
// can't init the process without it, and since we're going to be canceling
28402840
// whatever load attempt that initiated this process creation anyway, just
28412841
// bail out now if shutdown has already started.
2842-
if (PastShutdownPhase(ShutdownPhase::Shutdown)) {
2842+
if (PastShutdownPhase(ShutdownPhase::XPCOMShutdown)) {
28432843
return false;
28442844
}
28452845

dom/media/MediaCache.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -773,7 +773,7 @@ RefPtr<MediaCache> MediaCache::GetMediaCache(int64_t aContentLength,
773773
thread->Shutdown();
774774
}
775775
} sClearThread;
776-
ClearOnShutdown(&sClearThread, ShutdownPhase::ShutdownThreads);
776+
ClearOnShutdown(&sClearThread, ShutdownPhase::XPCOMShutdownThreads);
777777
}
778778

779779
if (!sThread) {

dom/media/doctor/DecoderDoctorLogger.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,11 @@ bool DecoderDoctorLogger::EnsureLogIsEnabled() {
116116
TaskCategory::Other,
117117
NS_NewRunnableFunction("DDLogger shutdown setup", [] {
118118
sDDLogShutdowner = MakeUnique<DDLogShutdowner>();
119-
ClearOnShutdown(&sDDLogShutdowner, ShutdownPhase::Shutdown);
119+
ClearOnShutdown(&sDDLogShutdowner,
120+
ShutdownPhase::XPCOMShutdown);
120121
sDDLogDeleter = MakeUnique<DDLogDeleter>();
121-
ClearOnShutdown(&sDDLogDeleter, ShutdownPhase::ShutdownThreads);
122+
ClearOnShutdown(&sDDLogDeleter,
123+
ShutdownPhase::XPCOMShutdownThreads);
122124
})));
123125

124126
// Nobody else should change the state when *we* are enabling logging.

dom/media/mediacapabilities/MediaCapabilities.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ already_AddRefed<Promise> MediaCapabilities::DecodingInfo(
257257
NS_NewRunnableFunction(
258258
"MediaCapabilities::AllocPolicy:Video", []() {
259259
ClearOnShutdown(&sVideoAllocPolicy,
260-
ShutdownPhase::ShutdownThreads);
260+
ShutdownPhase::XPCOMShutdownThreads);
261261
}));
262262
return new SingleAllocPolicy(TrackInfo::TrackType::kVideoTrack,
263263
taskQueue);

dom/media/platforms/AllocationPolicy.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ NotNull<AllocPolicy*> GlobalAllocPolicy::Instance(TrackType aTrack) {
9797
TaskCategory::Other,
9898
NS_NewRunnableFunction(
9999
"GlobalAllocPolicy::GlobalAllocPolicy:Audio", []() {
100-
ClearOnShutdown(&sAudioPolicy, ShutdownPhase::ShutdownThreads);
100+
ClearOnShutdown(&sAudioPolicy,
101+
ShutdownPhase::XPCOMShutdownThreads);
101102
}));
102103
return new AllocPolicyImpl(MediaDecoderLimitDefault());
103104
}();
@@ -108,7 +109,8 @@ NotNull<AllocPolicy*> GlobalAllocPolicy::Instance(TrackType aTrack) {
108109
TaskCategory::Other,
109110
NS_NewRunnableFunction(
110111
"GlobalAllocPolicy::GlobalAllocPolicy:Audio", []() {
111-
ClearOnShutdown(&sVideoPolicy, ShutdownPhase::ShutdownThreads);
112+
ClearOnShutdown(&sVideoPolicy,
113+
ShutdownPhase::XPCOMShutdownThreads);
112114
}));
113115
return new AllocPolicyImpl(MediaDecoderLimitDefault());
114116
}();

dom/media/webrtc/CubebDeviceEnumerator.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ CubebDeviceEnumerator* CubebDeviceEnumerator::GetInstance() {
3030
sInstance = new CubebDeviceEnumerator();
3131
static bool clearOnShutdownSetup = []() -> bool {
3232
auto setClearOnShutdown = []() -> void {
33-
ClearOnShutdown(&sInstance, ShutdownPhase::ShutdownThreads);
33+
ClearOnShutdown(&sInstance, ShutdownPhase::XPCOMShutdownThreads);
3434
};
3535
if (NS_IsMainThread()) {
3636
setClearOnShutdown();

dom/media/webrtc/transport/nr_socket_prsock.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ class SingletonThreadHolder final {
241241
static StaticRefPtr<SingletonThreadHolder> sThread;
242242

243243
static void ClearSingletonOnShutdown() {
244-
ClearOnShutdown(&sThread, ShutdownPhase::ShutdownLoaders);
244+
ClearOnShutdown(&sThread, ShutdownPhase::XPCOMShutdownLoaders);
245245
}
246246
#endif
247247

dom/plugins/ipc/PluginProcessChild.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ void PluginProcessChild::CleanUp() {
176176
NS_LogTerm();
177177
#endif
178178

179-
mozilla::KillClearOnShutdown(ShutdownPhase::ShutdownFinal);
179+
mozilla::KillClearOnShutdown(ShutdownPhase::XPCOMShutdownFinal);
180180

181181
AbstractThread::ShutdownMainThread();
182182

dom/storage/SessionStorageManager.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,7 @@ BackgroundSessionStorageManager* BackgroundSessionStorageManager::GetOrCreate(
625625
return;
626626
}
627627
},
628-
ShutdownPhase::Shutdown);
628+
ShutdownPhase::XPCOMShutdown);
629629
}));
630630
}
631631

dom/webauthn/U2FTokenManager.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ class U2FPrefManager final : public nsIObserver {
8989
PREF_WEBAUTHN_ANDROID_FIDO2_ENABLED);
9090
Preferences::AddStrongObserver(gPrefManager,
9191
PREF_WEBAUTHN_ALLOW_DIRECT_ATTESTATION);
92-
ClearOnShutdown(&gPrefManager, ShutdownPhase::ShutdownThreads);
92+
ClearOnShutdown(&gPrefManager, ShutdownPhase::XPCOMShutdownThreads);
9393
}
9494
return gPrefManager;
9595
}

gfx/vr/VRManager.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ VRManager::VRManager()
161161
VRServiceHost::Init(mVRProcessEnabled);
162162
mServiceHost = VRServiceHost::Get();
163163
// We must shutdown before VRServiceHost, which is cleared
164-
// on ShutdownPhase::ShutdownFinal, potentially before VRManager.
164+
// on ShutdownPhase::XPCOMShutdownFinal, potentially before VRManager.
165165
// We hold a reference to VRServiceHost to ensure it stays
166166
// alive until we have shut down.
167167
#else

gfx/vr/VRServiceHost.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,8 @@ void VRServiceHost::PuppetReset() {
240240
// If we're already into ShutdownFinal, the VRPuppetCommandBuffer instance
241241
// will have been cleared, so don't try to access it after that point.
242242
if (!mVRProcessEnabled &&
243-
!(NS_IsMainThread() && PastShutdownPhase(ShutdownPhase::ShutdownFinal))) {
243+
!(NS_IsMainThread() &&
244+
PastShutdownPhase(ShutdownPhase::XPCOMShutdownFinal))) {
244245
// Puppet is running in this process, tell it to reset directly.
245246
VRPuppetCommandBuffer::Get().Reset();
246247
}

intl/locale/LocaleService.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ LocaleService* LocaleService::GetInstance() {
152152
}
153153
// DOM might use ICUUtils and LocaleService during UnbindFromTree by
154154
// final cycle collection.
155-
ClearOnShutdown(&sInstance, ShutdownPhase::ShutdownPostLastCycleCollection);
155+
ClearOnShutdown(&sInstance, ShutdownPhase::CCPostLastCycleCollection);
156156
}
157157
return sInstance;
158158
}

intl/strres/nsStringBundle.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,7 @@ nsresult nsStringBundleBase::ParseProperties(nsIPersistentProperties** aProps) {
472472
nsresult nsStringBundle::LoadProperties() {
473473
// Something such as Necko might use string bundle after ClearOnShutdown is
474474
// called. LocaleService etc is already down, so we cannot get bundle data.
475-
if (PastShutdownPhase(ShutdownPhase::Shutdown)) {
475+
if (PastShutdownPhase(ShutdownPhase::XPCOMShutdown)) {
476476
return NS_ERROR_ILLEGAL_DURING_SHUTDOWN;
477477
}
478478

@@ -500,7 +500,7 @@ nsresult SharedStringBundle::LoadProperties() {
500500
// our string bundles come from). Since shared string bundles won't be
501501
// useful after shutdown has started anyway (and we almost certainly got
502502
// here from a pre-load attempt in an idle task), just bail out.
503-
if (PastShutdownPhase(ShutdownPhase::Shutdown)) {
503+
if (PastShutdownPhase(ShutdownPhase::XPCOMShutdown)) {
504504
return NS_ERROR_ILLEGAL_DURING_SHUTDOWN;
505505
}
506506

ipc/mscom/EnsureMTA.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ nsCOMPtr<nsIThread> EnsureMTA::GetMTAThread() {
126126
BackgroundMTAData* bgData = new BackgroundMTAData();
127127

128128
auto setClearOnShutdown = [ptr = &sMTAData]() -> void {
129-
ClearOnShutdown(ptr, ShutdownPhase::ShutdownThreads);
129+
ClearOnShutdown(ptr, ShutdownPhase::XPCOMShutdownThreads);
130130
};
131131

132132
if (NS_IsMainThread()) {

ipc/mscom/Registration.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,7 @@ void RegisterArrayData(const ArrayData* aArrayData, size_t aLength) {
500500

501501
if (!sArrayData) {
502502
sArrayData = new Vector<std::pair<const ArrayData*, size_t>>();
503-
ClearOnShutdown(&sArrayData, ShutdownPhase::ShutdownThreads);
503+
ClearOnShutdown(&sArrayData, ShutdownPhase::XPCOMShutdownThreads);
504504
}
505505

506506
MOZ_ALWAYS_TRUE(sArrayData->emplaceBack(std::make_pair(aArrayData, aLength)));

js/xpconnect/loader/mozJSComponentLoader.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1220,7 +1220,7 @@ nsresult mozJSComponentLoader::Import(JSContext* aCx,
12201220
!mInProgressImports.Get(info.Key(), &mod)) {
12211221
// We're trying to import a new JSM, but we're late in shutdown and this
12221222
// will likely not succeed and might even crash, so fail here.
1223-
if (PastShutdownPhase(ShutdownPhase::ShutdownFinal)) {
1223+
if (PastShutdownPhase(ShutdownPhase::XPCOMShutdownFinal)) {
12241224
return NS_ERROR_ILLEGAL_DURING_SHUTDOWN;
12251225
}
12261226

netwerk/protocol/http/nsHttpHandler.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,7 @@ already_AddRefed<nsHttpHandler> nsHttpHandler::GetInstance() {
172172
MOZ_ASSERT(NS_SUCCEEDED(rv));
173173
// There is code that may be executed during the final cycle collection
174174
// shutdown and still referencing gHttpHandler.
175-
ClearOnShutdown(&gHttpHandler,
176-
ShutdownPhase::ShutdownPostLastCycleCollection);
175+
ClearOnShutdown(&gHttpHandler, ShutdownPhase::CCPostLastCycleCollection);
177176
}
178177
RefPtr<nsHttpHandler> httpHandler = gHttpHandler;
179178
return httpHandler.forget();

netwerk/test/unit/head_cookies.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ function do_close_profile(generator) {
100100

101101
// Close the db.
102102
let service = Services.cookies.QueryInterface(Ci.nsIObserver);
103-
service.observe(null, "profile-before-change", "shutdown-persist");
103+
service.observe(null, "profile-before-change", null);
104104
}
105105

106106
function _promise_observer(topic) {
@@ -131,7 +131,7 @@ function promise_close_profile() {
131131

132132
// Close the db.
133133
let service = Services.cookies.QueryInterface(Ci.nsIObserver);
134-
service.observe(null, "profile-before-change", "shutdown-persist");
134+
service.observe(null, "profile-before-change", null);
135135

136136
return promise;
137137
}

toolkit/components/extensions/webrequest/ChannelWrapper.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ static LinkedList<ChannelWrapper>& ChannelList() {
100100
static UniquePtr<ChannelListHolder> sChannelList;
101101
if (!sChannelList) {
102102
sChannelList.reset(new ChannelListHolder());
103-
ClearOnShutdown(&sChannelList, ShutdownPhase::Shutdown);
103+
ClearOnShutdown(&sChannelList, ShutdownPhase::XPCOMShutdown);
104104
}
105105
return *sChannelList;
106106
}

toolkit/components/startup/nsAppStartup.cpp

+4-5
Original file line numberDiff line numberDiff line change
@@ -441,11 +441,10 @@ nsAppStartup::Quit(uint32_t aMode, int aExitCode, bool* aUserAllowedQuit) {
441441

442442
// No chance of the shutdown being cancelled from here on; tell people
443443
// we're shutting down for sure while all services are still available.
444-
if (obsService) {
445-
bool isRestarting = mozilla::AppShutdown::IsRestarting();
446-
obsService->NotifyObservers(nullptr, "quit-application",
447-
isRestarting ? u"restart" : u"shutdown");
448-
}
444+
bool isRestarting = mozilla::AppShutdown::IsRestarting();
445+
mozilla::AppShutdown::AdvanceShutdownPhase(
446+
mozilla::ShutdownPhase::AppShutdownConfirmed,
447+
isRestarting ? u"restart" : u"shutdown");
449448

450449
if (!mRunning) {
451450
postedExitEvent = true;

toolkit/components/telemetry/Histograms.json

+43-2
Original file line numberDiff line numberDiff line change
@@ -12632,34 +12632,75 @@
1263212632
"kind": "exponential",
1263312633
"high": 65,
1263412634
"n_buckets": 10,
12635+
"bug_numbers": [1689953],
12636+
"alert_emails": ["dothayer@mozilla.com, jstutte@mozilla.com"],
1263512637
"description": "Duration of shutdown phase quit-application, as measured by the shutdown terminator, in seconds of activity"
1263612638
},
12639+
"SHUTDOWN_PHASE_DURATION_TICKS_PROFILE_CHANGE_NET_TEARDOWN": {
12640+
"record_in_processes": ["main", "content"],
12641+
"products": ["firefox", "fennec", "thunderbird"],
12642+
"expires_in_version": "never",
12643+
"kind": "exponential",
12644+
"high": 65,
12645+
"n_buckets": 10,
12646+
"bug_numbers": [1689953],
12647+
"alert_emails": ["dothayer@mozilla.com, jstutte@mozilla.com"],
12648+
"description": "Duration of shutdown phase profile-change-net-teardown, as measured by the shutdown terminator, in seconds of activity"
12649+
},
1263712650
"SHUTDOWN_PHASE_DURATION_TICKS_PROFILE_CHANGE_TEARDOWN": {
1263812651
"record_in_processes": ["main", "content"],
1263912652
"products": ["firefox", "fennec", "thunderbird"],
1264012653
"expires_in_version": "never",
1264112654
"kind": "exponential",
1264212655
"high": 65,
1264312656
"n_buckets": 10,
12657+
"bug_numbers": [1689953],
12658+
"alert_emails": ["dothayer@mozilla.com, jstutte@mozilla.com"],
1264412659
"description": "Duration of shutdown phase profile-change-teardown, as measured by the shutdown terminator, in seconds of activity"
1264512660
},
12661+
"SHUTDOWN_PHASE_DURATION_TICKS_PROFILE_BEFORE_CHANGE": {
12662+
"record_in_processes": ["main", "content"],
12663+
"products": ["firefox", "fennec", "thunderbird"],
12664+
"expires_in_version": "never",
12665+
"kind": "exponential",
12666+
"high": 65,
12667+
"n_buckets": 10,
12668+
"bug_numbers": [1689953],
12669+
"alert_emails": ["dothayer@mozilla.com, jstutte@mozilla.com"],
12670+
"description": "Duration of shutdown phase profile-before-change, as measured by the shutdown terminator, in seconds of activity"
12671+
},
12672+
"SHUTDOWN_PHASE_DURATION_TICKS_PROFILE_BEFORE_CHANGE_QM": {
12673+
"record_in_processes": ["main", "content"],
12674+
"products": ["firefox", "fennec", "thunderbird"],
12675+
"expires_in_version": "never",
12676+
"kind": "exponential",
12677+
"high": 65,
12678+
"n_buckets": 10,
12679+
"bug_numbers": [1689953],
12680+
"alert_emails": ["dothayer@mozilla.com, jstutte@mozilla.com"],
12681+
"description": "Duration of shutdown phase profile-before-change-qm, as measured by the shutdown terminator, in seconds of activity"
12682+
},
1264612683
"SHUTDOWN_PHASE_DURATION_TICKS_XPCOM_WILL_SHUTDOWN": {
1264712684
"record_in_processes": ["main", "content"],
1264812685
"products": ["firefox", "fennec", "thunderbird"],
1264912686
"expires_in_version": "never",
1265012687
"kind": "exponential",
1265112688
"high": 65,
1265212689
"n_buckets": 10,
12690+
"bug_numbers": [1689953],
12691+
"alert_emails": ["dothayer@mozilla.com, jstutte@mozilla.com"],
1265312692
"description": "Duration of shutdown phase xpcom-will-shutdown, as measured by the shutdown terminator, in seconds of activity"
1265412693
},
12655-
"SHUTDOWN_PHASE_DURATION_TICKS_PROFILE_BEFORE_CHANGE": {
12694+
"SHUTDOWN_PHASE_DURATION_TICKS_XPCOM_SHUTDOWN": {
1265612695
"record_in_processes": ["main", "content"],
1265712696
"products": ["firefox", "fennec", "thunderbird"],
1265812697
"expires_in_version": "never",
1265912698
"kind": "exponential",
1266012699
"high": 65,
1266112700
"n_buckets": 10,
12662-
"description": "Duration of shutdown phase profile-before-change, as measured by the shutdown terminator, in seconds of activity"
12701+
"bug_numbers": [1689953],
12702+
"alert_emails": ["dothayer@mozilla.com, jstutte@mozilla.com"],
12703+
"description": "Duration of shutdown phase xpcom-shutdown, as measured by the shutdown terminator, in seconds of activity"
1266312704
},
1266412705
"TAP_TO_LOAD_ENABLED": {
1266512706
"record_in_processes": ["main", "content"],

toolkit/components/telemetry/histogram-allowlists.json

-8
Original file line numberDiff line numberDiff line change
@@ -316,10 +316,6 @@
316316
"SERVICE_WORKER_WAS_SPAWNED",
317317
"SHOULD_AUTO_DETECT_LANGUAGE",
318318
"SHOULD_TRANSLATION_UI_APPEAR",
319-
"SHUTDOWN_PHASE_DURATION_TICKS_PROFILE_BEFORE_CHANGE",
320-
"SHUTDOWN_PHASE_DURATION_TICKS_PROFILE_CHANGE_TEARDOWN",
321-
"SHUTDOWN_PHASE_DURATION_TICKS_QUIT_APPLICATION",
322-
"SHUTDOWN_PHASE_DURATION_TICKS_XPCOM_WILL_SHUTDOWN",
323319
"SLOW_ADDON_WARNING_RESPONSE_TIME",
324320
"SLOW_ADDON_WARNING_STATES",
325321
"STARTUP_CRASH_DETECTED",
@@ -792,10 +788,6 @@
792788
"SERVICE_WORKER_WAS_SPAWNED",
793789
"SHOULD_AUTO_DETECT_LANGUAGE",
794790
"SHOULD_TRANSLATION_UI_APPEAR",
795-
"SHUTDOWN_PHASE_DURATION_TICKS_PROFILE_BEFORE_CHANGE",
796-
"SHUTDOWN_PHASE_DURATION_TICKS_PROFILE_CHANGE_TEARDOWN",
797-
"SHUTDOWN_PHASE_DURATION_TICKS_QUIT_APPLICATION",
798-
"SHUTDOWN_PHASE_DURATION_TICKS_XPCOM_WILL_SHUTDOWN",
799791
"SLOW_ADDON_WARNING_RESPONSE_TIME",
800792
"SLOW_ADDON_WARNING_STATES",
801793
"SLOW_SCRIPT_NOTICE_COUNT",

toolkit/components/terminator/TerminatorTelemetry.jsm

+5
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,16 @@ function nsTerminatorTelemetry() {}
3131

3232
var HISTOGRAMS = {
3333
"quit-application": "SHUTDOWN_PHASE_DURATION_TICKS_QUIT_APPLICATION",
34+
"profile-change-net-teardown":
35+
"SHUTDOWN_PHASE_DURATION_TICKS_PROFILE_CHANGE_NET_TEARDOWN",
3436
"profile-change-teardown":
3537
"SHUTDOWN_PHASE_DURATION_TICKS_PROFILE_CHANGE_TEARDOWN",
3638
"profile-before-change":
3739
"SHUTDOWN_PHASE_DURATION_TICKS_PROFILE_BEFORE_CHANGE",
40+
"profile-before-change-qm":
41+
"SHUTDOWN_PHASE_DURATION_TICKS_PROFILE_BEFORE_CHANGE_QM",
3842
"xpcom-will-shutdown": "SHUTDOWN_PHASE_DURATION_TICKS_XPCOM_WILL_SHUTDOWN",
43+
"xpcom-shutdown": "SHUTDOWN_PHASE_DURATION_TICKS_XPCOM_SHUTDOWN",
3944
};
4045

4146
nsTerminatorTelemetry.prototype = {

0 commit comments

Comments
 (0)