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 |