Commit 1bcd59dd authored by Jérôme Lebel's avatar Jérôme Lebel Committed by Commit Bot

Using Chrome commands to open the Sign-in dialog, from AccountsCollectionViewController

To solve crbug.com/770424#c5, -[SigninInteractionController cancel] has
to be an asynchronous call. Switching from using
SigninInteractionController to Chrome commands, will help to solve the
bug only in one place.
After this patch, the issue will have to be solved only in
MainController.

Bug: 770424
Cq-Include-Trybots: master.tryserver.chromium.mac:ios-simulator-cronet
Change-Id: I238b51d80430bab644f84fc27f4fc4e2d4bc573d
Reviewed-on: https://chromium-review.googlesource.com/739387Reviewed-by: default avatarMihai Sardarescu <msarda@chromium.org>
Reviewed-by: default avatarSylvain Defresne <sdefresne@chromium.org>
Commit-Queue: Jérôme Lebel <jlebel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#512788}
parent 0b02ff57
...@@ -35,11 +35,11 @@ ...@@ -35,11 +35,11 @@
#import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h" #import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h"
#import "ios/chrome/browser/ui/commands/application_commands.h" #import "ios/chrome/browser/ui/commands/application_commands.h"
#import "ios/chrome/browser/ui/commands/open_url_command.h" #import "ios/chrome/browser/ui/commands/open_url_command.h"
#import "ios/chrome/browser/ui/commands/show_signin_command.h"
#import "ios/chrome/browser/ui/icons/chrome_icon.h" #import "ios/chrome/browser/ui/icons/chrome_icon.h"
#import "ios/chrome/browser/ui/settings/settings_navigation_controller.h" #import "ios/chrome/browser/ui/settings/settings_navigation_controller.h"
#import "ios/chrome/browser/ui/settings/sync_settings_collection_view_controller.h" #import "ios/chrome/browser/ui/settings/sync_settings_collection_view_controller.h"
#import "ios/chrome/browser/ui/settings/sync_utils/sync_util.h" #import "ios/chrome/browser/ui/settings/sync_utils/sync_util.h"
#import "ios/chrome/browser/ui/signin_interaction/signin_interaction_coordinator.h"
#include "ios/chrome/grit/ios_chromium_strings.h" #include "ios/chrome/grit/ios_chromium_strings.h"
#include "ios/chrome/grit/ios_strings.h" #include "ios/chrome/grit/ios_strings.h"
#import "ios/public/provider/chrome/browser/chrome_browser_provider.h" #import "ios/public/provider/chrome/browser/chrome_browser_provider.h"
...@@ -104,11 +104,6 @@ typedef NS_ENUM(NSInteger, ItemType) { ...@@ -104,11 +104,6 @@ typedef NS_ENUM(NSInteger, ItemType) {
NSDictionary<NSString*, CollectionViewItem*>* _identityMap; NSDictionary<NSString*, CollectionViewItem*>* _identityMap;
} }
// The SigninInteractionCoordinator that presents Sign In UI for the Accounts
// Settings page.
@property(nonatomic, strong)
SigninInteractionCoordinator* signinInteractionCoordinator;
// Stops observing browser state services. This is required during the shutdown // Stops observing browser state services. This is required during the shutdown
// phase to avoid observing services for a browser state that is being killed. // phase to avoid observing services for a browser state that is being killed.
- (void)stopBrowserStateServiceObservers; - (void)stopBrowserStateServiceObservers;
...@@ -118,7 +113,6 @@ typedef NS_ENUM(NSInteger, ItemType) { ...@@ -118,7 +113,6 @@ typedef NS_ENUM(NSInteger, ItemType) {
@implementation AccountsCollectionViewController @implementation AccountsCollectionViewController
@synthesize dispatcher = _dispatcher; @synthesize dispatcher = _dispatcher;
@synthesize signinInteractionCoordinator = _signinInteractionCoordinator;
- (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState - (instancetype)initWithBrowserState:(ios::ChromeBrowserState*)browserState
closeSettingsOnAddAccount:(BOOL)closeSettingsOnAddAccount { closeSettingsOnAddAccount:(BOOL)closeSettingsOnAddAccount {
...@@ -169,7 +163,6 @@ typedef NS_ENUM(NSInteger, ItemType) { ...@@ -169,7 +163,6 @@ typedef NS_ENUM(NSInteger, ItemType) {
#pragma mark - SettingsControllerProtocol #pragma mark - SettingsControllerProtocol
- (void)settingsWillBeDismissed { - (void)settingsWillBeDismissed {
[self.signinInteractionCoordinator cancel];
[_alertCoordinator stop]; [_alertCoordinator stop];
[self stopBrowserStateServiceObservers]; [self stopBrowserStateServiceObservers];
} }
...@@ -492,25 +485,20 @@ typedef NS_ENUM(NSInteger, ItemType) { ...@@ -492,25 +485,20 @@ typedef NS_ENUM(NSInteger, ItemType) {
if ([_alertCoordinator isVisible]) if ([_alertCoordinator isVisible])
return; return;
if (!self.signinInteractionCoordinator) {
self.signinInteractionCoordinator = [[SigninInteractionCoordinator alloc]
initWithBrowserState:_browserState
dispatcher:self.dispatcher];
}
// |_authenticationOperationInProgress| is reset when the signin operation is // |_authenticationOperationInProgress| is reset when the signin operation is
// completed. // completed.
_authenticationOperationInProgress = YES; _authenticationOperationInProgress = YES;
__weak AccountsCollectionViewController* weakSelf = self; __weak AccountsCollectionViewController* weakSelf = self;
[self.signinInteractionCoordinator ShowSigninCommand* command = [[ShowSigninCommand alloc]
addAccountWithAccessPoint:signin_metrics::AccessPoint:: initWithOperation:AUTHENTICATION_OPERATION_SIGNIN
ACCESS_POINT_SETTINGS identity:nil
promoAction:signin_metrics::PromoAction:: accessPoint:signin_metrics::AccessPoint::ACCESS_POINT_SETTINGS
PROMO_ACTION_NO_SIGNIN_PROMO promoAction:signin_metrics::PromoAction::
presentingViewController:self.navigationController PROMO_ACTION_NO_SIGNIN_PROMO
completion:^(BOOL success) { callback:^(BOOL success) {
[weakSelf handleDidAddAccount:success]; [weakSelf handleDidAddAccount:success];
}]; }];
[self.dispatcher showSignin:command];
} }
- (void)handleDidAddAccount:(BOOL)success { - (void)handleDidAddAccount:(BOOL)success {
...@@ -621,7 +609,6 @@ typedef NS_ENUM(NSInteger, ItemType) { ...@@ -621,7 +609,6 @@ typedef NS_ENUM(NSInteger, ItemType) {
return; return;
} }
_isBeingDismissed = YES; _isBeingDismissed = YES;
[self.signinInteractionCoordinator cancelAndDismiss];
[_alertCoordinator stop]; [_alertCoordinator stop];
[self.navigationController popToViewController:self animated:NO]; [self.navigationController popToViewController:self animated:NO];
[base::mac::ObjCCastStrict<SettingsNavigationController>( [base::mac::ObjCCastStrict<SettingsNavigationController>(
......
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