// Copyright (c) 2012 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_SPDY_SPDY_WEBSOCKET_TEST_UTIL_H_
#define NET_SPDY_SPDY_WEBSOCKET_TEST_UTIL_H_

#include "net/base/request_priority.h"
#include "net/spdy/spdy_protocol.h"

namespace net {

namespace test_spdy2 {

// Constructs a standard SPDY SYN_STREAM frame for WebSocket over SPDY opening
// handshake.
SpdyFrame* ConstructSpdyWebSocketSynStream(int stream_id,
                                           const char* path,
                                           const char* host,
                                           const char* origin);

// Constructs a standard SPDY SYN_REPLY packet to match the WebSocket over SPDY
// opening handshake.
SpdyFrame* ConstructSpdyWebSocketSynReply(int stream_id);

// Constructs a WebSocket over SPDY handshake request packet.
SpdyFrame* ConstructSpdyWebSocketHandshakeRequestFrame(
    const char* const headers[],
    int header_count,
    SpdyStreamId stream_id,
    RequestPriority request_priority);

// Constructs a WebSocket over SPDY handshake response packet.
SpdyFrame* ConstructSpdyWebSocketHandshakeResponseFrame(
    const char* const headers[],
    int header_count,
    SpdyStreamId stream_id,
    RequestPriority request_priority);

// Constructs a SPDY HEADERS frame for a WebSocket frame over SPDY.
SpdyFrame* ConstructSpdyWebSocketHeadersFrame(int stream_id,
                                              const char* length,
                                              bool fin);

// Constructs a WebSocket over SPDY data packet.
SpdyFrame* ConstructSpdyWebSocketDataFrame(const char* data,
                                           int len,
                                           SpdyStreamId stream_id,
                                           bool fin);

}  // namespace test_spdy2

}  // namespace net

#endif  // NET_SPDY_SPDY_WEBSOCKET_TEST_UTIL_H_