| OLD | NEW | 
|---|
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 "android_webview/native/aw_metrics_service_client_impl.h" | 5 #include "android_webview/native/aw_metrics_service_client_impl.h" | 
| 6 | 6 | 
| 7 #include "android_webview/common/aw_version_info_values.h" | 7 #include "android_webview/common/aw_version_info_values.h" | 
| 8 #include "android_webview/jni/AwMetricsServiceClient_jni.h" | 8 #include "android_webview/jni/AwMetricsServiceClient_jni.h" | 
|  | 9 #include "android_webview/native/aw_metrics_log_uploader.h" | 
|  | 10 #include "base/android/build_info.h" | 
| 9 #include "base/bind.h" | 11 #include "base/bind.h" | 
| 10 #include "base/files/file_util.h" | 12 #include "base/files/file_util.h" | 
| 11 #include "base/guid.h" | 13 #include "base/guid.h" | 
| 12 #include "base/i18n/rtl.h" | 14 #include "base/i18n/rtl.h" | 
| 13 #include "base/threading/sequenced_worker_pool.h" | 15 #include "base/threading/sequenced_worker_pool.h" | 
| 14 #include "components/metrics/call_stack_profile_metrics_provider.h" | 16 #include "components/metrics/call_stack_profile_metrics_provider.h" | 
| 15 #include "components/metrics/enabled_state_provider.h" | 17 #include "components/metrics/enabled_state_provider.h" | 
| 16 #include "components/metrics/gpu/gpu_metrics_provider.h" | 18 #include "components/metrics/gpu/gpu_metrics_provider.h" | 
| 17 #include "components/metrics/metrics_log_uploader.h" | 19 #include "components/metrics/metrics_log_uploader.h" | 
| 18 #include "components/metrics/metrics_pref_names.h" | 20 #include "components/metrics/metrics_pref_names.h" | 
| 19 #include "components/metrics/metrics_service.h" | 21 #include "components/metrics/metrics_service.h" | 
| 20 #include "components/metrics/metrics_state_manager.h" | 22 #include "components/metrics/metrics_state_manager.h" | 
| 21 #include "components/metrics/net/net_metrics_log_uploader.h" |  | 
| 22 #include "components/metrics/profiler/profiler_metrics_provider.h" | 23 #include "components/metrics/profiler/profiler_metrics_provider.h" | 
| 23 #include "components/metrics/ui/screen_info_metrics_provider.h" | 24 #include "components/metrics/ui/screen_info_metrics_provider.h" | 
| 24 #include "components/metrics/url_constants.h" | 25 #include "components/metrics/url_constants.h" | 
| 25 #include "components/prefs/pref_service.h" | 26 #include "components/prefs/pref_service.h" | 
| 26 #include "content/public/browser/browser_thread.h" | 27 #include "content/public/browser/browser_thread.h" | 
| 27 | 28 | 
| 28 namespace android_webview { | 29 namespace android_webview { | 
| 29 | 30 | 
| 30 base::LazyInstance<AwMetricsServiceClientImpl>::Leaky g_lazy_instance_; | 31 base::LazyInstance<AwMetricsServiceClientImpl>::Leaky g_lazy_instance_; | 
| 31 | 32 | 
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 139 } | 140 } | 
| 140 | 141 | 
| 141 bool AwMetricsServiceClientImpl::IsConsentGiven() { | 142 bool AwMetricsServiceClientImpl::IsConsentGiven() { | 
| 142   DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 143   DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 
| 143   return is_enabled_; | 144   return is_enabled_; | 
| 144 } | 145 } | 
| 145 | 146 | 
| 146 void AwMetricsServiceClientImpl::SetMetricsEnabled(bool enabled) { | 147 void AwMetricsServiceClientImpl::SetMetricsEnabled(bool enabled) { | 
| 147   DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 148   DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 
| 148 | 149 | 
|  | 150   // For now, UMA is only enabled on future versions. | 
|  | 151   if (base::android::BuildInfo::GetInstance()->sdk_int() <= | 
|  | 152       base::android::SDK_VERSION_NOUGAT) { | 
|  | 153     return; | 
|  | 154   } | 
|  | 155 | 
| 149   if (is_enabled_ != enabled) { | 156   if (is_enabled_ != enabled) { | 
| 150     if (enabled) { | 157     if (enabled) { | 
| 151       // TODO(paulmiller): Actually enable metrics when the server-side is ready | 158       metrics_service_->Start(); | 
| 152       //metrics_service_->Start(); |  | 
| 153     } else { | 159     } else { | 
| 154       metrics_service_->Stop(); | 160       metrics_service_->Stop(); | 
| 155     } | 161     } | 
| 156     is_enabled_ = enabled; | 162     is_enabled_ = enabled; | 
| 157   } | 163   } | 
| 158 } | 164 } | 
| 159 | 165 | 
| 160 metrics::MetricsService* AwMetricsServiceClientImpl::GetMetricsService() { | 166 metrics::MetricsService* AwMetricsServiceClientImpl::GetMetricsService() { | 
| 161   return metrics_service_.get(); | 167   return metrics_service_.get(); | 
| 162 } | 168 } | 
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 200     const base::Closure& done_callback) { | 206     const base::Closure& done_callback) { | 
| 201   done_callback.Run(); | 207   done_callback.Run(); | 
| 202 } | 208 } | 
| 203 | 209 | 
| 204 std::unique_ptr<metrics::MetricsLogUploader> | 210 std::unique_ptr<metrics::MetricsLogUploader> | 
| 205 AwMetricsServiceClientImpl::CreateUploader( | 211 AwMetricsServiceClientImpl::CreateUploader( | 
| 206     base::StringPiece server_url, | 212     base::StringPiece server_url, | 
| 207     base::StringPiece mime_type, | 213     base::StringPiece mime_type, | 
| 208     metrics::MetricsLogUploader::MetricServiceType service_type, | 214     metrics::MetricsLogUploader::MetricServiceType service_type, | 
| 209     const base::Callback<void(int)>& on_upload_complete) { | 215     const base::Callback<void(int)>& on_upload_complete) { | 
|  | 216   // server_url & mime_type are unused because WebView uses the platform logging | 
|  | 217   // mechanism instead of the normal UMA server. | 
| 210   return std::unique_ptr<::metrics::MetricsLogUploader>( | 218   return std::unique_ptr<::metrics::MetricsLogUploader>( | 
| 211       new metrics::NetMetricsLogUploader(request_context_, server_url, | 219       new AwMetricsLogUploader(on_upload_complete)); | 
| 212                                          mime_type, service_type, |  | 
| 213                                          on_upload_complete)); |  | 
| 214 } | 220 } | 
| 215 | 221 | 
| 216 base::TimeDelta AwMetricsServiceClientImpl::GetStandardUploadInterval() { | 222 base::TimeDelta AwMetricsServiceClientImpl::GetStandardUploadInterval() { | 
|  | 223   // The platform logging mechanism is responsible for upload frequency; this | 
|  | 224   // just specifies how frequently to provide logs to the platform. | 
| 217   return base::TimeDelta::FromMinutes(kUploadIntervalMinutes); | 225   return base::TimeDelta::FromMinutes(kUploadIntervalMinutes); | 
| 218 } | 226 } | 
| 219 | 227 | 
| 220 AwMetricsServiceClientImpl::AwMetricsServiceClientImpl() | 228 AwMetricsServiceClientImpl::AwMetricsServiceClientImpl() | 
| 221     : is_enabled_(false), | 229     : is_enabled_(false), | 
| 222       pref_service_(nullptr), | 230       pref_service_(nullptr), | 
| 223       request_context_(nullptr) {} | 231       request_context_(nullptr) {} | 
| 224 | 232 | 
| 225 AwMetricsServiceClientImpl::~AwMetricsServiceClientImpl() {} | 233 AwMetricsServiceClientImpl::~AwMetricsServiceClientImpl() {} | 
| 226 | 234 | 
| 227 // static | 235 // static | 
| 228 void SetMetricsEnabled( | 236 void SetMetricsEnabled( | 
| 229     JNIEnv* env, | 237     JNIEnv* env, | 
| 230     const base::android::JavaParamRef<jclass>& jcaller, | 238     const base::android::JavaParamRef<jclass>& jcaller, | 
| 231     jboolean enabled) { | 239     jboolean enabled) { | 
| 232   g_lazy_instance_.Pointer()->SetMetricsEnabled(enabled); | 240   g_lazy_instance_.Pointer()->SetMetricsEnabled(enabled); | 
| 233 } | 241 } | 
| 234 | 242 | 
| 235 bool RegisterAwMetricsServiceClient(JNIEnv* env) { | 243 bool RegisterAwMetricsServiceClient(JNIEnv* env) { | 
| 236   return RegisterNativesImpl(env); | 244   return RegisterNativesImpl(env); | 
| 237 } | 245 } | 
| 238 | 246 | 
| 239 }  // namespace android_webview | 247 }  // namespace android_webview | 
| OLD | NEW | 
|---|