#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include "net/http/http_network_transaction.h"
#include <math.h>
#include <stdarg.h>
#include <stdint.h>
#include <algorithm>
#include <limits>
#include <memory>
#include <optional>
#include <set>
#include <string>
#include <string_view>
#include <utility>
#include <vector>
#include "base/compiler_specific.h"
#include "base/containers/span.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/functional/bind.h"
#include "base/json/json_writer.h"
#include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/run_loop.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/single_thread_task_runner.h"
#include "base/test/bind.h"
#include "base/test/scoped_feature_list.h"
#include "base/test/simple_test_clock.h"
#include "base/test/simple_test_tick_clock.h"
#include "base/test/task_environment.h"
#include "base/test/test_file_util.h"
#include "base/time/time.h"
#include "build/build_config.h"
#include "net/base/auth.h"
#include "net/base/chunked_upload_data_stream.h"
#include "net/base/completion_once_callback.h"
#include "net/base/elements_upload_data_stream.h"
#include "net/base/features.h"
#include "net/base/host_port_pair.h"
#include "net/base/ip_address.h"
#include "net/base/ip_endpoint.h"
#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/network_isolation_key.h"
#include "net/base/privacy_mode.h"
#include "net/base/proxy_chain.h"
#include "net/base/proxy_delegate.h"
#include "net/base/proxy_server.h"
#include "net/base/proxy_string_util.h"
#include "net/base/request_priority.h"
#include "net/base/schemeful_site.h"
#include "net/base/session_usage.h"
#include "net/base/test_completion_callback.h"
#include "net/base/test_proxy_delegate.h"
#include "net/base/upload_bytes_element_reader.h"
#include "net/base/upload_file_element_reader.h"
#include "net/cert/cert_status_flags.h"
#include "net/cert/mock_cert_verifier.h"
#include "net/dns/mock_host_resolver.h"
#include "net/dns/public/secure_dns_policy.h"
#include "net/http/http_auth_challenge_tokenizer.h"
#include "net/http/http_auth_handler_digest.h"
#include "net/http/http_auth_handler_mock.h"
#include "net/http/http_auth_handler_ntlm.h"
#include "net/http/http_auth_ntlm_mechanism.h"
#include "net/http/http_auth_scheme.h"
#include "net/http/http_basic_stream.h"
#include "net/http/http_network_session.h"
#include "net/http/http_network_session_peer.h"
#include "net/http/http_proxy_connect_job.h"
#include "net/http/http_request_headers.h"
#include "net/http/http_response_info.h"
#include "net/http/http_server_properties.h"
#include "net/http/http_stream.h"
#include "net/http/http_stream_factory.h"
#include "net/http/http_stream_pool.h"
#include "net/http/http_stream_pool_group.h"
#include "net/http/http_stream_pool_test_util.h"
#include "net/http/http_transaction_test_util.h"
#include "net/log/net_log.h"
#include "net/log/net_log_event_type.h"
#include "net/log/net_log_source.h"
#include "net/log/test_net_log.h"
#include "net/log/test_net_log_util.h"
#include "net/proxy_resolution/configured_proxy_resolution_service.h"
#include "net/proxy_resolution/mock_proxy_resolver.h"
#include "net/proxy_resolution/proxy_config_service_fixed.h"
#include "net/proxy_resolution/proxy_info.h"
#include "net/proxy_resolution/proxy_resolver.h"
#include "net/proxy_resolution/proxy_resolver_factory.h"
#include "net/reporting/reporting_target_type.h"
#include "net/socket/client_socket_factory.h"
#include "net/socket/client_socket_pool.h"
#include "net/socket/client_socket_pool_manager.h"
#include "net/socket/connect_job.h"
#include "net/socket/connection_attempts.h"
#include "net/socket/mock_client_socket_pool_manager.h"
#include "net/socket/next_proto.h"
#include "net/socket/socket_tag.h"
#include "net/socket/socket_test_util.h"
#include "net/socket/socks_connect_job.h"
#include "net/socket/ssl_client_socket.h"
#include "net/spdy/spdy_session.h"
#include "net/spdy/spdy_session_pool.h"
#include "net/spdy/spdy_test_util_common.h"
#include "net/ssl/client_cert_identity_test_util.h"
#include "net/ssl/ssl_cert_request_info.h"
#include "net/ssl/ssl_config.h"
#include "net/ssl/ssl_config_service.h"
#include "net/ssl/ssl_info.h"
#include "net/ssl/ssl_private_key.h"
#include "net/ssl/test_ssl_config_service.h"
#include "net/test/cert_test_util.h"
#include "net/test/gtest_util.h"
#include "net/test/test_data_directory.h"
#include "net/test/test_with_task_environment.h"
#include "net/third_party/quiche/src/quiche/common/http/http_header_block.h"
#include "net/third_party/quiche/src/quiche/spdy/core/spdy_framer.h"
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
#include "net/url_request/static_http_user_agent_settings.h"
#include "net/websockets/websocket_handshake_stream_base.h"
#include "net/websockets/websocket_test_util.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h"
#include "url/gurl.h"
#include "url/scheme_host_port.h"
#include "url/url_constants.h"
#if defined(NTLM_PORTABLE)
#include "base/base64.h"
#include "net/ntlm/ntlm_test_data.h"
#endif
#if BUILDFLAG(ENABLE_REPORTING)
#include "net/network_error_logging/network_error_logging_service.h"
#include "net/network_error_logging/network_error_logging_test_util.h"
#include "net/reporting/reporting_cache.h"
#include "net/reporting/reporting_endpoint.h"
#include "net/reporting/reporting_header_parser.h"
#include "net/reporting/reporting_service.h"
#include "net/reporting/reporting_test_util.h"
#endif
IsError;
IsOk;
ASCIIToUTF16;
AnyOf;
ElementsAre;
IsEmpty;
namespace net {
namespace {
const std::u16string kBar(u"bar");
const std::u16string kBar2(u"bar2");
const std::u16string kBar3(u"bar3");
const std::u16string kBaz(u"baz");
const std::u16string kFirst(u"first");
const std::u16string kFoo(u"foo");
const std::u16string kFoo2(u"foo2");
const std::u16string kFoo3(u"foo3");
const std::u16string kFou(u"fou");
const std::u16string kSecond(u"second");
const std::u16string kWrongPassword(u"wrongpassword");
const char kAlternativeServiceHttpHeader[] = …;
int GetIdleSocketCountInTransportSocketPool(HttpNetworkSession* session) { … }
bool IsTransportSocketPoolStalled(HttpNetworkSession* session) { … }
std::string GetHeaders(const base::Value::Dict& params) { … }
void TestLoadTimingReused(const LoadTimingInfo& load_timing_info) { … }
void TestLoadTimingNotReused(const LoadTimingInfo& load_timing_info,
int connect_timing_flags) { … }
void TestLoadTimingReusedWithPac(const LoadTimingInfo& load_timing_info) { … }
void TestLoadTimingNotReusedWithPac(const LoadTimingInfo& load_timing_info,
int connect_timing_flags) { … }
class CapturingProxyResolver : public ProxyResolver { … };
class CapturingProxyResolverFactory : public ProxyResolverFactory { … };
std::unique_ptr<HttpNetworkSession> CreateSession(
SpdySessionDependencies* session_deps) { … }
class FailingProxyResolverFactory : public ProxyResolverFactory { … };
HttpRequestInfo DefaultRequestInfo() { … }
TransportInfo EmbeddedHttpServerTransportInfo() { … }
}
class HttpNetworkTransactionTestBase : public PlatformTest,
public WithTaskEnvironment { … };
class HttpNetworkTransactionTest : public HttpNetworkTransactionTestBase,
public ::testing::WithParamInterface<bool> { … };
INSTANTIATE_TEST_SUITE_P(…);
namespace {
void FillLargeHeadersString(std::string* str, int size) { … }
#if defined(NTLM_PORTABLE)
uint64_t MockGetMSTime() { … }
void MockGenerateRandom(base::span<uint8_t> output) { … }
std::string MockGetHostName() { … }
#endif
class CaptureGroupIdTransportSocketPool : public TransportClientSocketPool { … };
class CaptureKeyHttpStreamPoolObserver : public HttpStreamPool::Observer { … };
bool CheckBasicServerAuth(
const std::optional<AuthChallengeInfo>& auth_challenge) { … }
bool CheckBasicSecureServerAuth(
const std::optional<AuthChallengeInfo>& auth_challenge) { … }
bool CheckBasicProxyAuth(
const std::optional<AuthChallengeInfo>& auth_challenge) { … }
bool CheckBasicSecureProxyAuth(
const std::optional<AuthChallengeInfo>& auth_challenge) { … }
bool CheckDigestServerAuth(
const std::optional<AuthChallengeInfo>& auth_challenge) { … }
#if defined(NTLM_PORTABLE)
bool CheckNTLMServerAuth(
const std::optional<AuthChallengeInfo>& auth_challenge) { … }
bool CheckNTLMProxyAuth(
const std::optional<AuthChallengeInfo>& auth_challenge) { … }
#endif
}
TEST_P(HttpNetworkTransactionTest, Basic) { … }
TEST_P(HttpNetworkTransactionTest, SimpleGET) { … }
TEST_P(HttpNetworkTransactionTest, SimpleGETNoHeaders) { … }
TEST_P(HttpNetworkTransactionTest, SimpleGETNoHeadersWeirdPort) { … }
TEST_P(HttpNetworkTransactionTest, SimpleGETNoReadDestroyRequestInfo) { … }
TEST_P(HttpNetworkTransactionTest, SimpleGETHostResolutionFailure) { … }
TEST_P(HttpNetworkTransactionTest, ConnectedCallbackNeverCalled) { … }
TEST_P(HttpNetworkTransactionTest, ConnectedCallbackFailure) { … }
TEST_P(HttpNetworkTransactionTest, ConnectedCallbackFailureAllowsSocketReuse) { … }
TEST_P(HttpNetworkTransactionTest, ConnectedCallbackCalledOnce) { … }
TEST_P(HttpNetworkTransactionTest, ConnectedCallbackCalledOnEachAuthChallenge) { … }
TEST_P(HttpNetworkTransactionTest, ConnectedCallbackCalledOnEachRetry) { … }
TEST_P(HttpNetworkTransactionTest, ConnectedCallbackCalledAsync) { … }
TEST_P(HttpNetworkTransactionTest, ConnectedCallbackCalledAsyncError) { … }
TEST_P(HttpNetworkTransactionTest, StatusLineJunk3Bytes) { … }
TEST_P(HttpNetworkTransactionTest, StatusLineJunk4Bytes) { … }
TEST_P(HttpNetworkTransactionTest, StatusLineJunk5Bytes) { … }
TEST_P(HttpNetworkTransactionTest, StatusLineJunk4Bytes_Slow) { … }
TEST_P(HttpNetworkTransactionTest, StatusLinePartial) { … }
TEST_P(HttpNetworkTransactionTest, StopsReading204) { … }
TEST_P(HttpNetworkTransactionTest, ChunkedEncoding) { … }
TEST_P(HttpNetworkTransactionTest,
MultipleContentLengthHeadersNoTransferEncoding) { … }
TEST_P(HttpNetworkTransactionTest,
DuplicateContentLengthHeadersNoTransferEncoding) { … }
TEST_P(HttpNetworkTransactionTest,
ComplexContentLengthHeadersNoTransferEncoding) { … }
TEST_P(HttpNetworkTransactionTest,
MultipleContentLengthHeadersTransferEncoding) { … }
TEST_P(HttpNetworkTransactionTest, SingleContentDispositionHeader) { … }
TEST_P(HttpNetworkTransactionTest, TwoIdenticalContentDispositionHeaders) { … }
TEST_P(HttpNetworkTransactionTest, TwoDistinctContentDispositionHeaders) { … }
TEST_P(HttpNetworkTransactionTest, TwoIdenticalLocationHeaders) { … }
TEST_P(HttpNetworkTransactionTest, TwoDistinctLocationHeaders) { … }
TEST_P(HttpNetworkTransactionTest, Head) { … }
TEST_P(HttpNetworkTransactionTest, ReuseConnection) { … }
TEST_P(HttpNetworkTransactionTest, Ignores100) { … }
TEST_P(HttpNetworkTransactionTest, Ignores1xx) { … }
TEST_P(HttpNetworkTransactionTest, GetReceivedBodyBytes) { … }
TEST_P(HttpNetworkTransactionTest, LoadTimingMeasuresTimeToFirstByteForHttp) { … }
void HttpNetworkTransactionTestBase::Check100ResponseTiming(bool use_spdy) { … }
TEST_P(HttpNetworkTransactionTest, MeasuresTimeToFirst100ResponseForHttp) { … }
TEST_P(HttpNetworkTransactionTest, MeasuresTimeToFirst100ResponseForSpdy) { … }
TEST_P(HttpNetworkTransactionTest, Incomplete100ThenEOF) { … }
TEST_P(HttpNetworkTransactionTest, EmptyResponse) { … }
void HttpNetworkTransactionTestBase::KeepAliveConnectionResendRequestTest(
const MockWrite* write_failure,
const MockRead* read_failure) { … }
void HttpNetworkTransactionTestBase::PreconnectErrorResendRequestTest(
const MockWrite* write_failure,
const MockRead* read_failure,
bool use_spdy,
bool chunked_upload) { … }
TEST_P(HttpNetworkTransactionTest, FiniteRetriesOnIOError) { … }
TEST_P(HttpNetworkTransactionTest, RetryTwiceOnIOError) { … }
TEST_P(HttpNetworkTransactionTest, KeepAliveConnectionNotConnectedOnWrite) { … }
TEST_P(HttpNetworkTransactionTest, KeepAliveConnectionReset) { … }
TEST_P(HttpNetworkTransactionTest, KeepAliveConnectionEOF) { … }
TEST_P(HttpNetworkTransactionTest, KeepAlive408) { … }
TEST_P(HttpNetworkTransactionTest, PreconnectErrorNotConnectedOnWrite) { … }
TEST_P(HttpNetworkTransactionTest, PreconnectErrorReset) { … }
TEST_P(HttpNetworkTransactionTest, PreconnectErrorEOF) { … }
TEST_P(HttpNetworkTransactionTest, PreconnectErrorAsyncEOF) { … }
TEST_P(HttpNetworkTransactionTest, RetryOnIdle408) { … }
TEST_P(HttpNetworkTransactionTest, SpdyPreconnectErrorNotConnectedOnWrite) { … }
TEST_P(HttpNetworkTransactionTest, SpdyPreconnectErrorReset) { … }
TEST_P(HttpNetworkTransactionTest, SpdyPreconnectErrorEOF) { … }
TEST_P(HttpNetworkTransactionTest, SpdyPreconnectErrorAsyncEOF) { … }
TEST_P(HttpNetworkTransactionTest, NonKeepAliveConnectionReset) { … }
TEST_P(HttpNetworkTransactionTest, NonKeepAliveConnectionEOF) { … }
TEST_P(HttpNetworkTransactionTest, KeepAliveEarlyClose) { … }
TEST_P(HttpNetworkTransactionTest, KeepAliveEarlyClose2) { … }
TEST_P(HttpNetworkTransactionTest, KeepAliveAfterUnreadBody) { … }
TEST_P(HttpNetworkTransactionTest, KeepAliveWithUnusedData1) { … }
TEST_P(HttpNetworkTransactionTest, KeepAliveWithUnusedData2) { … }
TEST_P(HttpNetworkTransactionTest, KeepAliveWithUnusedData3) { … }
TEST_P(HttpNetworkTransactionTest, KeepAliveWithUnusedData4) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuth) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthWithAddressChange) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthForever) { … }
TEST_P(HttpNetworkTransactionTest, DoNotSendAuth) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthKeepAlive) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthKeepAliveNoBody) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthKeepAliveLargeBody) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthKeepAliveImpatientServer) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthProxyNoKeepAliveHttp10) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthProxyNoKeepAliveHttp11) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthProxyKeepAliveHttp10) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthProxyKeepAliveHttp11) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthProxyKeepAliveExtraData) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthProxyKeepAliveHangupDuringBody) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthProxyCancelTunnel) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthProxyMatchesServerAuthNoTunnel) { … }
TEST_P(HttpNetworkTransactionTest,
BasicAuthProxyMatchesServerAuthWithNetworkAnonymizationKeyNoTunnel) { … }
TEST_P(HttpNetworkTransactionTest,
BasicAuthProxyMatchesServerAuthWithNetworkAnonymizationKeyWithTunnel) { … }
TEST_P(HttpNetworkTransactionTest, SanitizeProxyAuthHeaders) { … }
TEST_P(HttpNetworkTransactionTest, UnexpectedProxyAuth) { … }
TEST_P(HttpNetworkTransactionTest, HttpsServerRequestsProxyAuthThroughProxy) { … }
TEST_P(HttpNetworkTransactionTest,
AuthAllowsDefaultCredentialsTunnelConnectionClose) { … }
TEST_P(HttpNetworkTransactionTest,
AuthAllowsDefaultCredentialsTunnelServerClosesConnection) { … }
TEST_P(HttpNetworkTransactionTest,
AuthAllowsDefaultCredentialsTunnelServerClosesConnectionTwice) { … }
TEST_P(HttpNetworkTransactionTest,
AuthAllowsDefaultCredentialsTunnelConnectionClosesBeforeBody) { … }
TEST_P(HttpNetworkTransactionTest,
AuthAllowsDefaultCredentialsTunnelServerChallengesTwice) { … }
TEST_P(HttpNetworkTransactionTest, NonPermanentGenerateAuthTokenError) { … }
class SameProxyWithDifferentSchemesProxyResolver : public ProxyResolver { … };
class SameProxyWithDifferentSchemesProxyResolverFactory
: public ProxyResolverFactory { … };
TEST_P(HttpNetworkTransactionTest, SameDestinationForDifferentProxyTypes) { … }
TEST_P(HttpNetworkTransactionTest, HttpProxyLoadTimingNoPacTwoRequests) { … }
TEST_P(HttpNetworkTransactionTest, HttpProxyLoadTimingWithPacTwoRequests) { … }
TEST_P(HttpNetworkTransactionTest, ProxyResolvedWithNetworkAnonymizationKey) { … }
TEST_P(HttpNetworkTransactionTest, ProxyHostResolutionFailure) { … }
TEST_P(HttpNetworkTransactionTest, HttpsProxyGet) { … }
TEST_P(HttpNetworkTransactionTest, HttpsNestedProxyGet) { … }
TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGet) { … }
TEST_P(HttpNetworkTransactionTest, HttpsNestedProxySpdyGet) { … }
TEST_P(HttpNetworkTransactionTest, HttpsNestedProxySameProxyTwiceSpdyGet) { … }
TEST_P(HttpNetworkTransactionTest, NestedProxyHttpOverSpdyProtocolError) { … }
TEST_P(HttpNetworkTransactionTest, HttpsClientAuthCertNeededNoCrash) { … }
TEST_P(HttpNetworkTransactionTest,
HttpsNestedProxyClientAuthCertNeededFirstProxyNoCrash) { … }
TEST_P(HttpNetworkTransactionTest,
HttpsNestedProxyClientAuthCertNeededFirstProxyNoCrash2) { … }
TEST_P(HttpNetworkTransactionTest,
HttpsNestedProxyClientAuthCertNeededAfterFirstConnectNoCrash2) { … }
TEST_P(HttpNetworkTransactionTest,
HttpsNestedProxyClientAuthCertNeededSecondProxyNoCrash) { … }
TEST_P(HttpNetworkTransactionTest,
HttpsNestedProxyClientAuthCertNeededEndpointNoCrash) { … }
TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGetWithSessionRace) { … }
TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyGetWithProxyAuth) { … }
TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectHttps) { … }
TEST_P(HttpNetworkTransactionTest, HttpsNestedProxySpdyConnectHttps) { … }
TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectSpdy) { … }
TEST_P(HttpNetworkTransactionTest, HttpsNestedProxyMixedConnectSpdy) { … }
TEST_P(HttpNetworkTransactionTest, HttpsNestedProxyMixedConnectHttps) { … }
TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyConnectFailure) { … }
TEST_P(HttpNetworkTransactionTest,
HttpsNestedProxySpdyConnectFirstProxyFailure) { … }
TEST_P(HttpNetworkTransactionTest,
HttpsNestedProxySpdyConnectSecondProxyFailure) { … }
void HttpNetworkTransactionTestBase::HttpsNestedProxyNoSocketReuseHelper(
const ProxyChain& chain1,
const ProxyChain& chain2) { … }
TEST_P(HttpNetworkTransactionTest, HttpsNestedProxyNoSocketReuseFirstHop) { … }
TEST_P(HttpNetworkTransactionTest, HttpsNestedProxyNoSocketReuseSecondHop) { … }
TEST_P(HttpNetworkTransactionTest, HttpsNestedProxyNoSocketReuseReversedChain) { … }
TEST_P(HttpNetworkTransactionTest,
HttpsNestedProxySpdySocketReuseDifferentChains) { … }
TEST_P(HttpNetworkTransactionTest,
HttpsNestedProxySpdySocketReuseDifferentRequests) { … }
TEST_P(HttpNetworkTransactionTest, HttpsNestedProxySpdySocketReuseAfterError) { … }
TEST_P(HttpNetworkTransactionTest, ProxiedH2SessionAppearsDuringAuth) { … }
TEST_P(HttpNetworkTransactionTest,
HttpsProxySpdyConnectHttpsLoadTimingTwoRequestsTwoServers) { … }
TEST_P(HttpNetworkTransactionTest,
HttpsProxySpdyConnectHttpsLoadTimingTwoRequestsSameServer) { … }
TEST_P(HttpNetworkTransactionTest, HttpsProxySpdyLoadTimingTwoHttpRequests) { … }
TEST_P(HttpNetworkTransactionTest, SpdyProxyIsolation1) { … }
TEST_P(HttpNetworkTransactionTest, SpdyProxyIsolation2) { … }
TEST_P(HttpNetworkTransactionTest, HttpsProxyAuthRetry) { … }
TEST_P(HttpNetworkTransactionTest, HttpsProxyAuthRetryNoKeepAlive) { … }
TEST_P(HttpNetworkTransactionTest, HttpsProxyAuthRetryNoKeepAliveChangeProxy) { … }
TEST_P(HttpNetworkTransactionTest,
HttpsProxyAuthRetryNoKeepAliveChangeToDirect) { … }
void HttpNetworkTransactionTestBase::ConnectStatusHelperWithExpectedStatus(
const MockRead& status,
int expected_status) { … }
void HttpNetworkTransactionTestBase::ConnectStatusHelper(
const MockRead& status) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus100) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus101) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus201) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus202) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus203) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus204) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus205) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus206) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus300) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus301) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus302) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus303) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus304) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus305) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus306) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus307) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus308) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus400) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus401) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus402) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus403) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus404) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus405) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus406) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus407) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus408) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus409) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus410) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus411) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus412) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus413) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus414) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus415) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus416) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus417) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus500) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus501) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus502) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus503) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus504) { … }
TEST_P(HttpNetworkTransactionTest, ConnectStatus505) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthProxyThenServer) { … }
#if defined(NTLM_PORTABLE)
TEST_P(HttpNetworkTransactionTest, NTLMAuthV2) { … }
TEST_P(HttpNetworkTransactionTest, NTLMAuthV2WrongThenRightPassword) { … }
TEST_P(HttpNetworkTransactionTest, NTLMOverHttp2) { … }
TEST_P(HttpNetworkTransactionTest, NTLMOverHttp2WithHostMapping) { … }
#if BUILDFLAG(ENABLE_WEBSOCKETS)
TEST_P(HttpNetworkTransactionTest, NTLMOverHttp2WithWebsockets) { … }
#endif
TEST_P(HttpNetworkTransactionTest, NTLMProxyTLSHandshakeReset) { … }
#endif
TEST_P(HttpNetworkTransactionTest, LargeHeadersNoBody) { … }
TEST_P(HttpNetworkTransactionTest, DontRecycleTransportSocketForSSLTunnel) { … }
TEST_P(HttpNetworkTransactionTest, RecycleSocket) { … }
TEST_P(HttpNetworkTransactionTest, RecycleSSLSocket) { … }
TEST_P(HttpNetworkTransactionTest, RecycleDeadSSLSocket) { … }
TEST_P(HttpNetworkTransactionTest, CloseConnectionOnDestruction) { … }
TEST_P(HttpNetworkTransactionTest, FlushSocketPoolOnLowMemoryNotifications) { … }
TEST_P(HttpNetworkTransactionTest, NoFlushSocketPoolOnLowMemoryNotifications) { … }
TEST_P(HttpNetworkTransactionTest, FlushSSLSocketPoolOnLowMemoryNotifications) { … }
TEST_P(HttpNetworkTransactionTest, RecycleSocketAfterZeroContentLength) { … }
TEST_P(HttpNetworkTransactionTest, ResendRequestOnWriteBodyError) { … }
TEST_P(HttpNetworkTransactionTest, AuthIdentityInURL) { … }
TEST_P(HttpNetworkTransactionTest, WrongAuthIdentityInURL) { … }
TEST_P(HttpNetworkTransactionTest, AuthIdentityInURLSuppressed) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthCacheAndPreauth) { … }
TEST_P(HttpNetworkTransactionTest, DigestPreAuthNonceCount) { … }
TEST_P(HttpNetworkTransactionTest, ResetStateForRestart) { … }
TEST_P(HttpNetworkTransactionTest, HTTPSBadCertificate) { … }
TEST_P(HttpNetworkTransactionTest, HTTPSBadCertificateViaProxy) { … }
TEST_P(HttpNetworkTransactionTest, HTTPSViaHttpsProxy) { … }
TEST_P(HttpNetworkTransactionTest, RedirectOfHttpsConnectViaHttpsProxy) { … }
TEST_P(HttpNetworkTransactionTest,
RedirectOfHttpsConnectSubresourceViaHttpsProxy) { … }
TEST_P(HttpNetworkTransactionTest,
RedirectOfHttpsConnectViaAutoDetectedHttpsProxy) { … }
TEST_P(HttpNetworkTransactionTest, RedirectOfHttpsConnectViaSpdyProxy) { … }
TEST_P(HttpNetworkTransactionTest, ErrorResponseToHttpsConnectViaHttpsProxy) { … }
TEST_P(HttpNetworkTransactionTest, ErrorResponseToHttpsConnectViaSpdyProxy) { … }
TEST_P(HttpNetworkTransactionTest, BasicAuthSpdyProxy) { … }
TEST_P(HttpNetworkTransactionTest, HTTPSBadCertificateViaHttpsProxy) { … }
TEST_P(HttpNetworkTransactionTest, BuildRequest_UserAgent) { … }
TEST_P(HttpNetworkTransactionTest, BuildRequest_UserAgentOverTunnel) { … }
TEST_P(HttpNetworkTransactionTest, BuildRequest_Referer) { … }
TEST_P(HttpNetworkTransactionTest, BuildRequest_PostContentLengthZero) { … }
TEST_P(HttpNetworkTransactionTest, BuildRequest_PutContentLengthZero) { … }
TEST_P(HttpNetworkTransactionTest, BuildRequest_HeadContentLengthZero) { … }
TEST_P(HttpNetworkTransactionTest, BuildRequest_CacheControlNoCache) { … }
TEST_P(HttpNetworkTransactionTest, BuildRequest_CacheControlValidateCache) { … }
TEST_P(HttpNetworkTransactionTest, BuildRequest_ExtraHeaders) { … }
TEST_P(HttpNetworkTransactionTest, BuildRequest_ExtraHeadersStripped) { … }
TEST_P(HttpNetworkTransactionTest, SOCKS4_HTTP_GET) { … }
TEST_P(HttpNetworkTransactionTest, SOCKS4_SSL_GET) { … }
TEST_P(HttpNetworkTransactionTest, SOCKS4_HTTP_GET_no_PAC) { … }
TEST_P(HttpNetworkTransactionTest, SOCKS5_HTTP_GET) { … }
TEST_P(HttpNetworkTransactionTest, SOCKS5_SSL_GET) { … }
namespace {
struct GroupIdTest { … };
std::unique_ptr<HttpNetworkSession> SetupSessionForGroupIdTests(
SpdySessionDependencies* session_deps_) { … }
int GroupIdTransactionHelper(const std::string& url,
HttpNetworkSession* session) { … }
int HttpStreamKeyTransactionHelper(std::string_view url,
HttpNetworkSession* session) { … }
}
TEST_P(HttpNetworkTransactionTest, GroupIdOrHttpStreamKeyForDirectConnections) { … }
TEST_P(HttpNetworkTransactionTest, GroupIdForHTTPProxyConnections) { … }
TEST_P(HttpNetworkTransactionTest, GroupIdForSOCKSConnections) { … }
TEST_P(HttpNetworkTransactionTest, ReconsiderProxyAfterFailedConnection) { … }
TEST_P(HttpNetworkTransactionTest, RequestWriteError) { … }
TEST_P(HttpNetworkTransactionTest, ConnectionClosedAfterStartOfHeaders) { … }
TEST_P(HttpNetworkTransactionTest, DrainResetOK) { … }
TEST_P(HttpNetworkTransactionTest, HTTPSViaProxyWithExtraData) { … }
TEST_P(HttpNetworkTransactionTest, LargeContentLengthThenClose) { … }
TEST_P(HttpNetworkTransactionTest, UploadFileSmallerThanLength) { … }
TEST_P(HttpNetworkTransactionTest, UploadUnreadableFile) { … }
TEST_P(HttpNetworkTransactionTest, CancelDuringInitRequestBody) { … }
TEST_P(HttpNetworkTransactionTest, ChangeAuthRealms) { … }
TEST_P(HttpNetworkTransactionTest, IgnoreAltSvcWithInvalidCert) { … }
TEST_P(HttpNetworkTransactionTest, HonorAlternativeServiceHeader) { … }
TEST_P(HttpNetworkTransactionTest,
HonorAlternativeServiceHeaderWithNetworkAnonymizationKey) { … }
TEST_P(HttpNetworkTransactionTest,
DoNotParseAlternativeServiceHeaderOnInsecureRequest) { … }
TEST_P(HttpNetworkTransactionTest,
DisableHTTP2AlternativeServicesWithDifferentHost) { … }
TEST_P(HttpNetworkTransactionTest,
DisableAlternativeServicesForInsecureOrigin) { … }
TEST_P(HttpNetworkTransactionTest, ClearAlternativeServices) { … }
TEST_P(HttpNetworkTransactionTest, HonorMultipleAlternativeServiceHeaders) { … }
TEST_P(HttpNetworkTransactionTest, IdentifyQuicBroken) { … }
TEST_P(HttpNetworkTransactionTest, IdentifyQuicNotBroken) { … }
TEST_P(HttpNetworkTransactionTest, MarkBrokenAlternateProtocolAndFallback) { … }
TEST_P(HttpNetworkTransactionTest, AlternateProtocolPortRestrictedBlocked) { … }
TEST_P(HttpNetworkTransactionTest, AlternateProtocolPortRestrictedPermitted) { … }
TEST_P(HttpNetworkTransactionTest, AlternateProtocolPortRestrictedAllowed) { … }
TEST_P(HttpNetworkTransactionTest, AlternateProtocolPortUnrestrictedAllowed1) { … }
TEST_P(HttpNetworkTransactionTest, AlternateProtocolPortUnrestrictedAllowed2) { … }
TEST_P(HttpNetworkTransactionTest, AlternateProtocolUnsafeBlocked) { … }
TEST_P(HttpNetworkTransactionTest, UseAlternateProtocolForNpnSpdy) { … }
TEST_P(HttpNetworkTransactionTest, AlternateProtocolWithSpdyLateBinding) { … }
TEST_P(HttpNetworkTransactionTest, StallAlternativeServiceForNpnSpdy) { … }
TEST_P(HttpNetworkTransactionTest, UseOriginNotAlternativeForProxy) { … }
TEST_P(HttpNetworkTransactionTest, UseAlternativeServiceForTunneledNpnSpdy) { … }
TEST_P(HttpNetworkTransactionTest,
UseAlternativeServiceForNpnSpdyWithExistingSpdySession) { … }
TEST_P(HttpNetworkTransactionTest, GenerateAuthToken) { … }
TEST_P(HttpNetworkTransactionTest, MultiRoundAuth) { … }TEST_P(HttpNetworkTransactionTest, NpnWithHttpOverSSL) { … }TEST_P(HttpNetworkTransactionTest, SpdyPostALPNServerHangup) { … }class UrlRecordingHttpAuthHandlerMock : public HttpAuthHandlerMock { … }TEST_P(HttpNetworkTransactionTest, SimpleCancel) { … }TEST_P(HttpNetworkTransactionTest, CancelAfterHeaders) { … }TEST_P(HttpNetworkTransactionTest, ProxyGet) { … }TEST_P(HttpNetworkTransactionTest, ProxyTunnelGet) { … }TEST_P(HttpNetworkTransactionTest, ProxyTunnelGetIPv6) { … }TEST_P(HttpNetworkTransactionTest, ProxyTunnelGetHangup) { … }TEST_P(HttpNetworkTransactionTest, PreconnectWithExistingSpdySession) { … }void HttpNetworkTransactionTestBase::CheckErrorIsPassedBack(int error,
IoMode mode) { … }TEST_P(HttpNetworkTransactionTest, SSLWriteCertError) { … }TEST_P(HttpNetworkTransactionTest, ClientAuthCertCache_Direct_NoFalseStart) { … }TEST_P(HttpNetworkTransactionTest, ClientAuthCertCache_Direct_FalseStart) { … }TEST_P(HttpNetworkTransactionTest, ClientAuthCertCache_Proxy_Fail) { … }TEST_P(HttpNetworkTransactionTest, CertificateRequestInRenego) { … }TEST_P(HttpNetworkTransactionTest, UseIPConnectionPooling) { … }TEST_P(HttpNetworkTransactionTest, UseIPConnectionPoolingAfterResolution) { … }TEST_P(HttpNetworkTransactionTest, NoIPConnectionPoolingForProxyAndHostSpdy) { … }TEST_P(HttpNetworkTransactionTest, NoIPConnectionPoolingForProxyAndHostHttp) { … }TEST_P(HttpNetworkTransactionTest, NoIPConnectionPoolingForTwoProxiesSpdy) { … }TEST_P(HttpNetworkTransactionTest, NoIPConnectionPoolingForTwoProxiesHttp) { … }TEST_P(HttpNetworkTransactionTest, RetryWithoutConnectionPooling) { … }TEST_P(HttpNetworkTransactionTest, ReturnHTTP421OnRetry) { … }TEST_P(HttpNetworkTransactionTest,
Response421WithStreamingBodyWithNonNullSource) { … }TEST_P(HttpNetworkTransactionTest, Response421WithStreamingBodyWithNullSource) { … }TEST_P(HttpNetworkTransactionTest,
UseIPConnectionPoolingWithHostCacheExpiration) { … }TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionForHttp) { … }TEST_P(HttpNetworkTransactionTest, AlternativeServiceNotOnHttp11) { … }TEST_P(HttpNetworkTransactionTest, FailedAlternativeServiceIsNotUserVisible) { … }TEST_P(HttpNetworkTransactionTest, AlternativeServiceShouldNotPoolToHttp11) { … }TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionForHttpOverTunnel) { … }TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionIfCertDoesNotMatch) { … }TEST_P(HttpNetworkTransactionTest, ErrorSocketNotConnected) { … }TEST_P(HttpNetworkTransactionTest, CloseIdleSpdySessionToOpenNewOne) { … }TEST_P(HttpNetworkTransactionTest, HttpSyncConnectError) { … }TEST_P(HttpNetworkTransactionTest, HttpAsyncConnectError) { … }TEST_P(HttpNetworkTransactionTest, HttpSyncWriteError) { … }TEST_P(HttpNetworkTransactionTest, HttpAsyncWriteError) { … }TEST_P(HttpNetworkTransactionTest, HttpSyncReadError) { … }TEST_P(HttpNetworkTransactionTest, HttpAsyncReadError) { … }TEST_P(HttpNetworkTransactionTest, CloseSSLSocketOnIdleForHttpRequest) { … }TEST_P(HttpNetworkTransactionTest, CloseSSLSocketOnIdleForHttpRequest2) { … }TEST_P(HttpNetworkTransactionTest, PostReadsErrorResponseAfterReset) { … }TEST_P(HttpNetworkTransactionTest,
PostReadsErrorResponseAfterResetOnReusedSocket) { … }TEST_P(HttpNetworkTransactionTest,
PostReadsErrorResponseAfterResetPartialBodySent) { … }TEST_P(HttpNetworkTransactionTest, ChunkedPostReadsErrorResponseAfterReset) { … }TEST_P(HttpNetworkTransactionTest, PostReadsErrorResponseAfterResetAnd100) { … }TEST_P(HttpNetworkTransactionTest, PostIgnoresNonErrorResponseAfterReset) { … }TEST_P(HttpNetworkTransactionTest,
PostIgnoresNonErrorResponseAfterResetAnd100) { … }TEST_P(HttpNetworkTransactionTest, PostIgnoresHttp09ResponseAfterReset) { … }TEST_P(HttpNetworkTransactionTest, PostIgnoresPartial400HeadersAfterReset) { … }#if BUILDFLAG(ENABLE_WEBSOCKETS)void AddWebSocketHeaders(HttpRequestHeaders* headers) { … }TEST_P(HttpNetworkTransactionTest, CreateWebSocketHandshakeStream) { … }TEST_P(HttpNetworkTransactionTest, ProxyHeadersNotSentOverWssTunnel) { … }TEST_P(HttpNetworkTransactionTest, ProxyHeadersNotSentOverWsTunnel) { … }TEST_P(HttpNetworkTransactionTest, WebSocketNotSentOverQuicProxy) { … }#endif TEST_P(HttpNetworkTransactionTest, TotalNetworkBytesPost) { … }TEST_P(HttpNetworkTransactionTest, TotalNetworkBytesPost100Continue) { … }TEST_P(HttpNetworkTransactionTest, TotalNetworkBytesChunkedPost) { … }void CheckContentEncodingMatching(SpdySessionDependencies* session_deps,
const std::string& accept_encoding,
const std::string& content_encoding,
const std::string& location,
bool should_match) { … }TEST_P(HttpNetworkTransactionTest, MatchContentEncoding1) { … }TEST_P(HttpNetworkTransactionTest, MatchContentEncoding2) { … }TEST_P(HttpNetworkTransactionTest, MatchContentEncoding3) { … }TEST_P(HttpNetworkTransactionTest, MatchContentEncoding4) { … }TEST_P(HttpNetworkTransactionTest, ProxyResolutionFailsSync) { … }TEST_P(HttpNetworkTransactionTest, ProxyResolutionFailsAsync) { … }TEST_P(HttpNetworkTransactionTest, NoSupportedProxies) { … }#if BUILDFLAG(ENABLE_REPORTING)class HttpNetworkTransactionReportingTest
: public HttpNetworkTransactionTestBase,
public ::testing::WithParamInterface<bool> { … }TEST_P(HttpNetworkTransactionReportingTest,
DontProcessReportToHeaderNoService) { … }TEST_P(HttpNetworkTransactionReportingTest, DontProcessReportToHeaderHttp) { … }TEST_P(HttpNetworkTransactionReportingTest, ProcessReportToHeaderHttps) { … }TEST_P(HttpNetworkTransactionReportingTest,
DontProcessReportToHeaderInvalidHttps) { … }INSTANTIATE_TEST_SUITE_P(…)#endif #if BUILDFLAG(ENABLE_REPORTING)const char kUserAgent[] = …const char kReferrer[] = …class HttpNetworkTransactionNetworkErrorLoggingTest
: public HttpNetworkTransactionTest { … }INSTANTIATE_TEST_SUITE_P(…)TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
DontProcessNelHeaderNoService) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
DontProcessNelHeaderHttp) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
DontProcessNelHeaderProxy) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest, ProcessNelHeaderHttps) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
DontProcessNelHeaderInvalidHttps) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest, CreateReportSuccess) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
CreateReportDNSErrorAfterStartSync) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
CreateReportDNSErrorAfterStartAsync) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
CreateReportErrorAfterStart) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
CreateReportErrorAfterStartAsync) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
CreateReportReadBodyError) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
CreateReportReadBodyErrorAsync) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
CreateReportRestartWithAuth) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
CreateReportRestartWithAuthAsync) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
CreateReportRetryKeepAliveConnectionReset) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
CreateReportRetryKeepAlive408) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
CreateReportRetry421WithoutConnectionPooling) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
CreateReportCancelAfterStart) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
CreateReportCancelBeforeReadingBody) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest, DontCreateReportHttp) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
DontCreateReportHttpError) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest, DontCreateReportProxy) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest,
ReportContainsUploadDepth) { … }TEST_P(HttpNetworkTransactionNetworkErrorLoggingTest, ReportElapsedTime) { … }#endif TEST_P(HttpNetworkTransactionTest, AlwaysFailRequestToCache) { … }TEST_P(HttpNetworkTransactionTest, ZeroRTTDoesntConfirm) { … }TEST_P(HttpNetworkTransactionTest, ZeroRTTSyncConfirmSyncWrite) { … }TEST_P(HttpNetworkTransactionTest, ZeroRTTSyncConfirmAsyncWrite) { … }TEST_P(HttpNetworkTransactionTest, ZeroRTTAsyncConfirmSyncWrite) { … }TEST_P(HttpNetworkTransactionTest, ZeroRTTAsyncConfirmAsyncWrite) { … }TEST_P(HttpNetworkTransactionTest, ZeroRTTReject) { … }TEST_P(HttpNetworkTransactionTest, ZeroRTTConfirmErrorSync) { … }TEST_P(HttpNetworkTransactionTest, ZeroRTTConfirmErrorAsync) { … }TEST_P(HttpNetworkTransactionTest, AuthEverything) { … }TEST_P(HttpNetworkTransactionTest, AuthEverythingWithConnectClose) { … }TEST_P(HttpNetworkTransactionTest, ProxyHTTPAndServerTLSAuth) { … }TEST_P(HttpNetworkTransactionTest, ClientCertSocketReuse) { … }TEST_P(HttpNetworkTransactionTest, NetworkIsolation) { … }TEST_P(HttpNetworkTransactionTest, NetworkIsolationH2) { … }TEST_P(HttpNetworkTransactionTest, NetworkIsolationPreconnect) { … }TEST_P(HttpNetworkTransactionTest, NetworkIsolationSSL) { … }TEST_P(HttpNetworkTransactionTest, NetworkIsolationSSLProxy) { … }TEST_P(HttpNetworkTransactionTest, SSLConfigChanged) { … }TEST_P(HttpNetworkTransactionTest, SSLConfigChangedDuringTransaction) { … }TEST_P(HttpNetworkTransactionTest, SSLConfigChangedPendingConnect) { … }TEST_P(HttpNetworkTransactionTest, PostHandshakeClientCertWithSockets) { … }TEST_P(HttpNetworkTransactionTest, RequestWithDnsAliases) { … }TEST_P(HttpNetworkTransactionTest, RequestWithNoAdditionalDnsAliases) { … }TEST_P(HttpNetworkTransactionTest, SetProxyInfoInResponse_Direct) { … }TEST_P(HttpNetworkTransactionTest, SetProxyInfoInResponse_Proxied) { … }TEST_P(HttpNetworkTransactionTest, SetProxyInfoInResponse_Empty) { … }TEST_P(HttpNetworkTransactionTest, SetProxyInfoInResponse_IpProtectionProxied) { … }TEST_P(HttpNetworkTransactionTest, SetProxyInfoInResponse_IpProtectionDirect) { … }class IpProtectionProxyDelegate : public TestProxyDelegate { … }TEST_P(HttpNetworkTransactionTest,
HttpsNestedProxyIpProtectionRequestHeaderAddedWhenEnabled) { … }TEST_P(HttpNetworkTransactionTest,
HttpsNestedProxyIpProtectionRequestHeaderNotAddedForIpProtectionDirect) { … }TEST_P(HttpNetworkTransactionTest,
HttpsNestedProxyIpProtectionRequestHeaderNotAddedIfFeatureDisabled) { … }TEST_P(HttpNetworkTransactionTest,
HttpsNestedProxyIpProtectionRequestHeaderNotAddedAfterFallback) { … }class HttpNetworkTransactionPoolTest : public HttpNetworkTransactionTest { … }INSTANTIATE_TEST_SUITE_P(…)TEST_P(HttpNetworkTransactionPoolTest, SwitchToHttpStreamPool) { … }