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

Side by Side Diff: components/signin/core/browser/gaia_cookie_manager_service.cc

Issue 1129463004: Let Ubertoken Fetch be primed with an access token. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/signin/core/browser/gaia_cookie_manager_service.h" 5 #include "components/signin/core/browser/gaia_cookie_manager_service.h"
6 6
7 #include <queue> 7 #include <queue>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 GaiaUrls::GetInstance()->google_url(), 300 GaiaUrls::GetInstance()->google_url(),
301 "APISID", 301 "APISID",
302 base::Bind(&GaiaCookieManagerService::OnCookieChanged, 302 base::Bind(&GaiaCookieManagerService::OnCookieChanged,
303 base::Unretained(this))); 303 base::Unretained(this)));
304 } 304 }
305 305
306 void GaiaCookieManagerService::Shutdown() { 306 void GaiaCookieManagerService::Shutdown() {
307 cookie_changed_subscription_.reset(); 307 cookie_changed_subscription_.reset();
308 } 308 }
309 309
310 void GaiaCookieManagerService::AddAccountToCookie( 310
311 void GaiaCookieManagerService::AddAccountToCookieInternal(
311 const std::string& account_id) { 312 const std::string& account_id) {
313 DCHECK(!account_id.empty());
312 if (!signin_client_->AreSigninCookiesAllowed()) { 314 if (!signin_client_->AreSigninCookiesAllowed()) {
313 SignalComplete(account_id, 315 SignalComplete(account_id,
314 GoogleServiceAuthError(GoogleServiceAuthError::REQUEST_CANCELED)); 316 GoogleServiceAuthError(GoogleServiceAuthError::REQUEST_CANCELED));
315 return; 317 return;
316 } 318 }
317 319
318 DCHECK(!account_id.empty());
319 VLOG(1) << "GaiaCookieManagerService::AddAccountToCookie: " << account_id;
320 requests_.push_back(GaiaCookieRequest::CreateAddAccountRequest(account_id)); 320 requests_.push_back(GaiaCookieRequest::CreateAddAccountRequest(account_id));
321 if (requests_.size() == 1) { 321 if (requests_.size() == 1) {
322 signin_client_->DelayNetworkCall( 322 signin_client_->DelayNetworkCall(
323 base::Bind(&GaiaCookieManagerService::StartFetchingUbertoken, 323 base::Bind(&GaiaCookieManagerService::StartFetchingUbertoken,
324 base::Unretained(this))); 324 base::Unretained(this)));
325 } 325 }
326 } 326 }
327 327
328 void GaiaCookieManagerService::AddAccountToCookie(
329 const std::string& account_id) {
330 VLOG(1) << "GaiaCookieManagerService::AddAccountToCookie: " << account_id;
331 access_token_ = std::string();
332 AddAccountToCookieInternal(account_id);
333 }
334
335 void GaiaCookieManagerService::AddAccountToCookieWithToken(
336 const std::string& account_id,
337 const std::string& access_token) {
338 VLOG(1) << "GaiaCookieManagerService::AddAccountToCookieWithToken: "
339 << account_id;
340 DCHECK(!access_token.empty());
341 access_token_ = access_token;
342 AddAccountToCookieInternal(account_id);
343 }
344
328 bool GaiaCookieManagerService::ListAccounts( 345 bool GaiaCookieManagerService::ListAccounts(
329 std::vector<std::pair<std::string,bool> >* accounts) { 346 std::vector<std::pair<std::string,bool> >* accounts) {
330 DCHECK(accounts); 347 DCHECK(accounts);
331 accounts->clear(); 348 accounts->clear();
332 349
333 // There is a fetch currently executing (the results being provided in the 350 // There is a fetch currently executing (the results being provided in the
334 // parameter don't align with the fetches that have been started), or the list 351 // parameter don't align with the fetches that have been started), or the list
335 // of accounts haven't been fetched even once. 352 // of accounts haven't been fetched even once.
336 if (!requests_.empty()) 353 if (!requests_.empty())
337 return false; 354 return false;
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 base::Unretained(this)))); 600 base::Unretained(this))));
584 return; 601 return;
585 } 602 }
586 603
587 FOR_EACH_OBSERVER(Observer, observer_list_, 604 FOR_EACH_OBSERVER(Observer, observer_list_,
588 OnGaiaAccountsInCookieUpdated(listed_accounts_, error)); 605 OnGaiaAccountsInCookieUpdated(listed_accounts_, error));
589 HandleNextRequest(); 606 HandleNextRequest();
590 } 607 }
591 608
592 void GaiaCookieManagerService::StartFetchingUbertoken() { 609 void GaiaCookieManagerService::StartFetchingUbertoken() {
593 VLOG(1) << "GaiaCookieManagerService::StartFetching account_id=" 610 VLOG(1) << "GaiaCookieManagerService::StartFetchingUbertoken account_id="
594 << requests_.front().account_id(); 611 << requests_.front().account_id();
595 uber_token_fetcher_.reset( 612 uber_token_fetcher_.reset(
596 new UbertokenFetcher(token_service_, this, source_, 613 new UbertokenFetcher(token_service_, this, source_,
597 signin_client_->GetURLRequestContext())); 614 signin_client_->GetURLRequestContext()));
598 uber_token_fetcher_->StartFetchingToken(requests_.front().account_id()); 615 if (access_token_.empty()) {
616 uber_token_fetcher_->StartFetchingToken(requests_.front().account_id());
617 } else {
618 uber_token_fetcher_->StartFetchingTokenWithAccessToken(
619 requests_.front().account_id(), access_token_);
620 }
599 } 621 }
600 622
601 void GaiaCookieManagerService::StartFetchingMergeSession() { 623 void GaiaCookieManagerService::StartFetchingMergeSession() {
602 DCHECK(!uber_token_.empty()); 624 DCHECK(!uber_token_.empty());
603 gaia_auth_fetcher_.reset( 625 gaia_auth_fetcher_.reset(
604 new GaiaAuthFetcher(this, source_, 626 new GaiaAuthFetcher(this, source_,
605 signin_client_->GetURLRequestContext())); 627 signin_client_->GetURLRequestContext()));
606 628
607 gaia_auth_fetcher_->StartMergeSession(uber_token_, 629 gaia_auth_fetcher_->StartMergeSession(uber_token_,
608 external_cc_result_fetcher_.GetExternalCcResult()); 630 external_cc_result_fetcher_.GetExternalCcResult());
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 } else { 674 } else {
653 // Pop the completed request. 675 // Pop the completed request.
654 requests_.pop_front(); 676 requests_.pop_front();
655 } 677 }
656 678
657 gaia_auth_fetcher_.reset(); 679 gaia_auth_fetcher_.reset();
658 fetcher_retries_ = 0; 680 fetcher_retries_ = 0;
659 if (requests_.empty()) { 681 if (requests_.empty()) {
660 VLOG(1) << "GaiaCookieManagerService::HandleNextRequest: no more"; 682 VLOG(1) << "GaiaCookieManagerService::HandleNextRequest: no more";
661 uber_token_fetcher_.reset(); 683 uber_token_fetcher_.reset();
684 access_token_ = std::string();
662 } else { 685 } else {
663 switch (requests_.front().request_type()) { 686 switch (requests_.front().request_type()) {
664 case GaiaCookieRequestType::ADD_ACCOUNT: 687 case GaiaCookieRequestType::ADD_ACCOUNT:
665 signin_client_->DelayNetworkCall( 688 signin_client_->DelayNetworkCall(
666 base::Bind(&GaiaCookieManagerService::StartFetchingUbertoken, 689 base::Bind(&GaiaCookieManagerService::StartFetchingUbertoken,
667 base::Unretained(this))); 690 base::Unretained(this)));
668 break; 691 break;
669 case GaiaCookieRequestType::LOG_OUT: 692 case GaiaCookieRequestType::LOG_OUT:
670 signin_client_->DelayNetworkCall( 693 signin_client_->DelayNetworkCall(
671 base::Bind(&GaiaCookieManagerService::StartLogOutUrlFetch, 694 base::Bind(&GaiaCookieManagerService::StartLogOutUrlFetch,
672 base::Unretained(this))); 695 base::Unretained(this)));
673 break; 696 break;
674 case GaiaCookieRequestType::LIST_ACCOUNTS: 697 case GaiaCookieRequestType::LIST_ACCOUNTS:
675 uber_token_fetcher_.reset(); 698 uber_token_fetcher_.reset();
676 signin_client_->DelayNetworkCall( 699 signin_client_->DelayNetworkCall(
677 base::Bind(&GaiaCookieManagerService::StartFetchingListAccounts, 700 base::Bind(&GaiaCookieManagerService::StartFetchingListAccounts,
678 base::Unretained(this))); 701 base::Unretained(this)));
679 break; 702 break;
680 }; 703 };
681 } 704 }
682 } 705 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698