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

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

Issue 2318373003: Record shutdown type UMA (Closed)
Patch Set: Add description 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 bool restart_last_session = RecordShutdownInfoPrefs();
174
175 prefs->CommitPendingWrite();
176
177 #if defined(ENABLE_RLZ)
178 // Cleanup any statics created by RLZ. Must be done before NotificationService
179 // is destroyed.
180 rlz::RLZTracker::CleanupRlz();
181 #endif
182
183 return restart_last_session;
184 }
185
186 bool RecordShutdownInfoPrefs() {
187 PrefService* prefs = g_browser_process->local_state();
173 if (g_shutdown_type > NOT_VALID && g_shutdown_num_processes > 0) { 188 if (g_shutdown_type > NOT_VALID && g_shutdown_num_processes > 0) {
174 // Record the shutdown info so that we can put it into a histogram at next 189 // Record the shutdown info so that we can put it into a histogram at next
175 // startup. 190 // startup.
176 prefs->SetInteger(prefs::kShutdownType, g_shutdown_type); 191 prefs->SetInteger(prefs::kShutdownType, g_shutdown_type);
177 prefs->SetInteger(prefs::kShutdownNumProcesses, g_shutdown_num_processes); 192 prefs->SetInteger(prefs::kShutdownNumProcesses, g_shutdown_num_processes);
178 prefs->SetInteger(prefs::kShutdownNumProcessesSlow, 193 prefs->SetInteger(prefs::kShutdownNumProcessesSlow,
179 g_shutdown_num_processes_slow); 194 g_shutdown_num_processes_slow);
180 } 195 }
181 196
182 // Check local state for the restart flag so we can restart the session below. 197 // Check local state for the restart flag so we can restart the session later.
183 bool restart_last_session = false; 198 bool restart_last_session = false;
184 if (prefs->HasPrefPath(prefs::kRestartLastSessionOnShutdown)) { 199 if (prefs->HasPrefPath(prefs::kRestartLastSessionOnShutdown)) {
185 restart_last_session = 200 restart_last_session =
186 prefs->GetBoolean(prefs::kRestartLastSessionOnShutdown); 201 prefs->GetBoolean(prefs::kRestartLastSessionOnShutdown);
187 prefs->ClearPref(prefs::kRestartLastSessionOnShutdown); 202 prefs->ClearPref(prefs::kRestartLastSessionOnShutdown);
188 } 203 }
189
190 prefs->CommitPendingWrite();
191
192 #if defined(ENABLE_RLZ)
193 // Cleanup any statics created by RLZ. Must be done before NotificationService
194 // is destroyed.
195 rlz::RLZTracker::CleanupRlz();
196 #endif
197
198 return restart_last_session; 204 return restart_last_session;
199 } 205 }
200 206
201 void ShutdownPostThreadsStop(int shutdown_flags) { 207 void ShutdownPostThreadsStop(int shutdown_flags) {
202 delete g_browser_process; 208 delete g_browser_process;
203 g_browser_process = NULL; 209 g_browser_process = NULL;
204 210
205 // crbug.com/95079 - This needs to happen after the browser process object 211 // crbug.com/95079 - This needs to happen after the browser process object
206 // goes away. 212 // goes away.
207 ProfileManager::NukeDeletedProfilesFromDisk(); 213 ProfileManager::NukeDeletedProfilesFromDisk();
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 PrefService* prefs = g_browser_process->local_state(); 326 PrefService* prefs = g_browser_process->local_state();
321 ShutdownType type = 327 ShutdownType type =
322 static_cast<ShutdownType>(prefs->GetInteger(prefs::kShutdownType)); 328 static_cast<ShutdownType>(prefs->GetInteger(prefs::kShutdownType));
323 int num_procs = prefs->GetInteger(prefs::kShutdownNumProcesses); 329 int num_procs = prefs->GetInteger(prefs::kShutdownNumProcesses);
324 int num_procs_slow = prefs->GetInteger(prefs::kShutdownNumProcessesSlow); 330 int num_procs_slow = prefs->GetInteger(prefs::kShutdownNumProcessesSlow);
325 // clear the prefs immediately so we don't pick them up on a future run 331 // clear the prefs immediately so we don't pick them up on a future run
326 prefs->SetInteger(prefs::kShutdownType, NOT_VALID); 332 prefs->SetInteger(prefs::kShutdownType, NOT_VALID);
327 prefs->SetInteger(prefs::kShutdownNumProcesses, 0); 333 prefs->SetInteger(prefs::kShutdownNumProcesses, 0);
328 prefs->SetInteger(prefs::kShutdownNumProcessesSlow, 0); 334 prefs->SetInteger(prefs::kShutdownNumProcessesSlow, 0);
329 335
336 UMA_HISTOGRAM_ENUMERATION("Shutdown.ShutdownType", type, kNumShutdownTypes);
337
330 // Read and delete the file on the file thread. 338 // Read and delete the file on the file thread.
331 BrowserThread::PostTask( 339 BrowserThread::PostTask(
332 BrowserThread::FILE, FROM_HERE, 340 BrowserThread::FILE, FROM_HERE,
333 base::Bind(&ReadLastShutdownFile, type, num_procs, num_procs_slow)); 341 base::Bind(&ReadLastShutdownFile, type, num_procs, num_procs_slow));
334 } 342 }
335 343
336 void SetTryingToQuit(bool quitting) { 344 void SetTryingToQuit(bool quitting) {
337 g_trying_to_quit = quitting; 345 g_trying_to_quit = quitting;
338 346
339 if (quitting) 347 if (quitting)
(...skipping 26 matching lines...) Expand all
366 base::trace_event::TraceConfig trace_config( 374 base::trace_event::TraceConfig trace_config(
367 command_line.GetSwitchValueASCII(switches::kTraceShutdown), ""); 375 command_line.GetSwitchValueASCII(switches::kTraceShutdown), "");
368 content::TracingController::GetInstance()->StartTracing( 376 content::TracingController::GetInstance()->StartTracing(
369 trace_config, 377 trace_config,
370 content::TracingController::StartTracingDoneCallback()); 378 content::TracingController::StartTracingDoneCallback());
371 } 379 }
372 TRACE_EVENT0("shutdown", "StartShutdownTracing"); 380 TRACE_EVENT0("shutdown", "StartShutdownTracing");
373 } 381 }
374 382
375 } // namespace browser_shutdown 383 } // 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