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 |