[IP Protection] Add proxy chain and is-proxy-session to QuicSessionKey
Updates QuicSessionKey to include a ProxyChain and an IsProxySession
member, mirroring what's done for SpdySessionKey. This means that a
tunnel established through a proxy chain will no longer share a QUIC
session with a connection established directly to the proxy. A new
QuicNetworkTransactionTest test is added for this. This change also
gets us closer to supporting multi-proxy chains for cases like where
a tunnel is established through the same proxy server twice.
Also, this CL removes the use_dns_aliases parameter from
QuicSessionRequest::Request, since this can be calculated from the
new IsProxySession parameter, and also removes
QuicSessionPoolPeer::HasLiveSession since it is unused.
Change-Id: Ieb5edee570508f9774914d2d7c69d8bb617e57b4
Bug: 1491092, 1495793
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5205530
Reviewed-by: Dustin Mitchell <djmitche@chromium.org>
Reviewed-by: Matt Menke <mmenke@chromium.org>
Commit-Queue: Andrew Williams <awillia@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1251058}
diff --git a/net/BUILD.gn b/net/BUILD.gn
index 65bc73a..7db82b5 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -2675,6 +2675,7 @@
"quic/quic_http_utils_test.cc",
"quic/quic_network_transaction_unittest.cc",
"quic/quic_proxy_client_socket_unittest.cc",
+ "quic/quic_session_key_unittest.cc",
"quic/quic_session_pool_peer.cc",
"quic/quic_session_pool_peer.h",
"quic/quic_session_pool_test.cc",
diff --git a/net/http/http_proxy_connect_job.cc b/net/http/http_proxy_connect_job.cc
index 1a031ed..fb03fac3 100644
--- a/net/http/http_proxy_connect_job.cc
+++ b/net/http/http_proxy_connect_job.cc
@@ -30,6 +30,7 @@
#include "net/nqe/network_quality_estimator.h"
#include "net/quic/quic_http_utils.h"
#include "net/quic/quic_proxy_client_socket.h"
+#include "net/quic/quic_session_key.h"
#include "net/quic/quic_session_pool.h"
#include "net/socket/client_socket_handle.h"
#include "net/socket/next_proto.h"
@@ -689,15 +690,20 @@
// Use default QUIC version, which is the version listed supported version.
quic::ParsedQuicVersion quic_version =
common_connect_job_params()->quic_supported_versions->front();
+ // TODO(https://crbug.com/1491092): Update to handle multi-proxy chains. We
+ // will need to create a proxy chain corresponding to all proxy servers up to
+ // but not including the one we are connecting to (or ProxyChain::Direct for
+ // the first proxy server) and use that instead of ProxyChain::Direct() below.
+ CHECK(!params_->proxy_chain().is_multi_proxy());
return quic_session_request_->Request(
// TODO(crbug.com/1206799) Pass the destination directly once it's
// converted to contain scheme.
url::SchemeHostPort(url::kHttpsScheme, proxy_server.host(),
proxy_server.port()),
- quic_version, ssl_params->privacy_mode(), kH2QuicTunnelPriority,
- socket_tag(), params_->network_anonymization_key(),
- params_->secure_dns_policy(),
- /*use_dns_aliases=*/false, /*require_dns_https_alpn=*/false,
+ quic_version, ProxyChain::Direct(), QuicSessionKey::IsProxySession::kTrue,
+ ssl_params->privacy_mode(), kH2QuicTunnelPriority, socket_tag(),
+ params_->network_anonymization_key(), params_->secure_dns_policy(),
+ /*require_dns_https_alpn=*/false,
ssl_params->ssl_config().GetCertVerifyFlags(),
GURL("https://" + proxy_server.ToString()), net_log(),
&quic_net_error_details_,
diff --git a/net/http/http_stream_factory_job.cc b/net/http/http_stream_factory_job.cc
index dadd26a..0bfd0ced 100644
--- a/net/http/http_stream_factory_job.cc
+++ b/net/http/http_stream_factory_job.cc
@@ -20,6 +20,7 @@
#include "net/base/host_port_pair.h"
#include "net/base/load_flags.h"
#include "net/base/port_util.h"
+#include "net/base/proxy_chain.h"
#include "net/base/proxy_delegate.h"
#include "net/cert/cert_verifier.h"
#include "net/dns/public/secure_dns_policy.h"
@@ -37,6 +38,7 @@
#include "net/proxy_resolution/proxy_resolution_service.h"
#include "net/quic/bidirectional_stream_quic_impl.h"
#include "net/quic/quic_http_stream.h"
+#include "net/quic/quic_session_key.h"
#include "net/socket/client_socket_handle.h"
#include "net/socket/client_socket_pool_manager.h"
#include "net/socket/connect_job.h"
@@ -47,6 +49,7 @@
#include "net/spdy/spdy_http_stream.h"
#include "net/spdy/spdy_session.h"
#include "net/ssl/ssl_cert_request_info.h"
+#include "url/gurl.h"
#include "url/scheme_host_port.h"
#include "url/url_constants.h"
@@ -340,10 +343,27 @@
}
bool require_dns_https_alpn =
(job_type_ == DNS_ALPN_H3) || (job_type_ == PRECONNECT_DNS_ALPN_H3);
+ QuicSessionKey::IsProxySession is_proxy_session;
+ ProxyChain proxy_chain;
+ // TODO(https://crbug.com/1520929): Remove support for sending GET requests to
+ // the proxy server when proxying HTTP requests and instead always tunnel
+ // them.
+ CHECK(!proxy_info_.proxy_chain().is_multi_proxy());
+ if (IsGetToProxy(proxy_info_.proxy_chain(), origin_url_)) {
+ is_proxy_session = QuicSessionKey::IsProxySession::kTrue;
+ proxy_chain = ProxyChain::Direct();
+ } else {
+ is_proxy_session = QuicSessionKey::IsProxySession::kFalse;
+ proxy_chain = proxy_info_.proxy_chain();
+ // TODO(https://crbug.com/1495793): Proxying QUIC over QUIC is not currently
+ // supported, but when it is we can remove this CHECK.
+ CHECK(proxy_chain.is_direct());
+ }
+
return quic_request_.CanUseExistingSession(
- origin_url_, request_info_.privacy_mode, request_info_.socket_tag,
- request_info_.network_anonymization_key, request_info_.secure_dns_policy,
- require_dns_https_alpn, destination_);
+ origin_url_, proxy_chain, request_info_.privacy_mode, is_proxy_session,
+ request_info_.socket_tag, request_info_.network_anonymization_key,
+ request_info_.secure_dns_policy, require_dns_https_alpn, destination_);
}
bool HttpStreamFactory::Job::TargettedSocketGroupHasActiveSocket() const {
@@ -444,8 +464,7 @@
// SpdySession pool, and uses it directly (completely ignoring the result of
// the ConnectJob, and in fact cancelling it). So we need to create the same
// key used by the HttpProxyConnectJob for the last proxy in the chain.
- if (proxy_chain.is_get_to_proxy_allowed() && proxy_chain.Last().is_https() &&
- origin_url.SchemeIs(url::kHttpScheme)) {
+ if (IsGetToProxy(proxy_chain, origin_url)) {
// For this to work as expected, the whole chain should be HTTPS.
for (const auto& proxy_server : proxy_chain.proxy_servers()) {
CHECK(proxy_server.is_https());
@@ -464,6 +483,14 @@
secure_dns_policy);
}
+// static
+bool HttpStreamFactory::Job::IsGetToProxy(const ProxyChain& proxy_chain,
+ const GURL& origin_url) {
+ return proxy_chain.is_get_to_proxy_allowed() &&
+ proxy_chain.Last().is_secure_http_like() &&
+ origin_url.SchemeIs(url::kHttpScheme);
+}
+
bool HttpStreamFactory::Job::CanUseExistingSpdySession() const {
DCHECK(!using_quic_);
@@ -896,7 +923,10 @@
url::SchemeHostPort destination;
GURL url(request_info_.url);
int cert_verifier_flags;
+ QuicSessionKey::IsProxySession is_proxy_session;
+
if (proxy_info_.is_quic()) {
+ DCHECK(url.SchemeIs(url::kHttpScheme));
// Disable network fetches for QUIC proxies, since the network requests
// are probably going to need to go through the proxy chain too.
//
@@ -904,29 +934,35 @@
// proxies in ConnectJobFactory.
cert_verifier_flags = CertVerifier::VERIFY_DISABLE_NETWORK_FETCHES;
- // TODO(https://crbug.com/1491092): Update this to support proxy chains with
- // multiple proxies and add tests.
+ // TODO(https://crbug.com/1491092): To support multi-proxy chains here,
+ // either remove support for using proxy GET requests for HTTP traffic
+ // entirely or make it so that HTTP requests are always tunneled when
+ // multi-proxy chains are in use (like what's currently done for HTTPS/SPDY
+ // proxies).
CHECK(!proxy_info_.proxy_chain().is_multi_proxy());
const HostPortPair& proxy_endpoint =
proxy_info_.proxy_chain().Last().host_port_pair();
destination = url::SchemeHostPort(url::kHttpsScheme, proxy_endpoint.host(),
proxy_endpoint.port());
url = destination.GetURL();
+ is_proxy_session = QuicSessionKey::IsProxySession::kTrue;
} else {
DCHECK(using_ssl_);
destination = destination_;
cert_verifier_flags = server_cert_verifier_flags;
+ // This connection is to the destination and not to an intermediate proxy.
+ is_proxy_session = QuicSessionKey::IsProxySession::kFalse;
}
DCHECK(url.SchemeIs(url::kHttpsScheme));
bool require_dns_https_alpn =
(job_type_ == DNS_ALPN_H3) || (job_type_ == PRECONNECT_DNS_ALPN_H3);
int rv = quic_request_.Request(
- std::move(destination), quic_version_, request_info_.privacy_mode,
- priority_, request_info_.socket_tag,
- request_info_.network_anonymization_key, request_info_.secure_dns_policy,
- proxy_info_.is_direct(), require_dns_https_alpn, cert_verifier_flags, url,
- net_log_, &net_error_details_,
+ std::move(destination), quic_version_, ProxyChain::Direct(),
+ is_proxy_session, request_info_.privacy_mode, priority_,
+ request_info_.socket_tag, request_info_.network_anonymization_key,
+ request_info_.secure_dns_policy, require_dns_https_alpn,
+ cert_verifier_flags, url, net_log_, &net_error_details_,
base::BindOnce(&Job::OnFailedOnDefaultNetwork, ptr_factory_.GetWeakPtr()),
io_callback_);
if (rv == OK) {
diff --git a/net/http/http_stream_factory_job.h b/net/http/http_stream_factory_job.h
index 7696161..94295a4 100644
--- a/net/http/http_stream_factory_job.h
+++ b/net/http/http_stream_factory_job.h
@@ -32,6 +32,7 @@
#include "net/spdy/spdy_session_key.h"
#include "net/spdy/spdy_session_pool.h"
#include "net/ssl/ssl_config.h"
+#include "url/gurl.h"
#include "url/scheme_host_port.h"
namespace net {
@@ -348,6 +349,17 @@
const NetworkAnonymizationKey& network_anonymization_key,
SecureDnsPolicy secure_dns_policy);
+ // Returns whether an appropriate SPDY or QUIC session would correspond to
+ // either a connection to the last proxy server in the chain (for the
+ // traditional HTTP proxying behavior of sending a GET request to the proxy
+ // server) or a connection through the entire proxy chain (for tunneled
+ // requests).
+ // TODO(https://crbug.com/1495793): Support for this is being removed for QUIC
+ // proxy chains, but will remain for SPDY proxies (so update the comment
+ // above once this change is made).
+ static bool IsGetToProxy(const ProxyChain& proxy_chain,
+ const GURL& origin_url);
+
// Returns true if the current request can use an existing spdy session.
bool CanUseExistingSpdySession() const;
diff --git a/net/http/http_stream_factory_job_controller.cc b/net/http/http_stream_factory_job_controller.cc
index 57c6aa4..0501f06f 100644
--- a/net/http/http_stream_factory_job_controller.cc
+++ b/net/http/http_stream_factory_job_controller.cc
@@ -29,6 +29,7 @@
#include "net/log/net_log_with_source.h"
#include "net/proxy_resolution/proxy_resolution_request.h"
#include "net/proxy_resolution/proxy_resolution_service.h"
+#include "net/quic/quic_session_key.h"
#include "net/spdy/spdy_session.h"
#include "url/gurl.h"
#include "url/scheme_host_port.h"
@@ -1296,8 +1297,10 @@
// Check whether there is an existing QUIC session to use for this origin.
GURL mapped_origin = original_url;
RewriteUrlWithHostMappingRules(mapped_origin);
+ CHECK(proxy_info_.proxy_chain().is_direct());
QuicSessionKey session_key(
HostPortPair::FromURL(mapped_origin), request_info.privacy_mode,
+ proxy_info_.proxy_chain(), QuicSessionKey::IsProxySession::kFalse,
request_info.socket_tag, request_info.network_anonymization_key,
request_info.secure_dns_policy, /*require_dns_https_alpn=*/false);
diff --git a/net/http/http_stream_factory_job_controller_unittest.cc b/net/http/http_stream_factory_job_controller_unittest.cc
index 0eb1af0..6afe581 100644
--- a/net/http/http_stream_factory_job_controller_unittest.cc
+++ b/net/http/http_stream_factory_job_controller_unittest.cc
@@ -26,6 +26,7 @@
#include "net/base/completion_once_callback.h"
#include "net/base/features.h"
#include "net/base/host_port_pair.h"
+#include "net/base/proxy_chain.h"
#include "net/base/proxy_server.h"
#include "net/base/proxy_string_util.h"
#include "net/base/schemeful_site.h"
@@ -190,6 +191,11 @@
return job_controller->main_job_is_resumed_;
}
+ static void InitializeProxyInfo(
+ HttpStreamFactory::JobController* job_controller) {
+ job_controller->proxy_info_.UseDirect();
+ }
+
static AlternativeServiceInfo GetAlternativeServiceInfoFor(
HttpStreamFactory::JobController* job_controller,
const HttpRequestInfo& request_info,
@@ -4631,6 +4637,10 @@
server, NetworkAnonymizationKey(), alternative_service, expiration,
quic::ParsedQuicVersionVector());
+ // Simulate proxy resolution succeeding, after which
+ // GetAlternativeServiceInfoFor can be called.
+ JobControllerPeer::InitializeProxyInfo(job_controller_);
+
AlternativeServiceInfo alt_svc_info =
JobControllerPeer::GetAlternativeServiceInfoFor(
job_controller_, request_info, &request_delegate_,
@@ -4732,6 +4742,9 @@
headers->AddHeader("alt-svc", alt_svc_header);
session_->http_stream_factory()->ProcessAlternativeServices(
session_.get(), network_anonymization_key, headers.get(), origin);
+ // Simulate proxy resolution succeeding, after which
+ // GetAlternativeServiceInfoFor can be called.
+ JobControllerPeer::InitializeProxyInfo(job_controller_);
AlternativeServiceInfo alt_svc_info =
JobControllerPeer::GetAlternativeServiceInfoFor(
job_controller_, request_info, &request_delegate_,
@@ -4801,6 +4814,10 @@
AlternativeService(kProtoQUIC, "www.example.com", 443), expiration,
supported_versions);
+ // Simulate proxy resolution succeeding, after which
+ // GetAlternativeServiceInfoFor can be called.
+ JobControllerPeer::InitializeProxyInfo(job_controller_);
+
AlternativeServiceInfo alt_svc_info =
JobControllerPeer::GetAlternativeServiceInfoFor(
job_controller_, request_info, &request_delegate_,
@@ -4971,9 +4988,10 @@
scheme_host_port,
require_dns_https_alpn ? quic::ParsedQuicVersion::Unsupported()
: version_,
+ ProxyChain::Direct(), QuicSessionKey::IsProxySession::kFalse,
PRIVACY_MODE_DISABLED, DEFAULT_PRIORITY, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, require_dns_https_alpn,
+ require_dns_https_alpn,
/*cert_verify_flags=*/0, GURL("https://www.example.org/"),
net_log_with_source_, &net_error_details,
base::BindLambdaForTesting([&](int result) {}),
diff --git a/net/quic/bidirectional_stream_quic_impl_unittest.cc b/net/quic/bidirectional_stream_quic_impl_unittest.cc
index e6bfdc3..77b2126 100644
--- a/net/quic/bidirectional_stream_quic_impl_unittest.cc
+++ b/net/quic/bidirectional_stream_quic_impl_unittest.cc
@@ -21,6 +21,9 @@
#include "net/base/load_timing_info.h"
#include "net/base/load_timing_info_test_util.h"
#include "net/base/net_errors.h"
+#include "net/base/network_anonymization_key.h"
+#include "net/base/privacy_mode.h"
+#include "net/base/proxy_chain.h"
#include "net/dns/public/host_resolver_results.h"
#include "net/dns/public/secure_dns_policy.h"
#include "net/http/bidirectional_stream_request_info.h"
@@ -39,6 +42,7 @@
#include "net/quic/quic_crypto_client_config_handle.h"
#include "net/quic/quic_http_utils.h"
#include "net/quic/quic_server_info.h"
+#include "net/quic/quic_session_key.h"
#include "net/quic/quic_session_pool.h"
#include "net/quic/quic_test_packet_maker.h"
#include "net/quic/quic_test_packet_printer.h"
@@ -527,7 +531,8 @@
&transport_security_state_, &ssl_config_service_,
base::WrapUnique(static_cast<QuicServerInfo*>(nullptr)),
QuicSessionKey(kDefaultServerHostName, kDefaultServerPort,
- PRIVACY_MODE_DISABLED, SocketTag(),
+ PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false),
/*require_confirmation=*/false,
diff --git a/net/quic/quic_chromium_client_session_peer.cc b/net/quic/quic_chromium_client_session_peer.cc
index 9c99743b..68d8be9 100644
--- a/net/quic/quic_chromium_client_session_peer.cc
+++ b/net/quic/quic_chromium_client_session_peer.cc
@@ -4,9 +4,16 @@
#include "net/quic/quic_chromium_client_session_peer.h"
-#include "net/dns/public/secure_dns_policy.h"
-#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
+#include <string>
+#include "net/base/network_anonymization_key.h"
+#include "net/base/privacy_mode.h"
+#include "net/base/proxy_chain.h"
+#include "net/dns/public/secure_dns_policy.h"
+#include "net/quic/quic_session_key.h"
+#include "net/socket/socket_tag.h"
+#include "net/third_party/quiche/src/quiche/quic/core/quic_server_id.h"
+#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
namespace net::test {
// static
void QuicChromiumClientSessionPeer::SetHostname(
@@ -16,8 +23,12 @@
session->session_key_.server_id().port(),
session->session_key_.privacy_mode());
session->session_key_ =
- QuicSessionKey(server_id, SocketTag(), NetworkAnonymizationKey(),
- SecureDnsPolicy::kAllow, /*require_dns_https_alpn=*/false);
+ QuicSessionKey(server_id, session->session_key_.proxy_chain(),
+ session->session_key_.is_proxy_session(),
+ session->session_key_.socket_tag(),
+ session->session_key_.network_anonymization_key(),
+ session->session_key_.secure_dns_policy(),
+ session->session_key_.require_dns_https_alpn());
}
// static
diff --git a/net/quic/quic_chromium_client_session_test.cc b/net/quic/quic_chromium_client_session_test.cc
index 097818f..dd8d81a 100644
--- a/net/quic/quic_chromium_client_session_test.cc
+++ b/net/quic/quic_chromium_client_session_test.cc
@@ -17,6 +17,9 @@
#include "build/build_config.h"
#include "net/base/features.h"
#include "net/base/network_anonymization_key.h"
+#include "net/base/privacy_mode.h"
+#include "net/base/proxy_chain.h"
+#include "net/base/proxy_server.h"
#include "net/base/schemeful_site.h"
#include "net/base/test_completion_callback.h"
#include "net/cert/cert_verify_result.h"
@@ -120,6 +123,8 @@
session_key_(kServerHostname,
kServerPort,
PRIVACY_MODE_DISABLED,
+ ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse,
SocketTag(),
NetworkAnonymizationKey(),
SecureDnsPolicy::kAllow,
@@ -1210,17 +1215,20 @@
EXPECT_TRUE(session_->CanPool(
"www.example.org",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
EXPECT_FALSE(session_->CanPool(
"www.example.org",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_ENABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_ENABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
EXPECT_FALSE(session_->CanPool(
"www.example.org",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kDisable,
/*require_dns_https_alpn=*/false)));
#if BUILDFLAG(IS_ANDROID)
@@ -1228,28 +1236,48 @@
SocketTag tag2(getuid(), 0x87654321);
EXPECT_FALSE(session_->CanPool(
"www.example.org",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, tag1,
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, tag1,
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
EXPECT_FALSE(session_->CanPool(
"www.example.org",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, tag2,
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, tag2,
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
#endif
+ EXPECT_FALSE(session_->CanPool(
+ "www.example.org",
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED,
+ ProxyChain::FromSchemeHostAndPort(ProxyServer::SCHEME_QUIC,
+ "bar", 443),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false)));
+ EXPECT_FALSE(session_->CanPool(
+ "www.example.org",
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kTrue, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false)));
+
EXPECT_TRUE(session_->CanPool(
"mail.example.org",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
EXPECT_TRUE(session_->CanPool(
"mail.example.com",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
EXPECT_FALSE(session_->CanPool(
"mail.google.com",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
@@ -1262,7 +1290,8 @@
features::kPartitionConnectionsByNetworkIsolationKey);
EXPECT_TRUE(session_->CanPool(
"mail.example.com",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
NetworkAnonymizationKey::CreateSameSite(kSiteFoo),
SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
@@ -1273,7 +1302,8 @@
features::kPartitionConnectionsByNetworkIsolationKey);
EXPECT_FALSE(session_->CanPool(
"mail.example.com",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
NetworkAnonymizationKey::CreateSameSite(kSiteFoo),
SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
@@ -1293,10 +1323,11 @@
const auto kNetworkAnonymizationKey2 =
NetworkAnonymizationKey::CreateSameSite(kSiteBar);
- session_key_ =
- QuicSessionKey(kServerHostname, kServerPort, PRIVACY_MODE_DISABLED,
- SocketTag(), kNetworkAnonymizationKey1,
- SecureDnsPolicy::kAllow, /*require_dns_https_alpn=*/false);
+ session_key_ = QuicSessionKey(
+ kServerHostname, kServerPort, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ kNetworkAnonymizationKey1, SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false);
MockQuicData quic_data(version_);
quic_data.AddWrite(SYNCHRONOUS, client_maker_.MakeInitialSettingsPacket(1));
@@ -1319,12 +1350,14 @@
EXPECT_TRUE(session_->CanPool(
"www.example.org",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
kNetworkAnonymizationKey1, SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
EXPECT_FALSE(session_->CanPool(
"www.example.org",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_ENABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_ENABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
kNetworkAnonymizationKey1, SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
#if BUILDFLAG(IS_ANDROID)
@@ -1332,39 +1365,46 @@
SocketTag tag2(getuid(), 0x87654321);
EXPECT_FALSE(session_->CanPool(
"www.example.org",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, tag1,
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, tag1,
kNetworkAnonymizationKey1, SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
EXPECT_FALSE(session_->CanPool(
"www.example.org",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, tag2,
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, tag2,
kNetworkAnonymizationKey1, SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
#endif
EXPECT_TRUE(session_->CanPool(
"mail.example.org",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
kNetworkAnonymizationKey1, SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
EXPECT_TRUE(session_->CanPool(
"mail.example.com",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
kNetworkAnonymizationKey1, SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
EXPECT_FALSE(session_->CanPool(
"mail.google.com",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
kNetworkAnonymizationKey1, SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
EXPECT_FALSE(session_->CanPool(
"mail.example.com",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
kNetworkAnonymizationKey2, SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
EXPECT_FALSE(session_->CanPool(
"mail.example.com",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
}
@@ -1411,7 +1451,8 @@
EXPECT_FALSE(session_->CanPool(
kPreloadedPKPHost,
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
}
@@ -1445,7 +1486,8 @@
EXPECT_TRUE(session_->CanPool(
"mail.example.org",
- QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, SocketTag(),
+ QuicSessionKey("foo", 1234, PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false)));
}
diff --git a/net/quic/quic_http_stream_test.cc b/net/quic/quic_http_stream_test.cc
index 381801f..fabf379 100644
--- a/net/quic/quic_http_stream_test.cc
+++ b/net/quic/quic_http_stream_test.cc
@@ -27,6 +27,9 @@
#include "net/base/load_timing_info.h"
#include "net/base/load_timing_info_test_util.h"
#include "net/base/net_errors.h"
+#include "net/base/network_anonymization_key.h"
+#include "net/base/privacy_mode.h"
+#include "net/base/proxy_chain.h"
#include "net/base/test_completion_callback.h"
#include "net/base/upload_bytes_element_reader.h"
#include "net/dns/public/host_resolver_results.h"
@@ -48,12 +51,14 @@
#include "net/quic/quic_crypto_client_config_handle.h"
#include "net/quic/quic_http_utils.h"
#include "net/quic/quic_server_info.h"
+#include "net/quic/quic_session_key.h"
#include "net/quic/quic_session_pool.h"
#include "net/quic/quic_test_packet_maker.h"
#include "net/quic/quic_test_packet_printer.h"
#include "net/quic/test_quic_crypto_client_config_handle.h"
#include "net/quic/test_task_runner.h"
#include "net/socket/socket_performance_watcher.h"
+#include "net/socket/socket_tag.h"
#include "net/socket/socket_test_util.h"
#include "net/spdy/spdy_http_utils.h"
#include "net/ssl/ssl_config_service_defaults.h"
@@ -403,7 +408,8 @@
&transport_security_state_, &ssl_config_service_,
base::WrapUnique(static_cast<QuicServerInfo*>(nullptr)),
QuicSessionKey(kDefaultServerHostName, kDefaultServerPort,
- PRIVACY_MODE_DISABLED, SocketTag(),
+ PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false),
/*require_confirmation=*/false,
diff --git a/net/quic/quic_network_transaction_unittest.cc b/net/quic/quic_network_transaction_unittest.cc
index 0837972..cbd586531 100644
--- a/net/quic/quic_network_transaction_unittest.cc
+++ b/net/quic/quic_network_transaction_unittest.cc
@@ -29,6 +29,7 @@
#include "net/base/proxy_string_util.h"
#include "net/base/schemeful_site.h"
#include "net/base/test_completion_callback.h"
+#include "net/base/test_proxy_delegate.h"
#include "net/cert/mock_cert_verifier.h"
#include "net/dns/mock_host_resolver.h"
#include "net/http/http_auth_handler_factory.h"
@@ -65,6 +66,7 @@
#include "net/socket/next_proto.h"
#include "net/socket/socket_performance_watcher.h"
#include "net/socket/socket_performance_watcher_factory.h"
+#include "net/socket/socket_tag.h"
#include "net/socket/socket_test_util.h"
#include "net/spdy/spdy_test_util_common.h"
#include "net/ssl/ssl_config_service_defaults.h"
@@ -567,6 +569,7 @@
session_context_.transport_security_state = &transport_security_state_;
session_context_.socket_performance_watcher_factory =
&test_socket_performance_watcher_factory_;
+ session_context_.proxy_delegate = proxy_delegate_.get();
session_context_.proxy_resolution_service = proxy_resolution_service_.get();
session_context_.ssl_config_service = ssl_config_service_.get();
session_context_.http_auth_handler_factory = auth_handler_factory_.get();
@@ -963,6 +966,9 @@
TransportSecurityState transport_security_state_;
TestSocketPerformanceWatcherFactory test_socket_performance_watcher_factory_;
std::unique_ptr<SSLConfigServiceDefaults> ssl_config_service_;
+ // `proxy_resolution_service_` may store a pointer to `proxy_delegate_`, so
+ // ensure that the latter outlives the former.
+ std::unique_ptr<TestProxyDelegate> proxy_delegate_;
std::unique_ptr<ProxyResolutionService> proxy_resolution_service_;
std::unique_ptr<HttpAuthHandlerFactory> auth_handler_factory_;
std::unique_ptr<HttpServerProperties> http_server_properties_;
@@ -6708,6 +6714,177 @@
EXPECT_TRUE(mock_quic_data.AllWriteDataConsumed());
}
+// Make two HTTP/1.1 requests, one to a host through a QUIC proxy and another
+// directly to the proxy. The proxy socket should not be reused for the second
+// request.
+TEST_P(QuicNetworkTransactionTest, QuicProxyConnectNoReuseDifferentChains) {
+ DisablePriorityHeader();
+ session_params_.enable_quic = true;
+ session_params_.enable_quic_proxies_for_https_urls = true;
+
+ const ProxyServer kQuicProxyServer{ProxyServer::SCHEME_QUIC,
+ HostPortPair("proxy.example.org", 443)};
+ const ProxyChain kQuicProxyChain{kQuicProxyServer};
+
+ proxy_delegate_ = std::make_unique<TestProxyDelegate>();
+ proxy_delegate_->set_proxy_chain(kQuicProxyChain);
+
+ proxy_resolution_service_ =
+ ConfiguredProxyResolutionService::CreateFixedForTest(
+ "https://not-used:70", TRAFFIC_ANNOTATION_FOR_TESTS);
+ proxy_resolution_service_->SetProxyDelegate(proxy_delegate_.get());
+
+ MockQuicData mock_quic_data_1(version_);
+ size_t write_packet_index = 1;
+
+ mock_quic_data_1.AddWrite(
+ SYNCHRONOUS, ConstructInitialSettingsPacket(write_packet_index++));
+
+ mock_quic_data_1.AddWrite(
+ SYNCHRONOUS,
+ ConstructClientPriorityPacket(
+ write_packet_index++, GetNthClientInitiatedBidirectionalStreamId(0),
+ DEFAULT_PRIORITY));
+ mock_quic_data_1.AddWrite(
+ SYNCHRONOUS,
+ ConstructClientRequestHeadersPacket(
+ write_packet_index++, GetNthClientInitiatedBidirectionalStreamId(0),
+ false, DEFAULT_PRIORITY,
+ ConnectRequestHeaders("mail.example.org:443"), false));
+ mock_quic_data_1.AddRead(
+ ASYNC, ConstructServerResponseHeadersPacket(
+ 1, GetNthClientInitiatedBidirectionalStreamId(0), false,
+ GetResponseHeaders("200")));
+
+ const char get_request_1[] =
+ "GET / HTTP/1.1\r\n"
+ "Host: mail.example.org\r\n"
+ "Connection: keep-alive\r\n\r\n";
+ mock_quic_data_1.AddWrite(
+ SYNCHRONOUS,
+ ConstructClientAckAndDataPacket(
+ write_packet_index++, GetNthClientInitiatedBidirectionalStreamId(0),
+ 1, 1, false, ConstructDataFrame(get_request_1)));
+
+ const char get_response_1[] =
+ "HTTP/1.1 200 OK\r\n"
+ "Content-Length: 10\r\n\r\n";
+ mock_quic_data_1.AddRead(
+ ASYNC, ConstructServerDataPacket(
+ 2, GetNthClientInitiatedBidirectionalStreamId(0), false,
+ ConstructDataFrame(get_response_1)));
+
+ const char kTrans1RespData[] = "0123456789";
+ mock_quic_data_1.AddRead(
+ SYNCHRONOUS, ConstructServerDataPacket(
+ 3, GetNthClientInitiatedBidirectionalStreamId(0), false,
+ ConstructDataFrame(kTrans1RespData)));
+
+ mock_quic_data_1.AddWrite(
+ SYNCHRONOUS, ConstructClientAckPacket(write_packet_index++, 3, 2));
+ mock_quic_data_1.AddRead(SYNCHRONOUS,
+ ERR_IO_PENDING); // No more data to read
+
+ mock_quic_data_1.AddWrite(
+ SYNCHRONOUS, ConstructClientDataPacket(
+ write_packet_index++, GetQpackDecoderStreamId(), false,
+ StreamCancellationQpackDecoderInstruction(0)));
+
+ mock_quic_data_1.AddWrite(
+ SYNCHRONOUS,
+ ConstructClientRstPacket(write_packet_index++,
+ GetNthClientInitiatedBidirectionalStreamId(0),
+ quic::QUIC_STREAM_CANCELLED));
+
+ mock_quic_data_1.AddSocketDataToFactory(&socket_factory_);
+
+ socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
+
+ CreateSession();
+
+ request_.url = GURL("https://mail.example.org/");
+ HttpNetworkTransaction trans_1(DEFAULT_PRIORITY, session_.get());
+ RunTransaction(&trans_1);
+ CheckWasHttpResponse(&trans_1);
+ CheckResponsePort(&trans_1, kQuicProxyServer.GetPort());
+ CheckResponseData(&trans_1, kTrans1RespData);
+ CheckUsedQuicProxyServer(&trans_1);
+
+ proxy_delegate_->set_proxy_chain(ProxyChain::Direct());
+
+ context_.params()->origins_to_force_quic_on.insert(
+ kQuicProxyServer.host_port_pair());
+
+ QuicTestPacketMaker client_maker2(
+ version_,
+ quic::QuicUtils::CreateRandomConnectionId(context_.random_generator()),
+ context_.clock(), kQuicProxyServer.GetHost(),
+ quic::Perspective::IS_CLIENT,
+ /*client_priority_uses_incremental=*/true,
+ /*use_priority_header=*/GetParam().priority_header_enabled);
+
+ QuicTestPacketMaker server_maker2(
+ version_,
+ quic::QuicUtils::CreateRandomConnectionId(context_.random_generator()),
+ context_.clock(), kQuicProxyServer.GetHost(),
+ quic::Perspective::IS_SERVER,
+ /*client_priority_uses_incremental=*/false,
+ /*use_priority_header=*/false);
+
+ MockQuicData mock_quic_data_2(version_);
+ write_packet_index = 1;
+
+ mock_quic_data_2.AddWrite(
+ SYNCHRONOUS,
+ client_maker2.MakeInitialSettingsPacket(write_packet_index++));
+
+ mock_quic_data_2.AddWrite(
+ SYNCHRONOUS,
+ client_maker2.MakeRequestHeadersPacket(
+ write_packet_index++, GetNthClientInitiatedBidirectionalStreamId(0),
+ true, ConvertRequestPriorityToQuicPriority(DEFAULT_PRIORITY),
+ GetRequestHeaders("GET", "https", "/", &client_maker2), nullptr));
+ mock_quic_data_2.AddRead(
+ ASYNC, server_maker2.MakeResponseHeadersPacket(
+ 1, GetNthClientInitiatedBidirectionalStreamId(0), false,
+ GetResponseHeaders("200"), nullptr));
+ const char kTrans2RespData[] = "0123456";
+ mock_quic_data_2.AddRead(
+ ASYNC, server_maker2.MakeDataPacket(
+ 2, GetNthClientInitiatedBidirectionalStreamId(0), true,
+ ConstructDataFrame(kTrans2RespData)));
+ mock_quic_data_2.AddWrite(
+ SYNCHRONOUS, client_maker2.MakeAckPacket(write_packet_index++, 2, 1));
+ mock_quic_data_2.AddRead(SYNCHRONOUS,
+ ERR_IO_PENDING); // No more data to read
+
+ mock_quic_data_2.AddSocketDataToFactory(&socket_factory_);
+
+ SSLSocketDataProvider ssl_2(ASYNC, OK);
+ socket_factory_.AddSSLSocketDataProvider(&ssl_2);
+
+ request_.url =
+ GURL(base::StrCat({"https://", kQuicProxyServer.GetHost(), "/"}));
+ HttpNetworkTransaction trans_2(DEFAULT_PRIORITY, session_.get());
+ RunTransaction(&trans_2);
+ CheckWasQuicResponse(&trans_2);
+ CheckResponsePort(&trans_2, 443);
+ CheckResponseData(&trans_2, kTrans2RespData);
+ const ProxyChain& proxy_chain = trans_2.GetResponseInfo()->proxy_chain;
+ EXPECT_TRUE(proxy_chain.IsValid());
+ ASSERT_TRUE(proxy_chain.is_direct());
+
+ // Causes MockSSLClientSocket to disconnect, which causes the underlying QUIC
+ // proxy socket to disconnect.
+ NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests();
+
+ base::RunLoop().RunUntilIdle();
+ EXPECT_TRUE(mock_quic_data_1.AllReadDataConsumed());
+ EXPECT_TRUE(mock_quic_data_1.AllWriteDataConsumed());
+ EXPECT_TRUE(mock_quic_data_2.AllReadDataConsumed());
+ EXPECT_TRUE(mock_quic_data_2.AllWriteDataConsumed());
+}
+
// Sends a CONNECT request to a QUIC proxy and receive a 500 response.
TEST_P(QuicNetworkTransactionTest, QuicProxyConnectFailure) {
DisablePriorityHeader();
diff --git a/net/quic/quic_proxy_client_socket_unittest.cc b/net/quic/quic_proxy_client_socket_unittest.cc
index d2add8b..e4988b5 100644
--- a/net/quic/quic_proxy_client_socket_unittest.cc
+++ b/net/quic/quic_proxy_client_socket_unittest.cc
@@ -17,6 +17,8 @@
#include "base/strings/utf_string_conversions.h"
#include "base/task/single_thread_task_runner.h"
#include "base/time/default_tick_clock.h"
+#include "net/base/network_anonymization_key.h"
+#include "net/base/privacy_mode.h"
#include "net/base/proxy_chain.h"
#include "net/base/proxy_server.h"
#include "net/base/proxy_string_util.h"
@@ -43,10 +45,12 @@
#include "net/quic/quic_crypto_client_config_handle.h"
#include "net/quic/quic_http_utils.h"
#include "net/quic/quic_server_info.h"
+#include "net/quic/quic_session_key.h"
#include "net/quic/quic_session_pool.h"
#include "net/quic/quic_test_packet_maker.h"
#include "net/quic/test_quic_crypto_client_config_handle.h"
#include "net/quic/test_task_runner.h"
+#include "net/socket/socket_tag.h"
#include "net/socket/socket_test_util.h"
#include "net/ssl/ssl_config_service_defaults.h"
#include "net/test/cert_test_util.h"
@@ -242,8 +246,9 @@
&transport_security_state_, &ssl_config_service_,
base::WrapUnique(static_cast<QuicServerInfo*>(nullptr)),
QuicSessionKey("mail.example.org", 80, PRIVACY_MODE_DISABLED,
- SocketTag(), NetworkAnonymizationKey(),
- SecureDnsPolicy::kAllow,
+ ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false),
/*require_confirmation=*/false,
/*migrate_session_early_v2=*/false,
diff --git a/net/quic/quic_session_key.cc b/net/quic/quic_session_key.cc
index 6de1ad6..95aaa21 100644
--- a/net/quic/quic_session_key.cc
+++ b/net/quic/quic_session_key.cc
@@ -4,9 +4,15 @@
#include "net/quic/quic_session_key.h"
-#include "base/feature_list.h"
-#include "net/base/features.h"
+#include <tuple>
+
+#include "net/base/host_port_pair.h"
+#include "net/base/network_anonymization_key.h"
+#include "net/base/privacy_mode.h"
+#include "net/base/proxy_chain.h"
#include "net/dns/public/secure_dns_policy.h"
+#include "net/socket/socket_tag.h"
+#include "net/third_party/quiche/src/quiche/quic/core/quic_server_id.h"
namespace net {
@@ -15,6 +21,8 @@
QuicSessionKey::QuicSessionKey(
const HostPortPair& host_port_pair,
PrivacyMode privacy_mode,
+ const ProxyChain& proxy_chain,
+ IsProxySession is_proxy_session,
const SocketTag& socket_tag,
const NetworkAnonymizationKey& network_anonymization_key,
SecureDnsPolicy secure_dns_policy,
@@ -22,6 +30,8 @@
: QuicSessionKey(host_port_pair.host(),
host_port_pair.port(),
privacy_mode,
+ proxy_chain,
+ is_proxy_session,
socket_tag,
network_anonymization_key,
secure_dns_policy,
@@ -31,6 +41,8 @@
const std::string& host,
uint16_t port,
PrivacyMode privacy_mode,
+ const ProxyChain& proxy_chain,
+ IsProxySession is_proxy_session,
const SocketTag& socket_tag,
const NetworkAnonymizationKey& network_anonymization_key,
SecureDnsPolicy secure_dns_policy,
@@ -38,6 +50,8 @@
: QuicSessionKey(
// TODO(crbug.com/1103350): Handle non-boolean privacy modes.
quic::QuicServerId(host, port, privacy_mode != PRIVACY_MODE_DISABLED),
+ proxy_chain,
+ is_proxy_session,
socket_tag,
network_anonymization_key,
secure_dns_policy,
@@ -45,11 +59,15 @@
QuicSessionKey::QuicSessionKey(
const quic::QuicServerId& server_id,
+ const ProxyChain& proxy_chain,
+ IsProxySession is_proxy_session,
const SocketTag& socket_tag,
const NetworkAnonymizationKey& network_anonymization_key,
SecureDnsPolicy secure_dns_policy,
bool require_dns_https_alpn)
: server_id_(server_id),
+ proxy_chain_(proxy_chain),
+ is_proxy_session_(is_proxy_session),
socket_tag_(socket_tag),
network_anonymization_key_(
NetworkAnonymizationKey::IsPartitioningEnabled()
@@ -61,14 +79,17 @@
QuicSessionKey::QuicSessionKey(const QuicSessionKey& other) = default;
bool QuicSessionKey::operator<(const QuicSessionKey& other) const {
- return std::tie(server_id_, socket_tag_, network_anonymization_key_,
- secure_dns_policy_, require_dns_https_alpn_) <
- std::tie(other.server_id_, other.socket_tag_,
- other.network_anonymization_key_, other.secure_dns_policy_,
- other.require_dns_https_alpn_);
+ return std::tie(server_id_, proxy_chain_, is_proxy_session_, socket_tag_,
+ network_anonymization_key_, secure_dns_policy_,
+ require_dns_https_alpn_) <
+ std::tie(other.server_id_, other.proxy_chain_, other.is_proxy_session_,
+ other.socket_tag_, other.network_anonymization_key_,
+ other.secure_dns_policy_, other.require_dns_https_alpn_);
}
bool QuicSessionKey::operator==(const QuicSessionKey& other) const {
- return server_id_ == other.server_id_ && socket_tag_ == other.socket_tag_ &&
+ return server_id_ == other.server_id_ && proxy_chain_ == other.proxy_chain_ &&
+ is_proxy_session_ == other.is_proxy_session_ &&
+ socket_tag_ == other.socket_tag_ &&
network_anonymization_key_ == other.network_anonymization_key_ &&
secure_dns_policy_ == other.secure_dns_policy_ &&
require_dns_https_alpn_ == other.require_dns_https_alpn_;
@@ -78,6 +99,8 @@
return server_id_.privacy_mode_enabled() ==
other.server_id_.privacy_mode_enabled() &&
socket_tag_ == other.socket_tag_ &&
+ proxy_chain_ == other.proxy_chain_ &&
+ is_proxy_session_ == other.is_proxy_session_ &&
network_anonymization_key_ == other.network_anonymization_key_ &&
secure_dns_policy_ == other.secure_dns_policy_ &&
require_dns_https_alpn_ == other.require_dns_https_alpn_;
diff --git a/net/quic/quic_session_key.h b/net/quic/quic_session_key.h
index c8ce63b..cf5dcc8e 100644
--- a/net/quic/quic_session_key.h
+++ b/net/quic/quic_session_key.h
@@ -8,6 +8,7 @@
#include "net/base/host_port_pair.h"
#include "net/base/network_anonymization_key.h"
#include "net/base/privacy_mode.h"
+#include "net/base/proxy_chain.h"
#include "net/dns/public/secure_dns_policy.h"
#include "net/socket/socket_tag.h"
#include "net/third_party/quiche/src/quiche/quic/core/quic_server_id.h"
@@ -18,9 +19,23 @@
// tag.
class NET_EXPORT_PRIVATE QuicSessionKey {
public:
+ // TODO(djmitche): Replace this with a common enum shared with SpdySessionKey.
+ enum class IsProxySession {
+ kFalse,
+ kTrue,
+ };
QuicSessionKey();
+ // When `is_proxy_session` is IsProxySession::kTrue, `host_port_pair`
+ // corresponds to a proxy server and `proxy_chain` contains every
+ // proxy server that this connection is made through (or ProxyChain::Direct()
+ // for the connection to the first proxy server). If `is_proxy_session` is
+ // IsProxySession::kFalse, then `host_port_pair` corresponds to an endpoint
+ // and `proxy_chain` corresponds to the proxy chain, if any, that the request
+ // is proxied through.
QuicSessionKey(const HostPortPair& host_port_pair,
PrivacyMode privacy_mode,
+ const ProxyChain& proxy_chain,
+ IsProxySession is_proxy_session,
const SocketTag& socket_tag,
const NetworkAnonymizationKey& network_anonymization_key,
SecureDnsPolicy secure_dns_policy,
@@ -28,11 +43,15 @@
QuicSessionKey(const std::string& host,
uint16_t port,
PrivacyMode privacy_mode,
+ const ProxyChain& proxy_chain,
+ IsProxySession is_proxy_session,
const SocketTag& socket_tag,
const NetworkAnonymizationKey& network_anonymization_key,
SecureDnsPolicy secure_dns_policy,
bool require_dns_https_alpn);
QuicSessionKey(const quic::QuicServerId& server_id,
+ const ProxyChain& proxy_chain,
+ IsProxySession is_proxy_session,
const SocketTag& socket_tag,
const NetworkAnonymizationKey& network_anonymization_key,
SecureDnsPolicy secure_dns_policy,
@@ -63,6 +82,10 @@
const quic::QuicServerId& server_id() const { return server_id_; }
+ const ProxyChain& proxy_chain() const { return proxy_chain_; }
+
+ IsProxySession is_proxy_session() const { return is_proxy_session_; }
+
SocketTag socket_tag() const { return socket_tag_; }
const NetworkAnonymizationKey& network_anonymization_key() const {
@@ -75,6 +98,8 @@
private:
quic::QuicServerId server_id_;
+ ProxyChain proxy_chain_;
+ IsProxySession is_proxy_session_;
SocketTag socket_tag_;
// Used to separate requests made in different contexts.
NetworkAnonymizationKey network_anonymization_key_;
diff --git a/net/quic/quic_session_key_unittest.cc b/net/quic/quic_session_key_unittest.cc
new file mode 100644
index 0000000..32b29f8
--- /dev/null
+++ b/net/quic/quic_session_key_unittest.cc
@@ -0,0 +1,174 @@
+// Copyright 2024 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/quic/quic_session_key.h"
+
+#include "net/base/network_anonymization_key.h"
+#include "net/base/proxy_chain.h"
+#include "net/base/proxy_server.h"
+#include "net/base/schemeful_site.h"
+#include "net/dns/public/secure_dns_policy.h"
+#include "net/socket/socket_tag.h"
+#include "net/third_party/quiche/src/quiche/quic/core/quic_server_id.h"
+#include "url/gurl.h"
+
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace net {
+
+namespace {
+
+// Check for equality of session keys, and inequality when various pieces of the
+// key differ. The SocketTag is only used on Android, and the NAK is only used
+// when network partitioning is enabled.
+TEST(QuicSessionKeyTest, Equality) {
+ QuicSessionKey key(HostPortPair("www.example.org", 80), PRIVACY_MODE_DISABLED,
+ ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false);
+ EXPECT_EQ(key,
+ QuicSessionKey("www.example.org", 80, PRIVACY_MODE_DISABLED,
+ ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false));
+ EXPECT_EQ(
+ key, QuicSessionKey(
+ quic::QuicServerId("www.example.org", 80, PRIVACY_MODE_DISABLED),
+ ProxyChain::Direct(), QuicSessionKey::IsProxySession::kFalse,
+ SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false));
+ EXPECT_NE(
+ key, QuicSessionKey(HostPortPair("otherproxy", 80), PRIVACY_MODE_DISABLED,
+ ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false));
+ EXPECT_NE(key, QuicSessionKey(
+ HostPortPair("www.example.org", 80), PRIVACY_MODE_DISABLED,
+ ProxyChain::FromSchemeHostAndPort(
+ ProxyServer::Scheme::SCHEME_HTTPS, "otherproxy", 443),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false));
+ EXPECT_NE(key,
+ QuicSessionKey(HostPortPair("www.example.org", 80),
+ PRIVACY_MODE_ENABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false));
+ EXPECT_NE(key,
+ QuicSessionKey(HostPortPair("www.example.org", 80),
+ PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kTrue, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false));
+#if BUILDFLAG(IS_ANDROID)
+ EXPECT_NE(key, QuicSessionKey(HostPortPair("www.example.org", 80),
+ PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse,
+ SocketTag(999, 999), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false));
+#endif // BUILDFLAG(IS_ANDROID)
+ if (NetworkAnonymizationKey::IsPartitioningEnabled()) {
+ EXPECT_NE(
+ key, QuicSessionKey(HostPortPair("www.example.org", 80),
+ PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey::CreateSameSite(
+ SchemefulSite(GURL("http://a.test/"))),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false));
+ }
+ EXPECT_NE(key,
+ QuicSessionKey(HostPortPair("www.example.org", 80),
+ PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kDisable,
+ /*require_dns_https_alpn=*/false));
+ EXPECT_NE(key,
+ QuicSessionKey("www.example.org", 80, PRIVACY_MODE_DISABLED,
+ ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/true));
+}
+
+// The operator< implementation is suitable for storing distinct keys in a set.
+TEST(QuicSessionKeyTest, Set) {
+ std::vector<QuicSessionKey> session_keys = {
+ QuicSessionKey(HostPortPair("www.example.org", 80), PRIVACY_MODE_DISABLED,
+ ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false),
+ QuicSessionKey(HostPortPair("otherproxy", 80), PRIVACY_MODE_DISABLED,
+ ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false),
+ QuicSessionKey(HostPortPair("www.example.org", 80), PRIVACY_MODE_DISABLED,
+ ProxyChain::FromSchemeHostAndPort(
+ ProxyServer::Scheme::SCHEME_HTTPS, "otherproxy", 443),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false),
+ QuicSessionKey(HostPortPair("www.example.org", 80), PRIVACY_MODE_DISABLED,
+ ProxyChain({
+ ProxyServer::FromSchemeHostAndPort(
+ ProxyServer::Scheme::SCHEME_HTTPS, "proxy1", 443),
+ ProxyServer::FromSchemeHostAndPort(
+ ProxyServer::Scheme::SCHEME_HTTPS, "proxy2", 443),
+ }),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false),
+ QuicSessionKey(HostPortPair("www.example.org", 80), PRIVACY_MODE_ENABLED,
+ ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false),
+ QuicSessionKey(HostPortPair("www.example.org", 80), PRIVACY_MODE_DISABLED,
+ ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kTrue, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false),
+#if BUILDFLAG(IS_ANDROID)
+ QuicSessionKey(HostPortPair("www.example.org", 80), PRIVACY_MODE_DISABLED,
+ ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse,
+ SocketTag(999, 999), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false),
+#endif // BUILDFLAG(IS_ANDROID)
+ QuicSessionKey(HostPortPair("www.example.org", 80), PRIVACY_MODE_DISABLED,
+ ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kDisable,
+ /*require_dns_https_alpn=*/false),
+ QuicSessionKey(HostPortPair("www.example.org", 80), PRIVACY_MODE_DISABLED,
+ ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/true),
+ };
+ if (NetworkAnonymizationKey::IsPartitioningEnabled()) {
+ session_keys.emplace_back(HostPortPair("www.example.org", 80),
+ PRIVACY_MODE_DISABLED, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse,
+ SocketTag(),
+ NetworkAnonymizationKey::CreateSameSite(
+ SchemefulSite(GURL("http://a.test/"))),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false);
+ }
+ std::set<QuicSessionKey> key_set(session_keys.begin(), session_keys.end());
+ ASSERT_EQ(session_keys.size(), key_set.size());
+}
+
+} // namespace
+
+} // namespace net
diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc
index bf1b3c4..4ca3e50 100644
--- a/net/quic/quic_session_pool.cc
+++ b/net/quic/quic_session_pool.cc
@@ -55,6 +55,7 @@
#include "net/quic/quic_crypto_client_stream_factory.h"
#include "net/quic/quic_http_stream.h"
#include "net/quic/quic_server_info.h"
+#include "net/quic/quic_session_key.h"
#include "net/socket/client_socket_factory.h"
#include "net/socket/next_proto.h"
#include "net/socket/socket_performance_watcher.h"
@@ -942,12 +943,13 @@
int QuicSessionRequest::Request(
url::SchemeHostPort destination,
quic::ParsedQuicVersion quic_version,
+ const ProxyChain& proxy_chain,
+ QuicSessionKey::IsProxySession is_proxy_session,
PrivacyMode privacy_mode,
RequestPriority priority,
const SocketTag& socket_tag,
const NetworkAnonymizationKey& network_anonymization_key,
SecureDnsPolicy secure_dns_policy,
- bool use_dns_aliases,
bool require_dns_https_alpn,
int cert_verify_flags,
const GURL& url,
@@ -965,9 +967,12 @@
failed_on_default_network_callback_ =
std::move(failed_on_default_network_callback);
- session_key_ = QuicSessionKey(HostPortPair::FromURL(url), privacy_mode,
- socket_tag, network_anonymization_key,
- secure_dns_policy, require_dns_https_alpn);
+ session_key_ =
+ QuicSessionKey(HostPortPair::FromURL(url), privacy_mode, proxy_chain,
+ is_proxy_session, socket_tag, network_anonymization_key,
+ secure_dns_policy, require_dns_https_alpn);
+ bool use_dns_aliases =
+ is_proxy_session == QuicSessionKey::IsProxySession::kTrue ? false : true;
int rv = pool_->RequestSession(session_key_, std::move(destination),
quic_version, priority, use_dns_aliases,
@@ -1068,16 +1073,18 @@
bool QuicSessionRequest::CanUseExistingSession(
const GURL& url,
+ const ProxyChain& proxy_chain,
PrivacyMode privacy_mode,
+ QuicSessionKey::IsProxySession is_proxy_session,
const SocketTag& socket_tag,
const NetworkAnonymizationKey& network_anonymization_key,
SecureDnsPolicy secure_dns_policy,
bool require_dns_https_alpn,
const url::SchemeHostPort& destination) const {
return pool_->CanUseExistingSession(
- QuicSessionKey(HostPortPair::FromURL(url), privacy_mode, socket_tag,
- network_anonymization_key, secure_dns_policy,
- require_dns_https_alpn),
+ QuicSessionKey(HostPortPair::FromURL(url), privacy_mode, proxy_chain,
+ is_proxy_session, socket_tag, network_anonymization_key,
+ secure_dns_policy, require_dns_https_alpn),
destination);
}
diff --git a/net/quic/quic_session_pool.h b/net/quic/quic_session_pool.h
index 672c120..e29837e 100644
--- a/net/quic/quic_session_pool.h
+++ b/net/quic/quic_session_pool.h
@@ -134,22 +134,22 @@
~QuicSessionRequest();
- // |cert_verify_flags| is bitwise OR'd of CertVerifier::VerifyFlags and it is
+ // `cert_verify_flags` is bitwise OR'd of CertVerifier::VerifyFlags and it is
// passed to CertVerifier::Verify.
- // |destination| will be resolved and resulting IPEndPoint used to open a
+ // `destination` will be resolved and resulting IPEndPoint used to open a
// quic::QuicConnection. This can be different than
// HostPortPair::FromURL(url).
- // When |use_dns_aliases| is true, any DNS aliases found in host resolution
- // are stored in the |dns_aliases_by_session_key_| map. |use_dns_aliases|
- // should be false in the case of a proxy.
+ // When `is_proxy_session` is false, any DNS aliases found in host resolution
+ // are stored in the `dns_aliases_by_session_key_` map.
int Request(url::SchemeHostPort destination,
quic::ParsedQuicVersion quic_version,
+ const ProxyChain& proxy_chain,
+ QuicSessionKey::IsProxySession is_proxy_session,
PrivacyMode privacy_mode,
RequestPriority priority,
const SocketTag& socket_tag,
const NetworkAnonymizationKey& network_anonymization_key,
SecureDnsPolicy secure_dns_policy,
- bool use_dns_aliases,
bool require_dns_https_alpn,
int cert_verify_flags,
const GURL& url,
@@ -220,7 +220,9 @@
bool CanUseExistingSession(
const GURL& url,
+ const ProxyChain& proxy_chain,
PrivacyMode privacy_mode,
+ QuicSessionKey::IsProxySession is_proxy_session,
const SocketTag& socket_tag,
const NetworkAnonymizationKey& network_anonymization_key,
SecureDnsPolicy secure_dns_policy,
diff --git a/net/quic/quic_session_pool_fuzzer.cc b/net/quic/quic_session_pool_fuzzer.cc
index 16e9078..4461cb5 100644
--- a/net/quic/quic_session_pool_fuzzer.cc
+++ b/net/quic/quic_session_pool_fuzzer.cc
@@ -11,6 +11,8 @@
#include "base/no_destructor.h"
#include "base/task/sequenced_task_runner.h"
#include "net/base/network_anonymization_key.h"
+#include "net/base/privacy_mode.h"
+#include "net/base/proxy_chain.h"
#include "net/base/test_completion_callback.h"
#include "net/cert/do_nothing_ct_verifier.h"
#include "net/cert/mock_cert_verifier.h"
@@ -25,6 +27,7 @@
#include "net/quic/mock_quic_context.h"
#include "net/quic/quic_context.h"
#include "net/quic/quic_http_stream.h"
+#include "net/quic/quic_session_key.h"
#include "net/quic/test_task_runner.h"
#include "net/socket/fuzzed_datagram_client_socket.h"
#include "net/socket/fuzzed_socket_factory.h"
@@ -154,9 +157,10 @@
quic::QuicEnableVersion(version);
request.Request(
- env->scheme_host_port, version, PRIVACY_MODE_DISABLED, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- true /* use_dns_aliases */, false /* require_dns_https_alpn */,
+ env->scheme_host_port, version, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, PRIVACY_MODE_DISABLED,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow, /*require_dns_https_alpn=*/false,
kCertVerifyFlags, GURL(kUrl), env->net_log, &net_error_details,
/*failed_on_default_network_callback=*/CompletionOnceCallback(),
callback.callback());
diff --git a/net/quic/quic_session_pool_peer.cc b/net/quic/quic_session_pool_peer.cc
index 1701c60..b063b07 100644
--- a/net/quic/quic_session_pool_peer.cc
+++ b/net/quic/quic_session_pool_peer.cc
@@ -8,16 +8,22 @@
#include <vector>
#include "base/task/sequenced_task_runner.h"
+#include "net/base/network_anonymization_key.h"
+#include "net/base/privacy_mode.h"
+#include "net/base/proxy_chain.h"
#include "net/cert/x509_certificate.h"
#include "net/cert/x509_util.h"
#include "net/dns/public/secure_dns_policy.h"
#include "net/quic/platform/impl/quic_chromium_clock.h"
#include "net/quic/quic_chromium_client_session.h"
#include "net/quic/quic_http_stream.h"
+#include "net/quic/quic_session_key.h"
#include "net/quic/quic_session_pool.h"
+#include "net/socket/socket_tag.h"
#include "net/test/cert_test_util.h"
#include "net/test/test_data_directory.h"
#include "net/third_party/quiche/src/quiche/quic/core/crypto/quic_crypto_client_config.h"
+#include "net/third_party/quiche/src/quiche/quic/core/quic_server_id.h"
#include "url/scheme_host_port.h"
using std::string;
@@ -40,18 +46,21 @@
QuicSessionPool* factory,
const quic::QuicServerId& server_id,
const NetworkAnonymizationKey& network_anonymization_key,
- bool require_dns_https_alpn) {
+ const ProxyChain& proxy_chain,
+ QuicSessionKey::IsProxySession is_proxy_session) {
return factory->HasActiveSession(
- QuicSessionKey(server_id, SocketTag(), network_anonymization_key,
- SecureDnsPolicy::kAllow, require_dns_https_alpn));
+ QuicSessionKey(server_id, proxy_chain, is_proxy_session, SocketTag(),
+ network_anonymization_key, SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false));
}
bool QuicSessionPoolPeer::HasActiveJob(QuicSessionPool* factory,
const quic::QuicServerId& server_id,
bool require_dns_https_alpn) {
- return factory->HasActiveJob(
- QuicSessionKey(server_id, SocketTag(), NetworkAnonymizationKey(),
- SecureDnsPolicy::kAllow, require_dns_https_alpn));
+ return factory->HasActiveJob(QuicSessionKey(
+ server_id, ProxyChain::Direct(), QuicSessionKey::IsProxySession::kFalse,
+ SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ require_dns_https_alpn));
}
// static
@@ -59,9 +68,10 @@
QuicSessionPool* factory,
const quic::QuicServerId& server_id,
url::SchemeHostPort destination) {
- QuicSessionKey session_key(server_id, SocketTag(), NetworkAnonymizationKey(),
- SecureDnsPolicy::kAllow,
- /*require_dns_https_alpn=*/false);
+ QuicSessionKey session_key(
+ server_id, ProxyChain::Direct(), QuicSessionKey::IsProxySession::kFalse,
+ SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false);
QuicSessionPool::QuicSessionAliasKey key(std::move(destination), session_key);
DCHECK(factory->HasActiveJob(session_key));
DCHECK_EQ(factory->all_sessions_.size(), 1u);
@@ -74,29 +84,14 @@
const quic::QuicServerId& server_id,
const NetworkAnonymizationKey& network_anonymization_key,
bool require_dns_https_alpn) {
- QuicSessionKey session_key(server_id, SocketTag(), network_anonymization_key,
+ QuicSessionKey session_key(server_id, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse,
+ SocketTag(), network_anonymization_key,
SecureDnsPolicy::kAllow, require_dns_https_alpn);
DCHECK(factory->HasActiveSession(session_key));
return factory->active_sessions_[session_key];
}
-bool QuicSessionPoolPeer::HasLiveSession(QuicSessionPool* factory,
- url::SchemeHostPort destination,
- const quic::QuicServerId& server_id,
- bool require_dns_https_alpn) {
- QuicSessionKey session_key =
- QuicSessionKey(server_id, SocketTag(), NetworkAnonymizationKey(),
- SecureDnsPolicy::kAllow, require_dns_https_alpn);
- QuicSessionPool::QuicSessionAliasKey alias_key(std::move(destination),
- session_key);
- for (const auto& it : factory->all_sessions_) {
- if (it.second == alias_key) {
- return true;
- }
- }
- return false;
-}
-
bool QuicSessionPoolPeer::IsLiveSession(QuicSessionPool* factory,
QuicChromiumClientSession* session) {
for (const auto& it : factory->all_sessions_) {
diff --git a/net/quic/quic_session_pool_peer.h b/net/quic/quic_session_pool_peer.h
index 6788f58..13f1cf2 100644
--- a/net/quic/quic_session_pool_peer.h
+++ b/net/quic/quic_session_pool_peer.h
@@ -15,6 +15,7 @@
#include "net/base/host_port_pair.h"
#include "net/base/network_anonymization_key.h"
#include "net/base/privacy_mode.h"
+#include "net/quic/quic_session_key.h"
#include "net/third_party/quiche/src/quiche/quic/core/quic_packets.h"
#include "net/third_party/quiche/src/quiche/quic/core/quic_server_id.h"
#include "net/third_party/quiche/src/quiche/quic/core/quic_time.h"
@@ -48,9 +49,10 @@
static bool HasActiveSession(
QuicSessionPool* factory,
const quic::QuicServerId& server_id,
- const NetworkAnonymizationKey& network_anonymization_key =
- NetworkAnonymizationKey(),
- bool require_dns_https_alpn = false);
+ const NetworkAnonymizationKey& network_anonymization_key,
+ const ProxyChain& proxy_chain = ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession is_proxy_session =
+ QuicSessionKey::IsProxySession::kFalse);
static bool HasActiveJob(QuicSessionPool* factory,
const quic::QuicServerId& server_id,
@@ -68,11 +70,6 @@
NetworkAnonymizationKey(),
bool require_dns_https_alpn = false);
- static bool HasLiveSession(QuicSessionPool* factory,
- url::SchemeHostPort destination,
- const quic::QuicServerId& server_id,
- bool require_dns_https_alpn = false);
-
static bool IsLiveSession(QuicSessionPool* factory,
QuicChromiumClientSession* session);
@@ -101,6 +98,7 @@
// Creates a dummy QUIC server config and caches it. Caller must be holding
// onto a QuicCryptoClientConfigHandle for the corresponding
// |network_anonymization_key|.
+ // TODO(awillia): This is unused and can be removed.
static void CacheDummyServerConfig(
QuicSessionPool* factory,
const quic::QuicServerId& quic_server_id,
diff --git a/net/quic/quic_session_pool_test.cc b/net/quic/quic_session_pool_test.cc
index 591a57d..4f7d118 100644
--- a/net/quic/quic_session_pool_test.cc
+++ b/net/quic/quic_session_pool_test.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "net/quic/quic_session_pool.h"
+
#include <sys/types.h>
#include <memory>
@@ -27,11 +28,13 @@
#include "base/time/time.h"
#include "build/build_config.h"
#include "net/base/features.h"
+#include "net/base/host_port_pair.h"
#include "net/base/load_flags.h"
#include "net/base/mock_network_change_notifier.h"
#include "net/base/net_error_details.h"
#include "net/base/net_errors.h"
#include "net/base/network_anonymization_key.h"
+#include "net/base/proxy_chain.h"
#include "net/base/schemeful_site.h"
#include "net/cert/mock_cert_verifier.h"
#include "net/dns/mock_host_resolver.h"
@@ -57,6 +60,7 @@
#include "net/quic/quic_http_stream.h"
#include "net/quic/quic_http_utils.h"
#include "net/quic/quic_server_info.h"
+#include "net/quic/quic_session_key.h"
#include "net/quic/quic_session_pool_peer.h"
#include "net/quic/quic_test_packet_maker.h"
#include "net/quic/quic_test_packet_printer.h"
@@ -349,11 +353,15 @@
bool HasActiveSession(
const url::SchemeHostPort& scheme_host_port,
const NetworkAnonymizationKey& network_anonymization_key =
- NetworkAnonymizationKey()) {
+ NetworkAnonymizationKey(),
+ const ProxyChain& proxy_chain = ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession is_proxy_session =
+ QuicSessionKey::IsProxySession::kFalse) {
quic::QuicServerId server_id(scheme_host_port.host(),
scheme_host_port.port(), false);
return QuicSessionPoolPeer::HasActiveSession(factory_.get(), server_id,
- network_anonymization_key);
+ network_anonymization_key,
+ proxy_chain, is_proxy_session);
}
bool HasActiveJob(const url::SchemeHostPort& scheme_host_port,
@@ -405,14 +413,15 @@
QuicSessionRequest request(factory_.get());
GURL url("https://" + destination.host() + "/");
- EXPECT_EQ(
- ERR_IO_PENDING,
- request.Request(
- destination, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
- /*cert_verify_flags=*/0, url, net_log_, &net_error_details_,
- failed_on_default_network_callback_, callback_.callback()));
+ EXPECT_EQ(ERR_IO_PENDING,
+ request.Request(
+ destination, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
+ /*cert_verify_flags=*/0, url, net_log_, &net_error_details_,
+ failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
std::unique_ptr<HttpStream> stream = CreateStream(&request);
@@ -546,14 +555,15 @@
// Create request and QuicHttpStream.
QuicSessionRequest request(factory_.get());
- EXPECT_EQ(
- ERR_IO_PENDING,
- request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
- /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
- failed_on_default_network_callback_, callback_.callback()));
+ EXPECT_EQ(ERR_IO_PENDING,
+ request.Request(
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
+ /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
+ failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -767,9 +777,11 @@
request.Request(
url::SchemeHostPort(url::kHttpsScheme, quic_server_id1.host(),
quic_server_id1.port()),
- version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- network_anonymization_key1, SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), network_anonymization_key1,
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -811,9 +823,11 @@
request2.Request(
url::SchemeHostPort(url::kHttpsScheme, quic_server_id2.host(),
quic_server_id2.port()),
- version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- network_anonymization_key2, SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), network_anonymization_key2,
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0,
vary_network_anonymization_key ? url_
: GURL("https://mail.example.org/"),
@@ -1011,9 +1025,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -1026,9 +1042,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(OK,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
// Will reset stream 3.
@@ -1041,9 +1059,11 @@
QuicSessionRequest request3(factory_.get());
EXPECT_EQ(OK,
request3.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
stream = CreateStream(&request3); // Will reset stream 5.
@@ -1066,9 +1086,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -1081,9 +1103,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(OK,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
// Will reset stream 3.
@@ -1096,9 +1120,11 @@
QuicSessionRequest request3(factory_.get());
EXPECT_EQ(OK,
request3.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
stream = CreateStream(&request3); // Will reset stream 5.
@@ -1132,9 +1158,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(OK,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -1164,9 +1192,10 @@
QuicSessionRequest request(factory_.get());
int rv = request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_, DEFAULT_PRIORITY,
+ SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback());
EXPECT_EQ(ERR_IO_PENDING, rv);
@@ -1202,9 +1231,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_FALSE(HasActiveSession(scheme_host_port_));
@@ -1234,9 +1265,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -1263,9 +1296,11 @@
auto request = std::make_unique<QuicSessionRequest>(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request->Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
request.reset();
@@ -1297,9 +1332,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -1338,9 +1375,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -1383,9 +1422,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -1422,9 +1463,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -1489,14 +1532,15 @@
socket_data.AddSocketDataToFactory(socket_factory_.get());
QuicSessionRequest request(factory_.get());
- EXPECT_EQ(
- ERR_IO_PENDING,
- request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), network_anonymization_key, SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
- /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
- failed_on_default_network_callback_, callback_.callback()));
+ EXPECT_EQ(ERR_IO_PENDING,
+ request.Request(
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), network_anonymization_key,
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
+ /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
+ failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
std::unique_ptr<HttpStream> stream = CreateStream(&request);
@@ -1534,9 +1578,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -1568,9 +1614,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -1597,9 +1645,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -1667,14 +1717,15 @@
socket_data.AddSocketDataToFactory(socket_factory_.get());
QuicSessionRequest request(factory_.get());
- EXPECT_EQ(
- ERR_IO_PENDING,
- request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), kNetworkAnonymizationKeys[i], SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
- /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
- failed_on_default_network_callback_, callback_.callback()));
+ EXPECT_EQ(ERR_IO_PENDING,
+ request.Request(
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), kNetworkAnonymizationKeys[i],
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
+ /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
+ failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
std::unique_ptr<HttpStream> stream = CreateStream(&request);
@@ -1722,14 +1773,15 @@
socket_data.AddSocketDataToFactory(socket_factory_.get());
QuicSessionRequest request(factory_.get());
- EXPECT_EQ(
- ERR_IO_PENDING,
- request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), kNetworkAnonymizationKeys[i], SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
- /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
- failed_on_default_network_callback_, callback_.callback()));
+ EXPECT_EQ(ERR_IO_PENDING,
+ request.Request(
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), kNetworkAnonymizationKeys[i],
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
+ /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
+ failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_QUIC_HANDSHAKE_FAILED));
@@ -1818,9 +1870,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -1834,9 +1888,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(OK,
request2.Request(
- server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server2, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback.callback()));
std::unique_ptr<HttpStream> stream2 = CreateStream(&request2);
@@ -1848,9 +1904,11 @@
QuicSessionRequest request3(factory_.get());
EXPECT_EQ(OK,
request3.Request(
- server3, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server3, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url3_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback.callback()));
std::unique_ptr<HttpStream> stream3 = CreateStream(&request3);
@@ -1862,9 +1920,11 @@
QuicSessionRequest request4(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request4.Request(
- server4, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server4, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url4_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -1881,10 +1941,11 @@
QuicSessionRequest request5(factory_.get());
EXPECT_EQ(ERR_DNS_NO_MATCHING_SUPPORTED_ALPN,
request5.Request(
- server5, quic::ParsedQuicVersion::Unsupported(), privacy_mode_,
- DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
- SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/true,
+ server5, quic::ParsedQuicVersion::Unsupported(),
+ ProxyChain::Direct(), QuicSessionKey::IsProxySession::kFalse,
+ privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/true,
/*cert_verify_flags=*/0, url5_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -1936,9 +1997,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server2, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback.callback()));
EXPECT_EQ(OK, callback.WaitForResult());
@@ -1980,9 +2043,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -1993,9 +2058,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(OK,
request2.Request(
- server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server2, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback.callback()));
std::unique_ptr<HttpStream> stream2 = CreateStream(&request2);
@@ -2010,9 +2077,11 @@
QuicSessionRequest request3(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request3.Request(
- server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server2, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback3.callback()));
EXPECT_THAT(callback3.WaitForResult(), IsOk());
@@ -2048,9 +2117,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- server1, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server1, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -2060,9 +2131,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(OK,
request2.Request(
- server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server2, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
std::unique_ptr<HttpStream> stream2 = CreateStream(&request2);
@@ -2100,9 +2173,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- server1, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server1, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -2112,9 +2187,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(OK,
request2.Request(
- server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server2, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
std::unique_ptr<HttpStream> stream2 = CreateStream(&request2);
@@ -2168,9 +2245,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- server1, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server1, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -2181,9 +2260,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server2, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -2217,9 +2298,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -2239,9 +2322,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -2301,9 +2386,10 @@
for (size_t i = 0; i < quic::kDefaultMaxStreamsPerConnection / 2; i++) {
QuicSessionRequest request(factory_.get());
int rv = request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_, DEFAULT_PRIORITY,
SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback());
if (i == 0) {
@@ -2323,9 +2409,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(OK,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, CompletionOnceCallback()));
std::unique_ptr<HttpStream> stream = CreateStream(&request);
@@ -2364,9 +2452,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -2389,9 +2479,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -2411,9 +2503,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -2434,14 +2528,15 @@
socket_data.AddSocketDataToFactory(socket_factory_.get());
{
QuicSessionRequest request(factory_.get());
- EXPECT_EQ(
- ERR_IO_PENDING,
- request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
- /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
- failed_on_default_network_callback_, callback_.callback()));
+ EXPECT_EQ(ERR_IO_PENDING,
+ request.Request(
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
+ /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
+ failed_on_default_network_callback_, callback_.callback()));
}
base::RunLoop().RunUntilIdle();
@@ -2449,9 +2544,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(OK,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
std::unique_ptr<HttpStream> stream = CreateStream(&request2);
@@ -2471,14 +2568,15 @@
socket_data.AddSocketDataToFactory(socket_factory_.get());
{
QuicSessionRequest request(factory_.get());
- EXPECT_EQ(
- ERR_IO_PENDING,
- request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
- /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
- failed_on_default_network_callback_, callback_.callback()));
+ EXPECT_EQ(ERR_IO_PENDING,
+ request.Request(
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
+ /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
+ failed_on_default_network_callback_, callback_.callback()));
}
base::RunLoop().RunUntilIdle();
@@ -2486,9 +2584,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(OK,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
std::unique_ptr<HttpStream> stream = CreateStream(&request2);
@@ -2525,9 +2625,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -2552,9 +2654,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -2591,9 +2695,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED, callback_.WaitForResult());
@@ -2614,9 +2720,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_FALSE(HasActiveSession(scheme_host_port_));
@@ -2658,9 +2766,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED, callback_.WaitForResult());
@@ -2681,9 +2791,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_FALSE(HasActiveSession(scheme_host_port_));
@@ -2730,9 +2842,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
// Check no active session, or active jobs left for this server.
@@ -2753,9 +2867,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_FALSE(HasActiveSession(scheme_host_port_));
@@ -2799,9 +2915,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED, callback_.WaitForResult());
@@ -2823,9 +2941,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_FALSE(HasActiveSession(scheme_host_port_));
@@ -2882,9 +3002,11 @@
QuicSessionRequest request(&factory);
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -2941,9 +3063,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -2977,9 +3101,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -3037,9 +3163,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -3085,9 +3213,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -3132,9 +3262,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -3158,9 +3290,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(OK,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
stream = CreateStream(&request2);
@@ -3244,9 +3378,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -3402,9 +3538,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -3511,9 +3649,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -3639,9 +3779,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -3714,9 +3856,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -3833,9 +3977,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -3897,9 +4043,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -3994,9 +4142,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -4074,9 +4224,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -4147,9 +4299,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -4282,9 +4436,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -4467,9 +4623,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -4631,9 +4789,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -4772,9 +4932,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -4907,9 +5069,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -5050,9 +5214,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -5183,9 +5349,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_FALSE(HasActiveSession(scheme_host_port_));
@@ -5270,9 +5438,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_FALSE(HasActiveSession(scheme_host_port_));
@@ -5356,9 +5526,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -5473,9 +5645,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -5629,9 +5803,11 @@
QuicSessionRequest request1(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request1.Request(
- server1, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server1, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -5642,9 +5818,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server2, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -5741,9 +5919,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -5806,9 +5986,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -5876,9 +6058,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -5959,9 +6143,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -6039,9 +6225,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -6114,9 +6302,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -6225,9 +6415,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -6374,9 +6566,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -6511,9 +6705,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -6723,9 +6919,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -6877,9 +7075,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -7020,9 +7220,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -7165,9 +7367,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -7294,9 +7498,11 @@
QuicSessionRequest request1(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request1.Request(
- server1, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server1, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -7307,9 +7513,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server2, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -7427,9 +7635,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -7560,9 +7770,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -7637,9 +7849,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -7765,9 +7979,11 @@
QuicSessionRequest request1(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request1.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -7788,9 +8004,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(OK,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback2.callback()));
std::unique_ptr<HttpStream> stream2 = CreateStream(&request2);
@@ -7926,9 +8144,11 @@
QuicSessionRequest request1(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request1.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -8068,9 +8288,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -8134,9 +8356,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -8278,9 +8502,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -8390,9 +8616,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED, callback_.WaitForResult());
@@ -8413,9 +8641,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_FALSE(HasActiveSession(scheme_host_port_));
@@ -8493,9 +8723,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
// Ensure that the session is alive but not active.
@@ -8566,9 +8798,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -8682,9 +8916,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -8846,9 +9082,11 @@
QuicSessionRequest request1(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request1.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -8869,9 +9107,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(OK,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback2.callback()));
std::unique_ptr<HttpStream> stream2 = CreateStream(&request2);
@@ -8998,9 +9238,11 @@
QuicSessionRequest request1(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request1.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -9021,9 +9263,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(OK,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback2.callback()));
std::unique_ptr<HttpStream> stream2 = CreateStream(&request2);
@@ -9161,9 +9405,11 @@
QuicSessionRequest request1(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request1.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -9184,9 +9430,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(OK,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback2.callback()));
std::unique_ptr<HttpStream> stream2 = CreateStream(&request2);
@@ -9308,9 +9556,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -9398,9 +9648,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -9505,9 +9757,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -9601,9 +9855,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
// Deliver the network notification, which should cause the connection to be
@@ -9642,9 +9898,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -9798,9 +10056,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -9962,9 +10222,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -10117,9 +10379,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -10236,9 +10500,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -10367,9 +10633,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -10564,9 +10832,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -10728,9 +10998,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -10860,9 +11132,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -10987,9 +11261,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -11116,9 +11392,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -11245,9 +11523,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -11337,9 +11617,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -11490,9 +11772,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -11603,9 +11887,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(OK,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
std::unique_ptr<HttpStream> stream2 = CreateStream(&request2);
@@ -11780,9 +12066,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -11966,9 +12254,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -12050,9 +12340,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -12195,9 +12487,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -12344,9 +12638,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -12426,9 +12722,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -12486,9 +12784,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -12512,9 +12812,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -12556,9 +12858,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -12582,9 +12886,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -12711,9 +13017,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -12765,9 +13073,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -12804,9 +13114,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- server2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ server2, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback2.callback()));
EXPECT_THAT(callback2.WaitForResult(), IsOk());
@@ -13180,9 +13492,10 @@
int rv = request.Request(
url::SchemeHostPort(url::kHttpsScheme, kDefaultServerHostName,
kDefaultServerPort),
- version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
+ version_, ProxyChain::Direct(), QuicSessionKey::IsProxySession::kFalse,
+ privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
network_anonymization_keys[i], SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback());
EXPECT_THAT(callback_.GetResult(rv), IsOk());
@@ -13242,9 +13555,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -13292,9 +13607,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -13334,9 +13651,11 @@
QuicSessionRequest request1(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request1.Request(
- destination1, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ destination1, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -13349,9 +13668,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(OK,
request2.Request(
- destination2, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ destination2, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback2.callback()));
std::unique_ptr<HttpStream> stream2 = CreateStream(&request2);
@@ -13506,9 +13827,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- destination, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ destination, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -13547,9 +13870,11 @@
QuicSessionRequest request1(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request1.Request(
- destination, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ destination, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url1, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -13563,9 +13888,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(OK,
request2.Request(
- destination, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ destination, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url2, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback2.callback()));
std::unique_ptr<HttpStream> stream2 = CreateStream(&request2);
@@ -13625,9 +13952,11 @@
QuicSessionRequest request1(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request1.Request(
- destination, version_, PRIVACY_MODE_DISABLED, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ destination, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, PRIVACY_MODE_DISABLED,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url1, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -13639,9 +13968,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- destination, version_, PRIVACY_MODE_ENABLED, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ destination, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, PRIVACY_MODE_ENABLED,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url2, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback2.callback()));
EXPECT_EQ(OK, callback2.WaitForResult());
@@ -13708,9 +14039,11 @@
QuicSessionRequest request1(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request1.Request(
- destination, version_, PRIVACY_MODE_DISABLED, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ destination, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, PRIVACY_MODE_DISABLED,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url1, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -13720,14 +14053,15 @@
TestCompletionCallback callback2;
QuicSessionRequest request2(factory_.get());
- EXPECT_EQ(
- ERR_IO_PENDING,
- request2.Request(
- destination, version_, PRIVACY_MODE_DISABLED, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kDisable,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
- /*cert_verify_flags=*/0, url2, net_log_, &net_error_details_,
- failed_on_default_network_callback_, callback2.callback()));
+ EXPECT_EQ(ERR_IO_PENDING,
+ request2.Request(
+ destination, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, PRIVACY_MODE_DISABLED,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kDisable,
+ /*require_dns_https_alpn=*/false,
+ /*cert_verify_flags=*/0, url2, net_log_, &net_error_details_,
+ failed_on_default_network_callback_, callback2.callback()));
EXPECT_EQ(OK, callback2.WaitForResult());
std::unique_ptr<HttpStream> stream2 = CreateStream(&request2);
EXPECT_TRUE(stream2.get());
@@ -13739,7 +14073,171 @@
QuicChromiumClientSession::Handle* session2 =
QuicHttpStreamPeer::GetSessionHandle(stream2.get());
EXPECT_FALSE(session1->SharesSameSession(*session2));
+ EXPECT_TRUE(socket_data1.AllReadDataConsumed());
+ EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
+ EXPECT_TRUE(socket_data2.AllReadDataConsumed());
+ EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
+}
+// QuicSessionRequest is not pooled if the ProxyChain field differs.
+TEST_P(QuicSessionPoolWithDestinationTest, DifferentProxyChain) {
+ Initialize();
+
+ GURL url1("https://www.example.org/");
+ GURL url2("https://mail.example.org/");
+ origin1_ = url::SchemeHostPort(url1);
+ origin2_ = url::SchemeHostPort(url2);
+
+ url::SchemeHostPort destination = GetDestination();
+
+ scoped_refptr<X509Certificate> cert(
+ ImportCertFromFile(GetTestCertsDirectory(), "wildcard.pem"));
+ ASSERT_TRUE(cert->VerifyNameMatch(origin1_.host()));
+ ASSERT_TRUE(cert->VerifyNameMatch(origin2_.host()));
+ ASSERT_FALSE(cert->VerifyNameMatch(kDifferentHostname));
+
+ ProofVerifyDetailsChromium verify_details1;
+ verify_details1.cert_verify_result.verified_cert = cert;
+ verify_details1.cert_verify_result.is_issued_by_known_root = true;
+ crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details1);
+
+ ProofVerifyDetailsChromium verify_details2;
+ verify_details2.cert_verify_result.verified_cert = cert;
+ verify_details2.cert_verify_result.is_issued_by_known_root = true;
+ crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2);
+
+ MockQuicData socket_data1(version_);
+ socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
+ socket_data1.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket());
+ socket_data1.AddSocketDataToFactory(socket_factory_.get());
+ client_maker_.Reset();
+ MockQuicData socket_data2(version_);
+ socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
+ socket_data2.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket());
+ socket_data2.AddSocketDataToFactory(socket_factory_.get());
+
+ QuicSessionRequest request1(factory_.get());
+ auto proxy_chain1 = ProxyChain::FromSchemeHostAndPort(
+ ProxyServer::SCHEME_QUIC, "proxy1", 443);
+ EXPECT_EQ(ERR_IO_PENDING,
+ request1.Request(
+ destination, version_, proxy_chain1,
+ QuicSessionKey::IsProxySession::kFalse, PRIVACY_MODE_DISABLED,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
+ /*cert_verify_flags=*/0, url1, net_log_, &net_error_details_,
+ failed_on_default_network_callback_, callback_.callback()));
+ EXPECT_EQ(OK, callback_.WaitForResult());
+ std::unique_ptr<HttpStream> stream1 = CreateStream(&request1);
+ EXPECT_TRUE(stream1.get());
+ EXPECT_TRUE(
+ HasActiveSession(origin1_, NetworkAnonymizationKey(), proxy_chain1));
+
+ TestCompletionCallback callback2;
+ QuicSessionRequest request2(factory_.get());
+ auto proxy_chain2 = ProxyChain::FromSchemeHostAndPort(
+ ProxyServer::SCHEME_QUIC, "proxy2", 443);
+ EXPECT_EQ(ERR_IO_PENDING,
+ request2.Request(
+ destination, version_, proxy_chain2,
+ QuicSessionKey::IsProxySession::kFalse, PRIVACY_MODE_DISABLED,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kDisable,
+ /*require_dns_https_alpn=*/false,
+ /*cert_verify_flags=*/0, url2, net_log_, &net_error_details_,
+ failed_on_default_network_callback_, callback2.callback()));
+ EXPECT_EQ(OK, callback2.WaitForResult());
+ std::unique_ptr<HttpStream> stream2 = CreateStream(&request2);
+ EXPECT_TRUE(stream2.get());
+
+ // `request2` does not pool to the first session, because `proxy_chain` does
+ // not match.
+ QuicChromiumClientSession::Handle* session1 =
+ QuicHttpStreamPeer::GetSessionHandle(stream1.get());
+ QuicChromiumClientSession::Handle* session2 =
+ QuicHttpStreamPeer::GetSessionHandle(stream2.get());
+ EXPECT_FALSE(session1->SharesSameSession(*session2));
+ EXPECT_TRUE(socket_data1.AllReadDataConsumed());
+ EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
+ EXPECT_TRUE(socket_data2.AllReadDataConsumed());
+ EXPECT_TRUE(socket_data2.AllWriteDataConsumed());
+}
+
+// QuicSessionRequest is not pooled if the IsProxySession field differs.
+TEST_P(QuicSessionPoolWithDestinationTest, DifferentIsProxySession) {
+ Initialize();
+
+ GURL url1("https://www.example.org/");
+ GURL url2("https://mail.example.org/");
+ origin1_ = url::SchemeHostPort(url1);
+ origin2_ = url::SchemeHostPort(url2);
+
+ url::SchemeHostPort destination = GetDestination();
+
+ scoped_refptr<X509Certificate> cert(
+ ImportCertFromFile(GetTestCertsDirectory(), "wildcard.pem"));
+ ASSERT_TRUE(cert->VerifyNameMatch(origin1_.host()));
+ ASSERT_TRUE(cert->VerifyNameMatch(origin2_.host()));
+ ASSERT_FALSE(cert->VerifyNameMatch(kDifferentHostname));
+
+ ProofVerifyDetailsChromium verify_details1;
+ verify_details1.cert_verify_result.verified_cert = cert;
+ verify_details1.cert_verify_result.is_issued_by_known_root = true;
+ crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details1);
+
+ ProofVerifyDetailsChromium verify_details2;
+ verify_details2.cert_verify_result.verified_cert = cert;
+ verify_details2.cert_verify_result.is_issued_by_known_root = true;
+ crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2);
+
+ MockQuicData socket_data1(version_);
+ socket_data1.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
+ socket_data1.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket());
+ socket_data1.AddSocketDataToFactory(socket_factory_.get());
+ client_maker_.Reset();
+ MockQuicData socket_data2(version_);
+ socket_data2.AddRead(SYNCHRONOUS, ERR_IO_PENDING);
+ socket_data2.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket());
+ socket_data2.AddSocketDataToFactory(socket_factory_.get());
+
+ QuicSessionRequest request1(factory_.get());
+ EXPECT_EQ(ERR_IO_PENDING,
+ request1.Request(
+ destination, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, PRIVACY_MODE_DISABLED,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
+ /*cert_verify_flags=*/0, url1, net_log_, &net_error_details_,
+ failed_on_default_network_callback_, callback_.callback()));
+ EXPECT_EQ(OK, callback_.WaitForResult());
+ std::unique_ptr<HttpStream> stream1 = CreateStream(&request1);
+ EXPECT_TRUE(stream1.get());
+ EXPECT_TRUE(HasActiveSession(origin1_));
+
+ TestCompletionCallback callback2;
+ QuicSessionRequest request2(factory_.get());
+ EXPECT_EQ(ERR_IO_PENDING,
+ request2.Request(
+ destination, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kTrue, PRIVACY_MODE_DISABLED,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kDisable,
+ /*require_dns_https_alpn=*/false,
+ /*cert_verify_flags=*/0, url2, net_log_, &net_error_details_,
+ failed_on_default_network_callback_, callback2.callback()));
+ EXPECT_EQ(OK, callback2.WaitForResult());
+ std::unique_ptr<HttpStream> stream2 = CreateStream(&request2);
+ EXPECT_TRUE(stream2.get());
+
+ // `request2` does not pool to the first session, because `is_proxy_session`
+ // does not match.
+ QuicChromiumClientSession::Handle* session1 =
+ QuicHttpStreamPeer::GetSessionHandle(stream1.get());
+ QuicChromiumClientSession::Handle* session2 =
+ QuicHttpStreamPeer::GetSessionHandle(stream2.get());
+ EXPECT_FALSE(session1->SharesSameSession(*session2));
EXPECT_TRUE(socket_data1.AllReadDataConsumed());
EXPECT_TRUE(socket_data1.AllWriteDataConsumed());
EXPECT_TRUE(socket_data2.AllReadDataConsumed());
@@ -13791,9 +14289,11 @@
QuicSessionRequest request1(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request1.Request(
- destination, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ destination, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url1, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -13805,9 +14305,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- destination, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ destination, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url2, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback2.callback()));
EXPECT_THAT(callback2.WaitForResult(), IsOk());
@@ -13924,9 +14426,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, MAXIMUM_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ MAXIMUM_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -13953,9 +14457,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, MAXIMUM_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ MAXIMUM_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -13965,9 +14471,11 @@
QuicSessionRequest request2(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url2_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_EQ(DEFAULT_PRIORITY, host_resolver_->last_request_priority());
@@ -14003,14 +14511,15 @@
socket_data.AddSocketDataToFactory(socket_factory_.get());
QuicSessionRequest request(factory_.get());
- EXPECT_EQ(
- ERR_IO_PENDING,
- request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), kNetworkAnonymizationKey, SecureDnsPolicy::kDisable,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
- /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
- failed_on_default_network_callback_, callback_.callback()));
+ EXPECT_EQ(ERR_IO_PENDING,
+ request.Request(
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), kNetworkAnonymizationKey,
+ SecureDnsPolicy::kDisable,
+ /*require_dns_https_alpn=*/false,
+ /*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
+ failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
std::unique_ptr<HttpStream> stream = CreateStream(&request);
@@ -14055,9 +14564,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -14093,9 +14604,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -14133,9 +14646,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -14173,9 +14688,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -14228,9 +14745,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -14280,9 +14799,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -14320,9 +14841,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -14355,9 +14878,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_NAME_NOT_RESOLVED,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -14382,9 +14907,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -14435,9 +14962,10 @@
// Request a stream with |tag1|.
QuicSessionRequest request1(factory_.get());
int rv = request1.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY, tag1,
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_, DEFAULT_PRIORITY,
+ tag1, NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback());
EXPECT_THAT(callback_.GetResult(rv), IsOk());
@@ -14452,9 +14980,10 @@
// Request a stream with |tag1| and verify underlying session is reused.
QuicSessionRequest request2(factory_.get());
rv = request2.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY, tag1,
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_, DEFAULT_PRIORITY,
+ tag1, NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback());
EXPECT_THAT(callback_.GetResult(rv), IsOk());
@@ -14467,9 +14996,10 @@
// Request a stream with |tag2| and verify a new session is created.
QuicSessionRequest request3(factory_.get());
rv = request3.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY, tag2,
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_, DEFAULT_PRIORITY,
+ tag2, NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback());
EXPECT_THAT(callback_.GetResult(rv), IsOk());
@@ -14503,9 +15033,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -14538,9 +15070,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -14573,9 +15107,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
@@ -14611,9 +15147,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -14648,9 +15186,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -14681,12 +15221,16 @@
socket_data.AddWrite(SYNCHRONOUS, ConstructInitialSettingsPacket());
socket_data.AddSocketDataToFactory(socket_factory_.get());
+ // By indicating that this is a request to a proxy server, DNS aliasing will
+ // not be performed.
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/false, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kTrue, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -14718,9 +15262,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -14812,9 +15358,10 @@
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
scheme_host_port_, quic::ParsedQuicVersion::Unsupported(),
+ ProxyChain::Direct(), QuicSessionKey::IsProxySession::kFalse,
privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/true,
+ /*require_dns_https_alpn=*/true,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -14978,35 +15525,43 @@
socket_data.AddSocketDataToFactory(socket_factory_.get());
QuicSessionRequest request1(factory_.get());
- EXPECT_EQ(
- ERR_IO_PENDING,
- request1.Request(
- kOrigin1, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow, use_dns_aliases_,
- /*require_dns_https_alpn=*/false, /*cert_verify_flags=*/0, kUrl1,
- net_log_, &net_error_details_, failed_on_default_network_callback_,
- callback_.callback()));
+ QuicSessionKey::IsProxySession is_proxy_session;
+ if (use_dns_aliases_) {
+ is_proxy_session = QuicSessionKey::IsProxySession::kFalse;
+ } else {
+ is_proxy_session = QuicSessionKey::IsProxySession::kTrue;
+ }
+ EXPECT_EQ(ERR_IO_PENDING,
+ request1.Request(
+ kOrigin1, version_, ProxyChain::Direct(), is_proxy_session,
+ privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false, /*cert_verify_flags=*/0,
+ kUrl1, net_log_, &net_error_details_,
+ failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
std::unique_ptr<HttpStream> stream1 = CreateStream(&request1);
EXPECT_TRUE(stream1.get());
- EXPECT_TRUE(HasActiveSession(kOrigin1));
+ EXPECT_TRUE(HasActiveSession(kOrigin1, NetworkAnonymizationKey(),
+ ProxyChain::Direct(), is_proxy_session));
TestCompletionCallback callback2;
QuicSessionRequest request2(factory_.get());
- EXPECT_EQ(
- ERR_IO_PENDING,
- request2.Request(
- kOrigin2, version_, privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
- NetworkAnonymizationKey(), SecureDnsPolicy::kAllow, use_dns_aliases_,
- /*require_dns_https_alpn=*/false, /*cert_verify_flags=*/0, kUrl2,
- net_log_, &net_error_details_, failed_on_default_network_callback_,
- callback2.callback()));
+ EXPECT_EQ(ERR_IO_PENDING,
+ request2.Request(
+ kOrigin2, version_, ProxyChain::Direct(), is_proxy_session,
+ privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false, /*cert_verify_flags=*/0,
+ kUrl2, net_log_, &net_error_details_,
+ failed_on_default_network_callback_, callback2.callback()));
EXPECT_THAT(callback2.WaitForResult(), IsOk());
std::unique_ptr<HttpStream> stream2 = CreateStream(&request2);
EXPECT_TRUE(stream2.get());
- EXPECT_TRUE(HasActiveSession(kOrigin2));
+ EXPECT_TRUE(HasActiveSession(kOrigin2, NetworkAnonymizationKey(),
+ ProxyChain::Direct(), is_proxy_session));
QuicChromiumClientSession::Handle* session1 =
QuicHttpStreamPeer::GetSessionHandle(stream1.get());
@@ -15039,9 +15594,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
@@ -15079,9 +15636,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
ASSERT_THAT(callback_.WaitForResult(), IsOk());
@@ -15121,9 +15680,10 @@
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
scheme_host_port_, quic::ParsedQuicVersion::Unsupported(),
+ ProxyChain::Direct(), QuicSessionKey::IsProxySession::kFalse,
privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/true,
+ /*require_dns_https_alpn=*/true,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
ASSERT_THAT(callback_.WaitForResult(), IsOk());
@@ -15168,9 +15728,10 @@
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
scheme_host_port_, quic::ParsedQuicVersion::Unsupported(),
+ ProxyChain::Direct(), QuicSessionKey::IsProxySession::kFalse,
privacy_mode_, DEFAULT_PRIORITY, SocketTag(),
NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/true,
+ /*require_dns_https_alpn=*/true,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
ASSERT_THAT(callback_.WaitForResult(), IsOk());
@@ -15213,9 +15774,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(),
@@ -15255,9 +15818,11 @@
QuicSessionRequest request(factory_.get());
EXPECT_EQ(ERR_IO_PENDING,
request.Request(
- scheme_host_port_, version_, privacy_mode_, DEFAULT_PRIORITY,
- SocketTag(), NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
- /*use_dns_aliases=*/true, /*require_dns_https_alpn=*/false,
+ scheme_host_port_, version_, ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, privacy_mode_,
+ DEFAULT_PRIORITY, SocketTag(), NetworkAnonymizationKey(),
+ SecureDnsPolicy::kAllow,
+ /*require_dns_https_alpn=*/false,
/*cert_verify_flags=*/0, url_, net_log_, &net_error_details_,
failed_on_default_network_callback_, callback_.callback()));
EXPECT_THAT(callback_.WaitForResult(), IsOk());
diff --git a/net/websockets/websocket_basic_stream_adapters_test.cc b/net/websockets/websocket_basic_stream_adapters_test.cc
index b66e9e5d3..4a842467 100644
--- a/net/websockets/websocket_basic_stream_adapters_test.cc
+++ b/net/websockets/websocket_basic_stream_adapters_test.cc
@@ -1268,8 +1268,9 @@
&transport_security_state_, &ssl_config_service_,
/*server_info=*/nullptr,
QuicSessionKey("mail.example.org", 80, PRIVACY_MODE_DISABLED,
- SocketTag(), NetworkAnonymizationKey(),
- SecureDnsPolicy::kAllow,
+ ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false),
/*require_confirmation=*/false,
/*migrate_session_early_v2=*/false,
diff --git a/net/websockets/websocket_handshake_stream_create_helper_test.cc b/net/websockets/websocket_handshake_stream_create_helper_test.cc
index cc13895..7122480 100644
--- a/net/websockets/websocket_handshake_stream_create_helper_test.cc
+++ b/net/websockets/websocket_handshake_stream_create_helper_test.cc
@@ -26,6 +26,7 @@
#include "net/base/network_anonymization_key.h"
#include "net/base/network_handle.h"
#include "net/base/privacy_mode.h"
+#include "net/base/proxy_chain.h"
#include "net/base/proxy_server.h"
#include "net/base/request_priority.h"
#include "net/base/test_completion_callback.h"
@@ -481,8 +482,9 @@
&transport_security_state, &ssl_config_service,
/*server_info=*/nullptr,
QuicSessionKey("mail.example.org", 80, PRIVACY_MODE_DISABLED,
- SocketTag(), NetworkAnonymizationKey(),
- SecureDnsPolicy::kAllow,
+ ProxyChain::Direct(),
+ QuicSessionKey::IsProxySession::kFalse, SocketTag(),
+ NetworkAnonymizationKey(), SecureDnsPolicy::kAllow,
/*require_dns_https_alpn=*/false),
/*require_confirmation=*/false,
/*migrate_session_early_v2=*/false,