| Index: net/quic/quic_headers_stream_test.cc
|
| diff --git a/net/quic/quic_headers_stream_test.cc b/net/quic/quic_headers_stream_test.cc
|
| index 9cd9e77530f16b6f5c97ca3f642942ca56423b81..0a4bd4709b584cdd84b09997541fc6adbe215c86 100644
|
| --- a/net/quic/quic_headers_stream_test.cc
|
| +++ b/net/quic/quic_headers_stream_test.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include <string>
|
|
|
| +#include "base/strings/string_number_conversions.h"
|
| #include "net/quic/quic_utils.h"
|
| #include "net/quic/spdy_utils.h"
|
| #include "net/quic/test_tools/quic_connection_peer.h"
|
| @@ -44,6 +45,13 @@ class MockHpackDebugVisitor : public QuicHeadersStream::HpackDebugVisitor {
|
| DISALLOW_COPY_AND_ASSIGN(MockHpackDebugVisitor);
|
| };
|
|
|
| +class QuicHeadersStreamPeer {
|
| + public:
|
| + static const SpdyFramer& GetSpdyFramer(QuicHeadersStream* stream) {
|
| + return stream->spdy_framer_;
|
| + }
|
| +};
|
| +
|
| namespace {
|
|
|
| // TODO(ckrasic): this workaround is due to absence of std::initializer_list
|
| @@ -570,6 +578,7 @@ TEST_P(QuicHeadersStreamTest, ProcessSpdyRstStreamFrame) {
|
| }
|
|
|
| TEST_P(QuicHeadersStreamTest, ProcessSpdySettingsFrame) {
|
| + FLAGS_quic_respect_http2_settings_frame = false;
|
| SpdySettingsIR data;
|
| data.AddSetting(SETTINGS_HEADER_TABLE_SIZE, true, true, 0);
|
| SpdySerializedFrame frame(framer_->SerializeFrame(data));
|
| @@ -582,6 +591,68 @@ TEST_P(QuicHeadersStreamTest, ProcessSpdySettingsFrame) {
|
| headers_stream_->OnStreamFrame(stream_frame_);
|
| }
|
|
|
| +TEST_P(QuicHeadersStreamTest, RespectHttp2SettingsFrameSupportedFields) {
|
| + FLAGS_quic_respect_http2_settings_frame = true;
|
| + const uint32_t kTestHeaderTableSize = 1000;
|
| + SpdySettingsIR data;
|
| + // Respect supported settings frames SETTINGS_HEADER_TABLE_SIZE.
|
| + data.AddSetting(SETTINGS_HEADER_TABLE_SIZE, true, true, kTestHeaderTableSize);
|
| + SpdySerializedFrame frame(framer_->SerializeFrame(data));
|
| + stream_frame_.data_buffer = frame.data();
|
| + stream_frame_.data_length = frame.size();
|
| + headers_stream_->OnStreamFrame(stream_frame_);
|
| + EXPECT_EQ(kTestHeaderTableSize,
|
| + QuicHeadersStreamPeer::GetSpdyFramer(headers_stream_)
|
| + .header_encoder_table_size());
|
| +}
|
| +
|
| +TEST_P(QuicHeadersStreamTest, RespectHttp2SettingsFrameUnsupportedFields) {
|
| + FLAGS_quic_respect_http2_settings_frame = true;
|
| + SpdySettingsIR data;
|
| + // Does not support SETTINGS_MAX_HEADER_LIST_SIZE,
|
| + // SETTINGS_MAX_CONCURRENT_STREAMS, SETTINGS_INITIAL_WINDOW_SIZE,
|
| + // SETTINGS_ENABLE_PUSH and SETTINGS_MAX_FRAME_SIZE.
|
| + data.AddSetting(SETTINGS_MAX_HEADER_LIST_SIZE, true, true, 2000);
|
| + data.AddSetting(SETTINGS_MAX_CONCURRENT_STREAMS, true, true, 100);
|
| + data.AddSetting(SETTINGS_INITIAL_WINDOW_SIZE, true, true, 100);
|
| + data.AddSetting(SETTINGS_ENABLE_PUSH, true, true, 1);
|
| + data.AddSetting(SETTINGS_MAX_FRAME_SIZE, true, true, 1250);
|
| + SpdySerializedFrame frame(framer_->SerializeFrame(data));
|
| + EXPECT_CALL(
|
| + *connection_,
|
| + CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA,
|
| + "Unsupported field of HTTP/2 SETTINGS frame: " +
|
| + base::IntToString(SETTINGS_MAX_HEADER_LIST_SIZE),
|
| + _));
|
| + EXPECT_CALL(
|
| + *connection_,
|
| + CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA,
|
| + "Unsupported field of HTTP/2 SETTINGS frame: " +
|
| + base::IntToString(SETTINGS_MAX_CONCURRENT_STREAMS),
|
| + _));
|
| + EXPECT_CALL(
|
| + *connection_,
|
| + CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA,
|
| + "Unsupported field of HTTP/2 SETTINGS frame: " +
|
| + base::IntToString(SETTINGS_INITIAL_WINDOW_SIZE),
|
| + _));
|
| + EXPECT_CALL(
|
| + *connection_,
|
| + CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA,
|
| + "Unsupported field of HTTP/2 SETTINGS frame: " +
|
| + base::IntToString(SETTINGS_ENABLE_PUSH),
|
| + _));
|
| + EXPECT_CALL(
|
| + *connection_,
|
| + CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA,
|
| + "Unsupported field of HTTP/2 SETTINGS frame: " +
|
| + base::IntToString(SETTINGS_MAX_FRAME_SIZE),
|
| + _));
|
| + stream_frame_.data_buffer = frame.data();
|
| + stream_frame_.data_length = frame.size();
|
| + headers_stream_->OnStreamFrame(stream_frame_);
|
| +}
|
| +
|
| TEST_P(QuicHeadersStreamTest, ProcessSpdyPingFrame) {
|
| SpdyPingIR data(1);
|
| SpdySerializedFrame frame(framer_->SerializeFrame(data));
|
|
|