Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 "chrome/browser/signin/oauth2_token_service.h" | 5 #include "chrome/browser/signin/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 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 322 } | 322 } |
| 323 | 323 |
| 324 void OAuth2TokenService::AddObserver(Observer* observer) { | 324 void OAuth2TokenService::AddObserver(Observer* observer) { |
| 325 observer_list_.AddObserver(observer); | 325 observer_list_.AddObserver(observer); |
| 326 } | 326 } |
| 327 | 327 |
| 328 void OAuth2TokenService::RemoveObserver(Observer* observer) { | 328 void OAuth2TokenService::RemoveObserver(Observer* observer) { |
| 329 observer_list_.RemoveObserver(observer); | 329 observer_list_.RemoveObserver(observer); |
| 330 } | 330 } |
| 331 | 331 |
| 332 bool OAuth2TokenService::RefreshTokenIsAvailable() { | 332 bool OAuth2TokenService::RefreshTokenIsAvailable( |
| 333 const std::string& account_id) { | |
| 333 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 334 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 334 return !GetRefreshToken().empty(); | 335 return !GetRefreshToken(account_id).empty(); |
| 335 } | 336 } |
| 336 | 337 |
| 337 scoped_ptr<OAuth2TokenService::Request> OAuth2TokenService::StartRequest( | 338 scoped_ptr<OAuth2TokenService::Request> OAuth2TokenService::StartRequest( |
| 339 const std::string& account_id, | |
| 338 const OAuth2TokenService::ScopeSet& scopes, | 340 const OAuth2TokenService::ScopeSet& scopes, |
| 339 OAuth2TokenService::Consumer* consumer) { | 341 OAuth2TokenService::Consumer* consumer) { |
| 340 return StartRequestForClientWithContext( | 342 return StartRequestForClientWithContext( |
| 343 account_id, | |
| 341 GetRequestContext(), | 344 GetRequestContext(), |
| 342 GaiaUrls::GetInstance()->oauth2_chrome_client_id(), | 345 GaiaUrls::GetInstance()->oauth2_chrome_client_id(), |
| 343 GaiaUrls::GetInstance()->oauth2_chrome_client_secret(), | 346 GaiaUrls::GetInstance()->oauth2_chrome_client_secret(), |
| 344 scopes, | 347 scopes, |
| 345 consumer); | 348 consumer); |
| 346 } | 349 } |
| 347 | 350 |
| 348 scoped_ptr<OAuth2TokenService::Request> | 351 scoped_ptr<OAuth2TokenService::Request> |
| 349 OAuth2TokenService::StartRequestForClient( | 352 OAuth2TokenService::StartRequestForClient( |
| 353 const std::string& account_id, | |
| 350 const std::string& client_id, | 354 const std::string& client_id, |
| 351 const std::string& client_secret, | 355 const std::string& client_secret, |
| 352 const OAuth2TokenService::ScopeSet& scopes, | 356 const OAuth2TokenService::ScopeSet& scopes, |
| 353 OAuth2TokenService::Consumer* consumer) { | 357 OAuth2TokenService::Consumer* consumer) { |
| 354 return StartRequestForClientWithContext( | 358 return StartRequestForClientWithContext( |
| 359 account_id, | |
| 355 GetRequestContext(), | 360 GetRequestContext(), |
| 356 client_id, | 361 client_id, |
| 357 client_secret, | 362 client_secret, |
| 358 scopes, | 363 scopes, |
| 359 consumer); | 364 consumer); |
| 360 } | 365 } |
| 361 | 366 |
| 362 scoped_ptr<OAuth2TokenService::Request> | 367 scoped_ptr<OAuth2TokenService::Request> |
| 363 OAuth2TokenService::StartRequestWithContext( | 368 OAuth2TokenService::StartRequestWithContext( |
| 369 const std::string& account_id, | |
| 364 net::URLRequestContextGetter* getter, | 370 net::URLRequestContextGetter* getter, |
| 365 const ScopeSet& scopes, | 371 const ScopeSet& scopes, |
| 366 Consumer* consumer) { | 372 Consumer* consumer) { |
| 367 return StartRequestForClientWithContext( | 373 return StartRequestForClientWithContext( |
| 374 account_id, | |
| 368 getter, | 375 getter, |
| 369 GaiaUrls::GetInstance()->oauth2_chrome_client_id(), | 376 GaiaUrls::GetInstance()->oauth2_chrome_client_id(), |
| 370 GaiaUrls::GetInstance()->oauth2_chrome_client_secret(), | 377 GaiaUrls::GetInstance()->oauth2_chrome_client_secret(), |
| 371 scopes, | 378 scopes, |
| 372 consumer); | 379 consumer); |
| 373 } | 380 } |
| 374 | 381 |
| 375 scoped_ptr<OAuth2TokenService::Request> | 382 scoped_ptr<OAuth2TokenService::Request> |
| 376 OAuth2TokenService::StartRequestForClientWithContext( | 383 OAuth2TokenService::StartRequestForClientWithContext( |
| 384 const std::string& account_id, | |
| 377 net::URLRequestContextGetter* getter, | 385 net::URLRequestContextGetter* getter, |
| 378 const std::string& client_id, | 386 const std::string& client_id, |
| 379 const std::string& client_secret, | 387 const std::string& client_secret, |
| 380 const ScopeSet& scopes, | 388 const ScopeSet& scopes, |
| 381 Consumer* consumer) { | 389 Consumer* consumer) { |
| 382 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 390 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 383 | 391 |
| 384 scoped_ptr<RequestImpl> request(new RequestImpl(consumer)); | 392 scoped_ptr<RequestImpl> request(new RequestImpl(consumer)); |
| 385 | 393 |
| 386 std::string refresh_token = GetRefreshToken(); | 394 std::string refresh_token = GetRefreshToken(account_id); |
| 387 if (refresh_token.empty()) { | 395 if (refresh_token.empty()) { |
| 388 base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind( | 396 base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind( |
| 389 &RequestImpl::InformConsumer, | 397 &RequestImpl::InformConsumer, |
| 390 request->AsWeakPtr(), | 398 request->AsWeakPtr(), |
| 391 GoogleServiceAuthError( | 399 GoogleServiceAuthError( |
| 392 GoogleServiceAuthError::USER_NOT_SIGNED_UP), | 400 GoogleServiceAuthError::USER_NOT_SIGNED_UP), |
| 393 std::string(), | 401 std::string(), |
| 394 base::Time())); | 402 base::Time())); |
| 395 return request.PassAs<Request>(); | 403 return request.PassAs<Request>(); |
| 396 } | 404 } |
| 397 | 405 |
| 398 if (HasCacheEntry(scopes)) | 406 if (HasCacheEntry(scopes)) |
|
Andrew T Wilson (Slow)
2013/08/23 09:38:13
Don't we need to take the account_id down to the c
fgorski
2013/08/23 19:13:35
Waiting for a change from Zel to revamp the whole
| |
| 399 return StartCacheLookupRequest(scopes, consumer); | 407 return StartCacheLookupRequest(scopes, consumer); |
| 400 | 408 |
| 401 // If there is already a pending fetcher for |scopes| and |refresh_token|, | 409 // If there is already a pending fetcher for |scopes| and |refresh_token|, |
| 402 // simply register this |request| for those results rather than starting | 410 // simply register this |request| for those results rather than starting |
| 403 // a new fetcher. | 411 // a new fetcher. |
| 404 FetchParameters fetch_parameters = std::make_pair(refresh_token, scopes); | 412 FetchParameters fetch_parameters = std::make_pair(refresh_token, scopes); |
| 405 std::map<FetchParameters, Fetcher*>::iterator iter = | 413 std::map<FetchParameters, Fetcher*>::iterator iter = |
| 406 pending_fetchers_.find(fetch_parameters); | 414 pending_fetchers_.find(fetch_parameters); |
| 407 if (iter != pending_fetchers_.end()) { | 415 if (iter != pending_fetchers_.end()) { |
| 408 iter->second->AddWaitingRequest(request->AsWeakPtr()); | 416 iter->second->AddWaitingRequest(request->AsWeakPtr()); |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 579 void OAuth2TokenService::FireRefreshTokenRevoked( | 587 void OAuth2TokenService::FireRefreshTokenRevoked( |
| 580 const std::string& account_id) { | 588 const std::string& account_id) { |
| 581 FOR_EACH_OBSERVER(Observer, observer_list_, | 589 FOR_EACH_OBSERVER(Observer, observer_list_, |
| 582 OnRefreshTokenRevoked(account_id)); | 590 OnRefreshTokenRevoked(account_id)); |
| 583 } | 591 } |
| 584 | 592 |
| 585 void OAuth2TokenService::FireRefreshTokensLoaded() { | 593 void OAuth2TokenService::FireRefreshTokensLoaded() { |
| 586 FOR_EACH_OBSERVER(Observer, observer_list_, OnRefreshTokensLoaded()); | 594 FOR_EACH_OBSERVER(Observer, observer_list_, OnRefreshTokensLoaded()); |
| 587 } | 595 } |
| 588 | 596 |
| 589 void OAuth2TokenService::FireRefreshTokensCleared() { | |
| 590 FOR_EACH_OBSERVER(Observer, observer_list_, OnRefreshTokensCleared()); | |
| 591 } | |
| 592 | |
| 593 int OAuth2TokenService::cache_size_for_testing() const { | 597 int OAuth2TokenService::cache_size_for_testing() const { |
| 594 return token_cache_.size(); | 598 return token_cache_.size(); |
| 595 } | 599 } |
| 596 | 600 |
| 597 void OAuth2TokenService::set_max_authorization_token_fetch_retries_for_testing( | 601 void OAuth2TokenService::set_max_authorization_token_fetch_retries_for_testing( |
| 598 int max_retries) { | 602 int max_retries) { |
| 599 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 603 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 600 max_fetch_retry_num_ = max_retries; | 604 max_fetch_retry_num_ = max_retries; |
| 601 } | 605 } |
| OLD | NEW |