OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "ios/chrome/browser/metrics/ios_chrome_metrics_service_client.h" | 5 #include "ios/chrome/browser/metrics/ios_chrome_metrics_service_client.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 #include "components/variations/variations_associated_data.h" | 44 #include "components/variations/variations_associated_data.h" |
45 #include "components/version_info/version_info.h" | 45 #include "components/version_info/version_info.h" |
46 #include "ios/chrome/browser/application_context.h" | 46 #include "ios/chrome/browser/application_context.h" |
47 #include "ios/chrome/browser/chrome_paths.h" | 47 #include "ios/chrome/browser/chrome_paths.h" |
48 #include "ios/chrome/browser/google/google_brand.h" | 48 #include "ios/chrome/browser/google/google_brand.h" |
49 #include "ios/chrome/browser/metrics/ios_chrome_stability_metrics_provider.h" | 49 #include "ios/chrome/browser/metrics/ios_chrome_stability_metrics_provider.h" |
50 #include "ios/chrome/browser/metrics/mobile_session_shutdown_metrics_provider.h" | 50 #include "ios/chrome/browser/metrics/mobile_session_shutdown_metrics_provider.h" |
51 #include "ios/chrome/browser/signin/ios_chrome_signin_status_metrics_provider_de
legate.h" | 51 #include "ios/chrome/browser/signin/ios_chrome_signin_status_metrics_provider_de
legate.h" |
52 #include "ios/chrome/browser/sync/ios_chrome_sync_client.h" | 52 #include "ios/chrome/browser/sync/ios_chrome_sync_client.h" |
53 #include "ios/chrome/browser/tab_parenting_global_observer.h" | 53 #include "ios/chrome/browser/tab_parenting_global_observer.h" |
54 #include "ios/chrome/browser/ui/browser_otr_state.h" | 54 #include "ios/chrome/browser/ui/browser_list_ios.h" |
55 #include "ios/chrome/common/channel_info.h" | 55 #include "ios/chrome/common/channel_info.h" |
56 #include "ios/web/public/web_thread.h" | 56 #include "ios/web/public/web_thread.h" |
57 | 57 |
58 IOSChromeMetricsServiceClient::IOSChromeMetricsServiceClient( | 58 IOSChromeMetricsServiceClient::IOSChromeMetricsServiceClient( |
59 metrics::MetricsStateManager* state_manager) | 59 metrics::MetricsStateManager* state_manager) |
60 : metrics_state_manager_(state_manager), | 60 : metrics_state_manager_(state_manager), |
61 stability_metrics_provider_(nullptr), | 61 stability_metrics_provider_(nullptr), |
62 profiler_metrics_provider_(nullptr), | 62 profiler_metrics_provider_(nullptr), |
63 drive_metrics_provider_(nullptr), | 63 drive_metrics_provider_(nullptr), |
64 start_time_(base::TimeTicks::Now()), | 64 start_time_(base::TimeTicks::Now()), |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 metrics::TrackingSynchronizer::FetchProfilerDataAsynchronously( | 145 metrics::TrackingSynchronizer::FetchProfilerDataAsynchronously( |
146 weak_ptr_factory_.GetWeakPtr()); | 146 weak_ptr_factory_.GetWeakPtr()); |
147 } else { | 147 } else { |
148 CollectFinalHistograms(); | 148 CollectFinalHistograms(); |
149 } | 149 } |
150 } | 150 } |
151 | 151 |
152 std::unique_ptr<metrics::MetricsLogUploader> | 152 std::unique_ptr<metrics::MetricsLogUploader> |
153 IOSChromeMetricsServiceClient::CreateUploader( | 153 IOSChromeMetricsServiceClient::CreateUploader( |
154 const base::Callback<void(int)>& on_upload_complete) { | 154 const base::Callback<void(int)>& on_upload_complete) { |
155 return std::unique_ptr<metrics::MetricsLogUploader>( | 155 return base::MakeUnique<metrics::NetMetricsLogUploader>( |
156 new metrics::NetMetricsLogUploader( | 156 GetApplicationContext()->GetSystemURLRequestContext(), |
157 GetApplicationContext()->GetSystemURLRequestContext(), | 157 metrics::kDefaultMetricsServerUrl, metrics::kDefaultMetricsMimeType, |
158 metrics::kDefaultMetricsServerUrl, metrics::kDefaultMetricsMimeType, | 158 on_upload_complete); |
159 on_upload_complete)); | |
160 } | 159 } |
161 | 160 |
162 base::TimeDelta IOSChromeMetricsServiceClient::GetStandardUploadInterval() { | 161 base::TimeDelta IOSChromeMetricsServiceClient::GetStandardUploadInterval() { |
163 return metrics::GetUploadInterval(); | 162 return metrics::GetUploadInterval(); |
164 } | 163 } |
165 | 164 |
166 base::string16 IOSChromeMetricsServiceClient::GetRegistryBackupKey() { | 165 base::string16 IOSChromeMetricsServiceClient::GetRegistryBackupKey() { |
167 return base::string16(); | 166 return base::string16(); |
168 } | 167 } |
169 | 168 |
170 void IOSChromeMetricsServiceClient::OnRendererProcessCrash() { | 169 void IOSChromeMetricsServiceClient::OnRendererProcessCrash() { |
171 stability_metrics_provider_->LogRendererCrash(); | 170 stability_metrics_provider_->LogRendererCrash(); |
172 } | 171 } |
173 | 172 |
174 void IOSChromeMetricsServiceClient::WebStateDidStartLoading( | 173 void IOSChromeMetricsServiceClient::WebStateDidStartLoading( |
175 web::WebState* web_state) { | 174 web::WebState* web_state) { |
176 metrics_service_->OnApplicationNotIdle(); | 175 metrics_service_->OnApplicationNotIdle(); |
177 } | 176 } |
178 | 177 |
179 void IOSChromeMetricsServiceClient::WebStateDidStopLoading( | 178 void IOSChromeMetricsServiceClient::WebStateDidStopLoading( |
180 web::WebState* web_state) { | 179 web::WebState* web_state) { |
181 metrics_service_->OnApplicationNotIdle(); | 180 metrics_service_->OnApplicationNotIdle(); |
182 } | 181 } |
183 | 182 |
184 void IOSChromeMetricsServiceClient::Initialize() { | 183 void IOSChromeMetricsServiceClient::Initialize() { |
185 metrics_service_.reset(new metrics::MetricsService( | 184 metrics_service_ = base::MakeUnique<metrics::MetricsService>( |
186 metrics_state_manager_, this, GetApplicationContext()->GetLocalState())); | 185 metrics_state_manager_, this, GetApplicationContext()->GetLocalState()); |
187 | 186 |
188 // Register metrics providers. | 187 // Register metrics providers. |
189 metrics_service_->RegisterMetricsProvider( | 188 metrics_service_->RegisterMetricsProvider( |
190 std::unique_ptr<metrics::MetricsProvider>( | 189 base::MakeUnique<metrics::NetworkMetricsProvider>( |
191 new metrics::NetworkMetricsProvider( | 190 web::WebThread::GetBlockingPool())); |
192 web::WebThread::GetBlockingPool()))); | |
193 | 191 |
194 // Currently, we configure OmniboxMetricsProvider to not log events to UMA | 192 // Currently, we configure OmniboxMetricsProvider to not log events to UMA |
195 // if there is a single incognito session visible. In the future, it may | 193 // if there is a single incognito session visible. In the future, it may |
196 // be worth revisiting this to still log events from non-incognito sessions. | 194 // be worth revisiting this to still log events from non-incognito sessions. |
197 metrics_service_->RegisterMetricsProvider( | 195 metrics_service_->RegisterMetricsProvider( |
198 std::unique_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider( | 196 base::MakeUnique<OmniboxMetricsProvider>( |
199 base::Bind(&::IsOffTheRecordSessionActive)))); | 197 base::Bind(&BrowserListIOS::IsOffTheRecordSessionActive))); |
200 | 198 |
201 stability_metrics_provider_ = new IOSChromeStabilityMetricsProvider( | 199 { |
202 GetApplicationContext()->GetLocalState()); | 200 auto stability_metrics_provider = |
203 metrics_service_->RegisterMetricsProvider( | 201 base::MakeUnique<IOSChromeStabilityMetricsProvider>( |
204 std::unique_ptr<metrics::MetricsProvider>(stability_metrics_provider_)); | 202 GetApplicationContext()->GetLocalState()); |
| 203 stability_metrics_provider_ = stability_metrics_provider.get(); |
| 204 metrics_service_->RegisterMetricsProvider( |
| 205 std::move(stability_metrics_provider)); |
| 206 } |
205 | 207 |
206 metrics_service_->RegisterMetricsProvider( | 208 metrics_service_->RegisterMetricsProvider( |
207 std::unique_ptr<metrics::MetricsProvider>( | 209 base::MakeUnique<metrics::ScreenInfoMetricsProvider>()); |
208 new metrics::ScreenInfoMetricsProvider)); | |
209 | 210 |
210 drive_metrics_provider_ = new metrics::DriveMetricsProvider( | 211 { |
211 web::WebThread::GetTaskRunnerForThread(web::WebThread::FILE), | 212 auto drive_metrics_provider = |
212 ios::FILE_LOCAL_STATE); | 213 base::MakeUnique<metrics::DriveMetricsProvider>( |
213 metrics_service_->RegisterMetricsProvider( | 214 web::WebThread::GetTaskRunnerForThread(web::WebThread::FILE), |
214 std::unique_ptr<metrics::MetricsProvider>(drive_metrics_provider_)); | 215 ios::FILE_LOCAL_STATE); |
| 216 drive_metrics_provider_ = drive_metrics_provider.get(); |
| 217 metrics_service_->RegisterMetricsProvider( |
| 218 std::move(drive_metrics_provider)); |
| 219 } |
215 | 220 |
216 profiler_metrics_provider_ = new metrics::ProfilerMetricsProvider( | 221 { |
217 base::Bind(&metrics::IsCellularLogicEnabled)); | 222 auto profiler_metrics_provider = |
218 metrics_service_->RegisterMetricsProvider( | 223 base::MakeUnique<metrics::ProfilerMetricsProvider>( |
219 std::unique_ptr<metrics::MetricsProvider>(profiler_metrics_provider_)); | 224 base::Bind(&metrics::IsCellularLogicEnabled)); |
| 225 profiler_metrics_provider_ = profiler_metrics_provider.get(); |
| 226 metrics_service_->RegisterMetricsProvider( |
| 227 std::move(profiler_metrics_provider)); |
| 228 } |
220 | 229 |
221 metrics_service_->RegisterMetricsProvider( | 230 metrics_service_->RegisterMetricsProvider( |
222 std::unique_ptr<metrics::MetricsProvider>( | 231 base::MakeUnique<metrics::CallStackProfileMetricsProvider>()); |
223 new metrics::CallStackProfileMetricsProvider)); | |
224 | 232 |
225 metrics_service_->RegisterMetricsProvider( | 233 metrics_service_->RegisterMetricsProvider( |
226 std::unique_ptr<metrics::MetricsProvider>( | 234 base::WrapUnique(SigninStatusMetricsProvider::CreateInstance( |
227 SigninStatusMetricsProvider::CreateInstance(base::WrapUnique( | 235 base::MakeUnique<IOSChromeSigninStatusMetricsProviderDelegate>()))); |
228 new IOSChromeSigninStatusMetricsProviderDelegate)))); | |
229 | 236 |
230 metrics_service_->RegisterMetricsProvider( | 237 metrics_service_->RegisterMetricsProvider( |
231 std::unique_ptr<metrics::MetricsProvider>( | 238 base::MakeUnique<MobileSessionShutdownMetricsProvider>( |
232 new MobileSessionShutdownMetricsProvider(metrics_service_.get()))); | 239 metrics_service_.get())); |
233 | 240 |
234 metrics_service_->RegisterMetricsProvider( | 241 metrics_service_->RegisterMetricsProvider( |
235 std::unique_ptr<metrics::MetricsProvider>( | 242 base::MakeUnique<syncer::DeviceCountMetricsProvider>( |
236 new syncer::DeviceCountMetricsProvider( | 243 base::Bind(&IOSChromeSyncClient::GetDeviceInfoTrackers))); |
237 base::Bind(&IOSChromeSyncClient::GetDeviceInfoTrackers)))); | |
238 | 244 |
239 metrics_service_->RegisterMetricsProvider( | 245 metrics_service_->RegisterMetricsProvider( |
240 std::unique_ptr<metrics::MetricsProvider>( | 246 base::MakeUnique<translate::TranslateRankerMetricsProvider>()); |
241 new translate::TranslateRankerMetricsProvider())); | |
242 } | 247 } |
243 | 248 |
244 void IOSChromeMetricsServiceClient::OnInitTaskGotDriveMetrics() { | 249 void IOSChromeMetricsServiceClient::OnInitTaskGotDriveMetrics() { |
245 finished_init_task_callback_.Run(); | 250 finished_init_task_callback_.Run(); |
246 } | 251 } |
247 | 252 |
248 bool IOSChromeMetricsServiceClient::ShouldIncludeProfilerDataInLog() { | 253 bool IOSChromeMetricsServiceClient::ShouldIncludeProfilerDataInLog() { |
249 // Upload profiler data at most once per session. | 254 // Upload profiler data at most once per session. |
250 if (has_uploaded_profiler_data_) | 255 if (has_uploaded_profiler_data_) |
251 return false; | 256 return false; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
311 | 316 |
312 void IOSChromeMetricsServiceClient::OnURLOpenedFromOmnibox(OmniboxLog* log) { | 317 void IOSChromeMetricsServiceClient::OnURLOpenedFromOmnibox(OmniboxLog* log) { |
313 metrics_service_->OnApplicationNotIdle(); | 318 metrics_service_->OnApplicationNotIdle(); |
314 } | 319 } |
315 | 320 |
316 metrics::EnableMetricsDefault | 321 metrics::EnableMetricsDefault |
317 IOSChromeMetricsServiceClient::GetMetricsReportingDefaultState() { | 322 IOSChromeMetricsServiceClient::GetMetricsReportingDefaultState() { |
318 return metrics::GetMetricsReportingDefaultState( | 323 return metrics::GetMetricsReportingDefaultState( |
319 GetApplicationContext()->GetLocalState()); | 324 GetApplicationContext()->GetLocalState()); |
320 } | 325 } |
OLD | NEW |