Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(338)

Side by Side Diff: chrome/browser/browser_shutdown.cc

Issue 2318373003: Record shutdown type UMA (Closed)
Patch Set: Address comments Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/browser_shutdown.h ('k') | chrome/browser/lifetime/application_lifetime.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/browser_shutdown.h" 5 #include "chrome/browser/browser_shutdown.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <map> 9 #include <map>
10 #include <string> 10 #include <string>
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 // consider putting it in BrowserProcessImpl::EndSession. 163 // consider putting it in BrowserProcessImpl::EndSession.
164 PrefService* prefs = g_browser_process->local_state(); 164 PrefService* prefs = g_browser_process->local_state();
165 165
166 // Log the amount of times the user switched profiles during this session. 166 // Log the amount of times the user switched profiles during this session.
167 ProfileMetrics::LogNumberOfProfileSwitches(); 167 ProfileMetrics::LogNumberOfProfileSwitches();
168 168
169 metrics::MetricsService* metrics = g_browser_process->metrics_service(); 169 metrics::MetricsService* metrics = g_browser_process->metrics_service();
170 if (metrics) 170 if (metrics)
171 metrics->RecordCompletedSessionEnd(); 171 metrics->RecordCompletedSessionEnd();
172 172
173 if (g_shutdown_type > NOT_VALID && g_shutdown_num_processes > 0) { 173 RecordShutdownInfoPrefs();
174 // Record the shutdown info so that we can put it into a histogram at next
175 // startup.
176 prefs->SetInteger(prefs::kShutdownType, g_shutdown_type);
177 prefs->SetInteger(prefs::kShutdownNumProcesses, g_shutdown_num_processes);
178 prefs->SetInteger(prefs::kShutdownNumProcessesSlow,
179 g_shutdown_num_processes_slow);
180 }
181 174
182 // Check local state for the restart flag so we can restart the session below. 175 // Check local state for the restart flag so we can restart the session below.
183 bool restart_last_session = false; 176 bool restart_last_session = false;
184 if (prefs->HasPrefPath(prefs::kRestartLastSessionOnShutdown)) { 177 if (prefs->HasPrefPath(prefs::kRestartLastSessionOnShutdown)) {
sky 2016/09/12 16:58:20 Don't we want to clear this one too?
hashimoto 2016/09/13 01:19:49 I think kRestartLastSessionOnShutdown is different
sky 2016/09/13 02:17:59 My understanding is that if kRestartLastSessionOnS
hashimoto 2016/09/13 03:58:38 OK, done. Moved kRestartLastSessionOnShutdown rela
185 restart_last_session = 178 restart_last_session =
186 prefs->GetBoolean(prefs::kRestartLastSessionOnShutdown); 179 prefs->GetBoolean(prefs::kRestartLastSessionOnShutdown);
187 prefs->ClearPref(prefs::kRestartLastSessionOnShutdown); 180 prefs->ClearPref(prefs::kRestartLastSessionOnShutdown);
188 } 181 }
189 182
190 prefs->CommitPendingWrite(); 183 prefs->CommitPendingWrite();
191 184
192 #if defined(ENABLE_RLZ) 185 #if defined(ENABLE_RLZ)
193 // Cleanup any statics created by RLZ. Must be done before NotificationService 186 // Cleanup any statics created by RLZ. Must be done before NotificationService
194 // is destroyed. 187 // is destroyed.
195 rlz::RLZTracker::CleanupRlz(); 188 rlz::RLZTracker::CleanupRlz();
196 #endif 189 #endif
197 190
198 return restart_last_session; 191 return restart_last_session;
199 } 192 }
200 193
194 void RecordShutdownInfoPrefs() {
195 if (g_shutdown_type > NOT_VALID && g_shutdown_num_processes > 0) {
196 PrefService* prefs = g_browser_process->local_state();
197 // Record the shutdown info so that we can put it into a histogram at next
198 // startup.
199 prefs->SetInteger(prefs::kShutdownType, g_shutdown_type);
200 prefs->SetInteger(prefs::kShutdownNumProcesses, g_shutdown_num_processes);
201 prefs->SetInteger(prefs::kShutdownNumProcessesSlow,
202 g_shutdown_num_processes_slow);
203 }
204 }
205
201 void ShutdownPostThreadsStop(int shutdown_flags) { 206 void ShutdownPostThreadsStop(int shutdown_flags) {
202 delete g_browser_process; 207 delete g_browser_process;
203 g_browser_process = NULL; 208 g_browser_process = NULL;
204 209
205 // crbug.com/95079 - This needs to happen after the browser process object 210 // crbug.com/95079 - This needs to happen after the browser process object
206 // goes away. 211 // goes away.
207 ProfileManager::NukeDeletedProfilesFromDisk(); 212 ProfileManager::NukeDeletedProfilesFromDisk();
208 213
209 #if defined(OS_CHROMEOS) 214 #if defined(OS_CHROMEOS)
210 chromeos::BootTimesRecorder::Get()->AddLogoutTimeMarker("BrowserDeleted", 215 chromeos::BootTimesRecorder::Get()->AddLogoutTimeMarker("BrowserDeleted",
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 PrefService* prefs = g_browser_process->local_state(); 325 PrefService* prefs = g_browser_process->local_state();
321 ShutdownType type = 326 ShutdownType type =
322 static_cast<ShutdownType>(prefs->GetInteger(prefs::kShutdownType)); 327 static_cast<ShutdownType>(prefs->GetInteger(prefs::kShutdownType));
323 int num_procs = prefs->GetInteger(prefs::kShutdownNumProcesses); 328 int num_procs = prefs->GetInteger(prefs::kShutdownNumProcesses);
324 int num_procs_slow = prefs->GetInteger(prefs::kShutdownNumProcessesSlow); 329 int num_procs_slow = prefs->GetInteger(prefs::kShutdownNumProcessesSlow);
325 // clear the prefs immediately so we don't pick them up on a future run 330 // clear the prefs immediately so we don't pick them up on a future run
326 prefs->SetInteger(prefs::kShutdownType, NOT_VALID); 331 prefs->SetInteger(prefs::kShutdownType, NOT_VALID);
327 prefs->SetInteger(prefs::kShutdownNumProcesses, 0); 332 prefs->SetInteger(prefs::kShutdownNumProcesses, 0);
328 prefs->SetInteger(prefs::kShutdownNumProcessesSlow, 0); 333 prefs->SetInteger(prefs::kShutdownNumProcessesSlow, 0);
329 334
335 UMA_HISTOGRAM_ENUMERATION("Shutdown.ShutdownType", type, kNumShutdownTypes);
336
330 // Read and delete the file on the file thread. 337 // Read and delete the file on the file thread.
331 BrowserThread::PostTask( 338 BrowserThread::PostTask(
332 BrowserThread::FILE, FROM_HERE, 339 BrowserThread::FILE, FROM_HERE,
333 base::Bind(&ReadLastShutdownFile, type, num_procs, num_procs_slow)); 340 base::Bind(&ReadLastShutdownFile, type, num_procs, num_procs_slow));
334 } 341 }
335 342
336 void SetTryingToQuit(bool quitting) { 343 void SetTryingToQuit(bool quitting) {
337 g_trying_to_quit = quitting; 344 g_trying_to_quit = quitting;
338 345
339 if (quitting) 346 if (quitting)
(...skipping 26 matching lines...) Expand all
366 base::trace_event::TraceConfig trace_config( 373 base::trace_event::TraceConfig trace_config(
367 command_line.GetSwitchValueASCII(switches::kTraceShutdown), ""); 374 command_line.GetSwitchValueASCII(switches::kTraceShutdown), "");
368 content::TracingController::GetInstance()->StartTracing( 375 content::TracingController::GetInstance()->StartTracing(
369 trace_config, 376 trace_config,
370 content::TracingController::StartTracingDoneCallback()); 377 content::TracingController::StartTracingDoneCallback());
371 } 378 }
372 TRACE_EVENT0("shutdown", "StartShutdownTracing"); 379 TRACE_EVENT0("shutdown", "StartShutdownTracing");
373 } 380 }
374 381
375 } // namespace browser_shutdown 382 } // namespace browser_shutdown
OLDNEW
« no previous file with comments | « chrome/browser/browser_shutdown.h ('k') | chrome/browser/lifetime/application_lifetime.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698