blob: bad56685e405b6d8ced40834f71c2ca74ea893a2 [file] [log] [blame]
// 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.
#ifndef IOS_CHROME_BROWSER_UI_SETTINGS_SYNC_ENCRYPTION_PASSPHRASE_COLLECTION_VIEW_CONTROLLER_H_
#define IOS_CHROME_BROWSER_UI_SETTINGS_SYNC_ENCRYPTION_PASSPHRASE_COLLECTION_VIEW_CONTROLLER_H_
#import <UIKit/UIKit.h>
#import "ios/chrome/browser/sync/sync_observer_bridge.h"
#import "ios/chrome/browser/ui/collection_view/collection_view_model.h"
#import "ios/chrome/browser/ui/settings/settings_root_collection_view_controller.h"
namespace ios {
class ChromeBrowserState;
} // namespace ios
namespace ios_internal {
namespace sync_encryption_passphrase {
typedef NS_ENUM(NSInteger, SectionIdentifier) {
SectionIdentifierPassphrase = kSectionIdentifierEnumZero,
SectionIdentifierFooter,
};
typedef NS_ENUM(NSInteger, ItemType) {
ItemTypeMessage = kItemTypeEnumZero,
ItemTypeEnterPassphrase,
ItemTypeConfirmPassphrase,
ItemTypeError,
ItemTypeFooter,
};
} // namespace sync_encryption_passphrase
} // namespace ios_internal
// Controller to allow user to specify encryption passphrase for Sync.
@interface SyncEncryptionPassphraseCollectionViewController
: SettingsRootCollectionViewController<SyncObserverModelBridge>
@property(weak, nonatomic, readonly) UITextField* passphrase;
@property(nonatomic, copy) NSString* headerMessage;
@property(nonatomic, copy) NSString* footerMessage;
@property(nonatomic, copy) NSString* processingMessage;
@property(nonatomic, copy) NSString* syncErrorMessage;
// |browserState| must not be nil.
- (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState
NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithStyle:(CollectionViewControllerStyle)style
NS_UNAVAILABLE;
@end
@interface SyncEncryptionPassphraseCollectionViewController (
Subclassing)<UITextFieldDelegate>
// Whether this controller is for encryption or decryption. Returns |YES|, if
// the used for the user to enter an existing passphrase that is not yet
// available on the device. Returns |NO| if the user is setting a new
// passphrase.
- (BOOL)forDecryption;
// User has pressed the Sign In button.
- (void)signInPressed;
// Clears all fields after displaying an error.
- (void)clearFieldsOnError:(NSString*)errorMessage;
// Whether the text field(s) is(are) filled.
- (BOOL)areAllFieldsFilled;
// Registers listening to the events of |textField|.
- (void)registerTextField:(UITextField*)textField;
// Unregisters listening to the events of |textField|.
- (void)unregisterTextField:(UITextField*)textField;
// Called after a touch event entering a |UITextField|.
- (void)textFieldDidBeginEditing:(id)sender;
// Called after a touch event changing a |UITextField|.
- (void)textFieldDidChange:(id)sender;
// Called after a touch event leaving a |UITextField| by clicking "return" key.
- (void)textFieldDidEndEditing:(id)sender;
// Stops observing the sync service. This is required during the shutdown phase
// to avoid observing sync events for a browser state that is being killed.
- (void)stopObserving;
@end
#endif // IOS_CHROME_BROWSER_UI_SETTINGS_SYNC_ENCRYPTION_PASSPHRASE_COLLECTION_VIEW_CONTROLLER_H_