Commit 9f4f84b5 authored by Nohemi Fernandez's avatar Nohemi Fernandez Committed by Chromium LUCI CQ

[iOS] Select promo mode in SigninPromoViewConfigurator browser state.

Uses the current state of identity services to select the mode in which
to display the sign-in promo. This prepares the configurator for a third
syncing state to be added in a subsequent patch.

Bug: 1151289
Change-Id: I9a73ef89c30782ed2e09cbda2f3e3e03e985c978
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2578942
Commit-Queue: Nohemi Fernandez <fernandex@chromium.org>
Reviewed-by: default avatarJérôme Lebel <jlebel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#843007}
parent c6259cb5
......@@ -6,6 +6,7 @@
#define IOS_CHROME_BROWSER_UI_AUTHENTICATION_CELLS_SIGNIN_PROMO_VIEW_CONFIGURATOR_H_
#import <UIKit/UIKit.h>
#import "ios/chrome/browser/ui/authentication/cells/signin_promo_view_constants.h"
@class SigninPromoView;
......@@ -14,9 +15,11 @@
- (instancetype)init NS_UNAVAILABLE;
// Initializes the instance. For cold state mode, set all parameters to nil.
// For warm state mode set at least the |userEmail| to not nil.
- (instancetype)initWithUserEmail:(NSString*)userEmail
// Initializes the instance.
// |userEmail| is used as a proxy to determine if accounts have
// been added to the device.
- (instancetype)initWithIdentityPromoViewMode:(IdentityPromoViewMode)viewMode
userEmail:(NSString*)userEmail
userFullName:(NSString*)userFullName
userImage:(UIImage*)userImage
hasCloseButton:(BOOL)hasCloseButton
......
......@@ -36,22 +36,22 @@ using l10n_util::GetNSStringF;
// If YES the close button will be shown.
@property(nonatomic) BOOL hasCloseButton;
// State of the identity promo view.
@property(nonatomic, assign) IdentityPromoViewMode identityPromoViewMode;
@end
@implementation SigninPromoViewConfigurator
@synthesize userEmail = _userEmail;
@synthesize userFullName = _userFullName;
@synthesize userImage = _userImage;
@synthesize hasCloseButton = _hasCloseButton;
- (instancetype)initWithUserEmail:(NSString*)userEmail
- (instancetype)initWithIdentityPromoViewMode:(IdentityPromoViewMode)viewMode
userEmail:(NSString*)userEmail
userFullName:(NSString*)userFullName
userImage:(UIImage*)userImage
hasCloseButton:(BOOL)hasCloseButton {
self = [super init];
if (self) {
DCHECK(userEmail || (!userEmail && !userFullName && !userImage));
_identityPromoViewMode = viewMode;
_userFullName = [userFullName copy];
_userEmail = [userEmail copy];
_userImage = [userImage copy];
......@@ -62,15 +62,18 @@ using l10n_util::GetNSStringF;
- (void)configureSigninPromoView:(SigninPromoView*)signinPromoView {
signinPromoView.closeButton.hidden = !self.hasCloseButton;
if (!self.userEmail) {
signinPromoView.mode = IdentityPromoViewModeNoAccounts;
signinPromoView.mode = self.identityPromoViewMode;
switch (self.identityPromoViewMode) {
case IdentityPromoViewModeNoAccounts: {
NSString* signInString =
GetNSString(IDS_IOS_OPTIONS_IMPORT_DATA_TITLE_SIGNIN);
signinPromoView.accessibilityLabel = signInString;
[signinPromoView.primaryButton setTitle:signInString
forState:UIControlStateNormal];
} else {
signinPromoView.mode = IdentityPromoViewModeSigninWithAccount;
break;
}
case IdentityPromoViewModeSigninWithAccount: {
NSString* name =
self.userFullName.length ? self.userFullName : self.userEmail;
base::string16 name16 = SysNSStringToUTF16(name);
......@@ -89,6 +92,8 @@ using l10n_util::GetNSStringF;
->GetDefaultAvatar();
}
[signinPromoView setProfileImage:image];
break;
}
}
}
......
......@@ -436,12 +436,15 @@ const char* AlreadySeenSigninViewPreferenceKey(
AlreadySeenSigninViewPreferenceKey(self.accessPoint) != nullptr;
if (_defaultIdentity) {
return [[SigninPromoViewConfigurator alloc]
initWithUserEmail:_defaultIdentity.userEmail
initWithIdentityPromoViewMode:IdentityPromoViewModeSigninWithAccount
userEmail:_defaultIdentity.userEmail
userFullName:_defaultIdentity.userFullName
userImage:self.identityAvatar
hasCloseButton:hasCloseButton];
}
return [[SigninPromoViewConfigurator alloc] initWithUserEmail:nil
return [[SigninPromoViewConfigurator alloc]
initWithIdentityPromoViewMode:IdentityPromoViewModeNoAccounts
userEmail:nil
userFullName:nil
userImage:nil
hasCloseButton:hasCloseButton];
......
......@@ -489,7 +489,8 @@ typedef NS_ENUM(NSInteger, ItemType) {
TableViewSigninPromoItem* signinPromo =
[[TableViewSigninPromoItem alloc] initWithType:ItemTypeAccount];
signinPromo.configurator = [[SigninPromoViewConfigurator alloc]
initWithUserEmail:@"jonhdoe@example.com"
initWithIdentityPromoViewMode:IdentityPromoViewModeSigninWithAccount
userEmail:@"jonhdoe@example.com"
userFullName:@"John Doe"
userImage:nil
hasCloseButton:NO];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment