Index: chromecast/browser/metrics/cast_metrics_service_client.cc |
diff --git a/chromecast/browser/metrics/cast_metrics_service_client.cc b/chromecast/browser/metrics/cast_metrics_service_client.cc |
index a6041cb60dcfa336a2651845a596cea994c165b7..8a06f57a704b3f136c59a529fec15ef268913e36 100644 |
--- a/chromecast/browser/metrics/cast_metrics_service_client.cc |
+++ b/chromecast/browser/metrics/cast_metrics_service_client.cc |
@@ -22,6 +22,7 @@ |
#include "chromecast/browser/metrics/cast_stability_metrics_provider.h" |
#include "chromecast/public/cast_sys_info.h" |
#include "components/metrics/client_info.h" |
+#include "components/metrics/enabled_state_provider.h" |
#include "components/metrics/gpu/gpu_metrics_provider.h" |
#include "components/metrics/metrics_provider.h" |
#include "components/metrics/metrics_service.h" |
@@ -87,6 +88,23 @@ GetReleaseChannelFromUpdateChannelName(const std::string& channel_name) { |
} // namespace |
+class CastMetricsServiceClient::CastEnabledStateProvider |
+ : public ::metrics::EnabledStateProvider { |
+ public: |
+ explicit CastEnabledStateProvider(PrefService* pref_service) |
+ : pref_service_(pref_service) {} |
+ ~CastEnabledStateProvider() override {} |
+ |
+ bool IsConsentGiven() override { |
+ return pref_service_->GetBoolean(prefs::kOptInStats); |
+ } |
+ |
+ private: |
+ PrefService* const pref_service_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(CastEnabledStateProvider); |
+}; |
+ |
// static |
std::unique_ptr<CastMetricsServiceClient> CastMetricsServiceClient::Create( |
base::TaskRunner* io_task_runner, |
@@ -288,6 +306,7 @@ CastMetricsServiceClient::CastMetricsServiceClient( |
platform_metrics_(nullptr), |
#endif // defined(OS_LINUX) |
task_runner_(base::ThreadTaskRunnerHandle::Get()), |
+ enabled_state_provider_(new CastEnabledStateProvider(pref_service)), |
request_context_(request_context) { |
} |
@@ -326,9 +345,7 @@ void CastMetricsServiceClient::Initialize(CastService* cast_service) { |
cast_service_ = cast_service; |
metrics_state_manager_ = ::metrics::MetricsStateManager::Create( |
- pref_service_, |
- base::Bind(&CastMetricsServiceClient::IsReportingEnabled, |
- base::Unretained(this)), |
+ pref_service_, enabled_state_provider_.get(), |
base::Bind(&CastMetricsServiceClient::StoreClientInfo, |
base::Unretained(this)), |
base::Bind(&CastMetricsServiceClient::LoadClientInfo, |
@@ -377,7 +394,7 @@ void CastMetricsServiceClient::Initialize(CastService* cast_service) { |
metrics_service_->LogNeedForCleanShutdown(); |
#endif // !defined(OS_ANDROID) |
- if (IsReportingEnabled()) |
+ if (enabled_state_provider_->IsReportingEnabled()) |
metrics_service_->Start(); |
#if defined(OS_LINUX) |
@@ -410,9 +427,5 @@ void CastMetricsServiceClient::Finalize() { |
metrics_service_->Stop(); |
} |
-bool CastMetricsServiceClient::IsReportingEnabled() { |
- return pref_service_->GetBoolean(prefs::kOptInStats); |
-} |
- |
} // namespace metrics |
} // namespace chromecast |