diff options
Diffstat (limited to 'chromium/components/signin/core/browser/signin_header_helper.cc')
-rw-r--r-- | chromium/components/signin/core/browser/signin_header_helper.cc | 58 |
1 files changed, 32 insertions, 26 deletions
diff --git a/chromium/components/signin/core/browser/signin_header_helper.cc b/chromium/components/signin/core/browser/signin_header_helper.cc index 720d7266f01..196dc5aecc0 100644 --- a/chromium/components/signin/core/browser/signin_header_helper.cc +++ b/chromium/components/signin/core/browser/signin_header_helper.cc @@ -11,7 +11,6 @@ #include "base/strings/string_split.h" #include "components/google/core/browser/google_util.h" #include "components/signin/core/browser/chrome_connected_header_helper.h" -#include "components/signin/core/browser/cookie_settings_util.h" #include "google_apis/gaia/gaia_auth_util.h" #include "net/base/escape.h" #include "net/url_request/url_request.h" @@ -65,6 +64,27 @@ DiceResponseParams::EnableSyncInfo::~EnableSyncInfo() {} DiceResponseParams::EnableSyncInfo::EnableSyncInfo(const EnableSyncInfo&) = default; +RequestAdapter::RequestAdapter(net::URLRequest* request) : request_(request) {} + +RequestAdapter::~RequestAdapter() = default; + +const GURL& RequestAdapter::GetUrl() { + return request_->url(); +} + +bool RequestAdapter::HasHeader(const std::string& name) { + return request_->extra_request_headers().HasHeader(name); +} + +void RequestAdapter::RemoveRequestHeaderByName(const std::string& name) { + return request_->RemoveRequestHeaderByName(name); +} + +void RequestAdapter::SetExtraHeaderByName(const std::string& name, + const std::string& value) { + return request_->SetExtraRequestHeaderByName(name, value, false); +} + std::string BuildMirrorRequestCookieIfPossible( const GURL& url, const std::string& account_id, @@ -76,7 +96,7 @@ std::string BuildMirrorRequestCookieIfPossible( } bool SigninHeaderHelper::AppendOrRemoveRequestHeader( - net::URLRequest* request, + RequestAdapter* request, const GURL& redirect_url, const char* header_name, const std::string& header_value) { @@ -84,15 +104,14 @@ bool SigninHeaderHelper::AppendOrRemoveRequestHeader( // If the request is being redirected, and it has the account consistency // header, and current url is a Google URL, and the redirected one is not, // remove the header. - if (!redirect_url.is_empty() && - request->extra_request_headers().HasHeader(header_name) && - IsUrlEligibleForRequestHeader(request->url()) && + if (!redirect_url.is_empty() && request->HasHeader(header_name) && + IsUrlEligibleForRequestHeader(request->GetUrl()) && !IsUrlEligibleForRequestHeader(redirect_url)) { request->RemoveRequestHeaderByName(header_name); } return false; } - request->SetExtraRequestHeaderByName(header_name, header_value, false); + request->SetExtraHeaderByName(header_name, header_value); return true; } @@ -119,28 +138,14 @@ SigninHeaderHelper::ParseAccountConsistencyResponseHeader( return dictionary; } -bool SigninHeaderHelper::ShouldBuildRequestHeader( - const GURL& url, - const content_settings::CookieSettings* cookie_settings) { - // If signin cookies are not allowed, don't add the header. - if (!SettingsAllowSigninCookies(cookie_settings)) - return false; - - // Check if url is eligible for the header. - if (!IsUrlEligibleForRequestHeader(url)) - return false; - - return true; -} - void AppendOrRemoveMirrorRequestHeader( - net::URLRequest* request, + RequestAdapter* request, const GURL& redirect_url, const std::string& account_id, AccountConsistencyMethod account_consistency, const content_settings::CookieSettings* cookie_settings, int profile_mode_mask) { - const GURL& url = redirect_url.is_empty() ? request->url() : redirect_url; + const GURL& url = redirect_url.is_empty() ? request->GetUrl() : redirect_url; ChromeConnectedHeaderHelper chrome_connected_helper(account_consistency); std::string chrome_connected_header_value; if (chrome_connected_helper.ShouldBuildRequestHeader(url, cookie_settings)) { @@ -153,22 +158,23 @@ void AppendOrRemoveMirrorRequestHeader( } bool AppendOrRemoveDiceRequestHeader( - net::URLRequest* request, + RequestAdapter* request, const GURL& redirect_url, const std::string& account_id, bool sync_enabled, bool sync_has_auth_error, AccountConsistencyMethod account_consistency, - const content_settings::CookieSettings* cookie_settings) { + const content_settings::CookieSettings* cookie_settings, + const std::string& device_id) { #if BUILDFLAG(ENABLE_DICE_SUPPORT) - const GURL& url = redirect_url.is_empty() ? request->url() : redirect_url; + const GURL& url = redirect_url.is_empty() ? request->GetUrl() : redirect_url; DiceHeaderHelper dice_helper( !account_id.empty() && sync_has_auth_error && sync_enabled, account_consistency); std::string dice_header_value; if (dice_helper.ShouldBuildRequestHeader(url, cookie_settings)) { dice_header_value = dice_helper.BuildRequestHeader( - sync_enabled ? account_id : std::string()); + sync_enabled ? account_id : std::string(), device_id); } return dice_helper.AppendOrRemoveRequestHeader( request, redirect_url, kDiceRequestHeader, dice_header_value); |