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

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

Issue 306023010: Introduce ProfilerMetricsProvider (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
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
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 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698