summaryrefslogtreecommitdiff
path: root/chromium/components/signin
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/signin')
-rw-r--r--chromium/components/signin/core/browser/consistency_cookie_manager_base.cc9
-rw-r--r--chromium/components/signin/core/browser/gaia_cookie_manager_service.cc37
-rw-r--r--chromium/components/signin/core/browser/gaia_cookie_manager_service.h3
-rw-r--r--chromium/components/signin/core/browser/gaia_cookie_manager_service_unittest.cc16
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(