[ios] Hide Setting kMetricsReportingWifiOnly behind Feature Flag
UMA over Cellular feature removes kMetricsReportingWifiOnly local pref.
Tests will fail if retrieving or setting occurs.
Bug: 931289
Change-Id: Ibda70e02dde35f50426f6501210130a8c2834be0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1574837
Commit-Queue: Chris Lu <thegreenfrog@chromium.org>
Reviewed-by: Sergio Collazos <sczs@chromium.org>
Cr-Commit-Position: refs/heads/master@{#652469}
diff --git a/ios/chrome/browser/ui/settings/google_services/BUILD.gn b/ios/chrome/browser/ui/settings/google_services/BUILD.gn
index 1a1cc0b..0884a20 100644
--- a/ios/chrome/browser/ui/settings/google_services/BUILD.gn
+++ b/ios/chrome/browser/ui/settings/google_services/BUILD.gn
@@ -46,6 +46,7 @@
"//components/prefs",
"//components/strings",
"//components/sync",
+ "//components/ukm/ios:features",
"//components/unified_consent",
"//ios/chrome/app/strings",
"//ios/chrome/browser",
diff --git a/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm b/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm
index 2db8a92a..db8d5c98 100644
--- a/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm
+++ b/ios/chrome/browser/ui/settings/google_services/google_services_settings_mediator.mm
@@ -9,6 +9,7 @@
#include "components/metrics/metrics_pref_names.h"
#include "components/prefs/pref_service.h"
#include "components/sync/driver/sync_service.h"
+#include "components/ukm/ios/features.h"
#include "components/unified_consent/pref_names.h"
#include "ios/chrome/browser/pref_names.h"
#import "ios/chrome/browser/signin/authentication_service.h"
@@ -163,9 +164,13 @@
initWithPrefService:localPrefService
prefName:metrics::prefs::kMetricsReportingEnabled];
_sendDataUsagePreference.observer = self;
- _sendDataUsageWifiOnlyPreference = [[PrefBackedBoolean alloc]
- initWithPrefService:localPrefService
- prefName:prefs::kMetricsReportingWifiOnly];
+ if (!base::FeatureList::IsEnabled(kUmaCellular)) {
+ // When flag is not, kMetricsReportingWifiOnly pref has not been
+ // initialized, so don't create a PrefBackedBoolean for it.
+ _sendDataUsageWifiOnlyPreference = [[PrefBackedBoolean alloc]
+ initWithPrefService:localPrefService
+ prefName:prefs::kMetricsReportingWifiOnly];
+ }
_anonymizedDataCollectionPreference = [[PrefBackedBoolean alloc]
initWithPrefService:userPrefService
prefName:unified_consent::prefs::
@@ -630,7 +635,9 @@
break;
case ImproveChromeItemType:
self.sendDataUsagePreference.value = value;
- if (value) {
+ // Don't set value if sendDataUsageWifiOnlyPreference has not been
+ // allocated.
+ if (value && self.sendDataUsageWifiOnlyPreference) {
// Should be wifi only, until https://crbug.com/872101 is fixed.
self.sendDataUsageWifiOnlyPreference.value = YES;
}