Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(97)

Unified Diff: ios/chrome/browser/ui/settings/privacy_collection_view_controller.mm

Issue 2587023002: Upstream Chrome on iOS source code [8/11]. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/ui/settings/privacy_collection_view_controller.mm
diff --git a/ios/chrome/browser/ui/settings/privacy_collection_view_controller.mm b/ios/chrome/browser/ui/settings/privacy_collection_view_controller.mm
new file mode 100644
index 0000000000000000000000000000000000000000..96ab7e8926721f81cac34ed8581a0f754b4c00d3
--- /dev/null
+++ b/ios/chrome/browser/ui/settings/privacy_collection_view_controller.mm
@@ -0,0 +1,518 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "ios/chrome/browser/ui/settings/privacy_collection_view_controller.h"
+
+#include "base/ios/ios_util.h"
+#include "base/ios/weak_nsobject.h"
+#include "base/logging.h"
+#import "base/mac/foundation_util.h"
+#include "base/mac/scoped_nsobject.h"
+#include "components/google/core/browser/google_util.h"
+#include "components/handoff/pref_names_ios.h"
+#include "components/metrics/metrics_pref_names.h"
+#include "components/prefs/pref_change_registrar.h"
+#include "components/prefs/pref_service.h"
+#include "components/signin/core/browser/signin_manager.h"
+#include "components/strings/grit/components_strings.h"
+#include "ios/chrome/browser/application_context.h"
+#import "ios/chrome/browser/autofill/autofill_controller.h"
+#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
+#include "ios/chrome/browser/chrome_url_constants.h"
+#include "ios/chrome/browser/experimental_flags.h"
+#include "ios/chrome/browser/physical_web/physical_web_constants.h"
+#include "ios/chrome/browser/pref_names.h"
+#import "ios/chrome/browser/prefs/pref_observer_bridge.h"
+#import "ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrome.h"
+#import "ios/chrome/browser/ui/collection_view/cells/collection_view_detail_item.h"
+#import "ios/chrome/browser/ui/collection_view/cells/collection_view_footer_item.h"
+#import "ios/chrome/browser/ui/collection_view/cells/collection_view_switch_item.h"
+#import "ios/chrome/browser/ui/collection_view/cells/collection_view_text_item.h"
+#import "ios/chrome/browser/ui/collection_view/collection_view_model.h"
+#import "ios/chrome/browser/ui/contextual_search/touch_to_search_permissions_mediator.h"
+#import "ios/chrome/browser/ui/settings/accounts_collection_view_controller.h"
+#import "ios/chrome/browser/ui/settings/clear_browsing_data_collection_view_controller.h"
+#import "ios/chrome/browser/ui/settings/contextual_search_collection_view_controller.h"
+#import "ios/chrome/browser/ui/settings/dataplan_usage_collection_view_controller.h"
+#import "ios/chrome/browser/ui/settings/do_not_track_collection_view_controller.h"
+#import "ios/chrome/browser/ui/settings/handoff_collection_view_controller.h"
+#import "ios/chrome/browser/ui/settings/physical_web_collection_view_controller.h"
+#import "ios/chrome/browser/ui/settings/settings_navigation_controller.h"
+#import "ios/chrome/browser/ui/settings/settings_utils.h"
+#import "ios/chrome/browser/ui/settings/utils/pref_backed_boolean.h"
+#include "ios/chrome/browser/ui/ui_util.h"
+#include "ios/chrome/grit/ios_chromium_strings.h"
+#include "ios/chrome/grit/ios_strings.h"
+#import "ios/third_party/material_components_ios/src/components/Palettes/src/MaterialPalettes.h"
+#include "ios/web/public/web_capabilities.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/base/l10n/l10n_util_mac.h"
+#include "url/gurl.h"
+
+NSString* const kPrivacyCollectionViewId = @"kPrivacyCollectionViewId";
+
+namespace {
+
+typedef NS_ENUM(NSInteger, SectionIdentifier) {
+ SectionIdentifierOtherDevices = kSectionIdentifierEnumZero,
+ SectionIdentifierWebServices,
+ SectionIdentifierWebServicesFooter,
+ SectionIdentifierClearBrowsingData,
+};
+
+typedef NS_ENUM(NSInteger, ItemType) {
+ ItemTypeOtherDevicesHeader = kItemTypeEnumZero,
+ ItemTypeOtherDevicesHandoff,
+ ItemTypeWebServicesHeader,
+ ItemTypeWebServicesFooter,
+ ItemTypeWebServicesShowSuggestions,
+ ItemTypeWebServicesTouchToSearch,
+ ItemTypeWebServicesSendUsageData,
+ ItemTypeWebServicesDoNotTrack,
+ ItemTypeWebServicesPhysicalWeb,
+ ItemTypeClearBrowsingDataClear,
+};
+
+} // namespace
+
+@interface PrivacyCollectionViewController ()<BooleanObserver,
+ PrefObserverDelegate> {
+ ios::ChromeBrowserState* _browserState; // weak
+ base::scoped_nsobject<PrefBackedBoolean> _suggestionsEnabled;
+ // The item related to the switch for the show suggestions setting.
+ base::scoped_nsobject<CollectionViewSwitchItem> _showSuggestionsItem;
+ base::scoped_nsobject<TouchToSearchPermissionsMediator>
+ _touchToSearchPermissions;
+
+ // Pref observer to track changes to prefs.
+ std::unique_ptr<PrefObserverBridge> _prefObserverBridge;
+ // Registrar for pref changes notifications.
+ PrefChangeRegistrar _prefChangeRegistrar;
+ PrefChangeRegistrar _prefChangeRegistrarApplicationContext;
+
+ // Updatable Items
+ base::scoped_nsobject<CollectionViewDetailItem> _handoffDetailItem;
+ base::scoped_nsobject<CollectionViewDetailItem> _sendUsageDetailItem;
+}
+
+// Initialization methods for various model items.
+- (CollectionViewItem*)handoffDetailItem;
+- (CollectionViewSwitchItem*)showSuggestionsSwitchItem;
+- (CollectionViewItem*)showSuggestionsFooterItem;
+- (CollectionViewItem*)clearBrowsingDetailItem;
+- (CollectionViewItem*)sendUsageDetailItem;
+- (CollectionViewItem*)physicalWebDetailItem;
+- (CollectionViewItem*)contextualSearchDetailItem;
+- (CollectionViewItem*)doNotTrackDetailItem;
+
+@end
+
+@implementation PrivacyCollectionViewController
+
+#pragma mark - Initialization
+
+- (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState {
+ DCHECK(browserState);
+ self = [super initWithStyle:CollectionViewControllerStyleAppBar];
+ if (self) {
+ _browserState = browserState;
+ self.title =
+ l10n_util::GetNSString(IDS_OPTIONS_ADVANCED_SECTION_TITLE_PRIVACY);
+ self.collectionViewAccessibilityIdentifier = kPrivacyCollectionViewId;
+ _suggestionsEnabled.reset([[PrefBackedBoolean alloc]
+ initWithPrefService:_browserState->GetPrefs()
+ prefName:prefs::kSearchSuggestEnabled]);
+ [_suggestionsEnabled setObserver:self];
+
+ PrefService* prefService = _browserState->GetPrefs();
+
+ _prefChangeRegistrar.Init(prefService);
+ _prefChangeRegistrarApplicationContext.Init(
+ GetApplicationContext()->GetLocalState());
+ _prefObserverBridge.reset(new PrefObserverBridge(self));
+ // Register to observe any changes on Perf backed values displayed by the
+ // screen.
+ _prefObserverBridge->ObserveChangesForPreference(
+ prefs::kIosHandoffToOtherDevices, &_prefChangeRegistrar);
+ _prefObserverBridge->ObserveChangesForPreference(
+ metrics::prefs::kMetricsReportingEnabled,
+ &_prefChangeRegistrarApplicationContext);
+ _prefObserverBridge->ObserveChangesForPreference(
+ prefs::kMetricsReportingWifiOnly,
+ &_prefChangeRegistrarApplicationContext);
+
+ [self loadModel];
+ }
+ return self;
+}
+
+- (void)dealloc {
+ [_suggestionsEnabled setObserver:nil];
+ [super dealloc];
+}
+
+#pragma mark - SettingsRootCollectionViewController
+
+- (void)loadModel {
+ [super loadModel];
+
+ CollectionViewModel* model = self.collectionViewModel;
+
+ // Other Devices Section
+ [model addSectionWithIdentifier:SectionIdentifierOtherDevices];
+ CollectionViewTextItem* otherDevicesHeader = [[[CollectionViewTextItem alloc]
+ initWithType:ItemTypeOtherDevicesHeader] autorelease];
+ otherDevicesHeader.text =
+ l10n_util::GetNSString(IDS_IOS_OPTIONS_CONTINUITY_LABEL);
+ [model setHeader:otherDevicesHeader
+ forSectionWithIdentifier:SectionIdentifierOtherDevices];
+ [model addItem:[self handoffDetailItem]
+ toSectionWithIdentifier:SectionIdentifierOtherDevices];
+
+ // Web Services Section
+ [model addSectionWithIdentifier:SectionIdentifierWebServices];
+ CollectionViewTextItem* webServicesHeader = [[[CollectionViewTextItem alloc]
+ initWithType:ItemTypeWebServicesHeader] autorelease];
+ webServicesHeader.text =
+ l10n_util::GetNSString(IDS_IOS_OPTIONS_WEB_SERVICES_LABEL);
+ [model setHeader:webServicesHeader
+ forSectionWithIdentifier:SectionIdentifierWebServices];
+ _showSuggestionsItem.reset([[self showSuggestionsSwitchItem] retain]);
+ [model addItem:_showSuggestionsItem
+ toSectionWithIdentifier:SectionIdentifierWebServices];
+
+ if ([TouchToSearchPermissionsMediator isTouchToSearchAvailableOnDevice]) {
+ [model addItem:[self contextualSearchDetailItem]
+ toSectionWithIdentifier:SectionIdentifierWebServices];
+ }
+
+#if defined(GOOGLE_CHROME_BUILD)
+ [model addItem:[self sendUsageDetailItem]
+ toSectionWithIdentifier:SectionIdentifierWebServices];
+#endif
+
+ if (web::IsDoNotTrackSupported()) {
+ [model addItem:[self doNotTrackDetailItem]
+ toSectionWithIdentifier:SectionIdentifierWebServices];
+ }
+
+ if (experimental_flags::IsPhysicalWebEnabled()) {
+ [model addItem:[self physicalWebDetailItem]
+ toSectionWithIdentifier:SectionIdentifierWebServices];
+ }
+
+ // Footer Section
+ [model addSectionWithIdentifier:SectionIdentifierWebServicesFooter];
+ [model addItem:[self showSuggestionsFooterItem]
+ toSectionWithIdentifier:SectionIdentifierWebServicesFooter];
+
+ // Clear Browsing Section
+ [model addSectionWithIdentifier:SectionIdentifierClearBrowsingData];
+ [model addItem:[self clearBrowsingDetailItem]
+ toSectionWithIdentifier:SectionIdentifierClearBrowsingData];
+}
+
+#pragma mark - Model Objects
+
+- (CollectionViewItem*)handoffDetailItem {
+ NSString* detailText =
+ _browserState->GetPrefs()->GetBoolean(prefs::kIosHandoffToOtherDevices)
+ ? l10n_util::GetNSString(IDS_IOS_SETTING_ON)
+ : l10n_util::GetNSString(IDS_IOS_SETTING_OFF);
+ _handoffDetailItem.reset(
+ [[self detailItemWithType:ItemTypeOtherDevicesHandoff
+ titleId:IDS_IOS_OPTIONS_ENABLE_HANDOFF_TO_OTHER_DEVICES
+ detailText:detailText] retain]);
+
+ return _handoffDetailItem;
+}
+
+- (CollectionViewSwitchItem*)showSuggestionsSwitchItem {
+ CollectionViewSwitchItem* showSuggestionsSwitchItem =
+ [[[CollectionViewSwitchItem alloc]
+ initWithType:ItemTypeWebServicesShowSuggestions] autorelease];
+ showSuggestionsSwitchItem.text =
+ l10n_util::GetNSString(IDS_IOS_OPTIONS_SEARCH_URL_SUGGESTIONS);
+ showSuggestionsSwitchItem.on = [_suggestionsEnabled value];
+
+ return showSuggestionsSwitchItem;
+}
+
+- (CollectionViewItem*)showSuggestionsFooterItem {
+ CollectionViewFooterItem* showSuggestionsFooterItem =
+ [[[CollectionViewFooterItem alloc] initWithType:ItemTypeWebServicesFooter]
+ autorelease];
+ showSuggestionsFooterItem.text =
+ l10n_util::GetNSString(IDS_IOS_OPTIONS_PRIVACY_FOOTER);
+ showSuggestionsFooterItem.linkURL = google_util::AppendGoogleLocaleParam(
+ GURL(kPrivacyLearnMoreURL),
+ GetApplicationContext()->GetApplicationLocale());
+ showSuggestionsFooterItem.linkDelegate = self;
+
+ return showSuggestionsFooterItem;
+}
+
+- (CollectionViewItem*)clearBrowsingDetailItem {
+ return [self detailItemWithType:ItemTypeClearBrowsingDataClear
+ titleId:IDS_IOS_CLEAR_BROWSING_DATA_TITLE
+ detailText:nil];
+}
+
+- (CollectionViewItem*)sendUsageDetailItem {
+ NSString* detailText = [DataplanUsageCollectionViewController
+ currentLabelForPreference:GetApplicationContext()->GetLocalState()
+ basePref:metrics::prefs::kMetricsReportingEnabled
+ wifiPref:prefs::kMetricsReportingWifiOnly];
+ _sendUsageDetailItem.reset(
+ [[self detailItemWithType:ItemTypeWebServicesSendUsageData
+ titleId:IDS_IOS_OPTIONS_SEND_USAGE_DATA
+ detailText:detailText] retain]);
+
+ return _sendUsageDetailItem;
+}
+
+- (CollectionViewItem*)physicalWebDetailItem {
+ PrefService* prefService = GetApplicationContext()->GetLocalState();
+ int preferenceState = prefService->GetInteger(prefs::kIosPhysicalWebEnabled);
+ BOOL enabled = [PhysicalWebCollectionViewController
+ shouldEnableForPreferenceState:preferenceState];
+ NSString* detailText = enabled ? l10n_util::GetNSString(IDS_IOS_SETTING_ON)
+ : l10n_util::GetNSString(IDS_IOS_SETTING_OFF);
+ return [self detailItemWithType:ItemTypeWebServicesPhysicalWeb
+ titleId:IDS_IOS_OPTIONS_ENABLE_PHYSICAL_WEB
+ detailText:detailText];
+}
+
+- (CollectionViewItem*)contextualSearchDetailItem {
+ _touchToSearchPermissions.reset([[TouchToSearchPermissionsMediator alloc]
+ initWithBrowserState:_browserState]);
+ NSString* detailText =
+ [_touchToSearchPermissions preferenceState] == TouchToSearch::DISABLED
+ ? l10n_util::GetNSString(IDS_IOS_SETTING_OFF)
+ : l10n_util::GetNSString(IDS_IOS_SETTING_ON);
+ return [self detailItemWithType:ItemTypeWebServicesTouchToSearch
+ titleId:IDS_IOS_CONTEXTUAL_SEARCH_TITLE
+ detailText:detailText];
+}
+
+- (CollectionViewItem*)doNotTrackDetailItem {
+ NSString* detailText =
+ _browserState->GetPrefs()->GetBoolean(prefs::kEnableDoNotTrack)
+ ? l10n_util::GetNSString(IDS_IOS_SETTING_ON)
+ : l10n_util::GetNSString(IDS_IOS_SETTING_OFF);
+ return [self detailItemWithType:ItemTypeWebServicesDoNotTrack
+ titleId:IDS_IOS_OPTIONS_DO_NOT_TRACK_MOBILE
+ detailText:detailText];
+}
+
+- (CollectionViewDetailItem*)detailItemWithType:(NSInteger)type
+ titleId:(NSInteger)titleId
+ detailText:(NSString*)detailText {
+ CollectionViewDetailItem* detailItem =
+ [[[CollectionViewDetailItem alloc] initWithType:type] autorelease];
+ detailItem.text = l10n_util::GetNSString(titleId);
+ detailItem.detailText = detailText;
+ detailItem.accessoryType = MDCCollectionViewCellAccessoryDisclosureIndicator;
+ detailItem.accessibilityTraits |= UIAccessibilityTraitButton;
+
+ return detailItem;
+}
+
+#pragma mark UICollectionViewDataSource
+
+- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView
+ cellForItemAtIndexPath:(NSIndexPath*)indexPath {
+ UICollectionViewCell* cell =
+ [super collectionView:collectionView cellForItemAtIndexPath:indexPath];
+
+ NSInteger itemType =
+ [self.collectionViewModel itemTypeForIndexPath:indexPath];
+
+ if (itemType == ItemTypeWebServicesShowSuggestions) {
+ CollectionViewSwitchCell* switchCell =
+ base::mac::ObjCCastStrict<CollectionViewSwitchCell>(cell);
+ [switchCell.switchView addTarget:self
+ action:@selector(showSuggestionsToggled:)
+ forControlEvents:UIControlEventValueChanged];
+ }
+
+ return cell;
+}
+
+- (UICollectionReusableView*)collectionView:(UICollectionView*)collectionView
+ viewForSupplementaryElementOfKind:(NSString*)kind
+ atIndexPath:(NSIndexPath*)indexPath {
+ UICollectionReusableView* view = [super collectionView:collectionView
+ viewForSupplementaryElementOfKind:kind
+ atIndexPath:indexPath];
+
+ MDCCollectionViewTextCell* textCell =
+ base::mac::ObjCCast<MDCCollectionViewTextCell>(view);
+ if (textCell) {
+ textCell.textLabel.textColor = [[MDCPalette greyPalette] tint500];
+ }
+ return view;
+}
+
+#pragma mark UICollectionViewDelegate
+- (void)collectionView:(UICollectionView*)collectionView
+ didSelectItemAtIndexPath:(NSIndexPath*)indexPath {
+ [super collectionView:collectionView didSelectItemAtIndexPath:indexPath];
+ NSInteger itemType =
+ [self.collectionViewModel itemTypeForIndexPath:indexPath];
+
+ // Items that push a new view controller.
+ base::scoped_nsobject<UIViewController> controller;
+
+ switch (itemType) {
+ case ItemTypeOtherDevicesHandoff:
+ controller.reset([[HandoffCollectionViewController alloc]
+ initWithBrowserState:_browserState]);
+ break;
+ case ItemTypeWebServicesTouchToSearch:
+ controller.reset([[ContextualSearchCollectionViewController alloc]
+ initWithPermissions:_touchToSearchPermissions]);
+ break;
+ case ItemTypeWebServicesSendUsageData:
+ controller.reset([[DataplanUsageCollectionViewController alloc]
+ initWithPrefs:GetApplicationContext()->GetLocalState()
+ basePref:metrics::prefs::kMetricsReportingEnabled
+ wifiPref:prefs::kMetricsReportingWifiOnly
+ title:l10n_util::GetNSString(
+ IDS_IOS_OPTIONS_SEND_USAGE_DATA)]);
+ break;
+ case ItemTypeWebServicesDoNotTrack:
+ controller.reset([[DoNotTrackCollectionViewController alloc]
+ initWithPrefs:_browserState->GetPrefs()]);
+ break;
+ case ItemTypeWebServicesPhysicalWeb:
+ controller.reset([[PhysicalWebCollectionViewController alloc]
+ initWithPrefs:GetApplicationContext()->GetLocalState()]);
+ break;
+ case ItemTypeClearBrowsingDataClear:
+ controller.reset([[ClearBrowsingDataCollectionViewController alloc]
+ initWithBrowserState:_browserState]);
+ break;
+ case ItemTypeWebServicesShowSuggestions:
+ default:
+ break;
+ }
+
+ if (controller.get()) {
+ [self.navigationController pushViewController:controller animated:YES];
+ }
+}
+
+#pragma mark MDCCollectionViewStylingDelegate
+
+- (BOOL)collectionView:(UICollectionView*)collectionView
+ shouldHideItemBackgroundAtIndexPath:(NSIndexPath*)indexPath {
+ NSInteger sectionIdentifier =
+ [self.collectionViewModel sectionIdentifierForSection:indexPath.section];
+
+ if (sectionIdentifier == SectionIdentifierWebServicesFooter) {
+ return YES;
+ }
+ return NO;
+}
+
+- (BOOL)collectionView:(UICollectionView*)collectionView
+ hidesInkViewAtIndexPath:(NSIndexPath*)indexPath {
+ NSInteger type = [self.collectionViewModel itemTypeForIndexPath:indexPath];
+ switch (type) {
+ case ItemTypeWebServicesFooter:
+ case ItemTypeWebServicesShowSuggestions:
+ return YES;
+ default:
+ return NO;
+ }
+}
+
+- (CGFloat)collectionView:(UICollectionView*)collectionView
+ cellHeightAtIndexPath:(NSIndexPath*)indexPath {
+ CollectionViewItem* item =
+ [self.collectionViewModel itemAtIndexPath:indexPath];
+
+ if (item.type == ItemTypeWebServicesFooter)
+ return [MDCCollectionViewCell
+ cr_preferredHeightForWidth:CGRectGetWidth(collectionView.bounds)
+ forItem:item];
+ return MDCCellDefaultOneLineHeight;
+}
+
+- (MDCCollectionViewCellStyle)collectionView:(UICollectionView*)collectionView
+ cellStyleForSection:(NSInteger)section {
+ NSInteger sectionIdentifier =
+ [self.collectionViewModel sectionIdentifierForSection:section];
+
+ if (sectionIdentifier == SectionIdentifierWebServicesFooter) {
+ return MDCCollectionViewCellStyleDefault;
+ }
+
+ return self.styler.cellStyle;
+}
+
+#pragma mark - BooleanObserver
+
+- (void)booleanDidChange:(id<ObservableBoolean>)observableBoolean {
+ DCHECK_EQ(observableBoolean, _suggestionsEnabled.get());
+
+ // Update the item.
+ _showSuggestionsItem.get().on = [_suggestionsEnabled value];
+
+ // Update the cell.
+ [self reconfigureCellsForItems:@[ _showSuggestionsItem ]
+ inSectionWithIdentifier:SectionIdentifierWebServices];
+}
+
+#pragma mark - Actions
+
+- (void)showSuggestionsToggled:(UISwitch*)sender {
+ NSIndexPath* switchPath = [self.collectionViewModel
+ indexPathForItemType:ItemTypeWebServicesShowSuggestions
+ sectionIdentifier:SectionIdentifierWebServices];
+
+ CollectionViewSwitchItem* switchItem =
+ base::mac::ObjCCastStrict<CollectionViewSwitchItem>(
+ [self.collectionViewModel itemAtIndexPath:switchPath]);
+ CollectionViewSwitchCell* switchCell =
+ base::mac::ObjCCastStrict<CollectionViewSwitchCell>(
+ [self.collectionView cellForItemAtIndexPath:switchPath]);
+
+ DCHECK_EQ(switchCell.switchView, sender);
+ BOOL isOn = switchCell.switchView.isOn;
+ switchItem.on = isOn;
+ [_suggestionsEnabled setValue:isOn];
+}
+
+#pragma mark - PrefObserverDelegate
+
+- (void)onPreferenceChanged:(const std::string&)preferenceName {
+ if (preferenceName == prefs::kIosHandoffToOtherDevices) {
+ NSString* detailText =
+ _browserState->GetPrefs()->GetBoolean(prefs::kIosHandoffToOtherDevices)
+ ? l10n_util::GetNSString(IDS_IOS_SETTING_ON)
+ : l10n_util::GetNSString(IDS_IOS_SETTING_OFF);
+ _handoffDetailItem.get().detailText = detailText;
+ [self reconfigureCellsForItems:@[ _handoffDetailItem ]
+ inSectionWithIdentifier:SectionIdentifierOtherDevices];
+ return;
+ }
+
+ if (preferenceName == metrics::prefs::kMetricsReportingEnabled ||
+ preferenceName == prefs::kMetricsReportingWifiOnly) {
+ NSString* detailText = [DataplanUsageCollectionViewController
+ currentLabelForPreference:GetApplicationContext()->GetLocalState()
+ basePref:metrics::prefs::kMetricsReportingEnabled
+ wifiPref:prefs::kMetricsReportingWifiOnly];
+
+ _sendUsageDetailItem.get().detailText = detailText;
+
+ [self reconfigureCellsForItems:@[ _sendUsageDetailItem ]
+ inSectionWithIdentifier:SectionIdentifierWebServices];
+ return;
+ }
+}
+
+@end

Powered by Google App Engine
This is Rietveld 408576698