summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-14 23:28:09 +0000
committerakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-14 23:28:09 +0000
commit9bb5a525fcb2fc5fa24cb412ed0a425c9f82cfce (patch)
tree0359924eb68dc067b909fb9868231fc667733acc /net
parentf35f422934f280d373459acf452197f26373cf45 (diff)
downloadchromium_src-9bb5a525fcb2fc5fa24cb412ed0a425c9f82cfce.zip
chromium_src-9bb5a525fcb2fc5fa24cb412ed0a425c9f82cfce.tar.gz
chromium_src-9bb5a525fcb2fc5fa24cb412ed0a425c9f82cfce.tar.bz2
Remove SpdyHeadersControlFrame struct. Useful in SPDY 4 development.
This lands server change 42128883. Review URL: https://codereview.chromium.org/12262005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@182572 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r--net/spdy/buffered_spdy_framer.cc2
-rw-r--r--net/spdy/buffered_spdy_framer.h8
-rw-r--r--net/spdy/buffered_spdy_framer_spdy2_unittest.cc2
-rw-r--r--net/spdy/buffered_spdy_framer_spdy3_unittest.cc2
-rw-r--r--net/spdy/spdy_framer.cc62
-rw-r--r--net/spdy/spdy_framer.h10
-rw-r--r--net/spdy/spdy_framer_test.cc12
-rw-r--r--net/spdy/spdy_protocol.h40
-rw-r--r--net/spdy/spdy_protocol_test.cc10
-rw-r--r--net/spdy/spdy_session.cc4
-rw-r--r--net/spdy/spdy_session.h6
11 files changed, 44 insertions, 114 deletions
diff --git a/net/spdy/buffered_spdy_framer.cc b/net/spdy/buffered_spdy_framer.cc
index 85c4b87..6c6bb51 100644
--- a/net/spdy/buffered_spdy_framer.cc
+++ b/net/spdy/buffered_spdy_framer.cc
@@ -259,7 +259,7 @@ SpdyFrame* BufferedSpdyFramer::CreateGoAway(
return spdy_framer_.CreateGoAway(last_accepted_stream_id, status);
}
-SpdyHeadersControlFrame* BufferedSpdyFramer::CreateHeaders(
+SpdyFrame* BufferedSpdyFramer::CreateHeaders(
SpdyStreamId stream_id,
SpdyControlFlags flags,
bool compressed,
diff --git a/net/spdy/buffered_spdy_framer.h b/net/spdy/buffered_spdy_framer.h
index 234d296..63e4778 100644
--- a/net/spdy/buffered_spdy_framer.h
+++ b/net/spdy/buffered_spdy_framer.h
@@ -165,10 +165,10 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramer
SpdyFrame* CreateGoAway(
SpdyStreamId last_accepted_stream_id,
SpdyGoAwayStatus status) const;
- SpdyHeadersControlFrame* CreateHeaders(SpdyStreamId stream_id,
- SpdyControlFlags flags,
- bool compressed,
- const SpdyHeaderBlock* headers);
+ SpdyFrame* CreateHeaders(SpdyStreamId stream_id,
+ SpdyControlFlags flags,
+ bool compressed,
+ const SpdyHeaderBlock* headers);
SpdyFrame* CreateWindowUpdate(
SpdyStreamId stream_id,
uint32 delta_window_size) const;
diff --git a/net/spdy/buffered_spdy_framer_spdy2_unittest.cc b/net/spdy/buffered_spdy_framer_spdy2_unittest.cc
index 28e844d..72e568d 100644
--- a/net/spdy/buffered_spdy_framer_spdy2_unittest.cc
+++ b/net/spdy/buffered_spdy_framer_spdy2_unittest.cc
@@ -256,7 +256,7 @@ TEST_F(BufferedSpdyFramerSpdy2Test, ReadHeadersHeaderBlock) {
headers["alpha"] = "beta";
headers["gamma"] = "delta";
BufferedSpdyFramer framer(2, true);
- scoped_ptr<SpdyHeadersControlFrame> control_frame(
+ scoped_ptr<SpdyFrame> control_frame(
framer.CreateHeaders(1, // stream_id
CONTROL_FLAG_NONE,
true, // compress
diff --git a/net/spdy/buffered_spdy_framer_spdy3_unittest.cc b/net/spdy/buffered_spdy_framer_spdy3_unittest.cc
index fc3094d..9aa161b 100644
--- a/net/spdy/buffered_spdy_framer_spdy3_unittest.cc
+++ b/net/spdy/buffered_spdy_framer_spdy3_unittest.cc
@@ -255,7 +255,7 @@ TEST_F(BufferedSpdyFramerSpdy3Test, ReadHeadersHeaderBlock) {
headers["alpha"] = "beta";
headers["gamma"] = "delta";
BufferedSpdyFramer framer(3, true);
- scoped_ptr<SpdyHeadersControlFrame> control_frame(
+ scoped_ptr<SpdyFrame> control_frame(
framer.CreateHeaders(1, // stream_id
CONTROL_FLAG_NONE,
true, // compress
diff --git a/net/spdy/spdy_framer.cc b/net/spdy/spdy_framer.cc
index f0191ad..5f12a6c 100644
--- a/net/spdy/spdy_framer.cc
+++ b/net/spdy/spdy_framer.cc
@@ -674,11 +674,7 @@ void SpdyFramer::ProcessControlFrameHeader() {
frame_size_without_variable_data = GetSynReplyMinimumSize();
break;
case HEADERS:
- frame_size_without_variable_data = SpdyHeadersControlFrame::size();
- // SPDY 2 had two bytes of unused space preceeding payload.
- if (spdy_version_ < 3) {
- frame_size_without_variable_data += 2;
- }
+ frame_size_without_variable_data = GetHeadersMinimumSize();
break;
case SETTINGS:
frame_size_without_variable_data = SpdySettingsControlFrame::size();
@@ -965,6 +961,8 @@ size_t SpdyFramer::ProcessControlFrameBeforeHeaderBlock(const char* data,
CHANGE_STATE(SPDY_CONTROL_FRAME_HEADER_BLOCK);
break;
case SYN_REPLY:
+ case HEADERS:
+ // SYN_REPLY and HEADERS are the same, save for the visitor call.
{
SpdyFrameReader reader(current_frame_buffer_.get(),
current_frame_len_);
@@ -981,17 +979,11 @@ size_t SpdyFramer::ProcessControlFrameBeforeHeaderBlock(const char* data,
reader.Seek(2);
}
DCHECK(reader.IsDoneReading());
- visitor_->OnSynReply(stream_id, (flags & CONTROL_FLAG_FIN) != 0);
- }
- CHANGE_STATE(SPDY_CONTROL_FRAME_HEADER_BLOCK);
- break;
- case HEADERS:
- {
- SpdyHeadersControlFrame* headers_frame =
- reinterpret_cast<SpdyHeadersControlFrame*>(&control_frame);
- visitor_->OnHeaders(
- headers_frame->stream_id(),
- (headers_frame->flags() & CONTROL_FLAG_FIN) != 0);
+ if (control_frame.type() == SYN_REPLY) {
+ visitor_->OnSynReply(stream_id, (flags & CONTROL_FLAG_FIN) != 0);
+ } else {
+ visitor_->OnHeaders(stream_id, (flags & CONTROL_FLAG_FIN) != 0);
+ }
}
CHANGE_STATE(SPDY_CONTROL_FRAME_HEADER_BLOCK);
break;
@@ -1019,14 +1011,12 @@ size_t SpdyFramer::ProcessControlFrameHeaderBlock(const char* data,
if (control_frame.type() == SYN_STREAM) {
stream_id = reinterpret_cast<const SpdySynStreamControlFrame*>(
&control_frame)->stream_id();
- } else if (control_frame.type() == SYN_REPLY) {
+ } else if (control_frame.type() == SYN_REPLY ||
+ control_frame.type() == HEADERS) {
SpdyFrameReader reader(current_frame_buffer_.get(), current_frame_len_);
reader.Seek(SpdyFrame::kHeaderSize); // Seek past frame header.
bool read_successful = reader.ReadUInt31(&stream_id);
DCHECK(read_successful);
- } else if (control_frame.type() == HEADERS) {
- stream_id = reinterpret_cast<const SpdyHeadersControlFrame*>(
- &control_frame)->stream_id();
} else {
LOG(DFATAL) << "Unhandled frame type in ProcessControlFrameHeaderBlock.";
}
@@ -1624,7 +1614,7 @@ SpdySerializedFrame* SpdyFramer::SerializeGoAway(
return builder.take();
}
-SpdyHeadersControlFrame* SpdyFramer::CreateHeaders(
+SpdyFrame* SpdyFramer::CreateHeaders(
SpdyStreamId stream_id,
SpdyControlFlags flags,
bool compressed,
@@ -1637,12 +1627,11 @@ SpdyHeadersControlFrame* SpdyFramer::CreateHeaders(
// TODO(hkhalil): Avoid copy here.
*(headers.GetMutableNameValueBlock()) = *header_block;
- scoped_ptr<SpdyHeadersControlFrame> headers_frame(
- reinterpret_cast<SpdyHeadersControlFrame*>(SerializeHeaders(headers)));
+ scoped_ptr<SpdyControlFrame> headers_frame(
+ reinterpret_cast<SpdyControlFrame*>(SerializeHeaders(headers)));
if (compressed) {
- return reinterpret_cast<SpdyHeadersControlFrame*>(
- CompressControlFrame(*headers_frame.get(),
- headers.GetMutableNameValueBlock()));
+ return CompressControlFrame(*headers_frame.get(),
+ headers.GetMutableNameValueBlock());
}
return headers_frame.release();
}
@@ -1835,26 +1824,17 @@ bool SpdyFramer::GetFrameBoundaries(const SpdyFrame& frame,
}
break;
case SYN_REPLY:
+ case HEADERS:
+ // It is okay to conflate HEADERS and SYN_REPLY here since they are
+ // identical in structure. The following DCHECK_EQ should politely club
+ // the developer over the head should this assertion change without the
+ // code below changing as well.
+ DCHECK_EQ(GetSynReplyMinimumSize(), GetHeadersMinimumSize());
*header_length = GetSynReplyMinimumSize();
*payload_length = frame.length() -
(*header_length - GetControlFrameMinimumSize());
*payload = frame.data() + *header_length;
break;
- case HEADERS:
- {
- const SpdyHeadersControlFrame& headers_frame =
- reinterpret_cast<const SpdyHeadersControlFrame&>(frame);
- frame_size = SpdyHeadersControlFrame::size();
- *payload_length = headers_frame.header_block_len();
- *header_length = frame_size;
- *payload = frame.data() + *header_length;
- // SPDY 2 had two bytes of unused space preceeding payload.
- if (spdy_version_ < 3) {
- *header_length += 2;
- *payload += 2;
- }
- }
- break;
default:
// TODO(mbelshe): set an error?
return false; // We can't compress this frame!
diff --git a/net/spdy/spdy_framer.h b/net/spdy/spdy_framer.h
index 7e40443..ef0a54f 100644
--- a/net/spdy/spdy_framer.h
+++ b/net/spdy/spdy_framer.h
@@ -403,13 +403,13 @@ class NET_EXPORT_PRIVATE SpdyFramer {
SpdyGoAwayStatus status) const;
SpdySerializedFrame* SerializeGoAway(const SpdyGoAwayIR& goaway) const;
- // Creates an instance of SpdyHeadersControlFrame. The HEADERS frame is used
+ // Creates and serializes a HEADERS frame. The HEADERS frame is used
// for sending additional headers outside of a SYN_STREAM/SYN_REPLY. The
// arguments are the same as for CreateSynReply.
- SpdyHeadersControlFrame* CreateHeaders(SpdyStreamId stream_id,
- SpdyControlFlags flags,
- bool compressed,
- const SpdyHeaderBlock* headers);
+ SpdyFrame* CreateHeaders(SpdyStreamId stream_id,
+ SpdyControlFlags flags,
+ bool compressed,
+ const SpdyHeaderBlock* headers);
SpdySerializedFrame* SerializeHeaders(const SpdyHeadersIR& headers);
// Creates and serializes a WINDOW_UPDATE frame. The WINDOW_UPDATE
diff --git a/net/spdy/spdy_framer_test.cc b/net/spdy/spdy_framer_test.cc
index 17efefb..b9de684 100644
--- a/net/spdy/spdy_framer_test.cc
+++ b/net/spdy/spdy_framer_test.cc
@@ -135,13 +135,13 @@ class SpdyFramerTestUtil {
if (fin) {
flags &= CONTROL_FLAG_FIN;
}
- scoped_ptr<SpdyHeadersControlFrame> frame(
+ scoped_ptr<SpdyFrame> frame(
framer.CreateHeaders(stream_id,
static_cast<SpdyControlFlags>(flags),
false,
&null_headers));
ResetBuffer();
- memcpy(buffer_.get(), frame->data(), SpdyHeadersControlFrame::size());
+ memcpy(buffer_.get(), frame->data(), framer.GetHeadersMinimumSize());
size_ += SpdySynStreamControlFrame::size();
}
@@ -152,13 +152,13 @@ class SpdyFramerTestUtil {
if (fin) {
flags &= CONTROL_FLAG_FIN;
}
- scoped_ptr<SpdyHeadersControlFrame> frame(
+ scoped_ptr<SpdyFrame> frame(
framer.CreateHeaders(stream_id,
static_cast<SpdyControlFlags>(flags),
false,
&null_headers));
ResetBuffer();
- memcpy(buffer_.get(), frame->data(), SpdyHeadersControlFrame::size());
+ memcpy(buffer_.get(), frame->data(), framer.GetHeadersMinimumSize());
size_ += SpdySynStreamControlFrame::size();
}
@@ -2491,7 +2491,7 @@ TEST_P(SpdyFramerTest, ReadCompressedHeadersHeaderBlock) {
headers["alpha"] = "beta";
headers["gamma"] = "delta";
SpdyFramer framer(spdy_version_);
- scoped_ptr<SpdyHeadersControlFrame> control_frame(
+ scoped_ptr<SpdyFrame> control_frame(
framer.CreateHeaders(1, // stream_id
CONTROL_FLAG_NONE,
true, // compress
@@ -2518,7 +2518,7 @@ TEST_P(SpdyFramerTest, ReadCompressedHeadersHeaderBlockWithHalfClose) {
headers["alpha"] = "beta";
headers["gamma"] = "delta";
SpdyFramer framer(spdy_version_);
- scoped_ptr<SpdyHeadersControlFrame> control_frame(
+ scoped_ptr<SpdyFrame> control_frame(
framer.CreateHeaders(1, // stream_id
CONTROL_FLAG_FIN,
true, // compress
diff --git a/net/spdy/spdy_protocol.h b/net/spdy/spdy_protocol.h
index 4d14fe0..2d4825a 100644
--- a/net/spdy/spdy_protocol.h
+++ b/net/spdy/spdy_protocol.h
@@ -497,11 +497,6 @@ struct SpdySettingsControlFrameBlock : SpdyFrameBlock {
// Variable data here.
};
-// A HEADERS Control Frame structure.
-struct SpdyHeadersControlFrameBlock : SpdyFrameBlock {
- SpdyStreamId stream_id_;
-};
-
#pragma pack(pop)
class SpdyFrame;
@@ -1054,41 +1049,6 @@ class SpdySettingsControlFrame : public SpdyControlFrame {
DISALLOW_COPY_AND_ASSIGN(SpdySettingsControlFrame);
};
-// A HEADERS frame.
-class SpdyHeadersControlFrame : public SpdyControlFrame {
- public:
- SpdyHeadersControlFrame() : SpdyControlFrame(size()) {}
- SpdyHeadersControlFrame(char* data, bool owns_buffer)
- : SpdyControlFrame(data, owns_buffer) {}
-
- SpdyStreamId stream_id() const {
- return ntohl(block()->stream_id_) & kStreamIdMask;
- }
-
- // The number of bytes in the header block beyond the frame header length.
- int header_block_len() const {
- size_t header_block_len = length() - (size() - SpdyFrame::kHeaderSize);
- // SPDY 2 had 2 bytes of unused space preceeding the header block.
- if (version() < 3) {
- header_block_len -= 2;
- }
- return header_block_len;
- }
-
- // Returns the size of the SpdyHeadersControlFrameBlock structure.
- // Note: this is not the size of the SpdyHeadersControlFrame class.
- static size_t size() { return sizeof(SpdyHeadersControlFrameBlock); }
-
- private:
- const struct SpdyHeadersControlFrameBlock* block() const {
- return static_cast<SpdyHeadersControlFrameBlock*>(frame_);
- }
- struct SpdyHeadersControlFrameBlock* mutable_block() {
- return static_cast<SpdyHeadersControlFrameBlock*>(frame_);
- }
- DISALLOW_COPY_AND_ASSIGN(SpdyHeadersControlFrame);
-};
-
} // namespace net
#endif // NET_SPDY_SPDY_PROTOCOL_H_
diff --git a/net/spdy/spdy_protocol_test.cc b/net/spdy/spdy_protocol_test.cc
index 9c1de18..ae5f04b 100644
--- a/net/spdy/spdy_protocol_test.cc
+++ b/net/spdy/spdy_protocol_test.cc
@@ -45,7 +45,6 @@ TEST_P(SpdyProtocolTest, ProtocolConstants) {
EXPECT_EQ(8u, SpdyControlFrame::kHeaderSize);
EXPECT_EQ(18u, SpdySynStreamControlFrame::size());
EXPECT_EQ(12u, SpdySettingsControlFrame::size());
- EXPECT_EQ(12u, SpdyHeadersControlFrame::size());
EXPECT_EQ(4u, sizeof(FlagsAndLength));
EXPECT_EQ(1, SYN_STREAM);
EXPECT_EQ(2, SYN_REPLY);
@@ -100,15 +99,6 @@ TEST_P(SpdyProtocolTest, ControlFrameStructs) {
syn_frame->set_associated_stream_id(999u);
EXPECT_EQ(123u, syn_frame->stream_id());
EXPECT_EQ(999u, syn_frame->associated_stream_id());
-
- scoped_ptr<SpdyHeadersControlFrame> headers_frame(
- framer.CreateHeaders(123, CONTROL_FLAG_NONE, false, &headers));
- EXPECT_EQ(framer.protocol_version(), headers_frame->version());
- EXPECT_TRUE(headers_frame->is_control_frame());
- EXPECT_EQ(HEADERS, headers_frame->type());
- EXPECT_EQ(123u, headers_frame->stream_id());
- EXPECT_EQ(IsSpdy2() ? 2 : 4, headers_frame->header_block_len());
- EXPECT_EQ(0, headers_frame->flags());
}
TEST_P(SpdyProtocolTest, TestDataFrame) {
diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc
index 96f8696..0fd3a1b 100644
--- a/net/spdy/spdy_session.cc
+++ b/net/spdy/spdy_session.cc
@@ -644,7 +644,7 @@ SpdyFrame* SpdySession::CreateCredentialFrame(
return credential_frame.release();
}
-SpdyHeadersControlFrame* SpdySession::CreateHeadersFrame(
+SpdyFrame* SpdySession::CreateHeadersFrame(
SpdyStreamId stream_id,
const SpdyHeaderBlock& headers,
SpdyControlFlags flags) {
@@ -654,7 +654,7 @@ SpdyHeadersControlFrame* SpdySession::CreateHeadersFrame(
CHECK_EQ(stream->stream_id(), stream_id);
// Create a HEADER frame.
- scoped_ptr<SpdyHeadersControlFrame> frame(
+ scoped_ptr<SpdyFrame> frame(
buffered_spdy_framer_->CreateHeaders(stream_id, flags, true, &headers));
if (net_log().IsLoggingAllEvents()) {
diff --git a/net/spdy/spdy_session.h b/net/spdy/spdy_session.h
index bf6927d..865e863 100644
--- a/net/spdy/spdy_session.h
+++ b/net/spdy/spdy_session.h
@@ -222,9 +222,9 @@ class NET_EXPORT SpdySession : public base::RefCounted<SpdySession>,
RequestPriority priority);
// Write a HEADERS frame to the stream.
- SpdyHeadersControlFrame* CreateHeadersFrame(SpdyStreamId stream_id,
- const SpdyHeaderBlock& headers,
- SpdyControlFlags flags);
+ SpdyFrame* CreateHeadersFrame(SpdyStreamId stream_id,
+ const SpdyHeaderBlock& headers,
+ SpdyControlFlags flags);
// Write a data frame to the stream.
// Used to create and queue a data frame for the given stream.