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

Unified Diff: remoting/ios/facade/remoting_service.mm

Issue 2949713002: [CRD iOS] Refactor an interface for RemotingAuthorization (Closed)
Patch Set: Resolve feedback Created 3 years, 6 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
« remoting/branding_Chromium ('K') | « remoting/ios/facade/remoting_service.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/ios/facade/remoting_service.mm
diff --git a/remoting/ios/facade/remoting_service.mm b/remoting/ios/facade/remoting_service.mm
index 10096f18f6a3a2a0083ddfe0731485ed948b6343..5c5a8f6a48876dc41a6a9aafdd8b8e1e1a57b104 100644
--- a/remoting/ios/facade/remoting_service.mm
+++ b/remoting/ios/facade/remoting_service.mm
@@ -18,7 +18,6 @@
#import "remoting/ios/facade/host_list_fetcher.h"
#import "remoting/ios/facade/ios_client_runtime_delegate.h"
#import "remoting/ios/facade/remoting_authentication.h"
-#import "remoting/ios/facade/remoting_service.h"
#import "remoting/ios/keychain_wrapper.h"
#include "base/i18n/time_formatting.h"
@@ -37,19 +36,19 @@ NSString* const kUserDidUpdate = @"kUserDidUpdate";
NSString* const kUserInfo = @"kUserInfo";
@interface RemotingService ()<RemotingAuthenticationDelegate> {
- std::unique_ptr<remoting::OAuthTokenGetter> _tokenGetter;
+ id<RemotingAuthentication> _authentication;
remoting::HostListFetcher* _hostListFetcher;
remoting::IosClientRuntimeDelegate* _clientRuntimeDelegate;
+ BOOL _isHostListFetching;
}
@end
@implementation RemotingService
-@synthesize authentication = _authentication;
@synthesize hosts = _hosts;
// RemotingService is a singleton.
-+ (RemotingService*)SharedInstance {
++ (RemotingService*)instance {
static RemotingService* sharedInstance = nil;
static dispatch_once_t guard;
dispatch_once(&guard, ^{
@@ -61,10 +60,10 @@ NSString* const kUserInfo = @"kUserInfo";
- (instancetype)init {
self = [super init];
if (self) {
- _authentication = [[RemotingAuthentication alloc] init];
- _authentication.delegate = self;
_hosts = nil;
_hostListFetcher = nil;
+ // TODO(yuweih): Maybe better to just cancel the previous request.
+ _isHostListFetching = NO;
// TODO(nicholss): This might need a pointer back to the service.
_clientRuntimeDelegate =
new remoting::IosClientRuntimeDelegate();
@@ -76,6 +75,10 @@ NSString* const kUserInfo = @"kUserInfo";
#pragma mark - RemotingService Implementation
- (void)startHostListFetchWith:(NSString*)accessToken {
+ if (_isHostListFetching) {
+ return;
+ }
+ _isHostListFetching = YES;
if (!_hostListFetcher) {
_hostListFetcher = new remoting::HostListFetcher(
remoting::ChromotingClientRuntime::GetInstance()->url_requester());
@@ -116,6 +119,7 @@ NSString* const kUserInfo = @"kUserInfo";
}
_hosts = hosts;
[self hostListUpdated];
+ _isHostListFetching = NO;
}));
}
@@ -133,6 +137,7 @@ NSString* const kUserInfo = @"kUserInfo";
NSDictionary* userInfo = nil;
if (user) {
userInfo = [NSDictionary dictionaryWithObject:user forKey:kUserInfo];
+ [self requestHostListFetch];
} else {
_hosts = nil;
[self hostListUpdated];
@@ -159,13 +164,21 @@ NSString* const kUserInfo = @"kUserInfo";
- (void)requestHostListFetch {
[_authentication
- callbackWithAccessToken:base::BindBlockArc(^(
- remoting::OAuthTokenGetter::Status status,
- const std::string& user_email,
- const std::string& access_token) {
- NSString* accessToken = base::SysUTF8ToNSString(access_token);
+ callbackWithAccessToken:^(RemotingAuthenticationStatus status,
+ NSString* userEmail, NSString* accessToken) {
[self startHostListFetchWith:accessToken];
- })];
+ }];
+}
+
+- (void)setAuthentication:(id<RemotingAuthentication>)authentication {
+ DCHECK(_authentication == nil);
+ authentication.delegate = self;
+ _authentication = authentication;
+}
+
+- (id<RemotingAuthentication>)authentication {
+ DCHECK(_authentication != nil);
+ return _authentication;
}
@end
« remoting/branding_Chromium ('K') | « remoting/ios/facade/remoting_service.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698