// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef NET_WEBSOCKETS_WEBSOCKET_HANDSHAKE_STREAM_CREATE_HELPER_H_ #define NET_WEBSOCKETS_WEBSOCKET_HANDSHAKE_STREAM_CREATE_HELPER_H_ #include #include #include #include #include "base/memory/raw_ptr.h" #include "net/base/net_export.h" #include "net/websockets/websocket_handshake_stream_base.h" #include "net/websockets/websocket_stream.h" namespace net { class WebSocketStreamRequestAPI; class SpdySession; class WebSocketBasicHandshakeStream; class WebSocketEndpointLockManager; // Implementation of WebSocketHandshakeStreamBase::CreateHelper. This class is // used in the implementation of WebSocketStream::CreateAndConnectStream() and // is not intended to be used by itself. // // Holds the information needed to construct a // WebSocketBasicHandshakeStreamBase. class NET_EXPORT_PRIVATE WebSocketHandshakeStreamCreateHelper : public WebSocketHandshakeStreamBase::CreateHelper { public: // |*connect_delegate| and |*request| must out-live this object. WebSocketHandshakeStreamCreateHelper( WebSocketStream::ConnectDelegate* connect_delegate, const std::vector& requested_subprotocols, WebSocketStreamRequestAPI* request); WebSocketHandshakeStreamCreateHelper( const WebSocketHandshakeStreamCreateHelper&) = delete; WebSocketHandshakeStreamCreateHelper& operator=( const WebSocketHandshakeStreamCreateHelper&) = delete; ~WebSocketHandshakeStreamCreateHelper() override; // WebSocketHandshakeStreamBase::CreateHelper methods // Creates a WebSocketBasicHandshakeStream over a TCP/IP or TLS socket. std::unique_ptr CreateBasicStream( std::unique_ptr connection, bool using_proxy, WebSocketEndpointLockManager* websocket_endpoint_lock_manager) override; // Creates a WebSocketHttp2HandshakeStream over an HTTP/2 connection. std::unique_ptr CreateHttp2Stream( base::WeakPtr session, std::set dns_aliases) override; private: const raw_ptr connect_delegate_; const std::vector requested_subprotocols_; const raw_ptr request_; }; } // namespace net #endif // NET_WEBSOCKETS_WEBSOCKET_HANDSHAKE_STREAM_CREATE_HELPER_H_