Index: ios/chrome/browser/metrics/ios_chrome_metrics_services_manager_client.mm |
diff --git a/ios/chrome/browser/metrics/ios_chrome_metrics_services_manager_client.mm b/ios/chrome/browser/metrics/ios_chrome_metrics_services_manager_client.mm |
index 1337ab2c92b998542a0eafcfcedb0d0a297e4399..c94fc370c59ada87f364efd648cb75c6f6179a61 100644 |
--- a/ios/chrome/browser/metrics/ios_chrome_metrics_services_manager_client.mm |
+++ b/ios/chrome/browser/metrics/ios_chrome_metrics_services_manager_client.mm |
@@ -7,6 +7,7 @@ |
#include "base/command_line.h" |
#include "base/logging.h" |
#include "base/memory/ptr_util.h" |
+#include "components/metrics/enabled_state_provider.h" |
#include "components/metrics/metrics_state_manager.h" |
#include "components/prefs/pref_service.h" |
#include "components/rappor/rappor_service.h" |
@@ -30,9 +31,23 @@ std::unique_ptr<metrics::ClientInfo> LoadMetricsClientInfo() { |
} // namespace |
+class IOSChromeMetricsServicesManagerClient::IOSChromeEnabledStateProvider |
+ : public metrics::EnabledStateProvider { |
+ public: |
+ IOSChromeEnabledStateProvider() {} |
+ ~IOSChromeEnabledStateProvider() override {} |
+ |
+ bool IsConsentGiven() override { |
+ return IOSChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled(); |
+ } |
+ |
+ DISALLOW_COPY_AND_ASSIGN(IOSChromeEnabledStateProvider); |
+}; |
+ |
IOSChromeMetricsServicesManagerClient::IOSChromeMetricsServicesManagerClient( |
PrefService* local_state) |
- : local_state_(local_state) { |
+ : enabled_state_provider_(new IOSChromeEnabledStateProvider()), |
+ local_state_(local_state) { |
DCHECK(local_state); |
} |
@@ -78,7 +93,7 @@ bool IOSChromeMetricsServicesManagerClient::IsSafeBrowsingEnabled( |
} |
bool IOSChromeMetricsServicesManagerClient::IsMetricsReportingEnabled() { |
- return IOSChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled(); |
+ return enabled_state_provider_->IsReportingEnabled(); |
} |
bool IOSChromeMetricsServicesManagerClient::OnlyDoMetricsRecording() { |
@@ -91,8 +106,7 @@ IOSChromeMetricsServicesManagerClient::GetMetricsStateManager() { |
DCHECK(thread_checker_.CalledOnValidThread()); |
if (!metrics_state_manager_) { |
metrics_state_manager_ = metrics::MetricsStateManager::Create( |
- local_state_, base::Bind(&IOSChromeMetricsServiceAccessor:: |
- IsMetricsAndCrashReportingEnabled), |
+ local_state_, enabled_state_provider_.get(), |
base::Bind(&PostStoreMetricsClientInfo), |
base::Bind(&LoadMetricsClientInfo)); |
} |