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,12 +15,14 @@ ...@@ -14,12 +15,14 @@
- (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.
userFullName:(NSString*)userFullName - (instancetype)initWithIdentityPromoViewMode:(IdentityPromoViewMode)viewMode
userImage:(UIImage*)userImage userEmail:(NSString*)userEmail
hasCloseButton:(BOOL)hasCloseButton userFullName:(NSString*)userFullName
userImage:(UIImage*)userImage
hasCloseButton:(BOOL)hasCloseButton
NS_DESIGNATED_INITIALIZER; NS_DESIGNATED_INITIALIZER;
// Configures a sign-in promo view. // Configures a sign-in promo view.
......
...@@ -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; userFullName:(NSString*)userFullName
@synthesize hasCloseButton = _hasCloseButton; userImage:(UIImage*)userImage
hasCloseButton:(BOOL)hasCloseButton {
- (instancetype)initWithUserEmail:(NSString*)userEmail
userFullName:(NSString*)userFullName
userImage:(UIImage*)userImage
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,33 +62,38 @@ using l10n_util::GetNSStringF; ...@@ -62,33 +62,38 @@ 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;
NSString* signInString = switch (self.identityPromoViewMode) {
GetNSString(IDS_IOS_OPTIONS_IMPORT_DATA_TITLE_SIGNIN); case IdentityPromoViewModeNoAccounts: {
signinPromoView.accessibilityLabel = signInString; NSString* signInString =
[signinPromoView.primaryButton setTitle:signInString GetNSString(IDS_IOS_OPTIONS_IMPORT_DATA_TITLE_SIGNIN);
forState:UIControlStateNormal]; signinPromoView.accessibilityLabel = signInString;
} else { [signinPromoView.primaryButton setTitle:signInString
signinPromoView.mode = IdentityPromoViewModeSigninWithAccount; forState:UIControlStateNormal];
NSString* name = break;
self.userFullName.length ? self.userFullName : self.userEmail; }
base::string16 name16 = SysNSStringToUTF16(name); case IdentityPromoViewModeSigninWithAccount: {
[signinPromoView.primaryButton NSString* name =
setTitle:GetNSStringF(IDS_IOS_SIGNIN_PROMO_CONTINUE_AS, name16) self.userFullName.length ? self.userFullName : self.userEmail;
forState:UIControlStateNormal]; base::string16 name16 = SysNSStringToUTF16(name);
signinPromoView.accessibilityLabel = [signinPromoView.primaryButton
GetNSStringF(IDS_IOS_SIGNIN_PROMO_ACCESSIBILITY_LABEL, name16); setTitle:GetNSStringF(IDS_IOS_SIGNIN_PROMO_CONTINUE_AS, name16)
[signinPromoView.secondaryButton forState:UIControlStateNormal];
setTitle:GetNSString(IDS_IOS_SIGNIN_PROMO_CHANGE_ACCOUNT) signinPromoView.accessibilityLabel =
forState:UIControlStateNormal]; GetNSStringF(IDS_IOS_SIGNIN_PROMO_ACCESSIBILITY_LABEL, name16);
UIImage* image = self.userImage; [signinPromoView.secondaryButton
if (!image) { setTitle:GetNSString(IDS_IOS_SIGNIN_PROMO_CHANGE_ACCOUNT)
image = ios::GetChromeBrowserProvider() forState:UIControlStateNormal];
->GetSigninResourcesProvider() UIImage* image = self.userImage;
->GetDefaultAvatar(); if (!image) {
image = ios::GetChromeBrowserProvider()
->GetSigninResourcesProvider()
->GetDefaultAvatar();
}
[signinPromoView setProfileImage:image];
break;
} }
[signinPromoView setProfileImage:image];
} }
} }
......
...@@ -436,15 +436,18 @@ const char* AlreadySeenSigninViewPreferenceKey( ...@@ -436,15 +436,18 @@ 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
userFullName:_defaultIdentity.userFullName userEmail:_defaultIdentity.userEmail
userImage:self.identityAvatar userFullName:_defaultIdentity.userFullName
hasCloseButton:hasCloseButton]; userImage:self.identityAvatar
hasCloseButton:hasCloseButton];
} }
return [[SigninPromoViewConfigurator alloc] initWithUserEmail:nil return [[SigninPromoViewConfigurator alloc]
userFullName:nil initWithIdentityPromoViewMode:IdentityPromoViewModeNoAccounts
userImage:nil userEmail:nil
hasCloseButton:hasCloseButton]; userFullName:nil
userImage:nil
hasCloseButton:hasCloseButton];
} }
- (void)signinPromoViewIsVisible { - (void)signinPromoViewIsVisible {
......
...@@ -489,10 +489,11 @@ typedef NS_ENUM(NSInteger, ItemType) { ...@@ -489,10 +489,11 @@ 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
userFullName:@"John Doe" userEmail:@"jonhdoe@example.com"
userImage:nil userFullName:@"John Doe"
hasCloseButton:NO]; userImage:nil
hasCloseButton:NO];
signinPromo.text = @"Signin promo text example"; signinPromo.text = @"Signin promo text example";
[model addItem:signinPromo toSectionWithIdentifier:SectionIdentifierAccount]; [model addItem:signinPromo toSectionWithIdentifier:SectionIdentifierAccount];
......
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