OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chromecast/metrics/cast_metrics_service_client.h" | 5 #include "chromecast/metrics/cast_metrics_service_client.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/i18n/rtl.h" | 8 #include "base/i18n/rtl.h" |
9 #include "chromecast/common/chromecast_config.h" | 9 #include "chromecast/common/chromecast_config.h" |
10 #include "chromecast/common/chromecast_switches.h" | 10 #include "chromecast/common/chromecast_switches.h" |
11 #include "chromecast/metrics/platform_metrics_providers.h" | 11 #include "chromecast/metrics/platform_metrics_providers.h" |
12 #include "components/metrics/client_info.h" | 12 #include "components/metrics/client_info.h" |
| 13 #include "components/metrics/gpu/gpu_metrics_provider.h" |
13 #include "components/metrics/metrics_provider.h" | 14 #include "components/metrics/metrics_provider.h" |
14 #include "components/metrics/metrics_service.h" | 15 #include "components/metrics/metrics_service.h" |
15 #include "components/metrics/metrics_state_manager.h" | 16 #include "components/metrics/metrics_state_manager.h" |
16 #include "components/metrics/net/net_metrics_log_uploader.h" | 17 #include "components/metrics/net/net_metrics_log_uploader.h" |
| 18 #include "components/metrics/net/network_metrics_provider.h" |
| 19 #include "components/metrics/profiler/profiler_metrics_provider.h" |
17 | 20 |
18 namespace chromecast { | 21 namespace chromecast { |
19 namespace metrics { | 22 namespace metrics { |
20 | 23 |
21 namespace { | 24 namespace { |
22 | 25 |
23 void StoreClientInfo(const ::metrics::ClientInfo& client_info) { | 26 void StoreClientInfo(const ::metrics::ClientInfo& client_info) { |
24 } | 27 } |
25 | 28 |
26 scoped_ptr<::metrics::ClientInfo> LoadClientInfo() { | 29 scoped_ptr<::metrics::ClientInfo> LoadClientInfo() { |
27 return scoped_ptr<::metrics::ClientInfo>(); | 30 return scoped_ptr<::metrics::ClientInfo>(); |
28 } | 31 } |
29 | 32 |
30 } // namespace | 33 } // namespace |
31 | 34 |
32 // static | 35 // static |
33 CastMetricsServiceClient* CastMetricsServiceClient::Create( | 36 CastMetricsServiceClient* CastMetricsServiceClient::Create( |
| 37 base::TaskRunner* io_task_runner, |
34 PrefService* pref_service, | 38 PrefService* pref_service, |
35 net::URLRequestContextGetter* request_context) { | 39 net::URLRequestContextGetter* request_context) { |
36 return new CastMetricsServiceClient(pref_service, request_context); | 40 return new CastMetricsServiceClient(io_task_runner, |
| 41 pref_service, |
| 42 request_context); |
37 } | 43 } |
38 | 44 |
39 void CastMetricsServiceClient::SetMetricsClientId( | 45 void CastMetricsServiceClient::SetMetricsClientId( |
40 const std::string& client_id) { | 46 const std::string& client_id) { |
41 LOG(INFO) << "Metrics client ID set: " << client_id; | 47 LOG(INFO) << "Metrics client ID set: " << client_id; |
42 PlatformSetClientID(client_id); | 48 PlatformSetClientID(client_id); |
43 } | 49 } |
44 | 50 |
45 bool CastMetricsServiceClient::IsOffTheRecordSessionActive() { | 51 bool CastMetricsServiceClient::IsOffTheRecordSessionActive() { |
46 // Chromecast behaves as "off the record" w/r/t recording browsing state, | 52 // Chromecast behaves as "off the record" w/r/t recording browsing state, |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 | 106 |
101 void CastMetricsServiceClient::EnableMetricsService(bool enabled) { | 107 void CastMetricsServiceClient::EnableMetricsService(bool enabled) { |
102 if (enabled) { | 108 if (enabled) { |
103 metrics_service_->Start(); | 109 metrics_service_->Start(); |
104 } else { | 110 } else { |
105 metrics_service_->Stop(); | 111 metrics_service_->Stop(); |
106 } | 112 } |
107 } | 113 } |
108 | 114 |
109 CastMetricsServiceClient::CastMetricsServiceClient( | 115 CastMetricsServiceClient::CastMetricsServiceClient( |
| 116 base::TaskRunner* io_task_runner, |
110 PrefService* pref_service, | 117 PrefService* pref_service, |
111 net::URLRequestContextGetter* request_context) | 118 net::URLRequestContextGetter* request_context) |
112 : metrics_state_manager_(::metrics::MetricsStateManager::Create( | 119 : metrics_state_manager_(::metrics::MetricsStateManager::Create( |
113 pref_service, | 120 pref_service, |
114 base::Bind(&CastMetricsServiceClient::IsReportingEnabled, | 121 base::Bind(&CastMetricsServiceClient::IsReportingEnabled, |
115 base::Unretained(this)), | 122 base::Unretained(this)), |
116 base::Bind(&StoreClientInfo), | 123 base::Bind(&StoreClientInfo), |
117 base::Bind(&LoadClientInfo))), | 124 base::Bind(&LoadClientInfo))), |
118 metrics_service_(new ::metrics::MetricsService( | 125 metrics_service_(new ::metrics::MetricsService( |
119 metrics_state_manager_.get(), | 126 metrics_state_manager_.get(), |
120 this, | 127 this, |
121 pref_service)), | 128 pref_service)), |
122 request_context_(request_context) { | 129 request_context_(request_context) { |
123 // Always create a client id as it may also be used by crash reporting, | 130 // Always create a client id as it may also be used by crash reporting, |
124 // (indirectly) included in feedback, and can be queried during setup. | 131 // (indirectly) included in feedback, and can be queried during setup. |
125 // For UMA and crash reporting, associated opt-in settings will control | 132 // For UMA and crash reporting, associated opt-in settings will control |
126 // sending reports as directed by the user. | 133 // sending reports as directed by the user. |
127 // For Setup (which also communicates the user's opt-in preferences), | 134 // For Setup (which also communicates the user's opt-in preferences), |
128 // report the client-id and expect that setup will handle the current opt-in | 135 // report the client-id and expect that setup will handle the current opt-in |
129 // value. | 136 // value. |
130 metrics_state_manager_->ForceClientIdCreation(); | 137 metrics_state_manager_->ForceClientIdCreation(); |
131 | 138 |
132 // TODO(gunsch): Add the following: GPUMetricsProvider, | 139 metrics_service_->RegisterMetricsProvider( |
133 // NetworkMetricsProvider, ProfilerMetricsProvider. See: crbug/404791 | 140 scoped_ptr< ::metrics::MetricsProvider>( |
| 141 new ::metrics::GPUMetricsProvider)); |
| 142 metrics_service_->RegisterMetricsProvider( |
| 143 scoped_ptr< ::metrics::MetricsProvider>( |
| 144 new NetworkMetricsProvider(io_task_runner))); |
| 145 metrics_service_->RegisterMetricsProvider( |
| 146 scoped_ptr< ::metrics::MetricsProvider>( |
| 147 new ::metrics::ProfilerMetricsProvider)); |
134 RegisterPlatformMetricsProviders(metrics_service_.get()); | 148 RegisterPlatformMetricsProviders(metrics_service_.get()); |
135 | 149 |
136 metrics_service_->InitializeMetricsRecordingState(); | 150 metrics_service_->InitializeMetricsRecordingState(); |
137 | 151 |
138 if (IsReportingEnabled()) | 152 if (IsReportingEnabled()) |
139 metrics_service_->Start(); | 153 metrics_service_->Start(); |
140 } | 154 } |
141 | 155 |
142 CastMetricsServiceClient::~CastMetricsServiceClient() { | 156 CastMetricsServiceClient::~CastMetricsServiceClient() { |
143 } | 157 } |
144 | 158 |
145 bool CastMetricsServiceClient::IsReportingEnabled() { | 159 bool CastMetricsServiceClient::IsReportingEnabled() { |
146 return PlatformIsReportingEnabled(); | 160 return PlatformIsReportingEnabled(); |
147 } | 161 } |
148 | 162 |
149 } // namespace metrics | 163 } // namespace metrics |
150 } // namespace chromecast | 164 } // namespace chromecast |
OLD | NEW |