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

Side by Side Diff: chrome/browser/metrics/metrics_service.cc

Issue 312583002: Move MetricsStateManager into the Metrics component. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Response to review Created 6 years, 6 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 | Annotate | Revision Log
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 //------------------------------------------------------------------------------ 5 //------------------------------------------------------------------------------
6 // Description of the life cycle of a instance of MetricsService. 6 // Description of the life cycle of a instance of MetricsService.
7 // 7 //
8 // OVERVIEW 8 // OVERVIEW
9 // 9 //
10 // A MetricsService instance is typically created at application startup. It is 10 // A MetricsService instance is typically created at application startup. It is
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 #include "base/threading/thread.h" 180 #include "base/threading/thread.h"
181 #include "base/threading/thread_restrictions.h" 181 #include "base/threading/thread_restrictions.h"
182 #include "base/tracked_objects.h" 182 #include "base/tracked_objects.h"
183 #include "base/values.h" 183 #include "base/values.h"
184 #include "chrome/browser/browser_process.h" 184 #include "chrome/browser/browser_process.h"
185 #include "chrome/browser/chrome_notification_types.h" 185 #include "chrome/browser/chrome_notification_types.h"
186 #include "chrome/browser/io_thread.h" 186 #include "chrome/browser/io_thread.h"
187 #include "chrome/browser/metrics/chrome_stability_metrics_provider.h" 187 #include "chrome/browser/metrics/chrome_stability_metrics_provider.h"
188 #include "chrome/browser/metrics/gpu_metrics_provider.h" 188 #include "chrome/browser/metrics/gpu_metrics_provider.h"
189 #include "chrome/browser/metrics/metrics_log.h" 189 #include "chrome/browser/metrics/metrics_log.h"
190 #include "chrome/browser/metrics/metrics_state_manager.h"
191 #include "chrome/browser/metrics/network_metrics_provider.h" 190 #include "chrome/browser/metrics/network_metrics_provider.h"
192 #include "chrome/browser/metrics/omnibox_metrics_provider.h" 191 #include "chrome/browser/metrics/omnibox_metrics_provider.h"
193 #include "chrome/browser/metrics/profiler_metrics_provider.h" 192 #include "chrome/browser/metrics/profiler_metrics_provider.h"
194 #include "chrome/browser/metrics/tracking_synchronizer.h" 193 #include "chrome/browser/metrics/tracking_synchronizer.h"
195 #include "chrome/common/pref_names.h" 194 #include "chrome/common/pref_names.h"
196 #include "chrome/common/variations/variations_util.h" 195 #include "chrome/common/variations/variations_util.h"
197 #include "components/metrics/metrics_log_base.h" 196 #include "components/metrics/metrics_log_base.h"
198 #include "components/metrics/metrics_log_manager.h" 197 #include "components/metrics/metrics_log_manager.h"
199 #include "components/metrics/metrics_log_uploader.h" 198 #include "components/metrics/metrics_log_uploader.h"
200 #include "components/metrics/metrics_pref_names.h" 199 #include "components/metrics/metrics_pref_names.h"
201 #include "components/metrics/metrics_reporting_scheduler.h" 200 #include "components/metrics/metrics_reporting_scheduler.h"
202 #include "components/metrics/metrics_service_client.h" 201 #include "components/metrics/metrics_service_client.h"
202 #include "components/metrics/metrics_state_manager.h"
203 #include "components/variations/entropy_provider.h" 203 #include "components/variations/entropy_provider.h"
204 204
205 #if defined(ENABLE_PLUGINS) 205 #if defined(ENABLE_PLUGINS)
206 // TODO(asvitkine): Move this out of MetricsService. 206 // TODO(asvitkine): Move this out of MetricsService.
207 #include "chrome/browser/metrics/plugin_metrics_provider.h" 207 #include "chrome/browser/metrics/plugin_metrics_provider.h"
208 #endif 208 #endif
209 209
210 #if defined(OS_WIN) 210 #if defined(OS_WIN)
211 #include "chrome/browser/metrics/google_update_metrics_provider_win.h" 211 #include "chrome/browser/metrics/google_update_metrics_provider_win.h"
212 #endif 212 #endif
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 metrics::MetricsStateManager::RegisterPrefs(registry); 312 metrics::MetricsStateManager::RegisterPrefs(registry);
313 313
314 registry->RegisterInt64Pref(prefs::kStabilityLaunchTimeSec, 0); 314 registry->RegisterInt64Pref(prefs::kStabilityLaunchTimeSec, 0);
315 registry->RegisterInt64Pref(prefs::kStabilityLastTimestampSec, 0); 315 registry->RegisterInt64Pref(prefs::kStabilityLastTimestampSec, 0);
316 registry->RegisterStringPref(prefs::kStabilityStatsVersion, std::string()); 316 registry->RegisterStringPref(prefs::kStabilityStatsVersion, std::string());
317 registry->RegisterInt64Pref(prefs::kStabilityStatsBuildTime, 0); 317 registry->RegisterInt64Pref(prefs::kStabilityStatsBuildTime, 0);
318 registry->RegisterBooleanPref(prefs::kStabilityExitedCleanly, true); 318 registry->RegisterBooleanPref(prefs::kStabilityExitedCleanly, true);
319 registry->RegisterIntegerPref(prefs::kStabilityExecutionPhase, 319 registry->RegisterIntegerPref(prefs::kStabilityExecutionPhase,
320 UNINITIALIZED_PHASE); 320 UNINITIALIZED_PHASE);
321 registry->RegisterBooleanPref(prefs::kStabilitySessionEndCompleted, true); 321 registry->RegisterBooleanPref(prefs::kStabilitySessionEndCompleted, true);
322 registry->RegisterIntegerPref(prefs::kMetricsSessionID, -1); 322 registry->RegisterIntegerPref(metrics::prefs::kMetricsSessionID, -1);
323 registry->RegisterIntegerPref(prefs::kStabilityLaunchCount, 0); 323 registry->RegisterIntegerPref(prefs::kStabilityLaunchCount, 0);
324 registry->RegisterIntegerPref(prefs::kStabilityCrashCount, 0); 324 registry->RegisterIntegerPref(prefs::kStabilityCrashCount, 0);
325 registry->RegisterIntegerPref(prefs::kStabilityIncompleteSessionEndCount, 0); 325 registry->RegisterIntegerPref(prefs::kStabilityIncompleteSessionEndCount, 0);
326 registry->RegisterIntegerPref(prefs::kStabilityBreakpadRegistrationFail, 0); 326 registry->RegisterIntegerPref(prefs::kStabilityBreakpadRegistrationFail, 0);
327 registry->RegisterIntegerPref(prefs::kStabilityBreakpadRegistrationSuccess, 327 registry->RegisterIntegerPref(prefs::kStabilityBreakpadRegistrationSuccess,
328 0); 328 0);
329 registry->RegisterIntegerPref(prefs::kStabilityDebuggerPresent, 0); 329 registry->RegisterIntegerPref(prefs::kStabilityDebuggerPresent, 0);
330 registry->RegisterIntegerPref(prefs::kStabilityDebuggerNotPresent, 0); 330 registry->RegisterIntegerPref(prefs::kStabilityDebuggerNotPresent, 0);
331 331
332 registry->RegisterStringPref(prefs::kStabilitySavedSystemProfile, 332 registry->RegisterStringPref(prefs::kStabilitySavedSystemProfile,
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 626
627 //------------------------------------------------------------------------------ 627 //------------------------------------------------------------------------------
628 // Initialization methods 628 // Initialization methods
629 629
630 void MetricsService::InitializeMetricsState() { 630 void MetricsService::InitializeMetricsState() {
631 local_state_->SetString(prefs::kStabilityStatsVersion, 631 local_state_->SetString(prefs::kStabilityStatsVersion,
632 client_->GetVersionString()); 632 client_->GetVersionString());
633 local_state_->SetInt64(prefs::kStabilityStatsBuildTime, 633 local_state_->SetInt64(prefs::kStabilityStatsBuildTime,
634 MetricsLog::GetBuildTime()); 634 MetricsLog::GetBuildTime());
635 635
636 session_id_ = local_state_->GetInteger(prefs::kMetricsSessionID); 636 session_id_ = local_state_->GetInteger(metrics::prefs::kMetricsSessionID);
637 637
638 if (!local_state_->GetBoolean(prefs::kStabilityExitedCleanly)) { 638 if (!local_state_->GetBoolean(prefs::kStabilityExitedCleanly)) {
639 IncrementPrefValue(prefs::kStabilityCrashCount); 639 IncrementPrefValue(prefs::kStabilityCrashCount);
640 // Reset flag, and wait until we call LogNeedForCleanShutdown() before 640 // Reset flag, and wait until we call LogNeedForCleanShutdown() before
641 // monitoring. 641 // monitoring.
642 local_state_->SetBoolean(prefs::kStabilityExitedCleanly, true); 642 local_state_->SetBoolean(prefs::kStabilityExitedCleanly, true);
643 643
644 // TODO(rtenneti): On windows, consider saving/getting execution_phase from 644 // TODO(rtenneti): On windows, consider saving/getting execution_phase from
645 // the registry. 645 // the registry.
646 int execution_phase = 646 int execution_phase =
647 local_state_->GetInteger(prefs::kStabilityExecutionPhase); 647 local_state_->GetInteger(prefs::kStabilityExecutionPhase);
648 UMA_HISTOGRAM_SPARSE_SLOWLY("Chrome.Browser.CrashedExecutionPhase", 648 UMA_HISTOGRAM_SPARSE_SLOWLY("Chrome.Browser.CrashedExecutionPhase",
649 execution_phase); 649 execution_phase);
650 650
651 // If the previous session didn't exit cleanly, then prepare an initial 651 // If the previous session didn't exit cleanly, then prepare an initial
652 // stability log if UMA is enabled. 652 // stability log if UMA is enabled.
653 if (state_manager_->IsMetricsReportingEnabled()) 653 if (state_manager_->IsMetricsReportingEnabled())
654 PrepareInitialStabilityLog(); 654 PrepareInitialStabilityLog();
655 } 655 }
656 656
657 // Update session ID. 657 // Update session ID.
658 ++session_id_; 658 ++session_id_;
659 local_state_->SetInteger(prefs::kMetricsSessionID, session_id_); 659 local_state_->SetInteger(metrics::prefs::kMetricsSessionID, session_id_);
660 660
661 // Stability bookkeeping 661 // Stability bookkeeping
662 IncrementPrefValue(prefs::kStabilityLaunchCount); 662 IncrementPrefValue(prefs::kStabilityLaunchCount);
663 663
664 DCHECK_EQ(UNINITIALIZED_PHASE, execution_phase_); 664 DCHECK_EQ(UNINITIALIZED_PHASE, execution_phase_);
665 SetExecutionPhase(START_METRICS_RECORDING, local_state_); 665 SetExecutionPhase(START_METRICS_RECORDING, local_state_);
666 666
667 if (!local_state_->GetBoolean(prefs::kStabilitySessionEndCompleted)) { 667 if (!local_state_->GetBoolean(prefs::kStabilitySessionEndCompleted)) {
668 IncrementPrefValue(prefs::kStabilityIncompleteSessionEndCount); 668 IncrementPrefValue(prefs::kStabilityIncompleteSessionEndCount);
669 // This is marked false when we get a WM_ENDSESSION. 669 // This is marked false when we get a WM_ENDSESSION.
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after
1335 RecordCurrentState(local_state_); 1335 RecordCurrentState(local_state_);
1336 } 1336 }
1337 1337
1338 void MetricsService::RecordCurrentState(PrefService* pref) { 1338 void MetricsService::RecordCurrentState(PrefService* pref) {
1339 pref->SetInt64(prefs::kStabilityLastTimestampSec, Time::Now().ToTimeT()); 1339 pref->SetInt64(prefs::kStabilityLastTimestampSec, Time::Now().ToTimeT());
1340 1340
1341 #if defined(ENABLE_PLUGINS) 1341 #if defined(ENABLE_PLUGINS)
1342 plugin_metrics_provider_->RecordPluginChanges(); 1342 plugin_metrics_provider_->RecordPluginChanges();
1343 #endif 1343 #endif
1344 } 1344 }
OLDNEW
« no previous file with comments | « chrome/browser/metrics/metrics_log_unittest.cc ('k') | chrome/browser/metrics/metrics_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698