diff options
Diffstat (limited to 'chromium/components/signin')
4 files changed, 46 insertions, 19 deletions
diff --git a/chromium/components/signin/core/browser/consistency_cookie_manager_base.cc b/chromium/components/signin/core/browser/consistency_cookie_manager_base.cc index 502127b6ee8..c428f6e06c0 100644 --- a/chromium/components/signin/core/browser/consistency_cookie_manager_base.cc +++ b/chromium/components/signin/core/browser/consistency_cookie_manager_base.cc @@ -67,11 +67,10 @@ void ConsistencyCookieManagerBase::UpdateCookie() { base::Time now = base::Time::Now(); base::Time expiry = now + base::TimeDelta::FromDays(2 * 365); // Two years. net::CanonicalCookie cookie( - kCookieName, cookie_value, - "." + GaiaUrls::GetInstance()->gaia_url().host(), /*path=*/"/", - /*creation=*/now, /*expiration=*/expiry, /*last_access=*/now, - /*secure=*/true, /*httponly=*/false, net::CookieSameSite::NO_RESTRICTION, - net::COOKIE_PRIORITY_DEFAULT); + kCookieName, cookie_value, GaiaUrls::GetInstance()->gaia_url().host(), + /*path=*/"/", /*creation=*/now, /*expiration=*/expiry, + /*last_access=*/now, /*secure=*/true, /*httponly=*/false, + net::CookieSameSite::NO_RESTRICTION, net::COOKIE_PRIORITY_DEFAULT); cookie_manager->SetCanonicalCookie( cookie, "https", net::CookieOptions(), network::mojom::CookieManager::SetCanonicalCookieCallback()); diff --git a/chromium/components/signin/core/browser/gaia_cookie_manager_service.cc b/chromium/components/signin/core/browser/gaia_cookie_manager_service.cc index ff0011bad89..7a576c1c6cb 100644 --- a/chromium/components/signin/core/browser/gaia_cookie_manager_service.cc +++ b/chromium/components/signin/core/browser/gaia_cookie_manager_service.cc @@ -261,9 +261,11 @@ GaiaCookieManagerService::ExternalCcResultFetcher::GetExternalCcResult() { return base::JoinString(results, ","); } -void GaiaCookieManagerService::ExternalCcResultFetcher::Start() { +void GaiaCookieManagerService::ExternalCcResultFetcher::Start( + base::OnceClosure callback) { DCHECK(!helper_->external_cc_result_fetched_); m_external_cc_result_start_time_ = base::Time::Now(); + callback_ = std::move(callback); CleanupTransientState(); results_.clear(); @@ -453,11 +455,7 @@ void GaiaCookieManagerService::ExternalCcResultFetcher:: time_to_check_connections); 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(); + std::move(callback_).Run(); } GaiaCookieManagerService::GaiaCookieManagerService( @@ -808,7 +806,9 @@ void GaiaCookieManagerService::OnUbertokenFetchComplete( if (!external_cc_result_fetched_ && !external_cc_result_fetcher_.IsRunning()) { - external_cc_result_fetcher_.Start(); + external_cc_result_fetcher_.Start( + base::BindOnce(&GaiaCookieManagerService::StartFetchingMergeSession, + weak_ptr_factory_.GetWeakPtr())); return; } @@ -1064,6 +1064,15 @@ void GaiaCookieManagerService::StartFetchingAccessTokensForMultilogin() { DCHECK_EQ(SET_ACCOUNTS, requests_.front().request_type()); VLOG(1) << "GaiaCookieManagerService::StartFetchingAccessToken account_id =" << base::JoinString(requests_.front().account_ids(), " "); + + if (!external_cc_result_fetched_ && + !external_cc_result_fetcher_.IsRunning()) { + external_cc_result_fetcher_.Start(base::BindOnce( + &GaiaCookieManagerService::StartFetchingAccessTokensForMultilogin, + weak_ptr_factory_.GetWeakPtr())); + return; + } + token_requests_.clear(); access_tokens_.clear(); for (const std::string& account_id : requests_.front().account_ids()) { @@ -1091,10 +1100,12 @@ void GaiaCookieManagerService::StartFetchingUbertoken() { void GaiaCookieManagerService::StartFetchingMultiLogin( const std::vector<GaiaAuthFetcher::MultiloginTokenIDPair>& accounts) { + DCHECK(external_cc_result_fetched_); gaia_auth_fetcher_ = signin_client_->CreateGaiaAuthFetcher( this, requests_.front().source(), GetURLLoaderFactory()); - gaia_auth_fetcher_->StartOAuthMultilogin(accounts); + gaia_auth_fetcher_->StartOAuthMultilogin( + accounts, external_cc_result_fetcher_.GetExternalCcResult()); } void GaiaCookieManagerService::StartFetchingMergeSession() { @@ -1118,7 +1129,15 @@ void GaiaCookieManagerService::StartFetchingLogOut() { RecordLogoutRequestState(LogoutRequestState::kStarted); gaia_auth_fetcher_ = signin_client_->CreateGaiaAuthFetcher( this, requests_.front().source(), GetURLLoaderFactory()); - gaia_auth_fetcher_->StartLogOut(); + bool use_continue_url = false; +#if defined(OS_ANDROID) + use_continue_url = base::FeatureList::IsEnabled(signin::kMiceFeature); +#endif + if (use_continue_url) { + gaia_auth_fetcher_->StartLogOutWithBlankContinueURL(); + } else { + gaia_auth_fetcher_->StartLogOut(); + } } void GaiaCookieManagerService::StartFetchingListAccounts() { diff --git a/chromium/components/signin/core/browser/gaia_cookie_manager_service.h b/chromium/components/signin/core/browser/gaia_cookie_manager_service.h index 854d00a6413..8073b55d947 100644 --- a/chromium/components/signin/core/browser/gaia_cookie_manager_service.h +++ b/chromium/components/signin/core/browser/gaia_cookie_manager_service.h @@ -184,7 +184,7 @@ class GaiaCookieManagerService : public GaiaAuthConsumer, // Start fetching the external CC result. If a fetch is already in progress // it is canceled. - void Start(); + void Start(base::OnceClosure callback); // Are external URLs still being checked? bool IsRunning(); @@ -221,6 +221,7 @@ class GaiaCookieManagerService : public GaiaAuthConsumer, LoaderToToken loaders_; ResultMap results_; base::Time m_external_cc_result_start_time_; + base::OnceClosure callback_; DISALLOW_COPY_AND_ASSIGN(ExternalCcResultFetcher); }; diff --git a/chromium/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc b/chromium/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc index 04b96f426dc..2b71d6111db 100644 --- a/chromium/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc +++ b/chromium/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc @@ -1372,7 +1372,9 @@ TEST_F(GaiaCookieManagerServiceTest, ExternalCcResultFetcher) { InstrumentedGaiaCookieManagerService helper(token_service(), signin_client()); GaiaCookieManagerService::ExternalCcResultFetcher result_fetcher(&helper); EXPECT_CALL(helper, StartFetchingMergeSession()); - result_fetcher.Start(); + result_fetcher.Start(base::BindOnce( + &InstrumentedGaiaCookieManagerService::StartFetchingMergeSession, + base::Unretained(&helper))); // Simulate a successful completion of GetCheckConnctionInfo. SimulateGetCheckConnectionInfoSuccess( @@ -1397,7 +1399,9 @@ TEST_F(GaiaCookieManagerServiceTest, ExternalCcResultFetcherTimeout) { InstrumentedGaiaCookieManagerService helper(token_service(), signin_client()); GaiaCookieManagerService::ExternalCcResultFetcher result_fetcher(&helper); EXPECT_CALL(helper, StartFetchingMergeSession()); - result_fetcher.Start(); + result_fetcher.Start(base::BindOnce( + &InstrumentedGaiaCookieManagerService::StartFetchingMergeSession, + base::Unretained(&helper))); // Simulate a successful completion of GetCheckConnctionInfo. SimulateGetCheckConnectionInfoSuccess( @@ -1426,7 +1430,9 @@ TEST_F(GaiaCookieManagerServiceTest, ExternalCcResultFetcherTruncate) { InstrumentedGaiaCookieManagerService helper(token_service(), signin_client()); GaiaCookieManagerService::ExternalCcResultFetcher result_fetcher(&helper); EXPECT_CALL(helper, StartFetchingMergeSession()); - result_fetcher.Start(); + result_fetcher.Start(base::BindOnce( + &InstrumentedGaiaCookieManagerService::StartFetchingMergeSession, + base::Unretained(&helper))); // Simulate a successful completion of GetCheckConnctionInfo. SimulateGetCheckConnectionInfoSuccess( @@ -1468,7 +1474,9 @@ TEST_F(GaiaCookieManagerServiceTest, UbertokenSuccessFetchesExternalCC) { TEST_F(GaiaCookieManagerServiceTest, UbertokenSuccessFetchesExternalCCOnce) { InstrumentedGaiaCookieManagerService helper(token_service(), signin_client()); - helper.external_cc_result_fetcher_for_testing()->Start(); + helper.external_cc_result_fetcher_for_testing()->Start(base::BindOnce( + &InstrumentedGaiaCookieManagerService::StartFetchingMergeSession, + base::Unretained(&helper))); EXPECT_CALL(helper, StartFetchingUbertoken()); helper.AddAccountToCookie( |