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

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: ChromeOS sends access token to GCMS 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 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 void GaiaCookieManagerService::AddAccountToCookie(
311 const std::string& account_id) { 311 const std::string& account_id) {
312 AddAccountToCookieWithToken(account_id, std::string());
313 }
314
315 void GaiaCookieManagerService::AddAccountToCookieWithToken(
316 const std::string& account_id, const std::string& oauth2_token) {
312 if (!signin_client_->AreSigninCookiesAllowed()) { 317 if (!signin_client_->AreSigninCookiesAllowed()) {
313 SignalComplete(account_id, 318 SignalComplete(account_id,
314 GoogleServiceAuthError(GoogleServiceAuthError::REQUEST_CANCELED)); 319 GoogleServiceAuthError(GoogleServiceAuthError::REQUEST_CANCELED));
315 return; 320 return;
316 } 321 }
317 322
318 DCHECK(!account_id.empty()); 323 DCHECK(!account_id.empty());
319 VLOG(1) << "GaiaCookieManagerService::AddAccountToCookie: " << account_id; 324 VLOG(1) << "GaiaCookieManagerService::AddAccountToCookie: " << account_id;
320 requests_.push_back(GaiaCookieRequest::CreateAddAccountRequest(account_id)); 325 requests_.push_back(GaiaCookieRequest::CreateAddAccountRequest(account_id));
321 if (requests_.size() == 1) 326 if (requests_.size() == 1) {
322 StartFetchingUbertoken(); 327 StartFetchingUbertoken(oauth2_token);
328 }
323 } 329 }
324 330
325 bool GaiaCookieManagerService::ListAccounts( 331 bool GaiaCookieManagerService::ListAccounts(
326 std::vector<std::pair<std::string,bool> >* accounts) { 332 std::vector<std::pair<std::string,bool> >* accounts) {
327 DCHECK(accounts); 333 DCHECK(accounts);
328 accounts->clear(); 334 accounts->clear();
329 335
330 // There is a fetch currently executing (the results being provided in the 336 // There is a fetch currently executing (the results being provided in the
331 // parameter don't align with the fetches that have been started), or the list 337 // parameter don't align with the fetches that have been started), or the list
332 // of accounts haven't been fetched even once. 338 // of accounts haven't been fetched even once.
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 FROM_HERE, fetcher_backoff_.GetTimeUntilRelease(), this, 565 FROM_HERE, fetcher_backoff_.GetTimeUntilRelease(), this,
560 &GaiaCookieManagerService::StartFetchingListAccounts); 566 &GaiaCookieManagerService::StartFetchingListAccounts);
561 return; 567 return;
562 } 568 }
563 569
564 FOR_EACH_OBSERVER(Observer, observer_list_, 570 FOR_EACH_OBSERVER(Observer, observer_list_,
565 OnGaiaAccountsInCookieUpdated(listed_accounts_, error)); 571 OnGaiaAccountsInCookieUpdated(listed_accounts_, error));
566 HandleNextRequest(); 572 HandleNextRequest();
567 } 573 }
568 574
569 void GaiaCookieManagerService::StartFetchingUbertoken() { 575 void GaiaCookieManagerService::StartFetchingUbertoken(
576 const std::string& access_token) {
570 VLOG(1) << "GaiaCookieManagerService::StartFetching account_id=" 577 VLOG(1) << "GaiaCookieManagerService::StartFetching account_id="
571 << requests_.front().account_id(); 578 << requests_.front().account_id();
572 uber_token_fetcher_.reset( 579 uber_token_fetcher_.reset(
573 new UbertokenFetcher(token_service_, this, source_, 580 new UbertokenFetcher(token_service_, this, source_,
574 signin_client_->GetURLRequestContext())); 581 signin_client_->GetURLRequestContext()));
575 uber_token_fetcher_->StartFetchingToken(requests_.front().account_id()); 582 if (access_token.empty())
583 uber_token_fetcher_->StartFetchingToken(requests_.front().account_id());
584 else
585 uber_token_fetcher_->OnGetTokenSuccess(nullptr, access_token, base::Time());
576 } 586 }
577 587
578 void GaiaCookieManagerService::StartFetchingMergeSession() { 588 void GaiaCookieManagerService::StartFetchingMergeSession() {
579 DCHECK(!uber_token_.empty()); 589 DCHECK(!uber_token_.empty());
580 gaia_auth_fetcher_.reset( 590 gaia_auth_fetcher_.reset(
581 new GaiaAuthFetcher(this, source_, 591 new GaiaAuthFetcher(this, source_,
582 signin_client_->GetURLRequestContext())); 592 signin_client_->GetURLRequestContext()));
583 593
584 gaia_auth_fetcher_->StartMergeSession(uber_token_, 594 gaia_auth_fetcher_->StartMergeSession(uber_token_,
585 external_cc_result_fetcher_.GetExternalCcResult()); 595 external_cc_result_fetcher_.GetExternalCcResult());
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 } 638 }
629 639
630 gaia_auth_fetcher_.reset(); 640 gaia_auth_fetcher_.reset();
631 fetcher_retries_ = 0; 641 fetcher_retries_ = 0;
632 if (requests_.empty()) { 642 if (requests_.empty()) {
633 VLOG(1) << "GaiaCookieManagerService::HandleNextRequest: no more"; 643 VLOG(1) << "GaiaCookieManagerService::HandleNextRequest: no more";
634 uber_token_fetcher_.reset(); 644 uber_token_fetcher_.reset();
635 } else { 645 } else {
636 switch (requests_.front().request_type()) { 646 switch (requests_.front().request_type()) {
637 case GaiaCookieRequestType::ADD_ACCOUNT: 647 case GaiaCookieRequestType::ADD_ACCOUNT:
638 StartFetchingUbertoken(); 648 StartFetchingUbertoken(std::string());
639 break; 649 break;
640 case GaiaCookieRequestType::LOG_OUT: 650 case GaiaCookieRequestType::LOG_OUT:
641 StartLogOutUrlFetch(); 651 StartLogOutUrlFetch();
642 break; 652 break;
643 case GaiaCookieRequestType::LIST_ACCOUNTS: 653 case GaiaCookieRequestType::LIST_ACCOUNTS:
644 uber_token_fetcher_.reset(); 654 uber_token_fetcher_.reset();
645 StartFetchingListAccounts(); 655 StartFetchingListAccounts();
646 break; 656 break;
647 }; 657 };
648 } 658 }
649 } 659 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698