Skip to content

Commit

Permalink
Removing SYN_STREAM/SYN_REPLY from the code base.
Browse files Browse the repository at this point in the history
It was only used by now-removed SPDY3
This also allows removing references to zlib, as SPDY3 gzip style compression is removed.

This CL lands server change 139775628 by alyssar.

BUG=488484

Review-Url: https://codereview.chromium.org/2523933003
Cr-Commit-Position: refs/heads/master@{#435097}
  • Loading branch information
diannahu authored and Commit bot committed Nov 29, 2016
1 parent 98e757b commit 26d99d1
Show file tree
Hide file tree
Showing 23 changed files with 252 additions and 1,383 deletions.
22 changes: 4 additions & 18 deletions net/quic/core/quic_headers_stream.cc
Original file line number Diff line number Diff line change
Expand Up @@ -105,28 +105,14 @@ QuicHeadersStream::HpackDebugVisitor::HpackDebugVisitor() {}

QuicHeadersStream::HpackDebugVisitor::~HpackDebugVisitor() {}

// A SpdyFramer visitor which passed SYN_STREAM and SYN_REPLY frames to
// the QuicSpdyStream, and closes the connection if any unexpected frames
// are received.
// A SpdyFramerVisitor that passes HEADERS frames to the QuicSpdyStream, and
// closes the connection if any unexpected frames are received.
class QuicHeadersStream::SpdyFramerVisitor
: public SpdyFramerVisitorInterface,
public SpdyFramerDebugVisitorInterface {
public:
explicit SpdyFramerVisitor(QuicHeadersStream* stream) : stream_(stream) {}

// SpdyFramerVisitorInterface implementation
void OnSynStream(SpdyStreamId stream_id,
SpdyStreamId associated_stream_id,
SpdyPriority priority,
bool fin,
bool unidirectional) override {
CloseConnection("SPDY SYN_STREAM frame received.");
}

void OnSynReply(SpdyStreamId stream_id, bool fin) override {
CloseConnection("SPDY SYN_REPLY frame received.");
}

void OnStreamFrameData(SpdyStreamId stream_id,
const char* data,
size_t len) override {
Expand All @@ -137,8 +123,8 @@ class QuicHeadersStream::SpdyFramerVisitor
}

void OnStreamEnd(SpdyStreamId stream_id) override {
// The framer invokes OnStreamEnd after processing a SYN_STREAM
// or SYN_REPLY frame that had the fin bit set.
// The framer invokes OnStreamEnd after processing a frame that had the fin
// bit set.
}

void OnStreamPadding(SpdyStreamId stream_id, size_t len) override {
Expand Down
35 changes: 15 additions & 20 deletions net/quic/core/quic_headers_stream_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
#include "net/quic/core/quic_headers_stream.h"

#include <string>
#include <tuple>
#include <utility>

#include "base/strings/string_number_conversions.h"
#include "net/quic/core/quic_bug_tracker.h"
Expand Down Expand Up @@ -47,7 +49,7 @@ namespace test {

class MockHpackDebugVisitor : public QuicHeadersStream::HpackDebugVisitor {
public:
explicit MockHpackDebugVisitor() : HpackDebugVisitor() {}
MockHpackDebugVisitor() : HpackDebugVisitor() {}

MOCK_METHOD1(OnUseEntry, void(QuicTime::Delta elapsed));

Expand Down Expand Up @@ -76,13 +78,6 @@ class MockVisitor : public SpdyFramerVisitorInterface {
bool(SpdyStreamId stream_id,
const char* header_data,
size_t len));
MOCK_METHOD5(OnSynStream,
void(SpdyStreamId stream_id,
SpdyStreamId associated_stream_id,
SpdyPriority priority,
bool fin,
bool unidirectional));
MOCK_METHOD2(OnSynReply, void(SpdyStreamId stream_id, bool fin));
MOCK_METHOD2(OnRstStream,
void(SpdyStreamId stream_id, SpdyRstStreamStatus status));
MOCK_METHOD1(OnSettings, void(bool clear_persisted));
Expand Down Expand Up @@ -307,20 +302,20 @@ class QuicHeadersStreamTest : public ::testing::TestWithParam<TestParamsTuple> {
headers_handler_->OnHeaderBlockEnd(size);
}

void WriteHeadersAndExpectSynStream(QuicStreamId stream_id,
bool fin,
SpdyPriority priority) {
WriteHeadersAndCheckData(stream_id, fin, priority, SYN_STREAM);
void WriteAndExpectRequestHeaders(QuicStreamId stream_id,
bool fin,
SpdyPriority priority) {
WriteHeadersAndCheckData(stream_id, fin, priority, true /*is_request*/);
}

void WriteHeadersAndExpectSynReply(QuicStreamId stream_id, bool fin) {
WriteHeadersAndCheckData(stream_id, fin, 0, SYN_REPLY);
void WriteAndExpectResponseHeaders(QuicStreamId stream_id, bool fin) {
WriteHeadersAndCheckData(stream_id, fin, 0, false /*is_request*/);
}

void WriteHeadersAndCheckData(QuicStreamId stream_id,
bool fin,
SpdyPriority priority,
SpdyFrameType type) {
bool is_request) {
// Write the headers and capture the outgoing data
EXPECT_CALL(session_, WritevData(headers_stream_, kHeadersStreamId, _, _,
false, nullptr))
Expand All @@ -329,7 +324,7 @@ class QuicHeadersStreamTest : public ::testing::TestWithParam<TestParamsTuple> {
nullptr);

// Parse the outgoing data and check that it matches was was written.
if (type == SYN_STREAM) {
if (is_request) {
EXPECT_CALL(visitor_,
OnHeaders(stream_id, kHasPriority,
Spdy3PriorityToHttp2Weight(priority),
Expand Down Expand Up @@ -424,11 +419,11 @@ TEST_P(QuicHeadersStreamTest, WriteHeaders) {
stream_id < kClientDataStreamId3; stream_id += 2) {
for (bool fin : kFins) {
if (perspective() == Perspective::IS_SERVER) {
WriteHeadersAndExpectSynReply(stream_id, fin);
WriteAndExpectResponseHeaders(stream_id, fin);
} else {
for (SpdyPriority priority = 0; priority < 7; ++priority) {
// TODO(rch): implement priorities correctly.
WriteHeadersAndExpectSynStream(stream_id, fin, 0);
WriteAndExpectRequestHeaders(stream_id, fin, 0);
}
}
}
Expand Down Expand Up @@ -925,12 +920,12 @@ TEST_P(QuicHeadersStreamTest, HpackEncoderDebugVisitor) {
stream_id < kClientDataStreamId3; stream_id += 2) {
for (bool fin : {false, true}) {
if (perspective() == Perspective::IS_SERVER) {
WriteHeadersAndExpectSynReply(stream_id, fin);
WriteAndExpectResponseHeaders(stream_id, fin);
connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1));
} else {
for (SpdyPriority priority = 0; priority < 7; ++priority) {
// TODO(rch): implement priorities correctly.
WriteHeadersAndExpectSynStream(stream_id, fin, 0);
WriteAndExpectRequestHeaders(stream_id, fin, 0);
connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1));
}
}
Expand Down
19 changes: 0 additions & 19 deletions net/spdy/buffered_spdy_framer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,6 @@ void BufferedSpdyFramer::OnError(SpdyFramer* spdy_framer) {
visitor_->OnError(spdy_framer->error_code());
}

void BufferedSpdyFramer::OnSynStream(SpdyStreamId stream_id,
SpdyStreamId associated_stream_id,
SpdyPriority priority,
bool fin,
bool unidirectional) {
NOTREACHED();
}

void BufferedSpdyFramer::OnHeaders(SpdyStreamId stream_id,
bool has_priority,
int weight,
Expand All @@ -76,11 +68,6 @@ void BufferedSpdyFramer::OnHeaders(SpdyStreamId stream_id,
InitHeaderStreaming(stream_id);
}

void BufferedSpdyFramer::OnSynReply(SpdyStreamId stream_id,
bool fin) {
NOTREACHED();
}

void BufferedSpdyFramer::OnDataFrameHeader(SpdyStreamId stream_id,
size_t length,
bool fin) {
Expand Down Expand Up @@ -118,12 +105,6 @@ void BufferedSpdyFramer::OnHeaderFrameEnd(SpdyStreamId stream_id,
}
DCHECK(control_frame_fields_.get());
switch (control_frame_fields_->type) {
case SYN_STREAM:
NOTREACHED();
break;
case SYN_REPLY:
NOTREACHED();
break;
case HEADERS:
visitor_->OnHeaders(
control_frame_fields_->stream_id, control_frame_fields_->has_priority,
Expand Down
15 changes: 2 additions & 13 deletions net/spdy/buffered_spdy_framer.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramerVisitorInterface {
// Called if an error is detected in the SpdySerializedFrame protocol.
virtual void OnError(SpdyFramer::SpdyError error_code) = 0;

// Called if an error is detected in a SPDY stream.
// Called if an error is detected in a HTTP2 stream.
virtual void OnStreamError(SpdyStreamId stream_id,
const std::string& description) = 0;

Expand All @@ -49,8 +49,7 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramerVisitorInterface {
// Called when data is received.
// |stream_id| The stream receiving data.
// |data| A buffer containing the data received.
// |len| The length of the data buffer (at most 2^24 - 1 for SPDY/3,
// but 2^16 - 1 - 8 for HTTP2).
// |len| The length of the data buffer (at most 2^16 - 1 - 8).
virtual void OnStreamFrameData(SpdyStreamId stream_id,
const char* data,
size_t len) = 0;
Expand Down Expand Up @@ -136,12 +135,6 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramer

// SpdyFramerVisitorInterface
void OnError(SpdyFramer* spdy_framer) override;
void OnSynStream(SpdyStreamId stream_id,
SpdyStreamId associated_stream_id,
SpdyPriority priority,
bool fin,
bool unidirectional) override;
void OnSynReply(SpdyStreamId stream_id, bool fin) override;
void OnHeaders(SpdyStreamId stream_id,
bool has_priority,
int weight,
Expand Down Expand Up @@ -224,10 +217,6 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramer
return spdy_framer_.GetFrameHeaderSize();
}

size_t GetSynStreamMinimumSize() const {
return spdy_framer_.GetSynStreamMinimumSize();
}

size_t GetFrameMinimumSize() const {
return spdy_framer_.GetFrameMinimumSize();
}
Expand Down
6 changes: 0 additions & 6 deletions net/spdy/mock_spdy_framer_visitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,6 @@ class MockSpdyFramerVisitor : public SpdyFramerVisitorInterface {
MOCK_METHOD1(OnHeaderFrameStart,
SpdyHeadersHandlerInterface*(SpdyStreamId stream_id));
MOCK_METHOD2(OnHeaderFrameEnd, void(SpdyStreamId stream_id, bool end));
MOCK_METHOD5(OnSynStream, void(SpdyStreamId stream_id,
SpdyStreamId associated_stream_id,
SpdyPriority priority,
bool fin,
bool unidirectional));
MOCK_METHOD2(OnSynReply, void(SpdyStreamId stream_id, bool fin));
MOCK_METHOD2(OnRstStream, void(SpdyStreamId stream_id,
SpdyRstStreamStatus status));
MOCK_METHOD1(OnSettings, void(bool clear_persisted));
Expand Down
32 changes: 0 additions & 32 deletions net/spdy/spdy_deframer_visitor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -178,12 +178,6 @@ class SpdyTestDeframerImpl : public SpdyTestDeframer,
size_t len) override;
void OnStreamEnd(SpdyStreamId stream_id) override;
void OnStreamPadding(SpdyStreamId stream_id, size_t len) override;
void OnSynReply(SpdyStreamId stream_id, bool fin) override;
void OnSynStream(SpdyStreamId stream_id,
SpdyStreamId associated_stream_id,
SpdyPriority priority,
bool fin,
bool unidirectional) override;
bool OnUnknownFrame(SpdyStreamId stream_id, int frame_type) override;
void OnWindowUpdate(SpdyStreamId stream_id, int delta_window_size) override;

Expand Down Expand Up @@ -734,32 +728,6 @@ void SpdyTestDeframerImpl::OnStreamPadding(SpdyStreamId stream_id, size_t len) {
CHECK_LE(padding_len_, 256u) << "len=" << len;
}

// Obsolete.
void SpdyTestDeframerImpl::OnSynStream(SpdyStreamId stream_id,
SpdyStreamId associated_stream_id,
SpdyPriority priority,
bool fin,
bool unidirectional) {
DVLOG(1) << "OnSynStream stream_id: " << stream_id;
CHECK_EQ(frame_type_, UNSET) << " frame_type_="
<< Http2FrameTypeToString(frame_type_);
frame_type_ = UNKNOWN;
stream_id_ = stream_id;
fin_ = fin;
LOG(DFATAL) << "SYN_STREAM is not a valid HTTP/2 frame type.";
}

// Obsolete.
void SpdyTestDeframerImpl::OnSynReply(SpdyStreamId stream_id, bool fin) {
DVLOG(1) << "OnSynReply stream_id: " << stream_id;
CHECK_EQ(frame_type_, UNSET) << " frame_type_="
<< Http2FrameTypeToString(frame_type_);
frame_type_ = UNKNOWN;
stream_id_ = stream_id;
fin_ = fin;
LOG(DFATAL) << "SYN_REPLY is not a valid HTTP/2 frame type.";
}

// WINDOW_UPDATE is supposed to be hop-by-hop, according to the spec.
// stream_id is 0 if the update applies to the connection, else stream_id
// will be the id of a stream previously seen, which maybe half or fully
Expand Down
43 changes: 0 additions & 43 deletions net/spdy/spdy_frame_builder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,26 +13,6 @@

namespace net {

namespace {

// A special structure for the 8 bit flags and 24 bit length fields.
union FlagsAndLength {
uint8_t flags[4]; // 8 bits
uint32_t length; // 24 bits
};

// Creates a FlagsAndLength.
FlagsAndLength CreateFlagsAndLength(uint8_t flags, size_t length) {
DCHECK_EQ(0u, length & ~static_cast<size_t>(kLengthMask));
FlagsAndLength flags_length;
flags_length.length = base::HostToNet32(static_cast<uint32_t>(length));
DCHECK_EQ(0, flags & ~kControlFlagsMask);
flags_length.flags[0] = flags;
return flags_length;
}

} // namespace

SpdyFrameBuilder::SpdyFrameBuilder(size_t size, SpdyMajorVersion version)
: buffer_(new char[size]),
capacity_(size),
Expand Down Expand Up @@ -60,29 +40,6 @@ bool SpdyFrameBuilder::Seek(size_t length) {
return true;
}

bool SpdyFrameBuilder::WriteControlFrameHeader(const SpdyFramer& framer,
SpdyFrameType type,
uint8_t flags) {
DCHECK(false);
DCHECK(SpdyConstants::IsValidFrameType(
version_, SpdyConstants::SerializeFrameType(version_, type)));
bool success = true;
FlagsAndLength flags_length =
CreateFlagsAndLength(flags, capacity_ - framer.GetFrameHeaderSize());
success &= WriteUInt16(kControlFlagMask | kSpdy3Version);
success &= WriteUInt16(
SpdyConstants::SerializeFrameType(framer.protocol_version(), type));
success &= WriteBytes(&flags_length, sizeof(flags_length));
DCHECK_EQ(framer.GetFrameHeaderSize(), length());
return success;
}

bool SpdyFrameBuilder::WriteDataFrameHeader(const SpdyFramer& framer,
SpdyStreamId stream_id,
uint8_t flags) {
return BeginNewFrame(framer, DATA, flags, stream_id);
}

bool SpdyFrameBuilder::BeginNewFrame(const SpdyFramer& framer,
SpdyFrameType type,
uint8_t flags,
Expand Down
14 changes: 0 additions & 14 deletions net/spdy/spdy_frame_builder.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,20 +51,6 @@ class NET_EXPORT_PRIVATE SpdyFrameBuilder {
// GetWriteableBuffer() above.
bool Seek(size_t length);

// Populates this frame with a SPDY control frame header using
// version-specific information from the |framer| and length information from
// |capacity_|. The given type must be a control frame type.
// Used only for SPDY3.
bool WriteControlFrameHeader(const SpdyFramer& framer,
SpdyFrameType type,
uint8_t flags);

// Populates this frame with a SPDY data frame header using version-specific
// information from the |framer| and length information from capacity_.
bool WriteDataFrameHeader(const SpdyFramer& framer,
SpdyStreamId stream_id,
uint8_t flags);

// Populates this frame with a HTTP2 frame prefix using version-specific
// information from the |framer| and length information from |capacity_|. The
// given type must be a control frame type.
Expand Down
18 changes: 9 additions & 9 deletions net/spdy/spdy_frame_builder_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@
namespace net {

TEST(SpdyFrameBuilderTest, GetWritableBuffer) {
const size_t builder_size = 10;
SpdyFrameBuilder builder(builder_size, HTTP2);
char* writable_buffer = builder.GetWritableBuffer(builder_size);
memset(writable_buffer, ~1, builder_size);
EXPECT_TRUE(builder.Seek(builder_size));
const size_t kBuilderSize = 10;
SpdyFrameBuilder builder(kBuilderSize, HTTP2);
char* writable_buffer = builder.GetWritableBuffer(kBuilderSize);
memset(writable_buffer, ~1, kBuilderSize);
EXPECT_TRUE(builder.Seek(kBuilderSize));
SpdySerializedFrame frame(builder.take());
char expected[builder_size];
memset(expected, ~1, builder_size);
EXPECT_EQ(base::StringPiece(expected, builder_size),
base::StringPiece(frame.data(), builder_size));
char expected[kBuilderSize];
memset(expected, ~1, kBuilderSize);
EXPECT_EQ(base::StringPiece(expected, kBuilderSize),
base::StringPiece(frame.data(), kBuilderSize));
}

TEST(SpdyFrameBuilderTest, RewriteLength) {
Expand Down
Loading

0 comments on commit 26d99d1

Please sign in to comment.