Skip to content

Commit

Permalink
Add SpdyMajorVersion enum and use it everywhere
Browse files Browse the repository at this point in the history
This is a bit more type-safe than just passing around ints.

Also add TODO for NPN->SpdyVersion conversion functions.

This lands server change 45485205.

R=rch@chromium.org

Review URL: https://codereview.chromium.org/14348010

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@200568 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
akalin@chromium.org committed May 16, 2013
1 parent 87c98c9 commit 977bd84
Show file tree
Hide file tree
Showing 31 changed files with 216 additions and 230 deletions.
2 changes: 1 addition & 1 deletion net/quic/quic_http_stream.cc
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,7 @@ int QuicHttpStream::DoSendBodyComplete(int rv) {

int QuicHttpStream::ParseResponseHeaders() {
size_t read_buf_len = static_cast<size_t>(read_buf_->offset());
SpdyFramer framer(3);
SpdyFramer framer(SPDY3);
SpdyHeaderBlock headers;
char* data = read_buf_->StartOfBuffer();
size_t len = framer.ParseHeaderBlockInBuffer(data, read_buf_->offset(),
Expand Down
2 changes: 1 addition & 1 deletion net/quic/quic_spdy_compressor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ using std::string;
namespace net {

QuicSpdyCompressor::QuicSpdyCompressor()
: spdy_framer_(kSpdyVersion3),
: spdy_framer_(SPDY3),
header_sequence_id_(1) {
spdy_framer_.set_enable_compression(true);
}
Expand Down
2 changes: 1 addition & 1 deletion net/quic/quic_spdy_decompressor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ bool SpdyFramerVisitor::OnControlFrameHeaderData(SpdyStreamId stream_id,
}

QuicSpdyDecompressor::QuicSpdyDecompressor()
: spdy_framer_(kSpdyVersion3),
: spdy_framer_(SPDY3),
spdy_visitor_(new SpdyFramerVisitor(NULL)),
current_header_id_(1),
has_current_compressed_size_(false),
Expand Down
4 changes: 2 additions & 2 deletions net/quic/spdy_utils.cc
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ namespace net {

// static
string SpdyUtils::SerializeUncompressedHeaders(const SpdyHeaderBlock& headers) {
int length = SpdyFramer::GetSerializedLength(kSpdyVersion3, &headers);
int length = SpdyFramer::GetSerializedLength(SPDY3, &headers);
SpdyFrameBuilder builder(length);
SpdyFramer::WriteHeaderBlock(&builder, kSpdyVersion3, &headers);
SpdyFramer::WriteHeaderBlock(&builder, SPDY3, &headers);
scoped_ptr<SpdyFrame> block(builder.take());
return string(block->data(), length);
}
Expand Down
3 changes: 2 additions & 1 deletion net/spdy/buffered_spdy_framer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@

namespace net {

BufferedSpdyFramer::BufferedSpdyFramer(int version, bool enable_compression)
BufferedSpdyFramer::BufferedSpdyFramer(SpdyMajorVersion version,
bool enable_compression)
: spdy_framer_(version),
visitor_(NULL),
header_buffer_used_(0),
Expand Down
2 changes: 1 addition & 1 deletion net/spdy/buffered_spdy_framer.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramerVisitorInterface {
class NET_EXPORT_PRIVATE BufferedSpdyFramer
: public SpdyFramerVisitorInterface {
public:
BufferedSpdyFramer(int version,
BufferedSpdyFramer(SpdyMajorVersion version,
bool enable_compression);
virtual ~BufferedSpdyFramer();

Expand Down
10 changes: 5 additions & 5 deletions net/spdy/buffered_spdy_framer_spdy2_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ namespace {
class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface {
public:
TestBufferedSpdyVisitor()
: buffered_spdy_framer_(2, true),
: buffered_spdy_framer_(SPDY2, true),
error_count_(0),
setting_count_(0),
syn_frame_count_(0),
Expand Down Expand Up @@ -185,7 +185,7 @@ class BufferedSpdyFramerSpdy2Test : public PlatformTest {
};

TEST_F(BufferedSpdyFramerSpdy2Test, OnSetting) {
SpdyFramer framer(2);
SpdyFramer framer(SPDY2);
SettingsMap settings;
settings[SETTINGS_UPLOAD_BANDWIDTH] =
SettingsFlagsAndValue(SETTINGS_FLAG_NONE, 0x00000002);
Expand All @@ -206,7 +206,7 @@ TEST_F(BufferedSpdyFramerSpdy2Test, ReadSynStreamHeaderBlock) {
SpdyHeaderBlock headers;
headers["aa"] = "vv";
headers["bb"] = "ww";
BufferedSpdyFramer framer(2, true);
BufferedSpdyFramer framer(SPDY2, true);
scoped_ptr<SpdyFrame> control_frame(
framer.CreateSynStream(1, // stream_id
0, // associated_stream_id
Expand All @@ -232,7 +232,7 @@ TEST_F(BufferedSpdyFramerSpdy2Test, ReadSynReplyHeaderBlock) {
SpdyHeaderBlock headers;
headers["alpha"] = "beta";
headers["gamma"] = "delta";
BufferedSpdyFramer framer(2, true);
BufferedSpdyFramer framer(SPDY2, true);
scoped_ptr<SpdyFrame> control_frame(
framer.CreateSynReply(1, // stream_id
CONTROL_FLAG_NONE,
Expand All @@ -255,7 +255,7 @@ TEST_F(BufferedSpdyFramerSpdy2Test, ReadHeadersHeaderBlock) {
SpdyHeaderBlock headers;
headers["alpha"] = "beta";
headers["gamma"] = "delta";
BufferedSpdyFramer framer(2, true);
BufferedSpdyFramer framer(SPDY2, true);
scoped_ptr<SpdyFrame> control_frame(
framer.CreateHeaders(1, // stream_id
CONTROL_FLAG_NONE,
Expand Down
10 changes: 5 additions & 5 deletions net/spdy/buffered_spdy_framer_spdy3_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ namespace {
class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface {
public:
TestBufferedSpdyVisitor()
: buffered_spdy_framer_(3, true),
: buffered_spdy_framer_(SPDY3, true),
error_count_(0),
setting_count_(0),
syn_frame_count_(0),
Expand Down Expand Up @@ -183,7 +183,7 @@ class BufferedSpdyFramerSpdy3Test : public PlatformTest {
};

TEST_F(BufferedSpdyFramerSpdy3Test, OnSetting) {
SpdyFramer framer(3);
SpdyFramer framer(SPDY3);
framer.set_enable_compression(false);
SettingsMap settings;
settings[SETTINGS_UPLOAD_BANDWIDTH] =
Expand All @@ -205,7 +205,7 @@ TEST_F(BufferedSpdyFramerSpdy3Test, ReadSynStreamHeaderBlock) {
SpdyHeaderBlock headers;
headers["aa"] = "vv";
headers["bb"] = "ww";
BufferedSpdyFramer framer(3, true);
BufferedSpdyFramer framer(SPDY3, true);
scoped_ptr<SpdyFrame> control_frame(
framer.CreateSynStream(1, // stream_id
0, // associated_stream_id
Expand All @@ -231,7 +231,7 @@ TEST_F(BufferedSpdyFramerSpdy3Test, ReadSynReplyHeaderBlock) {
SpdyHeaderBlock headers;
headers["alpha"] = "beta";
headers["gamma"] = "delta";
BufferedSpdyFramer framer(3, true);
BufferedSpdyFramer framer(SPDY3, true);
scoped_ptr<SpdyFrame> control_frame(
framer.CreateSynReply(1, // stream_id
CONTROL_FLAG_NONE,
Expand All @@ -254,7 +254,7 @@ TEST_F(BufferedSpdyFramerSpdy3Test, ReadHeadersHeaderBlock) {
SpdyHeaderBlock headers;
headers["alpha"] = "beta";
headers["gamma"] = "delta";
BufferedSpdyFramer framer(3, true);
BufferedSpdyFramer framer(SPDY3, true);
scoped_ptr<SpdyFrame> control_frame(
framer.CreateHeaders(1, // stream_id
CONTROL_FLAG_NONE,
Expand Down
13 changes: 3 additions & 10 deletions net/spdy/spdy_frame_builder_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,14 @@ TEST(SpdyFrameBuilderTestVersionAgnostic, GetWritableBuffer) {
base::StringPiece(frame->data(), builder_size));
}

enum SpdyFrameBuilderTestTypes {
SPDY2 = 2,
SPDY3 = 3,
SPDY4 = 4,
};

class SpdyFrameBuilderTest
: public ::testing::TestWithParam<SpdyFrameBuilderTestTypes> {
class SpdyFrameBuilderTest : public ::testing::TestWithParam<SpdyMajorVersion> {
protected:
virtual void SetUp() {
spdy_version_ = GetParam();
}

// Version of SPDY protocol to be used.
unsigned char spdy_version_;
// Major version of SPDY protocol to be used.
SpdyMajorVersion spdy_version_;
};

// All tests are run with two different SPDY versions: SPDY/2 and SPDY/3.
Expand Down
15 changes: 6 additions & 9 deletions net/spdy/spdy_framer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,6 @@ const uint8 kNoFlags = 0;

} // namespace

const int SpdyFramer::kMinSpdyVersion = kSpdyVersion2;
const int SpdyFramer::kMaxSpdyVersion = kSpdyVersion4;
const SpdyStreamId SpdyFramer::kInvalidStream = -1;
const size_t SpdyFramer::kHeaderDataChunkMaxSize = 1024;
// The size of the control frame buffer. Must be >= the minimum size of the
Expand Down Expand Up @@ -116,7 +114,7 @@ void SettingsFlagsAndId::ConvertFlagsAndIdForSpdy2(uint32* val) {
SpdyCredential::SpdyCredential() : slot(0) {}
SpdyCredential::~SpdyCredential() {}

SpdyFramer::SpdyFramer(int version)
SpdyFramer::SpdyFramer(SpdyMajorVersion version)
: current_frame_buffer_(new char[kControlFrameBufferSize]),
enable_compression_(true),
visitor_(NULL),
Expand All @@ -125,8 +123,8 @@ SpdyFramer::SpdyFramer(int version)
spdy_version_(version),
syn_frame_processed_(false),
probable_http_response_(false) {
DCHECK_GE(kMaxSpdyVersion, version);
DCHECK_LE(kMinSpdyVersion, version);
DCHECK_GE(spdy_version_, SPDY_MIN_VERSION);
DCHECK_LE(spdy_version_, SPDY_MAX_VERSION);
Reset();
}

Expand Down Expand Up @@ -163,10 +161,9 @@ size_t SpdyFramer::GetDataFrameMinimumSize() const {
// Size, in bytes, of the control frame header.
size_t SpdyFramer::GetControlFrameHeaderSize() const {
switch (protocol_version()) {
case 2:
case 3:
return 8;
case 4:
case SPDY2:
case SPDY3:
case SPDY4:
return 8;
}
LOG(DFATAL) << "Unhandled SPDY version.";
Expand Down
21 changes: 6 additions & 15 deletions net/spdy/spdy_framer.h
Original file line number Diff line number Diff line change
Expand Up @@ -289,12 +289,6 @@ class NET_EXPORT_PRIVATE SpdyFramer {
LAST_ERROR, // Must be the last entry in the enum.
};

// The minimum supported SPDY version that SpdyFramer can speak.
static const int kMinSpdyVersion;

// The maximum supported SPDY version that SpdyFramer can speak.
static const int kMaxSpdyVersion;

// Constant for invalid (or unknown) stream IDs.
static const SpdyStreamId kInvalidStream;

Expand All @@ -314,7 +308,7 @@ class NET_EXPORT_PRIVATE SpdyFramer {
const SpdyHeaderBlock* headers);

// Create a new Framer, provided a SPDY version.
explicit SpdyFramer(int version);
explicit SpdyFramer(SpdyMajorVersion version);
virtual ~SpdyFramer();

// Set callbacks to be called from the framer. A visitor must be set, or
Expand Down Expand Up @@ -507,7 +501,7 @@ class NET_EXPORT_PRIVATE SpdyFramer {
static const char* StatusCodeToString(int status_code);
static const char* FrameTypeToString(SpdyFrameType type);

int protocol_version() const { return spdy_version_; }
SpdyMajorVersion protocol_version() const { return spdy_version_; }

bool probable_http_response() const { return probable_http_response_; }

Expand Down Expand Up @@ -616,10 +610,10 @@ class NET_EXPORT_PRIVATE SpdyFramer {
// The theoretical maximum for SPDY3 and earlier is (2^24 - 1) +
// 8, since the length field does not count the size of the
// header.
if (spdy_version_ == kSpdyVersion2) {
if (spdy_version_ == SPDY2) {
return 64 * 1024;
}
if (spdy_version_ == kSpdyVersion3) {
if (spdy_version_ == SPDY3) {
return 16 * 1024 * 1024;
}
// The theoretical maximum for SPDY4 is 2^16 - 1, as the length
Expand Down Expand Up @@ -674,11 +668,8 @@ class NET_EXPORT_PRIVATE SpdyFramer {

std::string display_protocol_;

// The SPDY version to be spoken/understood by this framer. We support only
// integer versions here, as major version numbers indicate framer-layer
// incompatibility and minor version numbers indicate application-layer
// incompatibility.
const int spdy_version_;
// The major SPDY version to be spoken/understood by this framer.
const SpdyMajorVersion spdy_version_;

// Tracks if we've ever gotten far enough in framing to see a control frame of
// type SYN_STREAM or SYN_REPLY.
Expand Down
Loading

0 comments on commit 977bd84

Please sign in to comment.