#include "net/websockets/websocket_basic_stream_adapters.h"
#include <stdint.h>
#include <string>
#include <string_view>
#include <utility>
#include <vector>
#include "base/check.h"
#include "base/containers/span.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/scoped_refptr.h"
#include "base/memory/weak_ptr.h"
#include "base/run_loop.h"
#include "base/strings/strcat.h"
#include "base/task/single_thread_task_runner.h"
#include "base/time/default_tick_clock.h"
#include "base/time/time.h"
#include "net/base/host_port_pair.h"
#include "net/base/io_buffer.h"
#include "net/base/ip_address.h"
#include "net/base/ip_endpoint.h"
#include "net/base/net_errors.h"
#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/request_priority.h"
#include "net/base/session_usage.h"
#include "net/base/test_completion_callback.h"
#include "net/cert/cert_verify_result.h"
#include "net/dns/public/host_resolver_results.h"
#include "net/dns/public/secure_dns_policy.h"
#include "net/http/http_network_session.h"
#include "net/http/transport_security_state.h"
#include "net/log/net_log.h"
#include "net/log/net_log_with_source.h"
#include "net/quic/address_utils.h"
#include "net/quic/crypto/proof_verifier_chromium.h"
#include "net/quic/mock_crypto_client_stream_factory.h"
#include "net/quic/mock_quic_data.h"
#include "net/quic/quic_chromium_alarm_factory.h"
#include "net/quic/quic_chromium_client_session.h"
#include "net/quic/quic_chromium_client_session_peer.h"
#include "net/quic/quic_chromium_connection_helper.h"
#include "net/quic/quic_chromium_packet_reader.h"
#include "net/quic/quic_chromium_packet_writer.h"
#include "net/quic/quic_context.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_test_packet_maker.h"
#include "net/quic/test_quic_crypto_client_config_handle.h"
#include "net/quic/test_task_runner.h"
#include "net/socket/client_socket_handle.h"
#include "net/socket/client_socket_pool.h"
#include "net/socket/next_proto.h"
#include "net/socket/socket_tag.h"
#include "net/socket/socket_test_util.h"
#include "net/socket/stream_socket.h"
#include "net/spdy/spdy_session_key.h"
#include "net/spdy/spdy_test_util_common.h"
#include "net/ssl/ssl_config.h"
#include "net/ssl/ssl_config_service_defaults.h"
#include "net/ssl/ssl_info.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/common/platform/api/quiche_flags.h"
#include "net/third_party/quiche/src/quiche/common/quiche_buffer_allocator.h"
#include "net/third_party/quiche/src/quiche/common/simple_buffer_allocator.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/http/http_encoder.h"
#include "net/third_party/quiche/src/quiche/quic/core/qpack/qpack_decoder.h"
#include "net/third_party/quiche/src/quiche/quic/core/quic_connection.h"
#include "net/third_party/quiche/src/quiche/quic/core/quic_connection_id.h"
#include "net/third_party/quiche/src/quiche/quic/core/quic_error_codes.h"
#include "net/third_party/quiche/src/quiche/quic/core/quic_packets.h"
#include "net/third_party/quiche/src/quiche/quic/core/quic_time.h"
#include "net/third_party/quiche/src/quiche/quic/core/quic_types.h"
#include "net/third_party/quiche/src/quiche/quic/core/quic_utils.h"
#include "net/third_party/quiche/src/quiche/quic/core/quic_versions.h"
#include "net/third_party/quiche/src/quiche/quic/platform/api/quic_socket_address.h"
#include "net/third_party/quiche/src/quiche/quic/test_tools/crypto_test_utils.h"
#include "net/third_party/quiche/src/quiche/quic/test_tools/mock_clock.h"
#include "net/third_party/quiche/src/quiche/quic/test_tools/mock_connection_id_generator.h"
#include "net/third_party/quiche/src/quiche/quic/test_tools/mock_random.h"
#include "net/third_party/quiche/src/quiche/quic/test_tools/qpack/qpack_test_utils.h"
#include "net/third_party/quiche/src/quiche/quic/test_tools/quic_test_utils.h"
#include "net/third_party/quiche/src/quiche/spdy/core/spdy_protocol.h"
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
#include "net/websockets/websocket_test_util.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
#include "url/scheme_host_port.h"
#include "url/url_constants.h"
namespace net {
class QuicChromiumClientStream;
class SpdySession;
class WebSocketEndpointLockManager;
class X509Certificate;
}
_;
AnyNumber;
Invoke;
Return;
StrictMock;
Test;
namespace net::test {
class WebSocketClientSocketHandleAdapterTest : public TestWithTaskEnvironment { … };
TEST_F(WebSocketClientSocketHandleAdapterTest, Uninitialized) { … }
TEST_F(WebSocketClientSocketHandleAdapterTest, IsInitialized) { … }
TEST_F(WebSocketClientSocketHandleAdapterTest, Disconnect) { … }
TEST_F(WebSocketClientSocketHandleAdapterTest, Read) { … }
TEST_F(WebSocketClientSocketHandleAdapterTest, ReadIntoSmallBuffer) { … }
TEST_F(WebSocketClientSocketHandleAdapterTest, Write) { … }
TEST_F(WebSocketClientSocketHandleAdapterTest, AsyncReadAndWrite) { … }
class MockDelegate : public WebSocketSpdyStreamAdapter::Delegate { … };
class WebSocketSpdyStreamAdapterTest : public TestWithTaskEnvironment { … };
TEST_F(WebSocketSpdyStreamAdapterTest, Disconnect) { … }
TEST_F(WebSocketSpdyStreamAdapterTest, SendRequestHeadersThenDisconnect) { … }
TEST_F(WebSocketSpdyStreamAdapterTest, OnHeadersSentThenDisconnect) { … }
TEST_F(WebSocketSpdyStreamAdapterTest, OnHeadersReceivedThenDisconnect) { … }
TEST_F(WebSocketSpdyStreamAdapterTest, ServerClosesConnection) { … }
TEST_F(WebSocketSpdyStreamAdapterTest,
SendRequestHeadersThenServerClosesConnection) { … }
TEST_F(WebSocketSpdyStreamAdapterTest,
OnHeadersReceivedThenServerClosesConnection) { … }
TEST_F(WebSocketSpdyStreamAdapterTest, OnHeadersReceivedThenStreamEnd) { … }
TEST_F(WebSocketSpdyStreamAdapterTest, DetachDelegate) { … }
TEST_F(WebSocketSpdyStreamAdapterTest, Read) { … }
TEST_F(WebSocketSpdyStreamAdapterTest, CallDelegateOnCloseShouldNotCrash) { … }
TEST_F(WebSocketSpdyStreamAdapterTest, Write) { … }
TEST_F(WebSocketSpdyStreamAdapterTest, AsyncReadAndWrite) { … }
class KillerCallback : public TestCompletionCallbackBase { … };
TEST_F(WebSocketSpdyStreamAdapterTest, ReadCallbackDestroysAdapter) { … }
TEST_F(WebSocketSpdyStreamAdapterTest, WriteCallbackDestroysAdapter) { … }
TEST_F(WebSocketSpdyStreamAdapterTest,
OnCloseOkShouldBeTranslatedToConnectionClose) { … }
class MockQuicDelegate : public WebSocketQuicStreamAdapter::Delegate { … };
class WebSocketQuicStreamAdapterTest
: public TestWithTaskEnvironment,
public ::testing::WithParamInterface<quic::ParsedQuicVersion> { … };
struct WebSocketQuicStreamAdapterIsPendingHelper { … };
TestWebSocketQuicStreamAdapterCompletionCallbackBase;
class TestWebSocketQuicStreamAdapterCompletionCallback
: public TestWebSocketQuicStreamAdapterCompletionCallbackBase { … };
base::OnceCallback<void(std::unique_ptr<WebSocketQuicStreamAdapter>)>
TestWebSocketQuicStreamAdapterCompletionCallback::callback() { … }
INSTANTIATE_TEST_SUITE_P(…);
TEST_P(WebSocketQuicStreamAdapterTest, Disconnect) { … }
TEST_P(WebSocketQuicStreamAdapterTest, AsyncAdapterCreation) { … }
TEST_P(WebSocketQuicStreamAdapterTest, SendRequestHeadersThenDisconnect) { … }
TEST_P(WebSocketQuicStreamAdapterTest, OnHeadersReceivedThenDisconnect) { … }
TEST_P(WebSocketQuicStreamAdapterTest, Read) { … }
TEST_P(WebSocketQuicStreamAdapterTest, ReadIntoSmallBuffer) { … }
}