[iOS] Fix: Clear Browsing Data CollectionView UI consistency
- Manager holds a reference to the time range item upon creation and update the item text when notified a change of time range.
- Replace the |timePeriod| property with one that is synced with preferences.
Bug: 944230
Change-Id: Id815963830eb2337ae1dfed931259b3d10de68fe
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1532010
Commit-Queue: Huanzhong Huang <huanzhong@chromium.org>
Reviewed-by: Gauthier Ambard <gambard@chromium.org>
Cr-Commit-Position: refs/heads/master@{#643396}
diff --git a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm
index 18624ab..2dbfe0b 100644
--- a/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm
+++ b/ios/chrome/browser/ui/settings/clear_browsing_data/clear_browsing_data_manager.mm
@@ -64,11 +64,12 @@
} // namespace
-@interface ClearBrowsingDataManager ()
+@interface ClearBrowsingDataManager () {
+ // Access to the kDeleteTimePeriod preference.
+ IntegerPrefMember _timeRangePref;
+}
@property(nonatomic, assign) ios::ChromeBrowserState* browserState;
-// Time Period to clear data.
-@property(nonatomic, assign) browsing_data::TimePeriod timePeriod;
// Whether to show alert about other forms of browsing history.
@property(nonatomic, assign)
BOOL shouldShowNoticeAboutOtherFormsOfBrowsingHistory;
@@ -79,13 +80,15 @@
// CollectionsViewController.
@property(nonatomic, assign) ClearBrowsingDataListType listType;
+@property(nonatomic, strong)
+ LegacySettingsDetailItem* collectionViewTimeRangeItem;
+
@end
@implementation ClearBrowsingDataManager
@synthesize browserState = _browserState;
@synthesize consumer = _consumer;
@synthesize linkDelegate = _linkDelegate;
-@synthesize timePeriod = _timePeriod;
@synthesize shouldShowNoticeAboutOtherFormsOfBrowsingHistory =
_shouldShowNoticeAboutOtherFormsOfBrowsingHistory;
@synthesize shouldPopupDialogAboutOtherFormsOfBrowsingHistory =
@@ -99,17 +102,8 @@
_browserState = browserState;
_listType = listType;
- _timePeriod = browsing_data::TimePeriod::ALL_TIME;
- if (IsNewClearBrowsingDataUIEnabled()) {
- constexpr int maxValue =
- static_cast<int>(browsing_data::TimePeriod::TIME_PERIOD_LAST);
- const int prefValue = browserState->GetPrefs()->GetInteger(
- browsing_data::prefs::kDeleteTimePeriod);
-
- if (0 <= prefValue && prefValue <= maxValue) {
- _timePeriod = static_cast<browsing_data::TimePeriod>(prefValue);
- }
- }
+ _timeRangePref.Init(browsing_data::prefs::kDeleteTimePeriod,
+ _browserState->GetPrefs());
}
return self;
}
@@ -122,8 +116,13 @@
if (IsNewClearBrowsingDataUIEnabled() &&
self.listType == ClearBrowsingDataListType::kListTypeCollectionView) {
[model addSectionWithIdentifier:SectionIdentifierTimeRange];
- [model addItem:[self timeRangeItem]
+ ListItem* timeRangeItem = [self timeRangeItem];
+ [model addItem:timeRangeItem
toSectionWithIdentifier:SectionIdentifierTimeRange];
+ if (self.listType == ClearBrowsingDataListType::kListTypeCollectionView) {
+ self.collectionViewTimeRangeItem =
+ base::mac::ObjCCastStrict<LegacySettingsDetailItem>(timeRangeItem);
+ }
}
[self addClearBrowsingDataItemsToModel:model];
@@ -208,7 +207,9 @@
(~NSByteCountFormatterUseKB);
formatter.countStyle = NSByteCountFormatterCountStyleMemory;
NSString* formattedSize = [formatter stringFromByteCount:cacheSizeBytes];
- return (self.timePeriod == browsing_data::TimePeriod::ALL_TIME)
+ return (!IsNewClearBrowsingDataUIEnabled() ||
+ _timeRangePref.GetValue() ==
+ static_cast<int>(browsing_data::TimePeriod::ALL_TIME))
? formattedSize
: l10n_util::GetNSStringF(
IDS_DEL_CACHE_COUNTER_UPPER_ESTIMATE,
@@ -542,8 +543,12 @@
- (void)clearDataForDataTypes:(BrowsingDataRemoveMask)mask {
DCHECK(mask != BrowsingDataRemoveMask::REMOVE_NOTHING);
+ browsing_data::TimePeriod timePeriod =
+ IsNewClearBrowsingDataUIEnabled()
+ ? static_cast<browsing_data::TimePeriod>(_timeRangePref.GetValue())
+ : browsing_data::TimePeriod::ALL_TIME;
[self.consumer removeBrowsingDataForBrowserState:_browserState
- timePeriod:self.timePeriod
+ timePeriod:timePeriod
removeMask:mask
completionBlock:nil];
@@ -675,7 +680,10 @@
- (void)timeRangeSelectorViewController:
(TimeRangeSelectorCollectionViewController*)collectionViewController
didSelectTimePeriod:(browsing_data::TimePeriod)timePeriod {
- self.timePeriod = timePeriod;
+ NSString* detailText = [TimeRangeSelectorCollectionViewController
+ timePeriodLabelForPrefs:self.browserState->GetPrefs()];
+ self.collectionViewTimeRangeItem.detailText = detailText;
+ [self.consumer updateCellsForItem:self.collectionViewTimeRangeItem];
}
@end