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 @@ ...@@ -6,6 +6,7 @@
#define IOS_CHROME_BROWSER_UI_AUTHENTICATION_CELLS_SIGNIN_PROMO_VIEW_CONFIGURATOR_H_ #define IOS_CHROME_BROWSER_UI_AUTHENTICATION_CELLS_SIGNIN_PROMO_VIEW_CONFIGURATOR_H_
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import "ios/chrome/browser/ui/authentication/cells/signin_promo_view_constants.h"
@class SigninPromoView; @class SigninPromoView;
...@@ -14,9 +15,11 @@ ...@@ -14,9 +15,11 @@
- (instancetype)init NS_UNAVAILABLE; - (instancetype)init NS_UNAVAILABLE;
// Initializes the instance. For cold state mode, set all parameters to nil. // Initializes the instance.
// For warm state mode set at least the |userEmail| to not nil. // |userEmail| is used as a proxy to determine if accounts have
- (instancetype)initWithUserEmail:(NSString*)userEmail // been added to the device.
- (instancetype)initWithIdentityPromoViewMode:(IdentityPromoViewMode)viewMode
userEmail:(NSString*)userEmail
userFullName:(NSString*)userFullName userFullName:(NSString*)userFullName
userImage:(UIImage*)userImage userImage:(UIImage*)userImage
hasCloseButton:(BOOL)hasCloseButton hasCloseButton:(BOOL)hasCloseButton
......
...@@ -36,22 +36,22 @@ using l10n_util::GetNSStringF; ...@@ -36,22 +36,22 @@ using l10n_util::GetNSStringF;
// If YES the close button will be shown. // If YES the close button will be shown.
@property(nonatomic) BOOL hasCloseButton; @property(nonatomic) BOOL hasCloseButton;
// State of the identity promo view.
@property(nonatomic, assign) IdentityPromoViewMode identityPromoViewMode;
@end @end
@implementation SigninPromoViewConfigurator @implementation SigninPromoViewConfigurator
@synthesize userEmail = _userEmail; - (instancetype)initWithIdentityPromoViewMode:(IdentityPromoViewMode)viewMode
@synthesize userFullName = _userFullName; userEmail:(NSString*)userEmail
@synthesize userImage = _userImage;
@synthesize hasCloseButton = _hasCloseButton;
- (instancetype)initWithUserEmail:(NSString*)userEmail
userFullName:(NSString*)userFullName userFullName:(NSString*)userFullName
userImage:(UIImage*)userImage userImage:(UIImage*)userImage
hasCloseButton:(BOOL)hasCloseButton { hasCloseButton:(BOOL)hasCloseButton {
self = [super init]; self = [super init];
if (self) { if (self) {
DCHECK(userEmail || (!userEmail && !userFullName && !userImage)); DCHECK(userEmail || (!userEmail && !userFullName && !userImage));
_identityPromoViewMode = viewMode;
_userFullName = [userFullName copy]; _userFullName = [userFullName copy];
_userEmail = [userEmail copy]; _userEmail = [userEmail copy];
_userImage = [userImage copy]; _userImage = [userImage copy];
...@@ -62,15 +62,18 @@ using l10n_util::GetNSStringF; ...@@ -62,15 +62,18 @@ using l10n_util::GetNSStringF;
- (void)configureSigninPromoView:(SigninPromoView*)signinPromoView { - (void)configureSigninPromoView:(SigninPromoView*)signinPromoView {
signinPromoView.closeButton.hidden = !self.hasCloseButton; signinPromoView.closeButton.hidden = !self.hasCloseButton;
if (!self.userEmail) { signinPromoView.mode = self.identityPromoViewMode;
signinPromoView.mode = IdentityPromoViewModeNoAccounts;
switch (self.identityPromoViewMode) {
case IdentityPromoViewModeNoAccounts: {
NSString* signInString = NSString* signInString =
GetNSString(IDS_IOS_OPTIONS_IMPORT_DATA_TITLE_SIGNIN); GetNSString(IDS_IOS_OPTIONS_IMPORT_DATA_TITLE_SIGNIN);
signinPromoView.accessibilityLabel = signInString; signinPromoView.accessibilityLabel = signInString;
[signinPromoView.primaryButton setTitle:signInString [signinPromoView.primaryButton setTitle:signInString
forState:UIControlStateNormal]; forState:UIControlStateNormal];
} else { break;
signinPromoView.mode = IdentityPromoViewModeSigninWithAccount; }
case IdentityPromoViewModeSigninWithAccount: {
NSString* name = NSString* name =
self.userFullName.length ? self.userFullName : self.userEmail; self.userFullName.length ? self.userFullName : self.userEmail;
base::string16 name16 = SysNSStringToUTF16(name); base::string16 name16 = SysNSStringToUTF16(name);
...@@ -89,6 +92,8 @@ using l10n_util::GetNSStringF; ...@@ -89,6 +92,8 @@ using l10n_util::GetNSStringF;
->GetDefaultAvatar(); ->GetDefaultAvatar();
} }
[signinPromoView setProfileImage:image]; [signinPromoView setProfileImage:image];
break;
}
} }
} }
......
...@@ -436,12 +436,15 @@ const char* AlreadySeenSigninViewPreferenceKey( ...@@ -436,12 +436,15 @@ const char* AlreadySeenSigninViewPreferenceKey(
AlreadySeenSigninViewPreferenceKey(self.accessPoint) != nullptr; AlreadySeenSigninViewPreferenceKey(self.accessPoint) != nullptr;
if (_defaultIdentity) { if (_defaultIdentity) {
return [[SigninPromoViewConfigurator alloc] return [[SigninPromoViewConfigurator alloc]
initWithUserEmail:_defaultIdentity.userEmail initWithIdentityPromoViewMode:IdentityPromoViewModeSigninWithAccount
userEmail:_defaultIdentity.userEmail
userFullName:_defaultIdentity.userFullName userFullName:_defaultIdentity.userFullName
userImage:self.identityAvatar userImage:self.identityAvatar
hasCloseButton:hasCloseButton]; hasCloseButton:hasCloseButton];
} }
return [[SigninPromoViewConfigurator alloc] initWithUserEmail:nil return [[SigninPromoViewConfigurator alloc]
initWithIdentityPromoViewMode:IdentityPromoViewModeNoAccounts
userEmail:nil
userFullName:nil userFullName:nil
userImage:nil userImage:nil
hasCloseButton:hasCloseButton]; hasCloseButton:hasCloseButton];
......
...@@ -489,7 +489,8 @@ typedef NS_ENUM(NSInteger, ItemType) { ...@@ -489,7 +489,8 @@ typedef NS_ENUM(NSInteger, ItemType) {
TableViewSigninPromoItem* signinPromo = TableViewSigninPromoItem* signinPromo =
[[TableViewSigninPromoItem alloc] initWithType:ItemTypeAccount]; [[TableViewSigninPromoItem alloc] initWithType:ItemTypeAccount];
signinPromo.configurator = [[SigninPromoViewConfigurator alloc] signinPromo.configurator = [[SigninPromoViewConfigurator alloc]
initWithUserEmail:@"jonhdoe@example.com" initWithIdentityPromoViewMode:IdentityPromoViewModeSigninWithAccount
userEmail:@"jonhdoe@example.com"
userFullName:@"John Doe" userFullName:@"John Doe"
userImage:nil userImage:nil
hasCloseButton:NO]; 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