Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(99)

Unified Diff: ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_overlay_view.mm

Issue 2885943002: Implementing sign-in promo for "Other Devices" on the iPad (Closed)
Patch Set: Merge Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ios/chrome/browser/ui/tab_switcher/BUILD.gn ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_overlay_view.mm
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_overlay_view.mm b/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_overlay_view.mm
index b6c5b14096a4d46ad37598a6a3005289419b9823..e9fce78095d4620b968452d90bc520cf349cf457 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_overlay_view.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_overlay_view.mm
@@ -6,6 +6,12 @@
#include "base/metrics/user_metrics.h"
#include "base/metrics/user_metrics_action.h"
+#include "components/signin/core/browser/signin_metrics.h"
+#include "ios/chrome/browser/experimental_flags.h"
+#import "ios/chrome/browser/ui/authentication/signin_promo_view.h"
+#import "ios/chrome/browser/ui/authentication/signin_promo_view_configurator.h"
+#import "ios/chrome/browser/ui/authentication/signin_promo_view_consumer.h"
+#import "ios/chrome/browser/ui/authentication/signin_promo_view_mediator.h"
#import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h"
#import "ios/chrome/browser/ui/commands/UIKit+ChromeExecuteCommand.h"
#include "ios/chrome/browser/ui/commands/ios_command_ids.h"
@@ -52,7 +58,7 @@ const CGFloat kTitleMinimumLineHeight = 32.0;
const CGFloat kSubtitleMinimunLineHeight = 24.0;
}
-@interface TabSwitcherPanelOverlayView ()
+@interface TabSwitcherPanelOverlayView ()<SigninPromoViewConsumer>
// Updates the texts of labels and button according to the current
// |overlayType|.
@@ -73,6 +79,8 @@ const CGFloat kSubtitleMinimunLineHeight = 24.0;
MDCButton* _floatingButton;
MDCActivityIndicator* _activityIndicator;
std::string _recordedMetricString;
+ SigninPromoViewMediator* _signinPromoViewMediator;
+ SigninPromoView* _signinPromoView;
}
@synthesize overlayType = _overlayType;
@@ -167,7 +175,36 @@ const CGFloat kSubtitleMinimunLineHeight = 24.0;
@"H:|-(>=0)-[container(==containerWidth@999)]-(>=0)-|",
],
@{ @"container" : _container },
- @{ @"containerWidth" : @(kContainerWidth) }, self);
+ @{ @"containerWidth" : @(kContainerWidth) });
+
+ // Adding sign-in promo view.
msarda 2017/05/23 12:55:54 It looks like the sign-in promo view is created ev
jlebel 2017/05/23 14:34:15 Done.
+ _signinPromoView = [[SigninPromoView alloc] initWithFrame:CGRectZero];
+ _signinPromoView.translatesAutoresizingMaskIntoConstraints = NO;
+ _signinPromoView.textLabel.text =
+ l10n_util::GetNSString(IDS_IOS_SIGNIN_PROMO_SETTINGS);
msarda 2017/05/23 12:55:55 Why are we using the settings promo string in the
jlebel 2017/05/23 14:34:15 Done.
+ _signinPromoView.textLabel.textColor = [UIColor whiteColor];
+ _signinPromoView.textLabel.font = [MDCTypography headlineFont];
+ _signinPromoView.textLabel.preferredMaxLayoutWidth =
+ kContainerWidth - (2 * _signinPromoView.horizontalPadding);
+ [self addSubview:_signinPromoView];
+ ApplyVisualConstraintsWithMetrics(
+ @[ @"H:[signinPromoView(containerWidth)]" ],
+ @{ @"signinPromoView" : _signinPromoView },
+ @{ @"containerWidth" : @(kContainerWidth) });
+ AddSameCenterXConstraint(_signinPromoView, self);
+ [_signinPromoView.centerYAnchor
+ constraintEqualToAnchor:self.centerYAnchor
+ constant:kContainerOriginYOffset]
+ .active = YES;
+ _signinPromoView.hidden = YES;
+ _signinPromoViewMediator = [[SigninPromoViewMediator alloc] init];
+ _signinPromoViewMediator.accessPoint =
+ signin_metrics::AccessPoint::ACCESS_POINT_RECENT_TABS;
+ _signinPromoView.delegate = _signinPromoViewMediator;
+ _signinPromoViewMediator.consumer = self;
+ [[_signinPromoViewMediator createConfigurator]
+ configureSigninPromoView:_signinPromoView];
+ [_signinPromoView setNeedsLayout];
msarda 2017/05/23 12:55:55 Why should the sign-in promo view be layed out if
jlebel 2017/05/23 14:34:15 I've done it just to make sure the layout is corre
}
return self;
}
@@ -185,8 +222,17 @@ const CGFloat kSubtitleMinimunLineHeight = 24.0;
- (void)setOverlayType:(TabSwitcherPanelOverlayType)overlayType {
_overlayType = overlayType;
- [self updateText];
- [self updateButtonTarget];
+ if (experimental_flags::IsSigninPromoEnabled() &&
+ _overlayType ==
+ TabSwitcherPanelOverlayType::OVERLAY_PANEL_USER_SIGNED_OUT) {
+ _container.hidden = YES;
+ _signinPromoView.hidden = NO;
+ } else {
+ _container.hidden = NO;
+ _signinPromoView.hidden = YES;
+ [self updateText];
msarda 2017/05/23 12:55:55 When the promo is enabled, it looks like we do not
jlebel 2017/05/23 14:34:15 In this overlay view, I can't use the current UI e
+ [self updateButtonTarget];
+ }
}
#pragma mark - Private
@@ -410,4 +456,12 @@ const CGFloat kSubtitleMinimunLineHeight = 24.0;
base::RecordAction(base::UserMetricsAction(_recordedMetricString.c_str()));
}
+#pragma mark - SigninPromoViewConsumer
+
+- (void)configureSigninPromoViewWithNewIdentity:(BOOL)newIdentity
+ configurator:(SigninPromoViewConfigurator*)
+ configurator {
+ [configurator configureSigninPromoView:_signinPromoView];
+}
+
@end
« no previous file with comments | « ios/chrome/browser/ui/tab_switcher/BUILD.gn ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698