| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include "google_apis/gaia/oauth2_token_service.h" | 5 #include "google_apis/gaia/oauth2_token_service.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/memory/weak_ptr.h" | 10 #include "base/memory/weak_ptr.h" |
| (...skipping 29 matching lines...) Expand all Loading... |
| 40 | 40 |
| 41 if (account_id < p.account_id) | 41 if (account_id < p.account_id) |
| 42 return true; | 42 return true; |
| 43 else if (p.account_id < account_id) | 43 else if (p.account_id < account_id) |
| 44 return false; | 44 return false; |
| 45 | 45 |
| 46 return scopes < p.scopes; | 46 return scopes < p.scopes; |
| 47 } | 47 } |
| 48 | 48 |
| 49 OAuth2TokenService::RequestImpl::RequestImpl( | 49 OAuth2TokenService::RequestImpl::RequestImpl( |
| 50 const std::string& account_id, |
| 50 OAuth2TokenService::Consumer* consumer) | 51 OAuth2TokenService::Consumer* consumer) |
| 51 : consumer_(consumer) { | 52 : account_id_(account_id), |
| 53 consumer_(consumer) { |
| 52 } | 54 } |
| 53 | 55 |
| 54 OAuth2TokenService::RequestImpl::~RequestImpl() { | 56 OAuth2TokenService::RequestImpl::~RequestImpl() { |
| 55 DCHECK(CalledOnValidThread()); | 57 DCHECK(CalledOnValidThread()); |
| 56 } | 58 } |
| 57 | 59 |
| 60 std::string OAuth2TokenService::RequestImpl::GetAccountId() const { |
| 61 return account_id_; |
| 62 } |
| 63 |
| 58 void OAuth2TokenService::RequestImpl::InformConsumer( | 64 void OAuth2TokenService::RequestImpl::InformConsumer( |
| 59 const GoogleServiceAuthError& error, | 65 const GoogleServiceAuthError& error, |
| 60 const std::string& access_token, | 66 const std::string& access_token, |
| 61 const base::Time& expiration_date) { | 67 const base::Time& expiration_date) { |
| 62 DCHECK(CalledOnValidThread()); | 68 DCHECK(CalledOnValidThread()); |
| 63 if (error.state() == GoogleServiceAuthError::NONE) | 69 if (error.state() == GoogleServiceAuthError::NONE) |
| 64 consumer_->OnGetTokenSuccess(this, access_token, expiration_date); | 70 consumer_->OnGetTokenSuccess(this, access_token, expiration_date); |
| 65 else | 71 else |
| 66 consumer_->OnGetTokenFailure(this, error); | 72 consumer_->OnGetTokenFailure(this, error); |
| 67 } | 73 } |
| (...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 438 scoped_ptr<OAuth2TokenService::Request> | 444 scoped_ptr<OAuth2TokenService::Request> |
| 439 OAuth2TokenService::StartRequestForClientWithContext( | 445 OAuth2TokenService::StartRequestForClientWithContext( |
| 440 const std::string& account_id, | 446 const std::string& account_id, |
| 441 net::URLRequestContextGetter* getter, | 447 net::URLRequestContextGetter* getter, |
| 442 const std::string& client_id, | 448 const std::string& client_id, |
| 443 const std::string& client_secret, | 449 const std::string& client_secret, |
| 444 const ScopeSet& scopes, | 450 const ScopeSet& scopes, |
| 445 Consumer* consumer) { | 451 Consumer* consumer) { |
| 446 DCHECK(CalledOnValidThread()); | 452 DCHECK(CalledOnValidThread()); |
| 447 | 453 |
| 448 scoped_ptr<RequestImpl> request = CreateRequest(consumer); | 454 scoped_ptr<RequestImpl> request = CreateRequest(account_id, consumer); |
| 449 | 455 |
| 450 if (!RefreshTokenIsAvailable(account_id)) { | 456 if (!RefreshTokenIsAvailable(account_id)) { |
| 451 base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind( | 457 base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind( |
| 452 &RequestImpl::InformConsumer, | 458 &RequestImpl::InformConsumer, |
| 453 request->AsWeakPtr(), | 459 request->AsWeakPtr(), |
| 454 GoogleServiceAuthError(GoogleServiceAuthError::USER_NOT_SIGNED_UP), | 460 GoogleServiceAuthError(GoogleServiceAuthError::USER_NOT_SIGNED_UP), |
| 455 std::string(), | 461 std::string(), |
| 456 base::Time())); | 462 base::Time())); |
| 457 return request.PassAs<Request>(); | 463 return request.PassAs<Request>(); |
| 458 } | 464 } |
| 459 | 465 |
| 460 RequestParameters request_parameters(client_id, | 466 RequestParameters request_parameters(client_id, |
| 461 account_id, | 467 account_id, |
| 462 scopes); | 468 scopes); |
| 463 if (HasCacheEntry(request_parameters)) { | 469 if (HasCacheEntry(request_parameters)) { |
| 464 StartCacheLookupRequest(request.get(), request_parameters, consumer); | 470 StartCacheLookupRequest(request.get(), request_parameters, consumer); |
| 465 } else { | 471 } else { |
| 466 FetchOAuth2Token(request.get(), | 472 FetchOAuth2Token(request.get(), |
| 467 account_id, | 473 account_id, |
| 468 getter, | 474 getter, |
| 469 client_id, | 475 client_id, |
| 470 client_secret, | 476 client_secret, |
| 471 scopes); | 477 scopes); |
| 472 } | 478 } |
| 473 return request.PassAs<Request>(); | 479 return request.PassAs<Request>(); |
| 474 } | 480 } |
| 475 | 481 |
| 476 scoped_ptr<OAuth2TokenService::RequestImpl> OAuth2TokenService::CreateRequest( | 482 scoped_ptr<OAuth2TokenService::RequestImpl> OAuth2TokenService::CreateRequest( |
| 483 const std::string& account_id, |
| 477 Consumer* consumer) { | 484 Consumer* consumer) { |
| 478 return scoped_ptr<RequestImpl>(new RequestImpl(consumer)); | 485 return scoped_ptr<RequestImpl>(new RequestImpl(account_id, consumer)); |
| 479 } | 486 } |
| 480 | 487 |
| 481 void OAuth2TokenService::FetchOAuth2Token(RequestImpl* request, | 488 void OAuth2TokenService::FetchOAuth2Token(RequestImpl* request, |
| 482 const std::string& account_id, | 489 const std::string& account_id, |
| 483 net::URLRequestContextGetter* getter, | 490 net::URLRequestContextGetter* getter, |
| 484 const std::string& client_id, | 491 const std::string& client_id, |
| 485 const std::string& client_secret, | 492 const std::string& client_secret, |
| 486 const ScopeSet& scopes) { | 493 const ScopeSet& scopes) { |
| 487 std::string refresh_token = GetRefreshToken(account_id); | 494 std::string refresh_token = GetRefreshToken(account_id); |
| 488 | 495 |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 733 const std::string& account_id, | 740 const std::string& account_id, |
| 734 const ScopeSet& scopes) const { | 741 const ScopeSet& scopes) const { |
| 735 PendingFetcherMap::const_iterator iter = pending_fetchers_.find( | 742 PendingFetcherMap::const_iterator iter = pending_fetchers_.find( |
| 736 OAuth2TokenService::RequestParameters( | 743 OAuth2TokenService::RequestParameters( |
| 737 client_id, | 744 client_id, |
| 738 account_id, | 745 account_id, |
| 739 scopes)); | 746 scopes)); |
| 740 return iter == pending_fetchers_.end() ? | 747 return iter == pending_fetchers_.end() ? |
| 741 0 : iter->second->GetWaitingRequestCount(); | 748 0 : iter->second->GetWaitingRequestCount(); |
| 742 } | 749 } |
| OLD | NEW |