Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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" | 190 #include "chrome/browser/metrics/metrics_state_manager.h" |
| 191 #include "chrome/browser/metrics/network_metrics_provider.h" | 191 #include "chrome/browser/metrics/network_metrics_provider.h" |
| 192 #include "chrome/browser/metrics/omnibox_metrics_provider.h" | 192 #include "chrome/browser/metrics/omnibox_metrics_provider.h" |
| 193 #include "chrome/browser/metrics/profiler_metrics_provider.h" | |
| 193 #include "chrome/browser/metrics/tracking_synchronizer.h" | 194 #include "chrome/browser/metrics/tracking_synchronizer.h" |
| 194 #include "chrome/common/pref_names.h" | 195 #include "chrome/common/pref_names.h" |
| 195 #include "chrome/common/variations/variations_util.h" | 196 #include "chrome/common/variations/variations_util.h" |
| 196 #include "components/metrics/metrics_log_base.h" | 197 #include "components/metrics/metrics_log_base.h" |
| 197 #include "components/metrics/metrics_log_manager.h" | 198 #include "components/metrics/metrics_log_manager.h" |
| 198 #include "components/metrics/metrics_log_uploader.h" | 199 #include "components/metrics/metrics_log_uploader.h" |
| 199 #include "components/metrics/metrics_pref_names.h" | 200 #include "components/metrics/metrics_pref_names.h" |
| 200 #include "components/metrics/metrics_reporting_scheduler.h" | 201 #include "components/metrics/metrics_reporting_scheduler.h" |
| 201 #include "components/metrics/metrics_service_client.h" | 202 #include "components/metrics/metrics_service_client.h" |
| 202 #include "components/variations/entropy_provider.h" | 203 #include "components/variations/entropy_provider.h" |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 388 | 389 |
| 389 // TODO(asvitkine): Move these out of MetricsService. | 390 // TODO(asvitkine): Move these out of MetricsService. |
| 390 RegisterMetricsProvider( | 391 RegisterMetricsProvider( |
| 391 scoped_ptr<metrics::MetricsProvider>(new NetworkMetricsProvider)); | 392 scoped_ptr<metrics::MetricsProvider>(new NetworkMetricsProvider)); |
| 392 RegisterMetricsProvider( | 393 RegisterMetricsProvider( |
| 393 scoped_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider)); | 394 scoped_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider)); |
| 394 RegisterMetricsProvider( | 395 RegisterMetricsProvider( |
| 395 scoped_ptr<metrics::MetricsProvider>(new ChromeStabilityMetricsProvider)); | 396 scoped_ptr<metrics::MetricsProvider>(new ChromeStabilityMetricsProvider)); |
| 396 RegisterMetricsProvider( | 397 RegisterMetricsProvider( |
| 397 scoped_ptr<metrics::MetricsProvider>(new GPUMetricsProvider())); | 398 scoped_ptr<metrics::MetricsProvider>(new GPUMetricsProvider())); |
| 399 profiler_metrics_provider_ = new ProfilerMetricsProvider; | |
| 400 RegisterMetricsProvider( | |
| 401 scoped_ptr<metrics::MetricsProvider>(profiler_metrics_provider_)); | |
| 398 | 402 |
| 399 #if defined(OS_WIN) | 403 #if defined(OS_WIN) |
| 400 google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin; | 404 google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin; |
| 401 RegisterMetricsProvider(scoped_ptr<metrics::MetricsProvider>( | 405 RegisterMetricsProvider(scoped_ptr<metrics::MetricsProvider>( |
| 402 google_update_metrics_provider_)); | 406 google_update_metrics_provider_)); |
| 403 #endif | 407 #endif |
| 404 | 408 |
| 405 #if defined(ENABLE_PLUGINS) | 409 #if defined(ENABLE_PLUGINS) |
| 406 plugin_metrics_provider_ = new PluginMetricsProvider(local_state_); | 410 plugin_metrics_provider_ = new PluginMetricsProvider(local_state_); |
| 407 RegisterMetricsProvider(scoped_ptr<metrics::MetricsProvider>( | 411 RegisterMetricsProvider(scoped_ptr<metrics::MetricsProvider>( |
| (...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 728 | 732 |
| 729 log_manager_.current_log()->RecordUserAction(action); | 733 log_manager_.current_log()->RecordUserAction(action); |
| 730 HandleIdleSinceLastTransmission(false); | 734 HandleIdleSinceLastTransmission(false); |
| 731 } | 735 } |
| 732 | 736 |
| 733 void MetricsService::ReceivedProfilerData( | 737 void MetricsService::ReceivedProfilerData( |
| 734 const tracked_objects::ProcessDataSnapshot& process_data, | 738 const tracked_objects::ProcessDataSnapshot& process_data, |
| 735 int process_type) { | 739 int process_type) { |
| 736 DCHECK_EQ(INIT_TASK_SCHEDULED, state_); | 740 DCHECK_EQ(INIT_TASK_SCHEDULED, state_); |
| 737 | 741 |
| 738 // Upon the first callback, create the initial log so that we can immediately | 742 profiler_metrics_provider_->RecordProfilerData(process_data, process_type); |
| 739 // save the profiler data. | |
| 740 if (!initial_metrics_log_.get()) { | |
| 741 initial_metrics_log_ = CreateLog(MetricsLog::ONGOING_LOG); | |
| 742 NotifyOnDidCreateMetricsLog(); | |
| 743 } | |
| 744 | |
| 745 initial_metrics_log_->RecordProfilerData(process_data, process_type); | |
| 746 } | 743 } |
| 747 | 744 |
| 748 void MetricsService::FinishedReceivingProfilerData() { | 745 void MetricsService::FinishedReceivingProfilerData() { |
| 749 DCHECK_EQ(INIT_TASK_SCHEDULED, state_); | 746 DCHECK_EQ(INIT_TASK_SCHEDULED, state_); |
| 750 state_ = INIT_TASK_DONE; | 747 state_ = INIT_TASK_DONE; |
| 748 | |
| 749 // Create the initial log. | |
| 750 DCHECK(!initial_metrics_log_.get()); | |
|
Alexei Svitkine (slow)
2014/06/02 20:25:02
Can you turn this back into an if to be safe?
blundell
2014/06/03 12:23:47
Done.
| |
| 751 initial_metrics_log_ = CreateLog(MetricsLog::ONGOING_LOG); | |
| 752 NotifyOnDidCreateMetricsLog(); | |
| 753 | |
| 751 scheduler_->InitTaskComplete(); | 754 scheduler_->InitTaskComplete(); |
| 752 } | 755 } |
| 753 | 756 |
| 754 void MetricsService::GetUptimes(PrefService* pref, | 757 void MetricsService::GetUptimes(PrefService* pref, |
| 755 base::TimeDelta* incremental_uptime, | 758 base::TimeDelta* incremental_uptime, |
| 756 base::TimeDelta* uptime) { | 759 base::TimeDelta* uptime) { |
| 757 base::TimeTicks now = base::TimeTicks::Now(); | 760 base::TimeTicks now = base::TimeTicks::Now(); |
| 758 // If this is the first call, init |first_updated_time_| and | 761 // If this is the first call, init |first_updated_time_| and |
| 759 // |last_updated_time_|. | 762 // |last_updated_time_|. |
| 760 if (last_updated_time_.is_null()) { | 763 if (last_updated_time_.is_null()) { |
| (...skipping 570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1331 RecordCurrentState(local_state_); | 1334 RecordCurrentState(local_state_); |
| 1332 } | 1335 } |
| 1333 | 1336 |
| 1334 void MetricsService::RecordCurrentState(PrefService* pref) { | 1337 void MetricsService::RecordCurrentState(PrefService* pref) { |
| 1335 pref->SetInt64(prefs::kStabilityLastTimestampSec, Time::Now().ToTimeT()); | 1338 pref->SetInt64(prefs::kStabilityLastTimestampSec, Time::Now().ToTimeT()); |
| 1336 | 1339 |
| 1337 #if defined(ENABLE_PLUGINS) | 1340 #if defined(ENABLE_PLUGINS) |
| 1338 plugin_metrics_provider_->RecordPluginChanges(); | 1341 plugin_metrics_provider_->RecordPluginChanges(); |
| 1339 #endif | 1342 #endif |
| 1340 } | 1343 } |
| OLD | NEW |