| Index: components/signin/core/browser/gaia_cookie_manager_service.cc
|
| diff --git a/components/signin/core/browser/gaia_cookie_manager_service.cc b/components/signin/core/browser/gaia_cookie_manager_service.cc
|
| index 36ba75a96fa725b20ce0d281a7c88f1872f328e0..a25374d51aa704f0c630c457ddae5dbf93dcfb7c 100644
|
| --- a/components/signin/core/browser/gaia_cookie_manager_service.cc
|
| +++ b/components/signin/core/browser/gaia_cookie_manager_service.cc
|
| @@ -265,8 +265,13 @@ void GaiaCookieManagerService::ExternalCcResultFetcher::
|
| base::Time::Now() - m_external_cc_result_start_time_;
|
| signin_metrics::LogExternalCcResultFetches(succeeded,
|
| time_to_check_connections);
|
| - FOR_EACH_OBSERVER(Observer, helper_->observer_list_,
|
| - GetCheckConnectionInfoCompleted(succeeded));
|
| +
|
| + helper_->external_cc_result_fetched_ = true;
|
| + // Since the ExternalCCResultFetcher is only Started in place of calling
|
| + // StartFetchingMergeSession, we can assume we need to call
|
| + // StartFetchingMergeSession. If this assumption becomes invalid, a Callback
|
| + // will need to be passed to Start() and Run() here.
|
| + helper_->StartFetchingMergeSession();
|
| }
|
|
|
| GaiaCookieManagerService::GaiaCookieManagerService(
|
| @@ -278,7 +283,8 @@ GaiaCookieManagerService::GaiaCookieManagerService(
|
| external_cc_result_fetcher_(this),
|
| gaia_auth_fetcher_backoff_(&kBackoffPolicy),
|
| gaia_auth_fetcher_retries_(0),
|
| - source_(source) {
|
| + source_(source),
|
| + external_cc_result_fetched_(false) {
|
| }
|
|
|
| GaiaCookieManagerService::~GaiaCookieManagerService() {
|
| @@ -387,11 +393,6 @@ void GaiaCookieManagerService::SignalComplete(
|
| OnAddAccountToCookieCompleted(account_id, error));
|
| }
|
|
|
| -void GaiaCookieManagerService::StartFetchingExternalCcResult() {
|
| - if (!external_cc_result_fetcher_.IsRunning())
|
| - external_cc_result_fetcher_.Start();
|
| -}
|
| -
|
| void GaiaCookieManagerService::StartLogOutUrlFetch() {
|
| DCHECK(requests_.front().request_type() == GaiaCookieRequestType::LOG_OUT);
|
| VLOG(1) << "GaiaCookieManagerService::StartLogOutUrlFetch";
|
| @@ -405,10 +406,19 @@ void GaiaCookieManagerService::StartLogOutUrlFetch() {
|
|
|
| void GaiaCookieManagerService::OnUbertokenSuccess(
|
| const std::string& uber_token) {
|
| + DCHECK(requests_.front().request_type() ==
|
| + GaiaCookieRequestType::ADD_ACCOUNT);
|
| VLOG(1) << "GaiaCookieManagerService::OnUbertokenSuccess"
|
| << " account=" << requests_.front().account_id();
|
| gaia_auth_fetcher_retries_ = 0;
|
| uber_token_ = uber_token;
|
| +
|
| + if (!external_cc_result_fetched_ &&
|
| + !external_cc_result_fetcher_.IsRunning()) {
|
| + external_cc_result_fetcher_.Start();
|
| + return;
|
| + }
|
| +
|
| StartFetchingMergeSession();
|
| }
|
|
|
| @@ -469,8 +479,6 @@ void GaiaCookieManagerService::StartFetchingMergeSession() {
|
| new GaiaAuthFetcher(this, source_,
|
| signin_client_->GetURLRequestContext()));
|
|
|
| - // It's possible that not all external checks have completed.
|
| - // GetExternalCcResult() returns results for those that have.
|
| gaia_auth_fetcher_->StartMergeSession(uber_token_,
|
| external_cc_result_fetcher_.GetExternalCcResult());
|
| }
|
|
|