Unrefcount AuthChallengeInfo
This class is not ref-counted for any particular reason and the shared
ownership is confusing/unnecessary. This CL removes its refcounting;
it is now passed around mostly as a const ref, and copied where
necessary, as described in detail below.
The AuthChallengeInfo for a request is created and populated by
HttpAuthController, and ownership is then handed off to HttpResponseInfo.
HttpResponseInfo stores the AuthChallengeInfo inside a base::Optional
rather than a unique_ptr so that HttpResponseInfo remains copyable (and
rather than as a member field directly because consumers need to tell when
the auth_challenge has been set or not).
The AuthChallengeInfo is then passed to delegates as a const ref so it
is clear that delegates don't own it and can't modify it. It is copied on
the UI thread when we get to the point of creating the LoginDelegate/
LoginHandler.
Bug: 949197
Change-Id: I8b91fd80d20b4771c38cf4785ea0ca33ddb25ab5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1550631
Reviewed-by: Reilly Grant <[email protected]>
Reviewed-by: Wez <[email protected]>
Reviewed-by: Elly Fong-Jones <[email protected]>
Reviewed-by: Avi Drissman <[email protected]>
Reviewed-by: Asanka Herath <[email protected]>
Reviewed-by: Bo <[email protected]>
Reviewed-by: Eugene But <[email protected]>
Reviewed-by: Luke Halliwell <[email protected]>
Commit-Queue: Emily Stark <[email protected]>
Cr-Commit-Position: refs/heads/master@{#649143}
diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc
index 1b45d0b..b476c0a 100644
--- a/android_webview/browser/aw_content_browser_client.cc
+++ b/android_webview/browser/aw_content_browser_client.cc
@@ -895,7 +895,7 @@
std::unique_ptr<content::LoginDelegate>
AwContentBrowserClient::CreateLoginDelegate(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
const content::GlobalRequestID& request_id,
bool is_main_frame,
diff --git a/android_webview/browser/aw_content_browser_client.h b/android_webview/browser/aw_content_browser_client.h
index b5c8563..a6eae7b3 100644
--- a/android_webview/browser/aw_content_browser_client.h
+++ b/android_webview/browser/aw_content_browser_client.h
@@ -194,7 +194,7 @@
bool* ignore_navigation) override;
bool ShouldCreateTaskScheduler() override;
std::unique_ptr<content::LoginDelegate> CreateLoginDelegate(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
const content::GlobalRequestID& request_id,
bool is_main_frame,
diff --git a/android_webview/browser/aw_http_auth_handler.cc b/android_webview/browser/aw_http_auth_handler.cc
index 2e9f69aa..4fa2eb3 100644
--- a/android_webview/browser/aw_http_auth_handler.cc
+++ b/android_webview/browser/aw_http_auth_handler.cc
@@ -24,13 +24,13 @@
namespace android_webview {
-AwHttpAuthHandler::AwHttpAuthHandler(net::AuthChallengeInfo* auth_info,
+AwHttpAuthHandler::AwHttpAuthHandler(const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
bool first_auth_attempt,
LoginAuthRequiredCallback callback)
: WebContentsObserver(web_contents),
- host_(auth_info->challenger.host()),
- realm_(auth_info->realm),
+ host_(auth_info.challenger.host()),
+ realm_(auth_info.realm),
callback_(std::move(callback)),
weak_factory_(this) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
diff --git a/android_webview/browser/aw_http_auth_handler.h b/android_webview/browser/aw_http_auth_handler.h
index 3903391e..2ddb4e9 100644
--- a/android_webview/browser/aw_http_auth_handler.h
+++ b/android_webview/browser/aw_http_auth_handler.h
@@ -29,7 +29,7 @@
class AwHttpAuthHandler : public content::LoginDelegate,
public content::WebContentsObserver {
public:
- AwHttpAuthHandler(net::AuthChallengeInfo* auth_info,
+ AwHttpAuthHandler(const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
bool first_auth_attempt,
LoginAuthRequiredCallback callback);
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index bf46e4470..28fe0840 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -5122,7 +5122,7 @@
std::unique_ptr<content::LoginDelegate>
ChromeContentBrowserClient::CreateLoginDelegate(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
const content::GlobalRequestID& request_id,
bool is_request_for_main_frame,
diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h
index 5bd4858..319bd17 100644
--- a/chrome/browser/chrome_content_browser_client.h
+++ b/chrome/browser/chrome_content_browser_client.h
@@ -523,7 +523,7 @@
std::unique_ptr<net::ClientCertStore> CreateClientCertStore(
content::ResourceContext* resource_context) override;
std::unique_ptr<content::LoginDelegate> CreateLoginDelegate(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
const content::GlobalRequestID& request_id,
bool is_request_for_main_frame,
diff --git a/chrome/browser/ui/android/login_handler_android.cc b/chrome/browser/ui/android/login_handler_android.cc
index 5383bfa5..98d32b06 100644
--- a/chrome/browser/ui/android/login_handler_android.cc
+++ b/chrome/browser/ui/android/login_handler_android.cc
@@ -27,7 +27,7 @@
class LoginHandlerAndroid : public LoginHandler {
public:
- LoginHandlerAndroid(net::AuthChallengeInfo* auth_info,
+ LoginHandlerAndroid(const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
LoginAuthRequiredCallback auth_required_callback)
: LoginHandler(auth_info,
@@ -89,7 +89,7 @@
// static
std::unique_ptr<LoginHandler> LoginHandler::Create(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
LoginAuthRequiredCallback auth_required_callback) {
return std::make_unique<LoginHandlerAndroid>(
diff --git a/chrome/browser/ui/browser_dialogs.h b/chrome/browser/ui/browser_dialogs.h
index 44dca67..117255d 100644
--- a/chrome/browser/ui/browser_dialogs.h
+++ b/chrome/browser/ui/browser_dialogs.h
@@ -138,7 +138,7 @@
// Creates a toolkit-views based LoginHandler (e.g. HTTP-Auth dialog).
std::unique_ptr<LoginHandler> CreateLoginHandlerViews(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
LoginAuthRequiredCallback auth_required_callback);
diff --git a/chrome/browser/ui/login/login_handler.cc b/chrome/browser/ui/login/login_handler.cc
index ec3102b..1c13aa99 100644
--- a/chrome/browser/ui/login/login_handler.cc
+++ b/chrome/browser/ui/login/login_handler.cc
@@ -89,7 +89,7 @@
DCHECK(model);
}
-LoginHandler::LoginHandler(net::AuthChallengeInfo* auth_info,
+LoginHandler::LoginHandler(const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
LoginAuthRequiredCallback auth_required_callback)
: WebContentsObserver(web_contents),
@@ -98,7 +98,6 @@
prompt_started_(false),
weak_factory_(this) {
DCHECK(web_contents);
- DCHECK(auth_info_) << "LoginHandler constructed with NULL auth info";
}
LoginHandler::~LoginHandler() {
@@ -139,7 +138,7 @@
base::BindOnce(&LoginHandler::MaybeSetUpLoginPrompt,
weak_factory_.GetWeakPtr(), request_url, is_main_frame);
if (api->MaybeProxyAuthRequest(web_contents()->GetBrowserContext(),
- auth_info_.get(), std::move(response_headers),
+ auth_info_, std::move(response_headers),
request_id, is_main_frame,
std::move(continuation))) {
return;
@@ -236,7 +235,7 @@
DCHECK(login_details->handler() != this);
// Only handle notification for the identical auth info.
- if (!login_details->handler()->auth_info()->Equals(*auth_info()))
+ if (login_details->handler()->auth_info() != auth_info())
return;
// Ignore login notification events from other profiles.
@@ -472,7 +471,7 @@
request_url.GetOrigin();
if (is_request_for_main_frame &&
(is_cross_origin_request || web_contents()->ShowingInterstitialPage() ||
- auth_info()->is_proxy) &&
+ auth_info().is_proxy) &&
web_contents()->GetDelegate()->GetDisplayMode(web_contents()) !=
blink::kWebDisplayModeStandalone) {
RecordHttpAuthPromptType(AUTH_PROMPT_TYPE_WITH_INTERSTITIAL);
@@ -486,7 +485,7 @@
// This cancels any existing interstitial.
interstitial_delegate_ =
(new LoginInterstitialDelegate(
- web_contents(), auth_info()->is_proxy ? GURL() : request_url,
+ web_contents(), auth_info().is_proxy ? GURL() : request_url,
std::move(callback)))
->GetWeakPtr();
@@ -518,7 +517,7 @@
base::string16 authority;
base::string16 explanation;
- GetDialogStrings(request_url, *auth_info(), &authority, &explanation);
+ GetDialogStrings(request_url, auth_info(), &authority, &explanation);
password_manager::PasswordManager* password_manager =
GetPasswordManagerForLogin();
@@ -548,7 +547,7 @@
}
PasswordForm observed_form(
- MakeInputForPasswordManager(request_url, *auth_info()));
+ MakeInputForPasswordManager(request_url, auth_info()));
LoginModelData model_data(password_manager, observed_form);
BuildViewAndNotify(authority, explanation, &model_data);
}
@@ -570,7 +569,7 @@
// ----------------------------------------------------------------------------
// Public API
std::unique_ptr<content::LoginDelegate> CreateLoginPrompt(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
const content::GlobalRequestID& request_id,
bool is_request_for_main_frame,
diff --git a/chrome/browser/ui/login/login_handler.h b/chrome/browser/ui/login/login_handler.h
index 08d4aef..a14fd1c 100644
--- a/chrome/browser/ui/login/login_handler.h
+++ b/chrome/browser/ui/login/login_handler.h
@@ -23,6 +23,7 @@
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/resource_request_info.h"
#include "content/public/browser/web_contents_observer.h"
+#include "net/base/auth.h"
class GURL;
class LoginInterstitialDelegate;
@@ -31,10 +32,6 @@
class WebContents;
} // namespace content
-namespace net {
-class AuthChallengeInfo;
-} // namespace net
-
// This is the base implementation for the OS-specific classes that prompt for
// authentication information.
class LoginHandler : public content::LoginDelegate,
@@ -56,7 +53,7 @@
const autofill::PasswordForm& form;
};
- LoginHandler(net::AuthChallengeInfo* auth_info,
+ LoginHandler(const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
LoginAuthRequiredCallback auth_required_callback);
~LoginHandler() override;
@@ -67,7 +64,7 @@
// them, the login request is aborted and the callback will not be called. The
// callback must remain valid until one of those two events occurs.
static std::unique_ptr<LoginHandler> Create(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
LoginAuthRequiredCallback auth_required_callback);
@@ -93,7 +90,7 @@
const content::NotificationDetails& details) override;
// Who/where/what asked for the authentication.
- const net::AuthChallengeInfo* auth_info() const { return auth_info_.get(); }
+ const net::AuthChallengeInfo& auth_info() const { return auth_info_; }
protected:
// Implement this to initialize the underlying platform specific view. If
@@ -169,7 +166,7 @@
LoginModelData* login_model_data);
// Who/where/what asked for the authentication.
- scoped_refptr<net::AuthChallengeInfo> auth_info_;
+ net::AuthChallengeInfo auth_info_;
// The PasswordForm sent to the PasswordManager. This is so we can refer to it
// when later notifying the password manager if the credentials were accepted
@@ -232,7 +229,7 @@
// request by destroying the returned LoginDelegate. It must do this before
// invalidating the callback.
std::unique_ptr<content::LoginDelegate> CreateLoginPrompt(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
const content::GlobalRequestID& request_id,
bool is_main_frame,
diff --git a/chrome/browser/ui/login/login_handler_browsertest.cc b/chrome/browser/ui/login/login_handler_browsertest.cc
index a1d3cb3..9930929 100644
--- a/chrome/browser/ui/login/login_handler_browsertest.cc
+++ b/chrome/browser/ui/login/login_handler_browsertest.cc
@@ -163,10 +163,9 @@
};
void LoginPromptBrowserTest::SetAuthFor(LoginHandler* handler) {
- const net::AuthChallengeInfo* challenge = handler->auth_info();
+ const net::AuthChallengeInfo& challenge = handler->auth_info();
- ASSERT_TRUE(challenge);
- auto i = auth_map_.find(challenge->realm);
+ auto i = auth_map_.find(challenge.realm);
EXPECT_TRUE(auth_map_.end() != i);
if (i != auth_map_.end()) {
const AuthInfo& info = i->second;
@@ -604,10 +603,10 @@
login_prompt_observer_.handlers().begin(),
login_prompt_observer_.handlers().end(),
[&seen_realms](LoginHandler* handler) {
- return seen_realms.count(handler->auth_info()->realm) == 0;
+ return seen_realms.count(handler->auth_info().realm) == 0;
});
ASSERT_TRUE(it != login_prompt_observer_.handlers().end());
- seen_realms.insert((*it)->auth_info()->realm);
+ seen_realms.insert((*it)->auth_info().realm);
for_each_realm_func(*it);
}
diff --git a/chrome/browser/ui/login/login_handler_unittest.cc b/chrome/browser/ui/login/login_handler_unittest.cc
index 2a9c978ff9..fb2fa41 100644
--- a/chrome/browser/ui/login/login_handler_unittest.cc
+++ b/chrome/browser/ui/login/login_handler_unittest.cc
@@ -114,26 +114,26 @@
} // namespace
TEST(LoginHandlerTest, DialogStringsAndRealm) {
- scoped_refptr<net::AuthChallengeInfo> auth_info = new net::AuthChallengeInfo;
for (const auto& test_case : kTestCases) {
+ net::AuthChallengeInfo auth_info;
GURL request_url(test_case.request_url);
- auth_info->is_proxy = test_case.auth_info.target_type == PROXY;
- auth_info->scheme = test_case.auth_info.scheme;
- auth_info->realm = test_case.auth_info.realm;
- auth_info->challenger = url::Origin::Create(
+ auth_info.is_proxy = test_case.auth_info.target_type == PROXY;
+ auth_info.scheme = test_case.auth_info.scheme;
+ auth_info.realm = test_case.auth_info.realm;
+ auth_info.challenger = url::Origin::Create(
test_case.auth_info.challenger ? GURL(test_case.auth_info.challenger)
: request_url);
SCOPED_TRACE(::testing::Message()
<< "request_url:" << test_case.request_url
- << " auth_info: { is_proxy:" << auth_info->is_proxy
- << " scheme:'" << auth_info->scheme << "' realm:'"
- << auth_info->realm << "' challenger:'"
- << auth_info->challenger.Serialize() << "' }");
+ << " auth_info: { is_proxy:" << auth_info.is_proxy
+ << " scheme:'" << auth_info.scheme << "' realm:'"
+ << auth_info.realm << "' challenger:'"
+ << auth_info.challenger.Serialize() << "' }");
base::string16 authority;
base::string16 explanation;
- LoginHandler::GetDialogStrings(request_url, *auth_info, &authority,
+ LoginHandler::GetDialogStrings(request_url, auth_info, &authority,
&explanation);
EXPECT_EQ(ExpectedAuthority(test_case.auth_info.target_type == PROXY,
test_case.expected.authority),
@@ -142,6 +142,6 @@
base::UTF16ToASCII(explanation).c_str());
EXPECT_STREQ(test_case.expected.signon_realm,
- LoginHandler::GetSignonRealm(request_url, *auth_info).c_str());
+ LoginHandler::GetSignonRealm(request_url, auth_info).c_str());
}
}
diff --git a/chrome/browser/ui/views/browser_dialogs_views.cc b/chrome/browser/ui/views/browser_dialogs_views.cc
index 1844555..8f0c610 100644
--- a/chrome/browser/ui/views/browser_dialogs_views.cc
+++ b/chrome/browser/ui/views/browser_dialogs_views.cc
@@ -18,7 +18,7 @@
// all toolkit-views platforms.
// static
std::unique_ptr<LoginHandler> LoginHandler::Create(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
LoginAuthRequiredCallback auth_required_callback) {
return chrome::CreateLoginHandlerViews(auth_info, web_contents,
diff --git a/chrome/browser/ui/views/login_handler_views.cc b/chrome/browser/ui/views/login_handler_views.cc
index a61539b5..3b3eeb12 100644
--- a/chrome/browser/ui/views/login_handler_views.cc
+++ b/chrome/browser/ui/views/login_handler_views.cc
@@ -29,7 +29,7 @@
// have been called.
class LoginHandlerViews : public LoginHandler {
public:
- LoginHandlerViews(net::AuthChallengeInfo* auth_info,
+ LoginHandlerViews(const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
LoginAuthRequiredCallback auth_required_callback)
: LoginHandler(auth_info,
@@ -178,7 +178,7 @@
} // namespace
std::unique_ptr<LoginHandler> CreateLoginHandlerViews(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
LoginAuthRequiredCallback auth_required_callback) {
return std::make_unique<LoginHandlerViews>(auth_info, web_contents,
diff --git a/chromecast/browser/extension_request_protocol_handler.cc b/chromecast/browser/extension_request_protocol_handler.cc
index b673ed88..276760d 100644
--- a/chromecast/browser/extension_request_protocol_handler.cc
+++ b/chromecast/browser/extension_request_protocol_handler.cc
@@ -123,8 +123,7 @@
bool CopyFragmentOnRedirect(const GURL& location) const override;
bool IsSafeRedirect(const GURL& location) override;
bool NeedsAuth() override;
- void GetAuthChallengeInfo(
- scoped_refptr<net::AuthChallengeInfo>* auth_info) override;
+ std::unique_ptr<net::AuthChallengeInfo> GetAuthChallengeInfo() override;
void SetAuth(const net::AuthCredentials& credentials) override;
void CancelAuth() override;
void ContinueWithCertificate(
@@ -137,7 +136,7 @@
const net::RedirectInfo& redirect_info,
bool* defer_redirect) override;
void OnAuthRequired(net::URLRequest* request,
- net::AuthChallengeInfo* auth_info) override;
+ const net::AuthChallengeInfo& auth_info) override;
void OnCertificateRequested(
net::URLRequest* request,
net::SSLCertRequestInfo* cert_request_info) override;
@@ -281,8 +280,10 @@
return false;
}
-void CastExtensionURLRequestJob::GetAuthChallengeInfo(
- scoped_refptr<net::AuthChallengeInfo>* auth_info) {}
+std::unique_ptr<net::AuthChallengeInfo>
+CastExtensionURLRequestJob::GetAuthChallengeInfo() {
+ return nullptr;
+}
void CastExtensionURLRequestJob::SetAuth(
const net::AuthCredentials& credentials) {
@@ -313,7 +314,7 @@
void CastExtensionURLRequestJob::OnAuthRequired(
net::URLRequest* request,
- net::AuthChallengeInfo* auth_info) {
+ const net::AuthChallengeInfo& auth_info) {
net::URLRequest::Delegate::OnAuthRequired(request, auth_info);
}
diff --git a/content/browser/devtools/devtools_network_interceptor.h b/content/browser/devtools/devtools_network_interceptor.h
index d92b1f2..ca735f4 100644
--- a/content/browser/devtools/devtools_network_interceptor.h
+++ b/content/browser/devtools/devtools_network_interceptor.h
@@ -32,7 +32,7 @@
bool is_navigation;
int response_error_code;
std::unique_ptr<protocol::Network::Request> network_request;
- scoped_refptr<net::AuthChallengeInfo> auth_challenge;
+ std::unique_ptr<net::AuthChallengeInfo> auth_challenge;
scoped_refptr<net::HttpResponseHeaders> response_headers;
protocol::Maybe<bool> is_download;
protocol::Maybe<protocol::String> redirect_url;
diff --git a/content/browser/devtools/devtools_url_interceptor_request_job.cc b/content/browser/devtools/devtools_url_interceptor_request_job.cc
index 6ce7f431..32cff2f 100644
--- a/content/browser/devtools/devtools_url_interceptor_request_job.cc
+++ b/content/browser/devtools/devtools_url_interceptor_request_job.cc
@@ -53,7 +53,7 @@
// net::URLRequest::Delegate methods:
void OnAuthRequired(net::URLRequest* request,
- net::AuthChallengeInfo* auth_info) override;
+ const net::AuthChallengeInfo& auth_info) override;
void OnCertificateRequested(
net::URLRequest* request,
net::SSLCertRequestInfo* cert_request_info) override;
@@ -188,7 +188,7 @@
void DevToolsURLInterceptorRequestJob::SubRequest::OnAuthRequired(
net::URLRequest* request,
- net::AuthChallengeInfo* auth_info) {
+ const net::AuthChallengeInfo& auth_info) {
devtools_interceptor_request_job_->OnSubRequestAuthRequired(auth_info);
}
@@ -706,9 +706,10 @@
return !!auth_info_;
}
-void DevToolsURLInterceptorRequestJob::GetAuthChallengeInfo(
- scoped_refptr<net::AuthChallengeInfo>* auth_info) {
- *auth_info = auth_info_.get();
+std::unique_ptr<net::AuthChallengeInfo>
+DevToolsURLInterceptorRequestJob::GetAuthChallengeInfo() {
+ DCHECK(auth_info_);
+ return std::make_unique<net::AuthChallengeInfo>(*auth_info_);
}
void DevToolsURLInterceptorRequestJob::SetAuth(
@@ -723,8 +724,8 @@
}
void DevToolsURLInterceptorRequestJob::OnSubRequestAuthRequired(
- net::AuthChallengeInfo* auth_info) {
- auth_info_ = auth_info;
+ const net::AuthChallengeInfo& auth_info) {
+ auth_info_ = std::make_unique<net::AuthChallengeInfo>(auth_info);
if (stage_to_intercept_ == InterceptionStage::DONT_INTERCEPT) {
// This should trigger default auth behavior.
@@ -741,7 +742,8 @@
waiting_for_user_response_ = WaitingForUserResponse::WAITING_FOR_AUTH_ACK;
std::unique_ptr<InterceptedRequestInfo> request_info = BuildRequestInfo();
- request_info->auth_challenge = auth_info;
+ request_info->auth_challenge =
+ std::make_unique<net::AuthChallengeInfo>(auth_info);
base::PostTaskWithTraits(FROM_HERE, {BrowserThread::UI},
base::BindOnce(callback_, std::move(request_info)));
}
diff --git a/content/browser/devtools/devtools_url_interceptor_request_job.h b/content/browser/devtools/devtools_url_interceptor_request_job.h
index f8ed00c..7a22e70e1 100644
--- a/content/browser/devtools/devtools_url_interceptor_request_job.h
+++ b/content/browser/devtools/devtools_url_interceptor_request_job.h
@@ -53,8 +53,7 @@
bool GetCharset(std::string* charset) override;
void GetLoadTimingInfo(net::LoadTimingInfo* load_timing_info) const override;
bool NeedsAuth() override;
- void GetAuthChallengeInfo(
- scoped_refptr<net::AuthChallengeInfo>* auth_info) override;
+ std::unique_ptr<net::AuthChallengeInfo> GetAuthChallengeInfo() override;
void SetAuth(const net::AuthCredentials& credentials) override;
void CancelAuth() override;
@@ -117,7 +116,7 @@
const net::CookieStatusList& excluded_cookies);
// Callbacks from SubRequest.
- void OnSubRequestAuthRequired(net::AuthChallengeInfo* auth_info);
+ void OnSubRequestAuthRequired(const net::AuthChallengeInfo& auth_info);
void OnSubRequestRedirectReceived(const net::URLRequest& request,
const net::RedirectInfo& redirectinfo,
bool* defer_redirect);
@@ -152,7 +151,7 @@
std::unique_ptr<MockResponseDetails> mock_response_details_;
std::unique_ptr<net::RedirectInfo> redirect_;
WaitingForUserResponse waiting_for_user_response_;
- scoped_refptr<net::AuthChallengeInfo> auth_info_;
+ std::unique_ptr<net::AuthChallengeInfo> auth_info_;
const std::string interception_id_;
const intptr_t owning_entry_id_;
diff --git a/content/browser/devtools/devtools_url_loader_interceptor.cc b/content/browser/devtools/devtools_url_loader_interceptor.cc
index 65af691..716d0de 100644
--- a/content/browser/devtools/devtools_url_loader_interceptor.cc
+++ b/content/browser/devtools/devtools_url_loader_interceptor.cc
@@ -203,7 +203,7 @@
void Detach();
void OnAuthRequest(
- const scoped_refptr<net::AuthChallengeInfo>& auth_info,
+ const net::AuthChallengeInfo& auth_info,
DevToolsURLLoaderInterceptor::HandleAuthRequestCallback callback);
private:
@@ -583,7 +583,7 @@
int32_t process_id,
int32_t routing_id,
int32_t request_id,
- const scoped_refptr<net::AuthChallengeInfo>& auth_info,
+ const net::AuthChallengeInfo& auth_info,
HandleAuthRequestCallback callback) {
GlobalRequestId req_id = std::make_tuple(process_id, routing_id, request_id);
if (auto* job = InterceptionJob::FindByRequestId(req_id))
@@ -1411,7 +1411,7 @@
}
void InterceptionJob::OnAuthRequest(
- const scoped_refptr<net::AuthChallengeInfo>& auth_info,
+ const net::AuthChallengeInfo& auth_info,
DevToolsURLLoaderInterceptor::HandleAuthRequestCallback callback) {
DCHECK_EQ(kRequestSent, state_);
DCHECK(pending_auth_callback_.is_null());
@@ -1424,7 +1424,8 @@
}
state_ = State::kAuthRequired;
auto request_info = BuildRequestInfo(nullptr);
- request_info->auth_challenge = auth_info;
+ request_info->auth_challenge =
+ std::make_unique<net::AuthChallengeInfo>(auth_info);
pending_auth_callback_ = std::move(callback);
NotifyClient(std::move(request_info));
}
diff --git a/content/browser/devtools/devtools_url_loader_interceptor.h b/content/browser/devtools/devtools_url_loader_interceptor.h
index d4a9ab6c..24813a9 100644
--- a/content/browser/devtools/devtools_url_loader_interceptor.h
+++ b/content/browser/devtools/devtools_url_loader_interceptor.h
@@ -21,12 +21,11 @@
base::OnceCallback<void(bool use_fallback,
const base::Optional<net::AuthCredentials>&)>;
// Can only be called on the IO thread.
- static void HandleAuthRequest(
- int32_t process_id,
- int32_t routing_id,
- int32_t request_id,
- const scoped_refptr<net::AuthChallengeInfo>& auth_info,
- HandleAuthRequestCallback callback);
+ static void HandleAuthRequest(int32_t process_id,
+ int32_t routing_id,
+ int32_t request_id,
+ const net::AuthChallengeInfo& auth_info,
+ HandleAuthRequestCallback callback);
explicit DevToolsURLLoaderInterceptor(
DevToolsNetworkInterceptor::RequestInterceptedCallback callback);
diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc
index e06d2a5..31fed5c 100644
--- a/content/browser/loader/resource_dispatcher_host_impl.cc
+++ b/content/browser/loader/resource_dispatcher_host_impl.cc
@@ -237,7 +237,7 @@
delegate_ui_.reset(new DelegateOwnerUI(weak_factory_.GetWeakPtr()));
}
- void Start(net::AuthChallengeInfo* auth_info,
+ void Start(const net::AuthChallengeInfo& auth_info,
ResourceRequestInfo::WebContentsGetter web_contents_getter,
const GlobalRequestID& request_id,
bool is_request_for_main_frame,
@@ -247,11 +247,11 @@
DCHECK_CURRENTLY_ON(BrowserThread::IO);
base::PostTaskWithTraits(
FROM_HERE, {BrowserThread::UI},
- base::BindOnce(
- &DelegateOwnerUI::Start, base::Unretained(delegate_ui_.get()),
- base::RetainedRef(auth_info), std::move(web_contents_getter),
- request_id, is_request_for_main_frame, url,
- std::move(response_headers), first_auth_attempt));
+ base::BindOnce(&DelegateOwnerUI::Start,
+ base::Unretained(delegate_ui_.get()), auth_info,
+ std::move(web_contents_getter), request_id,
+ is_request_for_main_frame, url,
+ std::move(response_headers), first_auth_attempt));
}
private:
@@ -264,7 +264,7 @@
: proxy_(std::move(proxy)) {}
~DelegateOwnerUI() { DCHECK_CURRENTLY_ON(BrowserThread::UI); }
- void Start(net::AuthChallengeInfo* auth_info,
+ void Start(const net::AuthChallengeInfo& auth_info,
ResourceRequestInfo::WebContentsGetter web_contents_getter,
const GlobalRequestID& request_id,
bool is_request_for_main_frame,
@@ -585,7 +585,7 @@
std::unique_ptr<LoginDelegate> ResourceDispatcherHostImpl::CreateLoginDelegate(
ResourceLoader* loader,
- net::AuthChallengeInfo* auth_info) {
+ const net::AuthChallengeInfo& auth_info) {
if (!delegate_)
return nullptr;
diff --git a/content/browser/loader/resource_dispatcher_host_impl.h b/content/browser/loader/resource_dispatcher_host_impl.h
index dfeee02..68ac30b5 100644
--- a/content/browser/loader/resource_dispatcher_host_impl.h
+++ b/content/browser/loader/resource_dispatcher_host_impl.h
@@ -393,7 +393,7 @@
// ResourceLoaderDelegate implementation:
std::unique_ptr<LoginDelegate> CreateLoginDelegate(
ResourceLoader* loader,
- net::AuthChallengeInfo* auth_info) override;
+ const net::AuthChallengeInfo& auth_info) override;
bool HandleExternalProtocol(ResourceLoader* loader, const GURL& url) override;
void DidStartRequest(ResourceLoader* loader) override;
void DidReceiveRedirect(ResourceLoader* loader,
diff --git a/content/browser/loader/resource_loader.cc b/content/browser/loader/resource_loader.cc
index 03291049..bd0f57f 100644
--- a/content/browser/loader/resource_loader.cc
+++ b/content/browser/loader/resource_loader.cc
@@ -403,7 +403,7 @@
}
void ResourceLoader::OnAuthRequired(net::URLRequest* unused,
- net::AuthChallengeInfo* auth_info) {
+ const net::AuthChallengeInfo& auth_info) {
DCHECK_EQ(request_.get(), unused);
ResourceRequestInfoImpl* info = GetRequestInfo();
diff --git a/content/browser/loader/resource_loader.h b/content/browser/loader/resource_loader.h
index 4bd8138..dbb477b 100644
--- a/content/browser/loader/resource_loader.h
+++ b/content/browser/loader/resource_loader.h
@@ -73,7 +73,7 @@
const net::RedirectInfo& redirect_info,
bool* defer) override;
void OnAuthRequired(net::URLRequest* request,
- net::AuthChallengeInfo* info) override;
+ const net::AuthChallengeInfo& info) override;
void OnCertificateRequested(net::URLRequest* request,
net::SSLCertRequestInfo* info) override;
void OnSSLCertificateError(net::URLRequest* request,
diff --git a/content/browser/loader/resource_loader_delegate.h b/content/browser/loader/resource_loader_delegate.h
index 73cfdda..7926ac4e 100644
--- a/content/browser/loader/resource_loader_delegate.h
+++ b/content/browser/loader/resource_loader_delegate.h
@@ -27,7 +27,7 @@
public:
virtual std::unique_ptr<LoginDelegate> CreateLoginDelegate(
ResourceLoader* loader,
- net::AuthChallengeInfo* auth_info) = 0;
+ const net::AuthChallengeInfo& auth_info) = 0;
virtual bool HandleExternalProtocol(ResourceLoader* loader,
const GURL& url) = 0;
diff --git a/content/browser/loader/resource_loader_unittest.cc b/content/browser/loader/resource_loader_unittest.cc
index 0f774df..074dd87 100644
--- a/content/browser/loader/resource_loader_unittest.cc
+++ b/content/browser/loader/resource_loader_unittest.cc
@@ -489,7 +489,7 @@
// ResourceLoaderDelegate:
std::unique_ptr<LoginDelegate> CreateLoginDelegate(
ResourceLoader* loader,
- net::AuthChallengeInfo* auth_info) override {
+ const net::AuthChallengeInfo& auth_info) override {
return nullptr;
}
bool HandleExternalProtocol(ResourceLoader* loader,
diff --git a/content/browser/network_service_client.cc b/content/browser/network_service_client.cc
index 92f5e9be..e728d987 100644
--- a/content/browser/network_service_client.cc
+++ b/content/browser/network_service_client.cc
@@ -175,7 +175,7 @@
LoginHandlerDelegate(
network::mojom::AuthChallengeResponderPtr auth_challenge_responder,
ResourceRequestInfo::WebContentsGetter web_contents_getter,
- scoped_refptr<net::AuthChallengeInfo> auth_info,
+ const net::AuthChallengeInfo& auth_info,
bool is_request_for_main_frame,
uint32_t process_id,
uint32_t routing_id,
@@ -247,8 +247,8 @@
// WeakPtr is not strictly necessary here due to OnRequestCancelled.
creating_login_delegate_ = true;
login_delegate_ = GetContentClient()->browser()->CreateLoginDelegate(
- auth_info_.get(), web_contents, request_id_, is_request_for_main_frame_,
- url_, response_headers_, first_auth_attempt_,
+ auth_info_, web_contents, request_id_, is_request_for_main_frame_, url_,
+ response_headers_, first_auth_attempt_,
base::BindOnce(&LoginHandlerDelegate::OnAuthCredentials,
weak_factory_.GetWeakPtr()));
creating_login_delegate_ = false;
@@ -269,7 +269,7 @@
}
network::mojom::AuthChallengeResponderPtr auth_challenge_responder_;
- scoped_refptr<net::AuthChallengeInfo> auth_info_;
+ net::AuthChallengeInfo auth_info_;
const content::GlobalRequestID request_id_;
const uint32_t routing_id_;
bool is_request_for_main_frame_;
@@ -432,7 +432,7 @@
const GURL& url,
const GURL& site_for_cookies,
bool first_auth_attempt,
- const scoped_refptr<net::AuthChallengeInfo>& auth_info,
+ const net::AuthChallengeInfo& auth_info,
int32_t resource_type,
const base::Optional<network::ResourceResponseHead>& head,
network::mojom::AuthChallengeResponderPtr auth_challenge_responder) {
diff --git a/content/browser/network_service_client.h b/content/browser/network_service_client.h
index 6714aef..58d907f 100644
--- a/content/browser/network_service_client.h
+++ b/content/browser/network_service_client.h
@@ -41,7 +41,7 @@
const GURL& url,
const GURL& site_for_cookies,
bool first_auth_attempt,
- const scoped_refptr<net::AuthChallengeInfo>& auth_info,
+ const net::AuthChallengeInfo& auth_info,
int32_t resource_type,
const base::Optional<network::ResourceResponseHead>& head,
network::mojom::AuthChallengeResponderPtr
diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
index 8f9aa70..d4cc92d3 100644
--- a/content/public/browser/content_browser_client.cc
+++ b/content/public/browser/content_browser_client.cc
@@ -878,7 +878,7 @@
}
std::unique_ptr<LoginDelegate> ContentBrowserClient::CreateLoginDelegate(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
const GlobalRequestID& request_id,
bool is_request_for_main_frame,
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
index 25e62c13..b7eb0de 100644
--- a/content/public/browser/content_browser_client.h
+++ b/content/public/browser/content_browser_client.h
@@ -1428,7 +1428,7 @@
// WebContentsDelegate, where the lifetime ordering is more
// obvious. https://crbug.com/456255
virtual std::unique_ptr<LoginDelegate> CreateLoginDelegate(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
WebContents* web_contents,
const GlobalRequestID& request_id,
bool is_request_for_main_frame,
diff --git a/content/shell/browser/shell_content_browser_client.cc b/content/shell/browser/shell_content_browser_client.cc
index 20a1d31..7307994c 100644
--- a/content/shell/browser/shell_content_browser_client.cc
+++ b/content/shell/browser/shell_content_browser_client.cc
@@ -481,7 +481,7 @@
}
std::unique_ptr<LoginDelegate> ShellContentBrowserClient::CreateLoginDelegate(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
const content::GlobalRequestID& request_id,
bool is_main_frame,
diff --git a/content/shell/browser/shell_content_browser_client.h b/content/shell/browser/shell_content_browser_client.h
index 052bed3..3828b35 100644
--- a/content/shell/browser/shell_content_browser_client.h
+++ b/content/shell/browser/shell_content_browser_client.h
@@ -79,7 +79,7 @@
const OpenURLParams& params,
const base::Callback<void(WebContents*)>& callback) override;
std::unique_ptr<LoginDelegate> CreateLoginDelegate(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
const content::GlobalRequestID& request_id,
bool is_main_frame,
diff --git a/content/shell/browser/shell_login_dialog.cc b/content/shell/browser/shell_login_dialog.cc
index bdb0ff6..fcbe687 100644
--- a/content/shell/browser/shell_login_dialog.cc
+++ b/content/shell/browser/shell_login_dialog.cc
@@ -19,7 +19,7 @@
// static
std::unique_ptr<ShellLoginDialog> ShellLoginDialog::Create(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
LoginAuthRequiredCallback auth_required_callback) {
auto ret =
std::make_unique<ShellLoginDialog>(std::move(auth_required_callback));
@@ -39,15 +39,15 @@
PlatformCleanUp();
}
-void ShellLoginDialog::Init(net::AuthChallengeInfo* auth_info) {
+void ShellLoginDialog::Init(const net::AuthChallengeInfo& auth_info) {
// Run this in a new event loop iteration, to ensure the callback isn't called
// reentrantly.
base::PostTaskWithTraits(
FROM_HERE, {BrowserThread::UI},
base::BindOnce(
&ShellLoginDialog::PrepDialog, weak_factory_.GetWeakPtr(),
- url_formatter::FormatOriginForSecurityDisplay(auth_info->challenger),
- base::UTF8ToUTF16(auth_info->realm)));
+ url_formatter::FormatOriginForSecurityDisplay(auth_info.challenger),
+ base::UTF8ToUTF16(auth_info.realm)));
}
void ShellLoginDialog::UserAcceptedAuth(const base::string16& username,
diff --git a/content/shell/browser/shell_login_dialog.h b/content/shell/browser/shell_login_dialog.h
index 68c0216..00e9efb 100644
--- a/content/shell/browser/shell_login_dialog.h
+++ b/content/shell/browser/shell_login_dialog.h
@@ -35,7 +35,7 @@
class ShellLoginDialog : public LoginDelegate {
public:
static std::unique_ptr<ShellLoginDialog> Create(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
LoginAuthRequiredCallback auth_required_callback);
explicit ShellLoginDialog(LoginAuthRequiredCallback auth_required_callback);
@@ -49,7 +49,7 @@
void UserCancelledAuth();
private:
- void Init(net::AuthChallengeInfo* auth_info);
+ void Init(const net::AuthChallengeInfo& auth_info);
// All the methods that begin with Platform need to be implemented by the
// platform specific LoginDialog implementation.
diff --git a/content/shell/browser/web_test/web_test_content_browser_client.cc b/content/shell/browser/web_test/web_test_content_browser_client.cc
index a538828..a303b16 100644
--- a/content/shell/browser/web_test/web_test_content_browser_client.cc
+++ b/content/shell/browser/web_test/web_test_content_browser_client.cc
@@ -317,7 +317,7 @@
}
std::unique_ptr<LoginDelegate> WebTestContentBrowserClient::CreateLoginDelegate(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
const content::GlobalRequestID& request_id,
bool is_main_frame,
diff --git a/content/shell/browser/web_test/web_test_content_browser_client.h b/content/shell/browser/web_test/web_test_content_browser_client.h
index 10440a2..6413e5f 100644
--- a/content/shell/browser/web_test/web_test_content_browser_client.h
+++ b/content/shell/browser/web_test/web_test_content_browser_client.h
@@ -78,7 +78,7 @@
service_manager::BinderRegistryWithArgs<content::RenderFrameHost*>*
registry) override;
std::unique_ptr<LoginDelegate> CreateLoginDelegate(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
content::WebContents* web_contents,
const content::GlobalRequestID& request_id,
bool is_main_frame,
diff --git a/extensions/browser/api/web_request/web_request_api.cc b/extensions/browser/api/web_request/web_request_api.cc
index 6722eb9..13598c2 100644
--- a/extensions/browser/api/web_request/web_request_api.cc
+++ b/extensions/browser/api/web_request/web_request_api.cc
@@ -405,7 +405,7 @@
void MaybeProxyAuthRequestOnIO(
content::ResourceContext* resource_context,
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
scoped_refptr<net::HttpResponseHeaders> response_headers,
const content::GlobalRequestID& request_id,
WebRequestAPI::AuthRequestCallback callback) {
@@ -477,7 +477,7 @@
} // namespace
void WebRequestAPI::Proxy::HandleAuthRequest(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
scoped_refptr<net::HttpResponseHeaders> response_headers,
int32_t request_id,
AuthRequestCallback callback) {
@@ -558,7 +558,7 @@
}
void WebRequestAPI::ProxySet::MaybeProxyAuthRequest(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
scoped_refptr<net::HttpResponseHeaders> response_headers,
const content::GlobalRequestID& request_id,
AuthRequestCallback callback) {
@@ -714,7 +714,7 @@
bool WebRequestAPI::MaybeProxyAuthRequest(
content::BrowserContext* browser_context,
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
scoped_refptr<net::HttpResponseHeaders> response_headers,
const content::GlobalRequestID& request_id,
bool is_main_frame,
@@ -736,9 +736,9 @@
base::PostTaskWithTraits(
FROM_HERE, {BrowserThread::IO},
base::BindOnce(&MaybeProxyAuthRequestOnIO,
- browser_context->GetResourceContext(),
- base::RetainedRef(auth_info), std::move(response_headers),
- proxied_request_id, std::move(callback)));
+ browser_context->GetResourceContext(), auth_info,
+ std::move(response_headers), proxied_request_id,
+ std::move(callback)));
return true;
}
diff --git a/extensions/browser/api/web_request/web_request_api.h b/extensions/browser/api/web_request/web_request_api.h
index d13caea5..e0322509 100644
--- a/extensions/browser/api/web_request/web_request_api.h
+++ b/extensions/browser/api/web_request/web_request_api.h
@@ -95,7 +95,7 @@
// in-progress network requests. If the request will *not* be handled by
// the proxy, |callback| should be invoked with |base::nullopt|.
virtual void HandleAuthRequest(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
scoped_refptr<net::HttpResponseHeaders> response_headers,
int32_t request_id,
AuthRequestCallback callback);
@@ -134,7 +134,7 @@
Proxy* GetProxyFromRequestId(const content::GlobalRequestID& id);
void MaybeProxyAuthRequest(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
scoped_refptr<net::HttpResponseHeaders> response_headers,
const content::GlobalRequestID& request_id,
AuthRequestCallback callback);
@@ -209,7 +209,7 @@
// thread.
bool MaybeProxyAuthRequest(
content::BrowserContext* browser_context,
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
scoped_refptr<net::HttpResponseHeaders> response_headers,
const content::GlobalRequestID& request_id,
bool is_main_frame,
diff --git a/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc b/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc
index cb617f9a..7df76569 100644
--- a/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc
+++ b/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc
@@ -276,7 +276,7 @@
}
void WebRequestProxyingURLLoaderFactory::InProgressRequest::HandleAuthRequest(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
scoped_refptr<net::HttpResponseHeaders> response_headers,
WebRequestAPI::AuthRequestCallback callback) {
DCHECK(!auth_credentials_);
@@ -294,7 +294,7 @@
// which indicated a need to authenticate.
HandleResponseOrRedirectHeaders(base::BindOnce(
&InProgressRequest::ContinueAuthRequest, weak_factory_.GetWeakPtr(),
- base::RetainedRef(auth_info), std::move(callback)));
+ auth_info, std::move(callback)));
}
void WebRequestProxyingURLLoaderFactory::InProgressRequest::OnLoaderCreated(
@@ -519,7 +519,7 @@
}
void WebRequestProxyingURLLoaderFactory::InProgressRequest::ContinueAuthRequest(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
WebRequestAPI::AuthRequestCallback callback,
int error_code) {
if (error_code != net::OK) {
@@ -538,7 +538,7 @@
net::NetworkDelegate::AuthRequiredResponse response =
ExtensionWebRequestEventRouter::GetInstance()->OnAuthRequired(
factory_->browser_context_, factory_->info_map_, &info_.value(),
- *auth_info, continuation, &auth_credentials_.value());
+ auth_info, continuation, &auth_credentials_.value());
// At least one extension has a blocking handler for this request, so we'll
// just wait for them to finish. |OnAuthRequestHandled()| will be invoked
@@ -866,7 +866,7 @@
}
void WebRequestProxyingURLLoaderFactory::HandleAuthRequest(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
scoped_refptr<net::HttpResponseHeaders> response_headers,
int32_t request_id,
WebRequestAPI::AuthRequestCallback callback) {
diff --git a/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.h b/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.h
index 278921bc..2226b1ea 100644
--- a/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.h
+++ b/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.h
@@ -90,7 +90,7 @@
void OnComplete(const network::URLLoaderCompletionStatus& status) override;
void HandleAuthRequest(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
scoped_refptr<net::HttpResponseHeaders> response_headers,
WebRequestAPI::AuthRequestCallback callback);
@@ -108,7 +108,7 @@
void ContinueToStartRequest(int error_code);
void ContinueToHandleOverrideHeaders(int error_code);
void ContinueToResponseStarted(int error_code);
- void ContinueAuthRequest(net::AuthChallengeInfo* auth_info,
+ void ContinueAuthRequest(const net::AuthChallengeInfo& auth_info,
WebRequestAPI::AuthRequestCallback callback,
int error_code);
void OnAuthRequestHandled(
@@ -219,7 +219,7 @@
// WebRequestAPI::Proxy:
void HandleAuthRequest(
- net::AuthChallengeInfo* auth_info,
+ const net::AuthChallengeInfo& auth_info,
scoped_refptr<net::HttpResponseHeaders> response_headers,
int32_t request_id,
WebRequestAPI::AuthRequestCallback callback) override;
diff --git a/extensions/browser/api/web_request/web_request_proxying_websocket.cc b/extensions/browser/api/web_request/web_request_proxying_websocket.cc
index d630a42..41baffb 100644
--- a/extensions/browser/api/web_request/web_request_proxying_websocket.cc
+++ b/extensions/browser/api/web_request/web_request_proxying_websocket.cc
@@ -266,11 +266,11 @@
}
void WebRequestProxyingWebSocket::OnAuthRequired(
- const scoped_refptr<net::AuthChallengeInfo>& auth_info,
+ const net::AuthChallengeInfo& auth_info,
const scoped_refptr<net::HttpResponseHeaders>& headers,
const net::IPEndPoint& remote_endpoint,
OnAuthRequiredCallback callback) {
- if (!auth_info || !callback) {
+ if (!callback) {
OnError(net::ERR_FAILED);
return;
}
@@ -464,7 +464,7 @@
}
void WebRequestProxyingWebSocket::OnHeadersReceivedCompleteForAuth(
- scoped_refptr<net::AuthChallengeInfo> auth_info,
+ const net::AuthChallengeInfo& auth_info,
int rv) {
if (rv != net::OK) {
OnError(rv);
@@ -477,7 +477,7 @@
base::BindRepeating(&WebRequestProxyingWebSocket::OnAuthRequiredComplete,
weak_factory_.GetWeakPtr());
auto auth_rv = ExtensionWebRequestEventRouter::GetInstance()->OnAuthRequired(
- browser_context_, info_map_, &info_.value(), *auth_info,
+ browser_context_, info_map_, &info_.value(), auth_info,
std::move(continuation), &auth_credentials_);
PauseIncomingMethodCallProcessing();
if (auth_rv == net::NetworkDelegate::AUTH_REQUIRED_RESPONSE_IO_PENDING)
diff --git a/extensions/browser/api/web_request/web_request_proxying_websocket.h b/extensions/browser/api/web_request/web_request_proxying_websocket.h
index cac917d..1e5d162 100644
--- a/extensions/browser/api/web_request/web_request_proxying_websocket.h
+++ b/extensions/browser/api/web_request/web_request_proxying_websocket.h
@@ -86,7 +86,7 @@
void OnClosingHandshake() override;
// mojom::AuthenticationHandler method:
- void OnAuthRequired(const scoped_refptr<net::AuthChallengeInfo>& auth_info,
+ void OnAuthRequired(const net::AuthChallengeInfo& auth_info,
const scoped_refptr<net::HttpResponseHeaders>& headers,
const net::IPEndPoint& remote_endpoint,
OnAuthRequiredCallback callback) override;
@@ -117,9 +117,8 @@
void OnHeadersReceivedComplete(int error_code);
void ContinueToHeadersReceived();
void OnAuthRequiredComplete(net::NetworkDelegate::AuthRequiredResponse rv);
- void OnHeadersReceivedCompleteForAuth(
- scoped_refptr<net::AuthChallengeInfo> auth_info,
- int rv);
+ void OnHeadersReceivedCompleteForAuth(const net::AuthChallengeInfo& auth_info,
+ int rv);
void PauseIncomingMethodCallProcessing();
void ResumeIncomingMethodCallProcessing();
diff --git a/fuchsia/http/url_loader_impl.cc b/fuchsia/http/url_loader_impl.cc
index e09aac9..ee793d96 100644
--- a/fuchsia/http/url_loader_impl.cc
+++ b/fuchsia/http/url_loader_impl.cc
@@ -232,7 +232,7 @@
}
void URLLoaderImpl::OnAuthRequired(net::URLRequest* request,
- net::AuthChallengeInfo* auth_info) {
+ const net::AuthChallengeInfo& auth_info) {
NOTIMPLEMENTED();
DCHECK_EQ(net_request_.get(), request);
request->CancelAuth();
diff --git a/fuchsia/http/url_loader_impl.h b/fuchsia/http/url_loader_impl.h
index 874a8ff..9e154337e 100644
--- a/fuchsia/http/url_loader_impl.h
+++ b/fuchsia/http/url_loader_impl.h
@@ -47,7 +47,7 @@
const net::RedirectInfo& redirect_info,
bool* defer_redirect) override;
void OnAuthRequired(net::URLRequest* request,
- net::AuthChallengeInfo* auth_info) override;
+ const net::AuthChallengeInfo& auth_info) override;
void OnCertificateRequested(
net::URLRequest* request,
net::SSLCertRequestInfo* cert_request_info) override;
@@ -118,4 +118,4 @@
DISALLOW_COPY_AND_ASSIGN(URLLoaderImpl);
};
-#endif // FUCHSIA_HTTP_URL_LOADER_IMPL_H_
\ No newline at end of file
+#endif // FUCHSIA_HTTP_URL_LOADER_IMPL_H_
diff --git a/ios/net/clients/crn_network_client_protocol.h b/ios/net/clients/crn_network_client_protocol.h
index aa44076..4caa7ba 100644
--- a/ios/net/clients/crn_network_client_protocol.h
+++ b/ios/net/clients/crn_network_client_protocol.h
@@ -67,7 +67,7 @@
// was successful.
// If authentication was successful, |callback|'s second and third parameters
// are username and password; if unsuccessful they are empty strings.
-- (void)didRecieveAuthChallenge:(net::AuthChallengeInfo*)authInfo
+- (void)didRecieveAuthChallenge:(const net::AuthChallengeInfo&)authInfo
nativeRequest:(const net::URLRequest&)nativeRequest
callback:(const network_client::AuthCallback&)callback;
diff --git a/ios/net/crn_http_protocol_handler.mm b/ios/net/crn_http_protocol_handler.mm
index b5fac7e..e541e10a 100644
--- a/ios/net/crn_http_protocol_handler.mm
+++ b/ios/net/crn_http_protocol_handler.mm
@@ -162,7 +162,7 @@
const RedirectInfo& new_url,
bool* defer_redirect) override;
void OnAuthRequired(URLRequest* request,
- AuthChallengeInfo* auth_info) override;
+ const AuthChallengeInfo& auth_info) override;
void OnCertificateRequested(URLRequest* request,
SSLCertRequestInfo* cert_request_info) override;
void OnSSLCertificateError(URLRequest* request,
@@ -401,8 +401,9 @@
StopNetRequest();
}
-void HttpProtocolHandlerCore::OnAuthRequired(URLRequest* request,
- AuthChallengeInfo* auth_info) {
+void HttpProtocolHandlerCore::OnAuthRequired(
+ URLRequest* request,
+ const AuthChallengeInfo& auth_info) {
DCHECK(thread_checker_.CalledOnValidThread());
// A request with no tab ID should not hit HTTP authentication.
if (tracker_) {
diff --git a/ios/net/crn_http_protocol_handler_proxy_with_client_thread.mm b/ios/net/crn_http_protocol_handler_proxy_with_client_thread.mm
index 586e887..07ca5f25 100644
--- a/ios/net/crn_http_protocol_handler_proxy_with_client_thread.mm
+++ b/ios/net/crn_http_protocol_handler_proxy_with_client_thread.mm
@@ -194,7 +194,7 @@
// no-op.
}
-- (void)didRecieveAuthChallenge:(net::AuthChallengeInfo*)authInfo
+- (void)didRecieveAuthChallenge:(const net::AuthChallengeInfo&)authInfo
nativeRequest:(const net::URLRequest&)nativeRequest
callback:(const network_client::AuthCallback&)callback {
// If we get this far, authentication has failed.
diff --git a/net/base/auth.cc b/net/base/auth.cc
index 343d0b5..99c02bf 100644
--- a/net/base/auth.cc
+++ b/net/base/auth.cc
@@ -9,10 +9,15 @@
AuthChallengeInfo::AuthChallengeInfo() : is_proxy(false) {
}
-bool AuthChallengeInfo::Equals(const AuthChallengeInfo& that) const {
- return (this->is_proxy == that.is_proxy &&
- this->challenger == that.challenger && this->scheme == that.scheme &&
- this->realm == that.realm);
+AuthChallengeInfo::AuthChallengeInfo(const AuthChallengeInfo& other) = default;
+
+bool AuthChallengeInfo::operator==(const AuthChallengeInfo& that) const {
+ return (is_proxy == that.is_proxy && challenger == that.challenger &&
+ scheme == that.scheme && realm == that.realm);
+}
+
+bool AuthChallengeInfo::operator!=(const AuthChallengeInfo& that) const {
+ return !(*this == that);
}
AuthChallengeInfo::~AuthChallengeInfo() = default;
diff --git a/net/base/auth.h b/net/base/auth.h
index 9db8447..f206dc26 100644
--- a/net/base/auth.h
+++ b/net/base/auth.h
@@ -7,7 +7,6 @@
#include <string>
-#include "base/memory/ref_counted.h"
#include "base/strings/string16.h"
#include "net/base/net_export.h"
#include "url/origin.h"
@@ -16,13 +15,14 @@
// Holds info about an authentication challenge that we may want to display
// to the user.
-class NET_EXPORT AuthChallengeInfo :
- public base::RefCountedThreadSafe<AuthChallengeInfo> {
+class NET_EXPORT AuthChallengeInfo {
public:
AuthChallengeInfo();
+ AuthChallengeInfo(const AuthChallengeInfo& other);
+ ~AuthChallengeInfo();
- // Determines whether two AuthChallengeInfo's are equivalent.
- bool Equals(const AuthChallengeInfo& other) const;
+ bool operator==(const AuthChallengeInfo& other) const;
+ bool operator!=(const AuthChallengeInfo& other) const;
// Whether this came from a server or a proxy.
bool is_proxy;
@@ -36,10 +36,6 @@
// The realm of the challenge. May be empty. The encoding is UTF-8.
std::string realm;
-
- private:
- friend class base::RefCountedThreadSafe<AuthChallengeInfo>;
- ~AuthChallengeInfo();
};
// Authentication Credentials for an authentication credentials.
diff --git a/net/base/layered_network_delegate_unittest.cc b/net/base/layered_network_delegate_unittest.cc
index 9ae629c7..b6b867e 100644
--- a/net/base/layered_network_delegate_unittest.cc
+++ b/net/base/layered_network_delegate_unittest.cc
@@ -178,7 +178,7 @@
~TestLayeredNetworkDelegate() override = default;
void CallAndVerify() {
- scoped_refptr<AuthChallengeInfo> auth_challenge(new AuthChallengeInfo());
+ AuthChallengeInfo auth_challenge;
std::unique_ptr<URLRequest> request = context_.CreateRequest(
GURL(), IDLE, &delegate_, TRAFFIC_ANNOTATION_FOR_TESTS);
std::unique_ptr<HttpRequestHeaders> request_headers(
@@ -204,9 +204,9 @@
OnCompleted(request.get(), false, net::OK);
OnURLRequestDestroyed(request.get());
OnPACScriptError(0, base::string16());
- EXPECT_EQ(NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION,
- OnAuthRequired(request.get(), *auth_challenge, AuthCallback(),
- nullptr));
+ EXPECT_EQ(
+ NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION,
+ OnAuthRequired(request.get(), auth_challenge, AuthCallback(), nullptr));
EXPECT_FALSE(OnCanGetCookies(*request, CookieList(), true));
EXPECT_FALSE(
OnCanSetCookie(*request, net::CanonicalCookie(), nullptr, true));
diff --git a/net/http/http_auth_controller.cc b/net/http/http_auth_controller.cc
index 6bb51b9c..cafe348c 100644
--- a/net/http/http_auth_controller.cc
+++ b/net/http/http_auth_controller.cc
@@ -353,7 +353,7 @@
identity_.credentials = credentials;
// auth_info_ is no longer necessary.
- auth_info_ = nullptr;
+ auth_info_ = base::nullopt;
}
DCHECK(identity_.source != HttpAuth::IDENT_SRC_PATH_LOOKUP);
@@ -508,7 +508,7 @@
// Populates response_.auth_challenge with the authentication challenge info.
// This info is consumed by URLRequestHttpJob::GetAuthChallengeInfo().
- auth_info_ = new AuthChallengeInfo;
+ auth_info_ = AuthChallengeInfo();
auth_info_->is_proxy = (target_ == HttpAuth::AUTH_PROXY);
auth_info_->challenger = url::Origin::Create(auth_origin_);
auth_info_->scheme = HttpAuth::SchemeToString(handler_->auth_scheme());
@@ -572,9 +572,10 @@
}
}
-scoped_refptr<AuthChallengeInfo> HttpAuthController::auth_info() {
+void HttpAuthController::TakeAuthInfo(
+ base::Optional<AuthChallengeInfo>* other) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
- return auth_info_;
+ auth_info_.swap(*other);
}
bool HttpAuthController::IsAuthSchemeDisabled(HttpAuth::Scheme scheme) const {
diff --git a/net/http/http_auth_controller.h b/net/http/http_auth_controller.h
index e71c3f93..94e3221 100644
--- a/net/http/http_auth_controller.h
+++ b/net/http/http_auth_controller.h
@@ -10,6 +10,7 @@
#include <string>
#include "base/memory/ref_counted.h"
+#include "base/optional.h"
#include "base/threading/thread_checker.h"
#include "net/base/completion_once_callback.h"
#include "net/base/net_export.h"
@@ -82,7 +83,8 @@
// and thus the server would presumably reject a request on HTTP/2 anyway.
bool NeedsHTTP11() const;
- scoped_refptr<AuthChallengeInfo> auth_info();
+ // Swaps the authentication challenge info into |other|.
+ void TakeAuthInfo(base::Optional<AuthChallengeInfo>* other);
bool IsAuthSchemeDisabled(HttpAuth::Scheme scheme) const;
void DisableAuthScheme(HttpAuth::Scheme scheme);
@@ -170,7 +172,7 @@
std::string auth_token_;
// Contains information about the auth challenge.
- scoped_refptr<AuthChallengeInfo> auth_info_;
+ base::Optional<AuthChallengeInfo> auth_info_;
// True if we've used the username:password embedded in the URL. This
// makes sure we use the embedded identity only once for the transaction,
diff --git a/net/http/http_cache_transaction.cc b/net/http/http_cache_transaction.cc
index 6ab67f99..7f37dc2 100644
--- a/net/http/http_cache_transaction.cc
+++ b/net/http/http_cache_transaction.cc
@@ -1779,7 +1779,6 @@
// able to authenticate this request because we should have authenticated
// this URL moments ago.
if (IsReadyToRestartForAuth()) {
- DCHECK(!response_.auth_challenge.get());
TransitionToState(STATE_SEND_REQUEST_COMPLETE);
// In theory we should check to see if there are new cookies, but there
// is no way to do that from here.
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc
index eba13448..118a1ff 100644
--- a/net/http/http_network_transaction.cc
+++ b/net/http/http_network_transaction.cc
@@ -1846,10 +1846,7 @@
if (auth_controllers_[target]->HaveAuthHandler())
pending_auth_target_ = target;
- scoped_refptr<AuthChallengeInfo> auth_info =
- auth_controllers_[target]->auth_info();
- if (auth_info.get())
- response_.auth_challenge = auth_info;
+ auth_controllers_[target]->TakeAuthInfo(&response_.auth_challenge);
return rv;
}
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc
index 0ee8d86..bf83c0a 100644
--- a/net/http/http_network_transaction_unittest.cc
+++ b/net/http/http_network_transaction_unittest.cc
@@ -716,7 +716,8 @@
// Helper functions for validating that AuthChallengeInfo's are correctly
// configured for common cases.
-bool CheckBasicServerAuth(const AuthChallengeInfo* auth_challenge) {
+bool CheckBasicServerAuth(
+ const base::Optional<AuthChallengeInfo>& auth_challenge) {
if (!auth_challenge)
return false;
EXPECT_FALSE(auth_challenge->is_proxy);
@@ -726,7 +727,8 @@
return true;
}
-bool CheckBasicProxyAuth(const AuthChallengeInfo* auth_challenge) {
+bool CheckBasicProxyAuth(
+ const base::Optional<AuthChallengeInfo>& auth_challenge) {
if (!auth_challenge)
return false;
EXPECT_TRUE(auth_challenge->is_proxy);
@@ -736,7 +738,8 @@
return true;
}
-bool CheckBasicSecureProxyAuth(const AuthChallengeInfo* auth_challenge) {
+bool CheckBasicSecureProxyAuth(
+ const base::Optional<AuthChallengeInfo>& auth_challenge) {
if (!auth_challenge)
return false;
EXPECT_TRUE(auth_challenge->is_proxy);
@@ -746,7 +749,8 @@
return true;
}
-bool CheckDigestServerAuth(const AuthChallengeInfo* auth_challenge) {
+bool CheckDigestServerAuth(
+ const base::Optional<AuthChallengeInfo>& auth_challenge) {
if (!auth_challenge)
return false;
EXPECT_FALSE(auth_challenge->is_proxy);
@@ -757,7 +761,8 @@
}
#if defined(NTLM_PORTABLE)
-bool CheckNTLMServerAuth(const AuthChallengeInfo* auth_challenge) {
+bool CheckNTLMServerAuth(
+ const base::Optional<AuthChallengeInfo>& auth_challenge) {
if (!auth_challenge)
return false;
EXPECT_FALSE(auth_challenge->is_proxy);
@@ -767,7 +772,8 @@
return true;
}
-bool CheckNTLMProxyAuth(const AuthChallengeInfo* auth_challenge) {
+bool CheckNTLMProxyAuth(
+ const base::Optional<AuthChallengeInfo>& auth_challenge) {
if (!auth_challenge)
return false;
EXPECT_TRUE(auth_challenge->is_proxy);
@@ -2664,7 +2670,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge));
TestCompletionCallback callback2;
@@ -2690,7 +2696,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(100, response->headers->GetContentLength());
}
@@ -2769,7 +2775,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge));
IPEndPoint endpoint;
EXPECT_TRUE(trans.GetRemoteEndpoint(&endpoint));
@@ -2800,7 +2806,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(100, response->headers->GetContentLength());
EXPECT_TRUE(trans.GetRemoteEndpoint(&endpoint));
@@ -2863,7 +2869,7 @@
EXPECT_THAT(rv, IsOk());
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge));
data_restarts.push_back(std::make_unique<StaticSocketDataProvider>(
data_reads, data_writes_restart));
@@ -2921,7 +2927,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
}
// Test the request-challenge-retry sequence for basic auth, over a keep-alive
@@ -2986,7 +2992,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge));
TestCompletionCallback callback2;
@@ -3005,7 +3011,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(5, response->headers->GetContentLength());
std::string response_data;
@@ -3075,7 +3081,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge));
TestCompletionCallback callback2;
@@ -3087,7 +3093,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(5, response->headers->GetContentLength());
}
@@ -3156,7 +3162,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge));
TestCompletionCallback callback2;
@@ -3168,7 +3174,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(5, response->headers->GetContentLength());
}
@@ -3242,7 +3248,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge));
TestCompletionCallback callback2;
@@ -3254,7 +3260,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(5, response->headers->GetContentLength());
}
@@ -3349,7 +3355,7 @@
ASSERT_TRUE(response->headers);
EXPECT_EQ(407, response->headers->response_code());
EXPECT_TRUE(HttpVersion(1, 0) == response->headers->GetHttpVersion());
- EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge));
LoadTimingInfo load_timing_info;
// CONNECT requests and responses are handled at the connect job level, so
@@ -3374,7 +3380,7 @@
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
// The password prompt info should not be set.
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info));
TestLoadTimingNotReusedWithPac(load_timing_info,
@@ -3474,7 +3480,7 @@
ASSERT_TRUE(response->headers);
EXPECT_EQ(407, response->headers->response_code());
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
- EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge));
LoadTimingInfo load_timing_info;
// CONNECT requests and responses are handled at the connect job level, so
@@ -3499,7 +3505,7 @@
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
// The password prompt info should not be set.
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info));
TestLoadTimingNotReusedWithPac(load_timing_info,
@@ -3598,7 +3604,7 @@
EXPECT_EQ(407, response->headers->response_code());
EXPECT_EQ(10, response->headers->GetContentLength());
EXPECT_TRUE(HttpVersion(1, 0) == response->headers->GetHttpVersion());
- EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge));
TestCompletionCallback callback2;
@@ -3614,7 +3620,7 @@
EXPECT_EQ(407, response->headers->response_code());
EXPECT_EQ(10, response->headers->GetContentLength());
EXPECT_TRUE(HttpVersion(1, 0) == response->headers->GetHttpVersion());
- EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge));
// Flush the idle socket before the NetLog and HttpNetworkTransaction go
// out of scope.
@@ -3709,7 +3715,7 @@
EXPECT_EQ(407, response->headers->response_code());
EXPECT_EQ(10, response->headers->GetContentLength());
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
- EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge));
EXPECT_FALSE(response->did_use_http_auth);
TestCompletionCallback callback2;
@@ -3726,7 +3732,7 @@
EXPECT_EQ(407, response->headers->response_code());
EXPECT_EQ(10, response->headers->GetContentLength());
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
- EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge));
EXPECT_TRUE(response->did_use_http_auth);
// Flush the idle socket before the NetLog and HttpNetworkTransaction go
@@ -3834,7 +3840,7 @@
EXPECT_TRUE(response->headers->IsKeepAlive());
EXPECT_EQ(407, response->headers->response_code());
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
- EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge));
LoadTimingInfo load_timing_info;
// CONNECT requests and responses are handled at the connect job level, so
@@ -3853,7 +3859,7 @@
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
// The password prompt info should not be set.
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info));
TestLoadTimingNotReusedWithPac(load_timing_info,
@@ -3939,7 +3945,7 @@
ASSERT_TRUE(response->headers);
EXPECT_TRUE(response->headers->IsKeepAlive());
EXPECT_EQ(407, response->headers->response_code());
- EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge));
rv = trans.RestartWithAuth(AuthCredentials(kFoo, kBar), callback.callback());
EXPECT_THAT(callback.GetResult(rv), IsOk());
@@ -4269,7 +4275,7 @@
EXPECT_EQ(407, response->headers->response_code());
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
EXPECT_TRUE(trans->IsReadyToRestartForAuth());
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
LoadTimingInfo load_timing_info;
// CONNECT requests and responses are handled at the connect job level, so
@@ -4287,7 +4293,7 @@
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
// The password prompt info should not be set.
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info));
TestLoadTimingNotReusedWithPac(load_timing_info,
@@ -4389,7 +4395,7 @@
EXPECT_EQ(407, response->headers->response_code());
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
EXPECT_TRUE(trans->IsReadyToRestartForAuth());
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
LoadTimingInfo load_timing_info;
// CONNECT requests and responses are handled at the connect job level, so
@@ -4408,7 +4414,7 @@
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
// The password prompt info should not be set.
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info));
TestLoadTimingNotReusedWithPac(load_timing_info,
@@ -4504,7 +4510,7 @@
EXPECT_EQ(407, response->headers->response_code());
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
EXPECT_TRUE(trans->IsReadyToRestartForAuth());
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
LoadTimingInfo load_timing_info;
EXPECT_FALSE(trans->GetLoadTimingInfo(&load_timing_info));
@@ -4733,7 +4739,7 @@
EXPECT_EQ(407, response->headers->response_code());
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
EXPECT_TRUE(trans->IsReadyToRestartForAuth());
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
LoadTimingInfo load_timing_info;
EXPECT_FALSE(trans->GetLoadTimingInfo(&load_timing_info));
@@ -4745,7 +4751,7 @@
ASSERT_TRUE(response->headers);
EXPECT_EQ(407, response->headers->response_code());
EXPECT_FALSE(trans->IsReadyToRestartForAuth());
- EXPECT_TRUE(response->auth_challenge);
+ EXPECT_TRUE(response->auth_challenge.has_value());
trans.reset();
session->CloseAllConnections();
@@ -4855,7 +4861,7 @@
// ambient credentials.
EXPECT_EQ(401, response->headers->response_code());
EXPECT_TRUE(trans->IsReadyToRestartForAuth());
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
rv = trans->RestartWithAuth(AuthCredentials(), callback.callback());
EXPECT_THAT(callback.GetResult(rv), IsOk());
@@ -4868,7 +4874,7 @@
// to respond to the challenge.
EXPECT_EQ(401, response->headers->response_code());
EXPECT_FALSE(trans->IsReadyToRestartForAuth());
- EXPECT_TRUE(response->auth_challenge);
+ EXPECT_TRUE(response->auth_challenge.has_value());
rv = trans->RestartWithAuth(AuthCredentials(), callback.callback());
EXPECT_THAT(callback.GetResult(rv), IsOk());
@@ -5424,7 +5430,7 @@
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
// The password prompt info should not be set.
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
}
// Test a SPDY get through an HTTPS Proxy.
@@ -5637,7 +5643,7 @@
ASSERT_TRUE(response->headers);
EXPECT_EQ(407, response->headers->response_code());
EXPECT_TRUE(response->was_fetched_via_spdy);
- EXPECT_TRUE(CheckBasicSecureProxyAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicSecureProxyAuth(response->auth_challenge));
TestCompletionCallback callback2;
@@ -5653,7 +5659,7 @@
ASSERT_TRUE(response_restart->headers);
EXPECT_EQ(200, response_restart->headers->response_code());
// The password prompt info should not be set.
- EXPECT_FALSE(response_restart->auth_challenge);
+ EXPECT_FALSE(response_restart->auth_challenge.has_value());
}
// Test a SPDY CONNECT through an HTTPS Proxy to an HTTPS (non-SPDY) Server.
@@ -5991,7 +5997,7 @@
ASSERT_TRUE(response->headers);
EXPECT_EQ(407, response->headers->response_code());
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
- EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge));
// Run second request until an auth challenge is observed.
HttpRequestInfo request2;
@@ -6007,7 +6013,7 @@
ASSERT_TRUE(response->headers);
EXPECT_EQ(407, response->headers->response_code());
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
- EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge));
// Now provide credentials for the first request, and wait for it to complete.
rv = trans1.RestartWithAuth(AuthCredentials(kFoo, kBar), callback.callback());
@@ -6741,7 +6747,7 @@
ASSERT_TRUE(response->headers);
EXPECT_EQ(407, response->headers->response_code());
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
- EXPECT_TRUE(CheckBasicSecureProxyAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicSecureProxyAuth(response->auth_challenge));
EXPECT_FALSE(response->did_use_http_auth);
TestCompletionCallback callback2;
@@ -6767,7 +6773,7 @@
EXPECT_TRUE(response->did_use_http_auth);
// The password prompt info should not be set.
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
}
void HttpNetworkTransactionTest::ConnectStatusHelperWithExpectedStatus(
@@ -7080,7 +7086,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge));
TestCompletionCallback callback2;
@@ -7092,7 +7098,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge));
TestCompletionCallback callback3;
@@ -7104,7 +7110,7 @@
EXPECT_THAT(rv, IsOk());
response = trans.GetResponseInfo();
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(100, response->headers->GetContentLength());
}
@@ -7233,7 +7239,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckNTLMServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckNTLMServerAuth(response->auth_challenge));
TestCompletionCallback callback2;
@@ -7249,7 +7255,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
TestCompletionCallback callback3;
@@ -7261,7 +7267,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(14, response->headers->GetContentLength());
std::string response_data;
@@ -7440,7 +7446,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckNTLMServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckNTLMServerAuth(response->auth_challenge));
TestCompletionCallback callback2;
@@ -7463,7 +7469,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckNTLMServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckNTLMServerAuth(response->auth_challenge));
TestCompletionCallback callback4;
@@ -7488,7 +7494,7 @@
EXPECT_THAT(rv, IsOk());
response = trans.GetResponseInfo();
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(14, response->headers->GetContentLength());
std::string response_data;
@@ -7627,7 +7633,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckNTLMServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckNTLMServerAuth(response->auth_challenge));
TestCompletionCallback callback2;
@@ -7643,7 +7649,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
TestCompletionCallback callback3;
@@ -7655,7 +7661,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(14, response->headers->GetContentLength());
std::string response_data;
@@ -7783,7 +7789,7 @@
EXPECT_FALSE(trans.IsReadyToRestartForAuth());
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckNTLMProxyAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckNTLMProxyAuth(response->auth_challenge));
// Configure credentials. The proxy responds with the challenge message.
rv = callback.GetResult(trans.RestartWithAuth(
@@ -7793,7 +7799,7 @@
EXPECT_TRUE(trans.IsReadyToRestartForAuth());
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
// Restart once more. The tunnel will be established and the the SSL handshake
// will reset. The TLS 1.3 version interference probe will then kick in and
@@ -7805,7 +7811,7 @@
EXPECT_TRUE(trans.IsReadyToRestartForAuth());
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
// The proxy responds with the NTLM challenge message.
rv = callback.GetResult(
@@ -7814,7 +7820,7 @@
EXPECT_TRUE(trans.IsReadyToRestartForAuth());
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
// Send the NTLM authenticate message. The tunnel is established and the
// handshake resets again. We should not retry again.
@@ -8563,7 +8569,7 @@
ASSERT_TRUE(response);
// There is no challenge info, since the identity in URL worked.
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(100, response->headers->GetContentLength());
@@ -8660,7 +8666,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge));
TestCompletionCallback callback3;
rv = trans.RestartWithAuth(AuthCredentials(kFoo, kBar), callback3.callback());
@@ -8673,7 +8679,7 @@
ASSERT_TRUE(response);
// There is no challenge info, since the identity worked.
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(100, response->headers->GetContentLength());
@@ -8741,7 +8747,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge));
TestCompletionCallback callback3;
rv = trans.RestartWithAuth(AuthCredentials(kFoo, kBar), callback3.callback());
@@ -8754,7 +8760,7 @@
ASSERT_TRUE(response);
// There is no challenge info, since the identity worked.
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(100, response->headers->GetContentLength());
// Empty the current queue.
@@ -8820,7 +8826,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge));
TestCompletionCallback callback2;
@@ -8833,7 +8839,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(100, response->headers->GetContentLength());
}
@@ -8918,7 +8924,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(100, response->headers->GetContentLength());
}
@@ -8966,7 +8972,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(100, response->headers->GetContentLength());
}
@@ -9036,7 +9042,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(100, response->headers->GetContentLength());
}
@@ -9126,7 +9132,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge));
TestCompletionCallback callback3;
@@ -9139,7 +9145,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(100, response->headers->GetContentLength());
}
}
@@ -9212,7 +9218,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckDigestServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckDigestServerAuth(response->auth_challenge));
TestCompletionCallback callback2;
@@ -9225,7 +9231,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
}
// ------------------------------------------------------------------------
@@ -9275,7 +9281,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
}
}
@@ -9292,7 +9298,7 @@
// Setup state in response_
HttpResponseInfo* response = &trans.response_;
- response->auth_challenge = new AuthChallengeInfo();
+ response->auth_challenge = base::nullopt;
response->ssl_info.cert_status = static_cast<CertStatus>(-1); // Nonsensical.
response->response_time = base::Time::Now();
response->was_cached = true; // (Wouldn't ever actually be true...)
@@ -9314,7 +9320,7 @@
EXPECT_FALSE(trans.read_buf_);
EXPECT_EQ(0, trans.read_buf_len_);
EXPECT_TRUE(trans.request_headers_.IsEmpty());
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_FALSE(response->headers);
EXPECT_FALSE(response->was_cached);
EXPECT_EQ(0U, response->ssl_info.cert_status);
@@ -10050,8 +10056,8 @@
ASSERT_TRUE(response->headers);
EXPECT_EQ(407, response->headers->response_code());
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
- EXPECT_TRUE(response->auth_challenge);
- EXPECT_TRUE(CheckBasicSecureProxyAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(response->auth_challenge.has_value());
+ EXPECT_TRUE(CheckBasicSecureProxyAuth(response->auth_challenge));
TestCompletionCallback callback2;
@@ -10071,7 +10077,7 @@
EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
// The password prompt info should not be set.
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
LoadTimingInfo load_timing_info;
EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info));
@@ -11618,7 +11624,7 @@
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge.get()));
+ EXPECT_TRUE(CheckBasicServerAuth(response->auth_challenge));
TestCompletionCallback callback2;
@@ -11630,7 +11636,7 @@
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(100, response->headers->GetContentLength());
}
@@ -11947,7 +11953,7 @@
EXPECT_THAT(rv, IsOk());
const HttpResponseInfo* response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- const AuthChallengeInfo* challenge = response->auth_challenge.get();
+ base::Optional<AuthChallengeInfo> challenge = response->auth_challenge;
ASSERT_TRUE(challenge);
EXPECT_FALSE(challenge->is_proxy);
EXPECT_EQ("http://www.example.org", challenge->challenger.Serialize());
@@ -11965,7 +11971,7 @@
EXPECT_THAT(rv, IsOk());
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- challenge = response->auth_challenge.get();
+ challenge = response->auth_challenge;
ASSERT_TRUE(challenge);
EXPECT_FALSE(challenge->is_proxy);
EXPECT_EQ("http://www.example.org", challenge->challenger.Serialize());
@@ -11984,7 +11990,7 @@
EXPECT_THAT(rv, IsOk());
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- challenge = response->auth_challenge.get();
+ challenge = response->auth_challenge;
ASSERT_TRUE(challenge);
EXPECT_FALSE(challenge->is_proxy);
EXPECT_EQ("http://www.example.org", challenge->challenger.Serialize());
@@ -12000,7 +12006,7 @@
EXPECT_THAT(rv, IsOk());
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
}
// Regression test for https://crbug.com/754395.
@@ -14375,9 +14381,9 @@
continue;
}
if (round + 1 < test_config.num_auth_rounds) {
- EXPECT_TRUE(response->auth_challenge);
+ EXPECT_TRUE(response->auth_challenge.has_value());
} else {
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_FALSE(trans.IsReadyToRestartForAuth());
}
}
@@ -14494,7 +14500,7 @@
EXPECT_THAT(rv, IsOk());
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_TRUE(response->auth_challenge);
+ EXPECT_TRUE(response->auth_challenge.has_value());
EXPECT_EQ(0u, transport_pool->IdleSocketCountInGroup(kSocketGroup));
EXPECT_EQ(HttpAuthHandlerMock::State::WAIT_FOR_GENERATE_AUTH_TOKEN,
auth_handler->state());
@@ -14519,7 +14525,7 @@
EXPECT_THAT(rv, IsOk());
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(0u, transport_pool->IdleSocketCountInGroup(kSocketGroup));
EXPECT_EQ(HttpAuthHandlerMock::State::WAIT_FOR_GENERATE_AUTH_TOKEN,
auth_handler->state());
@@ -14532,7 +14538,7 @@
EXPECT_THAT(rv, IsOk());
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(0u, transport_pool->IdleSocketCountInGroup(kSocketGroup));
EXPECT_EQ(HttpAuthHandlerMock::State::WAIT_FOR_GENERATE_AUTH_TOKEN,
auth_handler->state());
@@ -14545,7 +14551,7 @@
EXPECT_THAT(rv, IsOk());
response = trans.GetResponseInfo();
ASSERT_TRUE(response);
- EXPECT_FALSE(response->auth_challenge);
+ EXPECT_FALSE(response->auth_challenge.has_value());
EXPECT_EQ(0u, transport_pool->IdleSocketCountInGroup(kSocketGroup));
// In WAIT_FOR_CHALLENGE, although in reality the auth handler is done. A real
diff --git a/net/http/http_response_info.cc b/net/http/http_response_info.cc
index 0dfb809..64e0e38 100644
--- a/net/http/http_response_info.cc
+++ b/net/http/http_response_info.cc
@@ -8,7 +8,6 @@
#include "base/numerics/safe_conversions.h"
#include "base/pickle.h"
#include "base/time/time.h"
-#include "net/base/auth.h"
#include "net/base/io_buffer.h"
#include "net/base/net_errors.h"
#include "net/cert/sct_status_flags.h"
diff --git a/net/http/http_response_info.h b/net/http/http_response_info.h
index 48fea75..4638527 100644
--- a/net/http/http_response_info.h
+++ b/net/http/http_response_info.h
@@ -7,7 +7,9 @@
#include <string>
+#include "base/optional.h"
#include "base/time/time.h"
+#include "net/base/auth.h"
#include "net/base/ip_endpoint.h"
#include "net/base/net_export.h"
#include "net/base/proxy_server.h"
@@ -20,7 +22,6 @@
namespace net {
-class AuthChallengeInfo;
class HttpResponseHeaders;
class IOBufferWithSize;
class SSLCertRequestInfo;
@@ -189,7 +190,7 @@
// If the response headers indicate a 401 or 407 failure, then this structure
// will contain additional information about the authentication challenge.
- scoped_refptr<AuthChallengeInfo> auth_challenge;
+ base::Optional<AuthChallengeInfo> auth_challenge;
// The SSL client certificate request info.
// TODO(wtc): does this really belong in HttpResponseInfo? I put it here
diff --git a/net/http/proxy_client_socket.cc b/net/http/proxy_client_socket.cc
index 6dde1d5..c80ccee 100644
--- a/net/http/proxy_client_socket.cc
+++ b/net/http/proxy_client_socket.cc
@@ -52,7 +52,7 @@
DCHECK(response->headers.get());
int rv = auth->HandleAuthChallenge(response->headers, response->ssl_info,
false, true, net_log);
- response->auth_challenge = auth->auth_info();
+ auth->TakeAuthInfo(&response->auth_challenge);
if (rv == OK)
return ERR_PROXY_AUTH_REQUESTED;
return rv;
diff --git a/net/proxy_resolution/pac_file_fetcher_impl.cc b/net/proxy_resolution/pac_file_fetcher_impl.cc
index 4e7b612..126c58c1 100644
--- a/net/proxy_resolution/pac_file_fetcher_impl.cc
+++ b/net/proxy_resolution/pac_file_fetcher_impl.cc
@@ -256,7 +256,7 @@
}
void PacFileFetcherImpl::OnAuthRequired(URLRequest* request,
- AuthChallengeInfo* auth_info) {
+ const AuthChallengeInfo& auth_info) {
DCHECK_EQ(request, cur_request_.get());
// TODO(eroman): http://crbug.com/77366
LOG(WARNING) << "Auth required to fetch PAC script, aborting.";
diff --git a/net/proxy_resolution/pac_file_fetcher_impl.h b/net/proxy_resolution/pac_file_fetcher_impl.h
index a9e13db5..e51e258c 100644
--- a/net/proxy_resolution/pac_file_fetcher_impl.h
+++ b/net/proxy_resolution/pac_file_fetcher_impl.h
@@ -79,7 +79,7 @@
const RedirectInfo& redirect_info,
bool* defer_redirect) override;
void OnAuthRequired(URLRequest* request,
- AuthChallengeInfo* auth_info) override;
+ const AuthChallengeInfo& auth_info) override;
void OnSSLCertificateError(URLRequest* request,
const SSLInfo& ssl_info,
bool is_hsts_ok) override;
diff --git a/net/quic/quic_network_transaction_unittest.cc b/net/quic/quic_network_transaction_unittest.cc
index 43ea8acb..17f9ac87 100644
--- a/net/quic/quic_network_transaction_unittest.cc
+++ b/net/quic/quic_network_transaction_unittest.cc
@@ -8435,8 +8435,9 @@
EXPECT_EQ(407, response->headers->response_code());
EXPECT_EQ(10, response->headers->GetContentLength());
EXPECT_EQ(HttpVersion(1, 1), response->headers->GetHttpVersion());
- const AuthChallengeInfo* auth_challenge = response->auth_challenge.get();
- ASSERT_TRUE(auth_challenge != nullptr);
+ base::Optional<AuthChallengeInfo> auth_challenge =
+ response->auth_challenge;
+ ASSERT_TRUE(auth_challenge.has_value());
EXPECT_TRUE(auth_challenge->is_proxy);
EXPECT_EQ("https://proxy.example.org:70",
auth_challenge->challenger.Serialize());
@@ -8458,8 +8459,8 @@
EXPECT_EQ(407, response->headers->response_code());
EXPECT_EQ(10, response->headers->GetContentLength());
EXPECT_EQ(HttpVersion(1, 1), response->headers->GetHttpVersion());
- auth_challenge = response->auth_challenge.get();
- ASSERT_TRUE(auth_challenge != nullptr);
+ auth_challenge = response->auth_challenge;
+ ASSERT_TRUE(auth_challenge.has_value());
EXPECT_TRUE(auth_challenge->is_proxy);
EXPECT_EQ("https://proxy.example.org:70",
auth_challenge->challenger.Serialize());
diff --git a/net/reporting/reporting_uploader.cc b/net/reporting/reporting_uploader.cc
index 5e5848b7..1f7bfa7e 100644
--- a/net/reporting/reporting_uploader.cc
+++ b/net/reporting/reporting_uploader.cc
@@ -234,7 +234,7 @@
}
void OnAuthRequired(URLRequest* request,
- AuthChallengeInfo* auth_info) override {
+ const AuthChallengeInfo& auth_info) override {
request->Cancel();
}
diff --git a/net/spdy/spdy_network_transaction_unittest.cc b/net/spdy/spdy_network_transaction_unittest.cc
index a17437d95..feaf25b 100644
--- a/net/spdy/spdy_network_transaction_unittest.cc
+++ b/net/spdy/spdy_network_transaction_unittest.cc
@@ -5426,7 +5426,8 @@
ASSERT_TRUE(response_start->headers);
EXPECT_EQ(401, response_start->headers->response_code());
EXPECT_TRUE(response_start->was_fetched_via_spdy);
- AuthChallengeInfo* auth_challenge = response_start->auth_challenge.get();
+ const base::Optional<AuthChallengeInfo>& auth_challenge =
+ response_start->auth_challenge;
ASSERT_TRUE(auth_challenge);
EXPECT_FALSE(auth_challenge->is_proxy);
EXPECT_EQ(kBasicAuthScheme, auth_challenge->scheme);
@@ -5447,7 +5448,7 @@
ASSERT_TRUE(response_restart);
ASSERT_TRUE(response_restart->headers);
EXPECT_EQ(200, response_restart->headers->response_code());
- EXPECT_TRUE(response_restart->auth_challenge.get() == nullptr);
+ EXPECT_FALSE(response_restart->auth_challenge);
}
struct PushHeaderTestParams {
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
index 9507dc7..f7ee1c6 100644
--- a/net/url_request/url_request.cc
+++ b/net/url_request/url_request.cc
@@ -146,7 +146,7 @@
bool* defer_redirect) {}
void URLRequest::Delegate::OnAuthRequired(URLRequest* request,
- AuthChallengeInfo* auth_info) {
+ const AuthChallengeInfo& auth_info) {
request->CancelAuth();
}
@@ -1018,14 +1018,16 @@
job_->SetPriority(priority_);
}
-void URLRequest::NotifyAuthRequired(AuthChallengeInfo* auth_info) {
+void URLRequest::NotifyAuthRequired(
+ std::unique_ptr<AuthChallengeInfo> auth_info) {
NetworkDelegate::AuthRequiredResponse rv =
NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION;
- auth_info_ = auth_info;
+ auth_info_ = std::move(auth_info);
+ DCHECK(auth_info_);
if (network_delegate_) {
OnCallToDelegate(NetLogEventType::NETWORK_DELEGATE_AUTH_REQUIRED);
rv = network_delegate_->NotifyAuthRequired(
- this, *auth_info,
+ this, *auth_info_.get(),
base::BindOnce(&URLRequest::NotifyAuthRequiredComplete,
base::Unretained(this)),
&auth_credentials_);
@@ -1048,14 +1050,14 @@
// so it can be reset on another round.
AuthCredentials credentials = auth_credentials_;
auth_credentials_ = AuthCredentials();
- scoped_refptr<AuthChallengeInfo> auth_info;
+ std::unique_ptr<AuthChallengeInfo> auth_info;
auth_info.swap(auth_info_);
switch (result) {
case NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION:
// Defer to the URLRequest::Delegate, since the NetworkDelegate
// didn't take an action.
- delegate_->OnAuthRequired(this, auth_info.get());
+ delegate_->OnAuthRequired(this, *auth_info.get());
break;
case NetworkDelegate::AUTH_REQUIRED_RESPONSE_SET_AUTH:
diff --git a/net/url_request/url_request.h b/net/url_request/url_request.h
index 2b80fba..b264ca0 100644
--- a/net/url_request/url_request.h
+++ b/net/url_request/url_request.h
@@ -187,7 +187,7 @@
// When it does so, the request will be reissued, restarting the sequence
// of On* callbacks.
virtual void OnAuthRequired(URLRequest* request,
- AuthChallengeInfo* auth_info);
+ const AuthChallengeInfo& auth_info);
// Called when we receive an SSL CertificateRequest message for client
// authentication. The delegate should call
@@ -824,7 +824,7 @@
// These functions delegate to |delegate_|. See URLRequest::Delegate for the
// meaning of these functions.
- void NotifyAuthRequired(AuthChallengeInfo* auth_info);
+ void NotifyAuthRequired(std::unique_ptr<AuthChallengeInfo> auth_info);
void NotifyAuthRequiredComplete(NetworkDelegate::AuthRequiredResponse result);
void NotifyCertificateRequested(SSLCertRequestInfo* cert_request_info);
void NotifySSLCertificateError(const SSLInfo& ssl_info, bool fatal);
@@ -948,7 +948,7 @@
// |NotifyAuthRequired| on the NetworkDelegate. |auth_info_| holds
// the authentication challenge being handled by |NotifyAuthRequired|.
AuthCredentials auth_credentials_;
- scoped_refptr<AuthChallengeInfo> auth_info_;
+ std::unique_ptr<AuthChallengeInfo> auth_info_;
int64_t received_response_content_length_;
diff --git a/net/url_request/url_request_data_job_fuzzer.cc b/net/url_request/url_request_data_job_fuzzer.cc
index 29d0ddb..17635ef9 100644
--- a/net/url_request/url_request_data_job_fuzzer.cc
+++ b/net/url_request/url_request_data_job_fuzzer.cc
@@ -125,7 +125,7 @@
const net::RedirectInfo& redirect_info,
bool* defer_redirect) override {}
void OnAuthRequired(net::URLRequest* request,
- net::AuthChallengeInfo* auth_info) override {}
+ const net::AuthChallengeInfo& auth_info) override {}
void OnCertificateRequested(
net::URLRequest* request,
net::SSLCertRequestInfo* cert_request_info) override {}
diff --git a/net/url_request/url_request_ftp_job.cc b/net/url_request/url_request_ftp_job.cc
index 3f5633142..9e888e904 100644
--- a/net/url_request/url_request_ftp_job.cc
+++ b/net/url_request/url_request_ftp_job.cc
@@ -301,22 +301,24 @@
return auth_data_.get() && auth_data_->state == AUTH_STATE_NEED_AUTH;
}
-void URLRequestFtpJob::GetAuthChallengeInfo(
- scoped_refptr<AuthChallengeInfo>* result) {
+std::unique_ptr<AuthChallengeInfo> URLRequestFtpJob::GetAuthChallengeInfo() {
DCHECK(NeedsAuth());
if (http_response_info_) {
- *result = http_response_info_->auth_challenge;
- return;
+ if (!http_response_info_->auth_challenge.has_value())
+ return nullptr;
+ return std::make_unique<AuthChallengeInfo>(
+ http_response_info_->auth_challenge.value());
}
- scoped_refptr<AuthChallengeInfo> auth_info(new AuthChallengeInfo);
- auth_info->is_proxy = false;
- auth_info->challenger = url::Origin::Create(request_->url());
+ std::unique_ptr<AuthChallengeInfo> result =
+ std::make_unique<AuthChallengeInfo>();
+ result->is_proxy = false;
+ result->challenger = url::Origin::Create(request_->url());
// scheme and realm are kept empty.
- DCHECK(auth_info->scheme.empty());
- DCHECK(auth_info->realm.empty());
- result->swap(auth_info);
+ DCHECK(result->scheme.empty());
+ DCHECK(result->realm.empty());
+ return result;
}
void URLRequestFtpJob::SetAuth(const AuthCredentials& credentials) {
diff --git a/net/url_request/url_request_ftp_job.h b/net/url_request/url_request_ftp_job.h
index cfc27ff..c01f7ed 100644
--- a/net/url_request/url_request_ftp_job.h
+++ b/net/url_request/url_request_ftp_job.h
@@ -69,8 +69,7 @@
// Overridden from URLRequestJob:
LoadState GetLoadState() const override;
bool NeedsAuth() override;
- void GetAuthChallengeInfo(
- scoped_refptr<AuthChallengeInfo>* auth_info) override;
+ std::unique_ptr<AuthChallengeInfo> GetAuthChallengeInfo() override;
void SetAuth(const AuthCredentials& credentials) override;
void CancelAuth() override;
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
index 3b187a9..4f1fa6e0 100644
--- a/net/url_request/url_request_http_job.cc
+++ b/net/url_request/url_request_http_job.cc
@@ -411,7 +411,6 @@
// of sending authorization information. Each time it restarts, we get
// notified of the headers completion so that we can update the cookie store.
if (transaction_->IsReadyToRestartForAuth()) {
- DCHECK(!response_info_->auth_challenge.get());
// TODO(battre): This breaks the webrequest API for
// URLRequestTestHTTP.BasicAuthWithCookies
// where OnBeforeStartTransaction -> OnStartTransaction ->
@@ -1126,8 +1125,7 @@
return false;
}
-void URLRequestHttpJob::GetAuthChallengeInfo(
- scoped_refptr<AuthChallengeInfo>* result) {
+std::unique_ptr<AuthChallengeInfo> URLRequestHttpJob::GetAuthChallengeInfo() {
DCHECK(transaction_.get());
DCHECK(response_info_);
@@ -1138,7 +1136,10 @@
(GetResponseHeaders()->response_code() ==
HTTP_PROXY_AUTHENTICATION_REQUIRED));
- *result = response_info_->auth_challenge;
+ if (!response_info_->auth_challenge.has_value())
+ return nullptr;
+ return std::make_unique<AuthChallengeInfo>(
+ response_info_->auth_challenge.value());
}
void URLRequestHttpJob::SetAuth(const AuthCredentials& credentials) {
diff --git a/net/url_request/url_request_http_job.h b/net/url_request/url_request_http_job.h
index dbfe3b9..5da15f7 100644
--- a/net/url_request/url_request_http_job.h
+++ b/net/url_request/url_request_http_job.h
@@ -114,7 +114,7 @@
bool CopyFragmentOnRedirect(const GURL& location) const override;
bool IsSafeRedirect(const GURL& location) override;
bool NeedsAuth() override;
- void GetAuthChallengeInfo(scoped_refptr<AuthChallengeInfo>*) override;
+ std::unique_ptr<AuthChallengeInfo> GetAuthChallengeInfo() override;
void SetAuth(const AuthCredentials& credentials) override;
void CancelAuth() override;
void ContinueWithCertificate(
diff --git a/net/url_request/url_request_job.cc b/net/url_request/url_request_job.cc
index 85a1889..06df9bd3 100644
--- a/net/url_request/url_request_job.cc
+++ b/net/url_request/url_request_job.cc
@@ -222,11 +222,11 @@
return false;
}
-void URLRequestJob::GetAuthChallengeInfo(
- scoped_refptr<AuthChallengeInfo>* auth_info) {
+std::unique_ptr<AuthChallengeInfo> URLRequestJob::GetAuthChallengeInfo() {
// This will only be called if NeedsAuth() returns true, in which
// case the derived class should implement this!
NOTREACHED();
+ return nullptr;
}
void URLRequestJob::SetAuth(const AuthCredentials& credentials) {
@@ -449,13 +449,11 @@
}
if (NeedsAuth()) {
- scoped_refptr<AuthChallengeInfo> auth_info;
- GetAuthChallengeInfo(&auth_info);
-
+ std::unique_ptr<AuthChallengeInfo> auth_info = GetAuthChallengeInfo();
// Need to check for a NULL auth_info because the server may have failed
// to send a challenge with the 401 response.
- if (auth_info.get()) {
- request_->NotifyAuthRequired(auth_info.get());
+ if (auth_info) {
+ request_->NotifyAuthRequired(std::move(auth_info));
// Wait for SetAuth or CancelAuth to be called.
return;
}
diff --git a/net/url_request/url_request_job.h b/net/url_request/url_request_job.h
index 2b2cd17..019e8102 100644
--- a/net/url_request/url_request_job.h
+++ b/net/url_request/url_request_job.h
@@ -180,9 +180,9 @@
// obtaining the credentials passing them to SetAuth.
virtual bool NeedsAuth();
- // Fills the authentication info with the server's response.
- virtual void GetAuthChallengeInfo(
- scoped_refptr<AuthChallengeInfo>* auth_info);
+ // Returns a copy of the authentication challenge that came with the server's
+ // response.
+ virtual std::unique_ptr<AuthChallengeInfo> GetAuthChallengeInfo();
// Resend the request with authentication credentials.
virtual void SetAuth(const AuthCredentials& credentials);
diff --git a/net/url_request/url_request_test_util.cc b/net/url_request/url_request_test_util.cc
index 0c11ad2..a217e18 100644
--- a/net/url_request/url_request_test_util.cc
+++ b/net/url_request/url_request_test_util.cc
@@ -248,7 +248,7 @@
}
void TestDelegate::OnAuthRequired(URLRequest* request,
- AuthChallengeInfo* auth_info) {
+ const AuthChallengeInfo& auth_info) {
auth_required_ = true;
if (on_auth_required_) {
std::move(on_auth_required_).Run();
diff --git a/net/url_request/url_request_test_util.h b/net/url_request/url_request_test_util.h
index 59b7525..a6324bf 100644
--- a/net/url_request/url_request_test_util.h
+++ b/net/url_request/url_request_test_util.h
@@ -204,7 +204,7 @@
const RedirectInfo& redirect_info,
bool* defer_redirect) override;
void OnAuthRequired(URLRequest* request,
- AuthChallengeInfo* auth_info) override;
+ const AuthChallengeInfo& auth_info) override;
// NOTE: |fatal| causes |certificate_errors_are_fatal_| to be set to true.
// (Unit tests use this as a post-condition.) But for policy, this method
// consults |allow_certificate_errors_|.
diff --git a/net/websockets/websocket_channel.cc b/net/websockets/websocket_channel.cc
index 69bcd78..504453d0 100644
--- a/net/websockets/websocket_channel.cc
+++ b/net/websockets/websocket_channel.cc
@@ -205,12 +205,12 @@
fatal);
}
- int OnAuthRequired(scoped_refptr<AuthChallengeInfo> auth_info,
+ int OnAuthRequired(const AuthChallengeInfo& auth_info,
scoped_refptr<HttpResponseHeaders> headers,
const IPEndPoint& remote_endpoint,
base::OnceCallback<void(const AuthCredentials*)> callback,
base::Optional<AuthCredentials>* credentials) override {
- return creator_->OnAuthRequired(std::move(auth_info), std::move(headers),
+ return creator_->OnAuthRequired(auth_info, std::move(headers),
remote_endpoint, std::move(callback),
credentials);
}
@@ -602,13 +602,13 @@
}
int WebSocketChannel::OnAuthRequired(
- scoped_refptr<AuthChallengeInfo> auth_info,
+ const AuthChallengeInfo& auth_info,
scoped_refptr<HttpResponseHeaders> response_headers,
const IPEndPoint& remote_endpoint,
base::OnceCallback<void(const AuthCredentials*)> callback,
base::Optional<AuthCredentials>* credentials) {
return event_interface_->OnAuthRequired(
- std::move(auth_info), std::move(response_headers), remote_endpoint,
+ auth_info, std::move(response_headers), remote_endpoint,
std::move(callback), credentials);
}
diff --git a/net/websockets/websocket_channel.h b/net/websockets/websocket_channel.h
index 44f475d..977fdc4 100644
--- a/net/websockets/websocket_channel.h
+++ b/net/websockets/websocket_channel.h
@@ -213,7 +213,7 @@
// Authentication request from WebSocketStream::CreateAndConnectStream().
// Forwards the request to the event interface.
- int OnAuthRequired(scoped_refptr<AuthChallengeInfo> auth_info,
+ int OnAuthRequired(const AuthChallengeInfo& auth_info,
scoped_refptr<HttpResponseHeaders> response_headers,
const IPEndPoint& remote_endpoint,
base::OnceCallback<void(const AuthCredentials*)> callback,
diff --git a/net/websockets/websocket_channel_test.cc b/net/websockets/websocket_channel_test.cc
index 7209658..655ff91 100644
--- a/net/websockets/websocket_channel_test.cc
+++ b/net/websockets/websocket_channel_test.cc
@@ -202,7 +202,7 @@
OnSSLCertificateErrorCalled(
ssl_error_callbacks.get(), url, ssl_info, fatal);
}
- int OnAuthRequired(scoped_refptr<AuthChallengeInfo> auth_info,
+ int OnAuthRequired(const AuthChallengeInfo& auth_info,
scoped_refptr<HttpResponseHeaders> response_headers,
const IPEndPoint& remote_endpoint,
base::OnceCallback<void(const AuthCredentials*)> callback,
@@ -218,7 +218,7 @@
OnSSLCertificateErrorCalled,
void(SSLErrorCallbacks*, const GURL&, const SSLInfo&, bool)); // NOLINT
MOCK_METHOD4(OnAuthRequiredCalled,
- int(scoped_refptr<AuthChallengeInfo>,
+ int(const AuthChallengeInfo&,
scoped_refptr<HttpResponseHeaders>,
const IPEndPoint&,
base::Optional<AuthCredentials>*));
@@ -249,7 +249,7 @@
const GURL& url,
const SSLInfo& ssl_info,
bool fatal) override {}
- int OnAuthRequired(scoped_refptr<AuthChallengeInfo> auth_info,
+ int OnAuthRequired(const AuthChallengeInfo& auth_info,
scoped_refptr<HttpResponseHeaders> response_headers,
const IPEndPoint& remote_endpoint,
base::OnceCallback<void(const AuthCredentials*)> callback,
@@ -2965,8 +2965,7 @@
TEST_F(WebSocketChannelEventInterfaceTest, OnAuthRequiredCalled) {
const GURL wss_url("wss://example.com/on_auth_required");
connect_data_.socket_url = wss_url;
- scoped_refptr<AuthChallengeInfo> auth_info =
- base::MakeRefCounted<AuthChallengeInfo>();
+ AuthChallengeInfo auth_info;
base::Optional<AuthCredentials> credentials;
scoped_refptr<HttpResponseHeaders> response_headers =
base::MakeRefCounted<HttpResponseHeaders>("HTTP/1.1 200 OK");
diff --git a/net/websockets/websocket_end_to_end_test.cc b/net/websockets/websocket_end_to_end_test.cc
index 9622efb..4ce998a 100644
--- a/net/websockets/websocket_end_to_end_test.cc
+++ b/net/websockets/websocket_end_to_end_test.cc
@@ -126,7 +126,7 @@
const SSLInfo& ssl_info,
bool fatal) override;
- int OnAuthRequired(scoped_refptr<AuthChallengeInfo> auth_info,
+ int OnAuthRequired(const AuthChallengeInfo& auth_info,
scoped_refptr<HttpResponseHeaders> response_headers,
const IPEndPoint& remote_endpoint,
base::OnceCallback<void(const AuthCredentials*)> callback,
@@ -209,7 +209,7 @@
}
int ConnectTestingEventInterface::OnAuthRequired(
- scoped_refptr<AuthChallengeInfo> auth_info,
+ const AuthChallengeInfo& auth_info,
scoped_refptr<HttpResponseHeaders> response_headers,
const IPEndPoint& remote_endpoint,
base::OnceCallback<void(const AuthCredentials*)> callback,
diff --git a/net/websockets/websocket_event_interface.h b/net/websockets/websocket_event_interface.h
index 4c3d6e3c..b7a4343 100644
--- a/net/websockets/websocket_event_interface.h
+++ b/net/websockets/websocket_event_interface.h
@@ -136,7 +136,7 @@
// async case) cancels authentication. Otherwise the new credentials are set
// and the opening handshake will be retried with the credentials.
virtual int OnAuthRequired(
- scoped_refptr<AuthChallengeInfo> auth_info,
+ const AuthChallengeInfo& auth_info,
scoped_refptr<HttpResponseHeaders> response_headers,
const IPEndPoint& socket_address,
base::OnceCallback<void(const AuthCredentials*)> callback,
diff --git a/net/websockets/websocket_handshake_stream_create_helper_test.cc b/net/websockets/websocket_handshake_stream_create_helper_test.cc
index 3fb6248..4aa13d6 100644
--- a/net/websockets/websocket_handshake_stream_create_helper_test.cc
+++ b/net/websockets/websocket_handshake_stream_create_helper_test.cc
@@ -121,8 +121,7 @@
ssl_error_callbacks,
const SSLInfo& ssl_info,
bool fatal) override {}
- int OnAuthRequired(scoped_refptr<AuthChallengeInfo> auth_info,
-
+ int OnAuthRequired(const AuthChallengeInfo& auth_info,
scoped_refptr<HttpResponseHeaders> response_headers,
const IPEndPoint& host_port_pair,
base::OnceCallback<void(const AuthCredentials*)> callback,
diff --git a/net/websockets/websocket_stream.cc b/net/websockets/websocket_stream.cc
index 5e716880..9020000 100644
--- a/net/websockets/websocket_stream.cc
+++ b/net/websockets/websocket_stream.cc
@@ -87,7 +87,7 @@
void OnResponseStarted(URLRequest* request, int net_error) override;
void OnAuthRequired(URLRequest* request,
- AuthChallengeInfo* auth_info) override;
+ const AuthChallengeInfo& auth_info) override;
void OnCertificateRequested(URLRequest* request,
SSLCertRequestInfo* cert_request_info) override;
@@ -410,12 +410,12 @@
}
void Delegate::OnAuthRequired(URLRequest* request,
- AuthChallengeInfo* auth_info) {
+ const AuthChallengeInfo& auth_info) {
base::Optional<AuthCredentials> credentials;
// This base::Unretained(this) relies on an assumption that |callback| can
// be called called during the opening handshake.
int rv = owner_->connect_delegate()->OnAuthRequired(
- scoped_refptr<AuthChallengeInfo>(auth_info), request->response_headers(),
+ auth_info, request->response_headers(),
request->GetResponseRemoteEndpoint(),
base::BindOnce(&Delegate::OnAuthRequiredComplete, base::Unretained(this),
request),
diff --git a/net/websockets/websocket_stream.h b/net/websockets/websocket_stream.h
index 867b5a9..70c05cef 100644
--- a/net/websockets/websocket_stream.h
+++ b/net/websockets/websocket_stream.h
@@ -129,7 +129,7 @@
// async case) cancels authentication. Otherwise the new credentials are set
// and the opening handshake will be retried with the credentials.
virtual int OnAuthRequired(
- scoped_refptr<AuthChallengeInfo> auth_info,
+ const AuthChallengeInfo& auth_info,
scoped_refptr<HttpResponseHeaders> response_headers,
const IPEndPoint& remote_endpoint,
base::OnceCallback<void(const AuthCredentials*)> callback,
diff --git a/net/websockets/websocket_stream_create_test_base.cc b/net/websockets/websocket_stream_create_test_base.cc
index 9db4381..6e8284e 100644
--- a/net/websockets/websocket_stream_create_test_base.cc
+++ b/net/websockets/websocket_stream_create_test_base.cc
@@ -69,13 +69,13 @@
owner_->ssl_fatal_ = fatal;
}
- int OnAuthRequired(scoped_refptr<AuthChallengeInfo> auth_info,
+ int OnAuthRequired(const AuthChallengeInfo& auth_info,
scoped_refptr<HttpResponseHeaders> response_headers,
const IPEndPoint& remote_endpoint,
base::OnceCallback<void(const AuthCredentials*)> callback,
base::Optional<AuthCredentials>* credentials) override {
owner_->run_loop_waiting_for_on_auth_required_.Quit();
- owner_->auth_challenge_info_ = std::move(auth_info);
+ owner_->auth_challenge_info_ = auth_info;
*credentials = owner_->auth_credentials_;
owner_->on_auth_required_callback_ = std::move(callback);
return owner_->on_auth_required_rv_;
diff --git a/net/websockets/websocket_stream_create_test_base.h b/net/websockets/websocket_stream_create_test_base.h
index 228789c..3df0f4d6 100644
--- a/net/websockets/websocket_stream_create_test_base.h
+++ b/net/websockets/websocket_stream_create_test_base.h
@@ -81,7 +81,7 @@
SSLInfo ssl_info_;
bool ssl_fatal_;
URLRequest* url_request_;
- scoped_refptr<AuthChallengeInfo> auth_challenge_info_;
+ AuthChallengeInfo auth_challenge_info_;
base::OnceCallback<void(const AuthCredentials*)> on_auth_required_callback_;
// This value will be copied to |*credentials| on OnAuthRequired.
diff --git a/net/websockets/websocket_test_util.cc b/net/websockets/websocket_test_util.cc
index 5335404..ecacab3 100644
--- a/net/websockets/websocket_test_util.cc
+++ b/net/websockets/websocket_test_util.cc
@@ -259,7 +259,7 @@
}
int DummyConnectDelegate::OnAuthRequired(
- scoped_refptr<AuthChallengeInfo> auth_info,
+ const AuthChallengeInfo& auth_info,
scoped_refptr<HttpResponseHeaders> response_headers,
const IPEndPoint& host_port_pair,
base::OnceCallback<void(const AuthCredentials*)> callback,
diff --git a/net/websockets/websocket_test_util.h b/net/websockets/websocket_test_util.h
index 7346a657..db4bc1a7 100644
--- a/net/websockets/websocket_test_util.h
+++ b/net/websockets/websocket_test_util.h
@@ -195,7 +195,7 @@
ssl_error_callbacks,
const SSLInfo& ssl_info,
bool fatal) override {}
- int OnAuthRequired(scoped_refptr<AuthChallengeInfo> auth_info,
+ int OnAuthRequired(const AuthChallengeInfo& auth_info,
scoped_refptr<HttpResponseHeaders> response_headers,
const IPEndPoint& remote_endpoint,
base::OnceCallback<void(const AuthCredentials*)> callback,
diff --git a/services/network/public/cpp/net_ipc_param_traits.cc b/services/network/public/cpp/net_ipc_param_traits.cc
index dc975f4..dec6b7ca 100644
--- a/services/network/public/cpp/net_ipc_param_traits.cc
+++ b/services/network/public/cpp/net_ipc_param_traits.cc
@@ -11,38 +11,24 @@
namespace IPC {
-void ParamTraits<scoped_refptr<net::AuthChallengeInfo>>::Write(
- base::Pickle* m,
- const param_type& p) {
- WriteParam(m, p != nullptr);
- if (p) {
- WriteParam(m, p->is_proxy);
- WriteParam(m, p->challenger);
- WriteParam(m, p->scheme);
- WriteParam(m, p->realm);
- }
+void ParamTraits<net::AuthChallengeInfo>::Write(base::Pickle* m,
+ const param_type& p) {
+ WriteParam(m, p.is_proxy);
+ WriteParam(m, p.challenger);
+ WriteParam(m, p.scheme);
+ WriteParam(m, p.realm);
}
-bool ParamTraits<scoped_refptr<net::AuthChallengeInfo>>::Read(
- const base::Pickle* m,
- base::PickleIterator* iter,
- param_type* r) {
- bool has_object;
- if (!ReadParam(m, iter, &has_object))
- return false;
- if (!has_object) {
- *r = nullptr;
- return true;
- }
- *r = new net::AuthChallengeInfo();
- return ReadParam(m, iter, &(*r)->is_proxy) &&
- ReadParam(m, iter, &(*r)->challenger) &&
- ReadParam(m, iter, &(*r)->scheme) && ReadParam(m, iter, &(*r)->realm);
+bool ParamTraits<net::AuthChallengeInfo>::Read(const base::Pickle* m,
+ base::PickleIterator* iter,
+ param_type* r) {
+ return ReadParam(m, iter, &r->is_proxy) &&
+ ReadParam(m, iter, &r->challenger) && ReadParam(m, iter, &r->scheme) &&
+ ReadParam(m, iter, &r->realm);
}
-void ParamTraits<scoped_refptr<net::AuthChallengeInfo>>::Log(
- const param_type& p,
- std::string* l) {
+void ParamTraits<net::AuthChallengeInfo>::Log(const param_type& p,
+ std::string* l) {
l->append("<AuthChallengeInfo>");
}
diff --git a/services/network/public/cpp/net_ipc_param_traits.h b/services/network/public/cpp/net_ipc_param_traits.h
index 3cff701..04121b94 100644
--- a/services/network/public/cpp/net_ipc_param_traits.h
+++ b/services/network/public/cpp/net_ipc_param_traits.h
@@ -45,9 +45,8 @@
namespace IPC {
template <>
-struct COMPONENT_EXPORT(NETWORK_CPP_BASE)
- ParamTraits<scoped_refptr<net::AuthChallengeInfo>> {
- typedef scoped_refptr<net::AuthChallengeInfo> param_type;
+struct COMPONENT_EXPORT(NETWORK_CPP_BASE) ParamTraits<net::AuthChallengeInfo> {
+ typedef net::AuthChallengeInfo param_type;
static void Write(base::Pickle* m, const param_type& p);
static bool Read(const base::Pickle* m,
base::PickleIterator* iter,
diff --git a/services/network/public/cpp/network_param.typemap b/services/network/public/cpp/network_param.typemap
index 69e0c62..2ef9f78 100644
--- a/services/network/public/cpp/network_param.typemap
+++ b/services/network/public/cpp/network_param.typemap
@@ -33,7 +33,7 @@
"//services/network/public/cpp:cpp_base",
]
type_mappings = [
- "network.mojom.AuthChallengeInfo=scoped_refptr<net::AuthChallengeInfo>[nullable_is_same_type]",
+ "network.mojom.AuthChallengeInfo=net::AuthChallengeInfo",
"network.mojom.AuthCredentials=net::AuthCredentials",
"network.mojom.CertVerifyResult=net::CertVerifyResult",
"network.mojom.CTVerifyResult=net::ct::CTVerifyResult",
diff --git a/services/network/test/test_network_service_client.cc b/services/network/test/test_network_service_client.cc
index e406716..079d523 100644
--- a/services/network/test/test_network_service_client.cc
+++ b/services/network/test/test_network_service_client.cc
@@ -25,7 +25,7 @@
const GURL& url,
const GURL& site_for_cookies,
bool first_auth_attempt,
- const scoped_refptr<net::AuthChallengeInfo>& auth_info,
+ const net::AuthChallengeInfo& auth_info,
int32_t resource_type,
const base::Optional<ResourceResponseHead>& head,
mojom::AuthChallengeResponderPtr auth_challenge_responder) {
diff --git a/services/network/test/test_network_service_client.h b/services/network/test/test_network_service_client.h
index cc70741..fa011107 100644
--- a/services/network/test/test_network_service_client.h
+++ b/services/network/test/test_network_service_client.h
@@ -35,7 +35,7 @@
const GURL& url,
const GURL& site_for_cookies,
bool first_auth_attempt,
- const scoped_refptr<net::AuthChallengeInfo>& auth_info,
+ const net::AuthChallengeInfo& auth_info,
int32_t resource_type,
const base::Optional<ResourceResponseHead>& head,
mojom::AuthChallengeResponderPtr auth_challenge_responder) override;
diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc
index fcb025f..7243b22 100644
--- a/services/network/url_loader.cc
+++ b/services/network/url_loader.cc
@@ -754,7 +754,7 @@
}
void URLLoader::OnAuthRequired(net::URLRequest* url_request,
- net::AuthChallengeInfo* auth_info) {
+ const net::AuthChallengeInfo& auth_info) {
if (!network_service_client_) {
OnAuthCredentials(base::nullopt);
return;
diff --git a/services/network/url_loader.h b/services/network/url_loader.h
index 20d6dc6..2bf69e8 100644
--- a/services/network/url_loader.h
+++ b/services/network/url_loader.h
@@ -89,7 +89,7 @@
const net::RedirectInfo& redirect_info,
bool* defer_redirect) override;
void OnAuthRequired(net::URLRequest* request,
- net::AuthChallengeInfo* info) override;
+ const net::AuthChallengeInfo& info) override;
void OnCertificateRequested(net::URLRequest* request,
net::SSLCertRequestInfo* info) override;
void OnSSLCertificateError(net::URLRequest* request,
diff --git a/services/network/url_loader_unittest.cc b/services/network/url_loader_unittest.cc
index 21f70aa..e42fc3c 100644
--- a/services/network/url_loader_unittest.cc
+++ b/services/network/url_loader_unittest.cc
@@ -2276,7 +2276,7 @@
const GURL& url,
const GURL& site_for_cookies,
bool first_auth_attempt,
- const scoped_refptr<net::AuthChallengeInfo>& auth_info,
+ const net::AuthChallengeInfo& auth_info,
int32_t resource_type,
const base::Optional<network::ResourceResponseHead>& head,
mojom::AuthChallengeResponderPtr auth_challenge_responder) override {
diff --git a/services/network/websocket.cc b/services/network/websocket.cc
index efc98f5..69760c4 100644
--- a/services/network/websocket.cc
+++ b/services/network/websocket.cc
@@ -104,7 +104,7 @@
const net::SSLInfo& ssl_info,
bool fatal) override;
int OnAuthRequired(
- scoped_refptr<net::AuthChallengeInfo> auth_info,
+ const net::AuthChallengeInfo& auth_info,
scoped_refptr<net::HttpResponseHeaders> response_headers,
const net::IPEndPoint& remote_endpoint,
base::OnceCallback<void(const net::AuthCredentials*)> callback,
@@ -288,7 +288,7 @@
}
int WebSocket::WebSocketEventHandler::OnAuthRequired(
- scoped_refptr<net::AuthChallengeInfo> auth_info,
+ const net::AuthChallengeInfo& auth_info,
scoped_refptr<net::HttpResponseHeaders> response_headers,
const net::IPEndPoint& remote_endpoint,
base::OnceCallback<void(const net::AuthCredentials*)> callback,
@@ -301,7 +301,7 @@
}
impl_->auth_handler_->OnAuthRequired(
- std::move(auth_info), std::move(response_headers), remote_endpoint,
+ auth_info, std::move(response_headers), remote_endpoint,
base::BindOnce(&WebSocket::OnAuthRequiredComplete,
impl_->weak_ptr_factory_.GetWeakPtr(),
std::move(callback)));