Index: ios/chrome/browser/ui/settings/sync_encryption_collection_view_controller.mm |
diff --git a/ios/chrome/browser/ui/settings/sync_encryption_collection_view_controller.mm b/ios/chrome/browser/ui/settings/sync_encryption_collection_view_controller.mm |
index 2c8be472c4a5d39aafecbe35397f161e9cc84ed4..9930c152ca4001a4499807b94eec512e2047c652 100644 |
--- a/ios/chrome/browser/ui/settings/sync_encryption_collection_view_controller.mm |
+++ b/ios/chrome/browser/ui/settings/sync_encryption_collection_view_controller.mm |
@@ -6,6 +6,7 @@ |
#import "base/ios/weak_nsobject.h" |
#import "base/mac/scoped_nsobject.h" |
+#include "base/memory/ptr_util.h" |
#include "base/strings/sys_string_conversions.h" |
#include "components/browser_sync/profile_sync_service.h" |
#include "components/google/core/browser/google_util.h" |
@@ -15,6 +16,7 @@ |
#include "ios/chrome/browser/browser_state/chrome_browser_state.h" |
#include "ios/chrome/browser/chrome_url_constants.h" |
#include "ios/chrome/browser/sync/ios_chrome_profile_sync_service_factory.h" |
+#import "ios/chrome/browser/sync/sync_observer_bridge.h" |
#import "ios/chrome/browser/ui/collection_view/cells/MDCCollectionViewCell+Chrome.h" |
#import "ios/chrome/browser/ui/collection_view/cells/collection_view_footer_item.h" |
#import "ios/chrome/browser/ui/collection_view/cells/collection_view_item.h" |
@@ -42,8 +44,10 @@ typedef NS_ENUM(NSInteger, ItemType) { |
} // namespace |
-@interface SyncEncryptionCollectionViewController () { |
+@interface SyncEncryptionCollectionViewController ()<SyncObserverModelBridge> { |
ios::ChromeBrowserState* _browserState; |
+ std::unique_ptr<SyncObserverBridge> _syncObserver; |
+ BOOL _isUsingSecondaryPassphrase; |
} |
// Returns an account item. |
- (CollectionViewItem*)accountItem; |
@@ -63,6 +67,11 @@ typedef NS_ENUM(NSInteger, ItemType) { |
if (self) { |
self.title = l10n_util::GetNSString(IDS_IOS_SYNC_ENCRYPTION_TITLE); |
_browserState = browserState; |
+ browser_sync::ProfileSyncService* syncService = |
+ IOSChromeProfileSyncServiceFactory::GetForBrowserState(_browserState); |
+ _isUsingSecondaryPassphrase = syncService->IsEngineInitialized() && |
+ syncService->IsUsingSecondaryPassphrase(); |
+ _syncObserver = base::MakeUnique<SyncObserverBridge>(self, syncService); |
[self loadModel]; |
} |
return self; |
@@ -80,9 +89,7 @@ typedef NS_ENUM(NSInteger, ItemType) { |
[model addItem:[self passphraseItem] |
toSectionWithIdentifier:SectionIdentifierEncryption]; |
- browser_sync::ProfileSyncService* service = |
- IOSChromeProfileSyncServiceFactory::GetForBrowserState(_browserState); |
- if (service->IsEngineInitialized() && service->IsUsingSecondaryPassphrase()) { |
+ if (_isUsingSecondaryPassphrase) { |
[model addSectionWithIdentifier:SectionIdentifierFooter]; |
[model addItem:[self footerItem] |
toSectionWithIdentifier:SectionIdentifierFooter]; |
@@ -93,35 +100,20 @@ typedef NS_ENUM(NSInteger, ItemType) { |
- (CollectionViewItem*)accountItem { |
DCHECK(browser_sync::ProfileSyncService::IsSyncAllowedByFlag()); |
- BOOL checkedAndEnabled = YES; |
- browser_sync::ProfileSyncService* service = |
- IOSChromeProfileSyncServiceFactory::GetForBrowserState(_browserState); |
- if (service->IsEngineInitialized() && service->IsUsingSecondaryPassphrase()) { |
- checkedAndEnabled = NO; |
- } |
NSString* text = l10n_util::GetNSString(IDS_SYNC_BASIC_ENCRYPTION_DATA); |
return [self itemWithType:ItemTypeAccount |
text:text |
- checked:checkedAndEnabled |
- enabled:checkedAndEnabled]; |
+ checked:!_isUsingSecondaryPassphrase |
+ enabled:!_isUsingSecondaryPassphrase]; |
} |
- (CollectionViewItem*)passphraseItem { |
DCHECK(browser_sync::ProfileSyncService::IsSyncAllowedByFlag()); |
- BOOL checked = NO; |
- BOOL enabled = NO; |
- browser_sync::ProfileSyncService* service = |
- IOSChromeProfileSyncServiceFactory::GetForBrowserState(_browserState); |
- if (service->IsEngineInitialized() && service->IsUsingSecondaryPassphrase()) { |
- checked = YES; |
- } else { |
- enabled = YES; |
- } |
NSString* text = l10n_util::GetNSString(IDS_SYNC_FULL_ENCRYPTION_DATA); |
return [self itemWithType:ItemTypePassphrase |
text:text |
- checked:checked |
- enabled:enabled]; |
+ checked:_isUsingSecondaryPassphrase |
+ enabled:!_isUsingSecondaryPassphrase]; |
} |
- (CollectionViewItem*)footerItem { |
@@ -213,6 +205,19 @@ typedef NS_ENUM(NSInteger, ItemType) { |
} |
} |
+#pragma mark SyncObserverModelBridge |
+ |
+- (void)onSyncStateChanged { |
+ browser_sync::ProfileSyncService* service = |
+ IOSChromeProfileSyncServiceFactory::GetForBrowserState(_browserState); |
+ BOOL isNowUsingSecondaryPassphrase = |
+ service->IsEngineInitialized() && service->IsUsingSecondaryPassphrase(); |
+ if (_isUsingSecondaryPassphrase != isNowUsingSecondaryPassphrase) { |
+ _isUsingSecondaryPassphrase = isNowUsingSecondaryPassphrase; |
+ [self reloadData]; |
+ } |
+} |
+ |
#pragma mark - Private methods |
- (CollectionViewItem*)itemWithType:(NSInteger)type |