Index: ios/chrome/browser/ui/authentication/signin_promo_view.mm |
diff --git a/ios/chrome/browser/ui/authentication/signin_promo_view.mm b/ios/chrome/browser/ui/authentication/signin_promo_view.mm |
index a52cb923ee05f564194f080dbb7e3785e3a56024..3487b8f68e22079aa601ef08c8f4004e0cc7de13 100644 |
--- a/ios/chrome/browser/ui/authentication/signin_promo_view.mm |
+++ b/ios/chrome/browser/ui/authentication/signin_promo_view.mm |
@@ -9,6 +9,7 @@ |
#import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h" |
#import "ios/chrome/browser/ui/uikit_ui_util.h" |
#include "ios/chrome/grit/ios_chromium_strings.h" |
+#include "ios/chrome/grit/ios_strings.h" |
#import "ios/third_party/material_components_ios/src/components/Buttons/src/MaterialButtons.h" |
#import "ios/third_party/material_components_ios/src/components/Typography/src/MaterialTypography.h" |
#include "ui/base/l10n/l10n_util.h" |
@@ -42,6 +43,7 @@ const CGFloat kButtonHeight = 36; |
@synthesize textLabel = _textLabel; |
@synthesize primaryButton = _primaryButton; |
@synthesize secondaryButton = _secondaryButton; |
+@synthesize closeButton = _closeButton; |
- (instancetype)initWithFrame:(CGRect)frame { |
self = [super initWithFrame:frame]; |
@@ -75,6 +77,11 @@ const CGFloat kButtonHeight = 36; |
forControlEvents:UIControlEventTouchUpInside]; |
[self addSubview:_secondaryButton]; |
+ _closeButton = [[UIButton alloc] init]; |
+ _closeButton.translatesAutoresizingMaskIntoConstraints = NO; |
+ _closeButton.accessibilityIdentifier = @"signin_promo_close_button"; |
+ [self addSubview:_closeButton]; |
+ |
// Adding style. |
_imageView.contentMode = UIViewContentModeCenter; |
_imageView.layer.masksToBounds = YES; |
@@ -93,6 +100,10 @@ const CGFloat kButtonHeight = 36; |
_secondaryButton.customTitleColor = [[MDCPalette cr_bluePalette] tint500]; |
_secondaryButton.uppercaseTitle = NO; |
+ [_closeButton setImage:[UIImage imageNamed:@"signin_promo_close_gray"] |
+ forState:UIControlStateNormal]; |
+ _closeButton.hidden = YES; |
+ |
// Adding constraints. |
NSDictionary* metrics = @{ |
@"kButtonHeight" : @(kButtonHeight), |
@@ -122,6 +133,10 @@ const CGFloat kButtonHeight = 36; |
]; |
ApplyVisualConstraintsWithMetricsAndOptions( |
visualConstraints, views, metrics, NSLayoutFormatAlignAllCenterX); |
+ NSArray* buttonVisualConstraints = |
+ @[ @"H:[closeButton]-|", @"V:|-[closeButton]" ]; |
+ ApplyVisualConstraints(buttonVisualConstraints, |
+ @{ @"closeButton" : _closeButton }); |
// Constraints for cold state mode. |
NSArray* coldStateVisualConstraints = @[ |
@@ -201,6 +216,10 @@ const CGFloat kButtonHeight = 36; |
[_secondaryButton sendActionsForControlEvents:UIControlEventTouchUpInside]; |
} |
+- (void)accessibilityCloseAction:(id)unused { |
+ [_closeButton sendActionsForControlEvents:UIControlEventTouchUpInside]; |
+} |
+ |
- (CGFloat)horizontalPadding { |
return kHorizontalPadding; |
} |
@@ -223,6 +242,8 @@ const CGFloat kButtonHeight = 36; |
#pragma mark - NSObject(Accessibility) |
- (NSArray<UIAccessibilityCustomAction*>*)accessibilityCustomActions { |
+ NSMutableArray* actions = [NSMutableArray array]; |
+ |
NSString* primaryActionName = |
[_primaryButton titleForState:UIControlStateNormal]; |
UIAccessibilityCustomAction* primaryCustomAction = |
@@ -230,17 +251,31 @@ const CGFloat kButtonHeight = 36; |
initWithName:primaryActionName |
target:self |
selector:@selector(accessibilityPrimaryAction:)]; |
- if (_mode == SigninPromoViewModeColdState) { |
- return @[ primaryCustomAction ]; |
+ [actions addObject:primaryCustomAction]; |
+ |
+ if (_mode == SigninPromoViewModeWarmState) { |
+ NSString* secondaryActionName = |
+ [_secondaryButton titleForState:UIControlStateNormal]; |
+ UIAccessibilityCustomAction* secondaryCustomAction = |
+ [[UIAccessibilityCustomAction alloc] |
+ initWithName:secondaryActionName |
+ target:self |
+ selector:@selector(accessibilitySecondaryAction:)]; |
+ [actions addObject:secondaryCustomAction]; |
} |
- NSString* secondaryActionName = |
- [_secondaryButton titleForState:UIControlStateNormal]; |
- UIAccessibilityCustomAction* secondaryCustomAction = |
- [[UIAccessibilityCustomAction alloc] |
- initWithName:secondaryActionName |
- target:self |
- selector:@selector(accessibilitySecondaryAction:)]; |
- return @[ primaryCustomAction, secondaryCustomAction ]; |
+ |
+ if (!_closeButton.hidden) { |
+ NSString* closeActionName = |
+ l10n_util::GetNSString(IDS_IOS_SIGNIN_PROMO_CLOSE_ACCESSIBILITY); |
+ UIAccessibilityCustomAction* closeCustomAction = |
+ [[UIAccessibilityCustomAction alloc] |
+ initWithName:closeActionName |
+ target:self |
+ selector:@selector(accessibilityCloseAction:)]; |
+ [actions addObject:closeCustomAction]; |
+ } |
+ |
+ return actions; |
} |
- (NSString*)accessibilityLabel { |