1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef NET_SPDY_SPDY_WEBSOCKET_TEST_UTIL_H_
6 #define NET_SPDY_SPDY_WEBSOCKET_TEST_UTIL_H_
8 #include "net/base/request_priority.h"
9 #include "net/spdy/spdy_header_block.h"
10 #include "net/spdy/spdy_protocol.h"
11 #include "net/spdy/spdy_test_util_common.h"
15 class SpdyWebSocketTestUtil
{
17 explicit SpdyWebSocketTestUtil(NextProto protocol
);
19 // Returns the value corresponding to the given key (passed through
20 // GetHeaderKey()), or the empty string if none exists.
21 std::string
GetHeader(const SpdyHeaderBlock
& headers
,
22 const std::string
& key
) const;
24 // Adds the given key/value pair to |headers|, passing the key
25 // through GetHeaderKey().
26 void SetHeader(const std::string
& key
,
27 const std::string
& value
,
28 SpdyHeaderBlock
* headers
) const;
30 // Constructs a standard SPDY SYN_STREAM frame for WebSocket over
31 // SPDY opening handshake.
32 SpdyFrame
* ConstructSpdyWebSocketSynStream(int stream_id
,
37 // Constructs a standard SPDY SYN_REPLY packet to match the
38 // WebSocket over SPDY opening handshake.
39 SpdyFrame
* ConstructSpdyWebSocketSynReply(int stream_id
);
41 // Constructs a WebSocket over SPDY handshake request packet.
42 SpdyFrame
* ConstructSpdyWebSocketHandshakeRequestFrame(
43 scoped_ptr
<SpdyHeaderBlock
> headers
,
44 SpdyStreamId stream_id
,
45 RequestPriority request_priority
);
47 // Constructs a WebSocket over SPDY handshake response packet.
48 SpdyFrame
* ConstructSpdyWebSocketHandshakeResponseFrame(
49 scoped_ptr
<SpdyHeaderBlock
> headers
,
50 SpdyStreamId stream_id
,
51 RequestPriority request_priority
);
53 // Constructs a SPDY HEADERS frame for a WebSocket frame over SPDY.
54 SpdyFrame
* ConstructSpdyWebSocketHeadersFrame(int stream_id
,
58 // Constructs a WebSocket over SPDY data packet.
59 SpdyFrame
* ConstructSpdyWebSocketDataFrame(const char* data
,
61 SpdyStreamId stream_id
,
64 // Forwards to |spdy_util_|.
65 SpdyFrame
* ConstructSpdySettings(const SettingsMap
& settings
) const;
66 SpdyFrame
* ConstructSpdySettingsAck() const;
67 SpdyMajorVersion
spdy_version() const;
70 // Modify the header key based on the SPDY version and return it.
71 std::string
GetHeaderKey(const std::string
& key
) const;
73 SpdyTestUtil spdy_util_
;
78 #endif // NET_SPDY_SPDY_WEBSOCKET_TEST_UTIL_H_