| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import "ios/public/provider/chrome/browser/signin/fake_chrome_identity_interact
ion_manager.h" | 5 #import "ios/public/provider/chrome/browser/signin/fake_chrome_identity_interact
ion_manager.h" |
| 6 | 6 |
| 7 #include "base/mac/scoped_block.h" | 7 #include "base/mac/scoped_block.h" |
| 8 #include "base/mac/scoped_nsobject.h" | |
| 9 #import "ios/public/provider/chrome/browser/chrome_browser_provider.h" | 8 #import "ios/public/provider/chrome/browser/chrome_browser_provider.h" |
| 10 #import "ios/public/provider/chrome/browser/signin/fake_chrome_identity_service.
h" | 9 #import "ios/public/provider/chrome/browser/signin/fake_chrome_identity_service.
h" |
| 11 #include "ios/public/provider/chrome/browser/signin/signin_error_provider.h" | 10 #include "ios/public/provider/chrome/browser/signin/signin_error_provider.h" |
| 12 | 11 |
| 13 @interface FakeAddAccountViewController : UIViewController { | 12 @interface FakeAddAccountViewController : UIViewController { |
| 14 FakeChromeIdentityInteractionManager* _manager; // Weak. | 13 FakeChromeIdentityInteractionManager* _manager; // Weak. |
| 15 base::scoped_nsobject<UIButton> _cancelButton; | 14 UIButton* _cancelButton; |
| 16 base::scoped_nsobject<UIButton> _signInButton; | 15 UIButton* _signInButton; |
| 17 } | 16 } |
| 18 @end | 17 @end |
| 19 | 18 |
| 20 @interface FakeChromeIdentityInteractionManager () { | 19 @interface FakeChromeIdentityInteractionManager () { |
| 21 base::mac::ScopedBlock<SigninCompletionCallback> _completionCallback; | 20 SigninCompletionCallback _completionCallback; |
| 22 base::scoped_nsobject<UIViewController> _viewController; | 21 UIViewController* _viewController; |
| 23 BOOL _isCanceling; | 22 BOOL _isCanceling; |
| 24 } | 23 } |
| 25 | 24 |
| 26 - (void)addAccountViewControllerDidTapSignIn:(FakeAddAccountViewController*)vc; | 25 - (void)addAccountViewControllerDidTapSignIn:(FakeAddAccountViewController*)vc; |
| 27 | 26 |
| 28 - (void)addAccountViewControllerDidTapCancel:(FakeAddAccountViewController*)vc; | 27 - (void)addAccountViewControllerDidTapCancel:(FakeAddAccountViewController*)vc; |
| 29 | 28 |
| 30 @end | 29 @end |
| 31 | 30 |
| 32 @implementation FakeAddAccountViewController | 31 @implementation FakeAddAccountViewController |
| (...skipping 16 matching lines...) Expand all Loading... |
| 49 forControlEvents:UIControlEventTouchUpInside]; | 48 forControlEvents:UIControlEventTouchUpInside]; |
| 50 [super dealloc]; | 49 [super dealloc]; |
| 51 } | 50 } |
| 52 | 51 |
| 53 - (void)viewDidLoad { | 52 - (void)viewDidLoad { |
| 54 [super viewDidLoad]; | 53 [super viewDidLoad]; |
| 55 | 54 |
| 56 // Obnoxious color, this is a test screen. | 55 // Obnoxious color, this is a test screen. |
| 57 self.view.backgroundColor = [UIColor magentaColor]; | 56 self.view.backgroundColor = [UIColor magentaColor]; |
| 58 | 57 |
| 59 _signInButton.reset([[UIButton buttonWithType:UIButtonTypeCustom] retain]); | 58 _signInButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; |
| 60 [_signInButton setTitle:@"Sign in" forState:UIControlStateNormal]; | 59 [_signInButton setTitle:@"Sign in" forState:UIControlStateNormal]; |
| 61 [_signInButton addTarget:self | 60 [_signInButton addTarget:self |
| 62 action:@selector(didTapSignIn:) | 61 action:@selector(didTapSignIn:) |
| 63 forControlEvents:UIControlEventTouchUpInside]; | 62 forControlEvents:UIControlEventTouchUpInside]; |
| 64 [self.view addSubview:_signInButton]; | 63 [self.view addSubview:_signInButton]; |
| 65 | 64 |
| 66 _cancelButton.reset([[UIButton buttonWithType:UIButtonTypeCustom] retain]); | 65 _cancelButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; |
| 67 [_cancelButton setTitle:@"Cancel" forState:UIControlStateNormal]; | 66 [_cancelButton setTitle:@"Cancel" forState:UIControlStateNormal]; |
| 68 [_cancelButton setAccessibilityIdentifier:@"cancel"]; | 67 [_cancelButton setAccessibilityIdentifier:@"cancel"]; |
| 69 [_cancelButton addTarget:self | 68 [_cancelButton addTarget:self |
| 70 action:@selector(didTapCancel:) | 69 action:@selector(didTapCancel:) |
| 71 forControlEvents:UIControlEventTouchUpInside]; | 70 forControlEvents:UIControlEventTouchUpInside]; |
| 72 [self.view addSubview:_cancelButton]; | 71 [self.view addSubview:_cancelButton]; |
| 73 } | 72 } |
| 74 | 73 |
| 75 - (void)viewWillLayoutSubviews { | 74 - (void)viewWillLayoutSubviews { |
| 76 [super viewWillLayoutSubviews]; | 75 [super viewWillLayoutSubviews]; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 96 | 95 |
| 97 @implementation FakeChromeIdentityInteractionManager | 96 @implementation FakeChromeIdentityInteractionManager |
| 98 | 97 |
| 99 @synthesize fakeIdentity = _fakeIdentity; | 98 @synthesize fakeIdentity = _fakeIdentity; |
| 100 | 99 |
| 101 - (BOOL)isCanceling { | 100 - (BOOL)isCanceling { |
| 102 return _isCanceling; | 101 return _isCanceling; |
| 103 } | 102 } |
| 104 | 103 |
| 105 - (void)addAccountWithCompletion:(SigninCompletionCallback)completion { | 104 - (void)addAccountWithCompletion:(SigninCompletionCallback)completion { |
| 106 _completionCallback.reset(completion, base::scoped_policy::RETAIN); | 105 _completionCallback = [completion copy]; |
| 107 _viewController.reset( | 106 _viewController = |
| 108 [[FakeAddAccountViewController alloc] initWithInteractionManager:self]); | 107 [[FakeAddAccountViewController alloc] initWithInteractionManager:self]; |
| 109 [self.delegate interactionManager:self | 108 [self.delegate interactionManager:self |
| 110 presentViewController:_viewController | 109 presentViewController:_viewController |
| 111 animated:YES | 110 animated:YES |
| 112 completion:nil]; | 111 completion:nil]; |
| 113 } | 112 } |
| 114 | 113 |
| 115 - (void)reauthenticateUserWithID:(NSString*)userID | 114 - (void)reauthenticateUserWithID:(NSString*)userID |
| 116 email:(NSString*)userEmail | 115 email:(NSString*)userEmail |
| 117 completion:(SigninCompletionCallback)completion { | 116 completion:(SigninCompletionCallback)completion { |
| 118 [self addAccountWithCompletion:completion]; | 117 [self addAccountWithCompletion:completion]; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 145 return; | 144 return; |
| 146 } | 145 } |
| 147 [self.delegate interactionManager:self | 146 [self.delegate interactionManager:self |
| 148 dismissViewControllerAnimated:animated | 147 dismissViewControllerAnimated:animated |
| 149 completion:^{ | 148 completion:^{ |
| 150 [self runCompletionCallbackWithError:error]; | 149 [self runCompletionCallbackWithError:error]; |
| 151 }]; | 150 }]; |
| 152 } | 151 } |
| 153 | 152 |
| 154 - (void)runCompletionCallbackWithError:(NSError*)error { | 153 - (void)runCompletionCallbackWithError:(NSError*)error { |
| 155 _viewController.reset(); | 154 _viewController = nil; |
| 156 if (_completionCallback) { | 155 if (_completionCallback) { |
| 157 // Ensure self is not destroyed in the callback. | 156 // Ensure self is not destroyed in the callback. |
| 158 base::scoped_nsobject<FakeChromeIdentityInteractionManager> strongSelf( | 157 #pragma clang diagnostic push |
| 159 [self retain]); | 158 #pragma clang diagnostic ignored "-Wunused-variable" |
| 160 _completionCallback.get()(error ? nil : _fakeIdentity, error); | 159 FakeChromeIdentityInteractionManager* strongSelf = self; |
| 161 _completionCallback.reset(); | 160 #pragma clang diagnostic pop |
| 161 _completionCallback(error ? nil : _fakeIdentity, error); |
| 162 _completionCallback = nil; |
| 162 } | 163 } |
| 163 } | 164 } |
| 164 | 165 |
| 165 - (NSError*)canceledError { | 166 - (NSError*)canceledError { |
| 166 ios::SigninErrorProvider* provider = | 167 ios::SigninErrorProvider* provider = |
| 167 ios::GetChromeBrowserProvider()->GetSigninErrorProvider(); | 168 ios::GetChromeBrowserProvider()->GetSigninErrorProvider(); |
| 168 return [NSError errorWithDomain:provider->GetSigninErrorDomain() | 169 return [NSError errorWithDomain:provider->GetSigninErrorDomain() |
| 169 code:provider->GetCode(ios::SigninError::CANCELED) | 170 code:provider->GetCode(ios::SigninError::CANCELED) |
| 170 userInfo:nil]; | 171 userInfo:nil]; |
| 171 } | 172 } |
| 172 | 173 |
| 173 @end | 174 @end |
| OLD | NEW |