diff options
author | toyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-12 17:08:35 +0000 |
---|---|---|
committer | toyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-12 17:08:35 +0000 |
commit | c5690fecc25195916a58a338548fb7f287c4ae7e (patch) | |
tree | 0b38789fe5545058e95d5737188507664a871ec9 /net/spdy | |
parent | e51cf871c8889571864a8f2ae57101a57581b088 (diff) | |
download | chromium_src-c5690fecc25195916a58a338548fb7f287c4ae7e.zip chromium_src-c5690fecc25195916a58a338548fb7f287c4ae7e.tar.gz chromium_src-c5690fecc25195916a58a338548fb7f287c4ae7e.tar.bz2 |
SPDY_SESSION_RECV_DATA doesn't indicate the DATA_FLAG_FIN
We could not privide correct flags information for SPDY_SESSION_RECV_DATA.
This is because SPDY_SESSION_RECV_DATA events are not mapped into actual SPDY
data frames.
This change removes the flags information from SPDY_SESSION_RECV_DATA and adds
a boolean fin flag instead.
BUG=79153
TEST=manual check on chrome://net-internals/#events SPDY_SESSION
Review URL: https://chromiumcodereview.appspot.com/10736007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146367 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/spdy')
-rw-r--r-- | net/spdy/buffered_spdy_framer.cc | 5 | ||||
-rw-r--r-- | net/spdy/buffered_spdy_framer.h | 6 | ||||
-rw-r--r-- | net/spdy/buffered_spdy_framer_spdy2_unittest.cc | 3 | ||||
-rw-r--r-- | net/spdy/buffered_spdy_framer_spdy3_unittest.cc | 3 | ||||
-rw-r--r-- | net/spdy/spdy_framer.cc | 10 | ||||
-rw-r--r-- | net/spdy/spdy_framer.h | 3 | ||||
-rw-r--r-- | net/spdy/spdy_framer_test.cc | 15 | ||||
-rw-r--r-- | net/spdy/spdy_session.cc | 5 | ||||
-rw-r--r-- | net/spdy/spdy_session.h | 3 |
9 files changed, 33 insertions, 20 deletions
diff --git a/net/spdy/buffered_spdy_framer.cc b/net/spdy/buffered_spdy_framer.cc index 097d0fe..08012c9 100644 --- a/net/spdy/buffered_spdy_framer.cc +++ b/net/spdy/buffered_spdy_framer.cc @@ -155,8 +155,9 @@ void BufferedSpdyFramer::OnDataFrameHeader(const SpdyDataFrame* frame) { void BufferedSpdyFramer::OnStreamFrameData(SpdyStreamId stream_id, const char* data, - size_t len) { - visitor_->OnStreamFrameData(stream_id, data, len); + size_t len, + SpdyDataFlags flags) { + visitor_->OnStreamFrameData(stream_id, data, len, flags); } void BufferedSpdyFramer::OnSetting(SpdySettingsIds id, diff --git a/net/spdy/buffered_spdy_framer.h b/net/spdy/buffered_spdy_framer.h index c4f455b..e13df30 100644 --- a/net/spdy/buffered_spdy_framer.h +++ b/net/spdy/buffered_spdy_framer.h @@ -54,7 +54,8 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramerVisitorInterface { // this method will be called with a zero-length buffer. virtual void OnStreamFrameData(SpdyStreamId stream_id, const char* data, - size_t len) = 0; + size_t len, + SpdyDataFlags flags) = 0; // Called when an individual setting within a SETTINGS frame has been parsed // and validated. @@ -116,7 +117,8 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramer size_t len) OVERRIDE; virtual void OnStreamFrameData(SpdyStreamId stream_id, const char* data, - size_t len) OVERRIDE; + size_t len, + SpdyDataFlags flags) OVERRIDE; virtual void OnSetting( SpdySettingsIds id, uint8 flags, uint32 value) OVERRIDE; virtual void OnPing(uint32 unique_id) OVERRIDE; diff --git a/net/spdy/buffered_spdy_framer_spdy2_unittest.cc b/net/spdy/buffered_spdy_framer_spdy2_unittest.cc index 1a1bf7e..3814128 100644 --- a/net/spdy/buffered_spdy_framer_spdy2_unittest.cc +++ b/net/spdy/buffered_spdy_framer_spdy2_unittest.cc @@ -70,7 +70,8 @@ class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface { void OnStreamFrameData(SpdyStreamId stream_id, const char* data, - size_t len) { + size_t len, + SpdyDataFlags flags) { LOG(FATAL) << "Unexpected OnStreamFrameData call."; } diff --git a/net/spdy/buffered_spdy_framer_spdy3_unittest.cc b/net/spdy/buffered_spdy_framer_spdy3_unittest.cc index ca11873..c69ac4d 100644 --- a/net/spdy/buffered_spdy_framer_spdy3_unittest.cc +++ b/net/spdy/buffered_spdy_framer_spdy3_unittest.cc @@ -70,7 +70,8 @@ class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface { void OnStreamFrameData(SpdyStreamId stream_id, const char* data, - size_t len) { + size_t len, + SpdyDataFlags flags) { LOG(FATAL) << "Unexpected OnStreamFrameData call."; } diff --git a/net/spdy/spdy_framer.cc b/net/spdy/spdy_framer.cc index d5ed207..1d14714 100644 --- a/net/spdy/spdy_framer.cc +++ b/net/spdy/spdy_framer.cc @@ -422,7 +422,8 @@ size_t SpdyFramer::ProcessCommonHeader(const char* data, size_t len) { } else { // Empty data frame. if (current_frame.flags() & DATA_FLAG_FIN) { - visitor_->OnStreamFrameData(data_frame.stream_id(), NULL, 0); + visitor_->OnStreamFrameData(data_frame.stream_id(), + NULL, 0, DATA_FLAG_FIN); } CHANGE_STATE(SPDY_AUTO_RESET); } @@ -757,7 +758,7 @@ size_t SpdyFramer::ProcessControlFrameHeaderBlock(const char* data, // If this is a FIN, tell the caller. if (control_frame.flags() & CONTROL_FLAG_FIN) { visitor_->OnStreamFrameData(GetControlFrameStreamId(&control_frame), - NULL, 0); + NULL, 0, DATA_FLAG_FIN); } CHANGE_STATE(SPDY_AUTO_RESET); @@ -957,7 +958,7 @@ size_t SpdyFramer::ProcessDataFramePayload(const char* data, size_t len) { // Only inform the visitor if there is data. if (amount_to_forward) { visitor_->OnStreamFrameData(current_data_frame.stream_id(), - data, amount_to_forward); + data, amount_to_forward, SpdyDataFlags()); } } data += amount_to_forward; @@ -968,7 +969,8 @@ size_t SpdyFramer::ProcessDataFramePayload(const char* data, size_t len) { // frame, inform the visitor of EOF via a 0-length data frame. if (!remaining_data_ && current_data_frame.flags() & DATA_FLAG_FIN) { - visitor_->OnStreamFrameData(current_data_frame.stream_id(), NULL, 0); + visitor_->OnStreamFrameData(current_data_frame.stream_id(), + NULL, 0, DATA_FLAG_FIN); } } diff --git a/net/spdy/spdy_framer.h b/net/spdy/spdy_framer.h index 2e53a87..1f82876 100644 --- a/net/spdy/spdy_framer.h +++ b/net/spdy/spdy_framer.h @@ -189,7 +189,8 @@ class NET_EXPORT_PRIVATE SpdyFramerVisitorInterface { // this method will be called with a zero-length buffer. virtual void OnStreamFrameData(SpdyStreamId stream_id, const char* data, - size_t len) = 0; + size_t len, + SpdyDataFlags flags) = 0; // Called when a complete setting within a SETTINGS frame has been parsed and // validated. diff --git a/net/spdy/spdy_framer_test.cc b/net/spdy/spdy_framer_test.cc index bb923b8..fc1edde 100644 --- a/net/spdy/spdy_framer_test.cc +++ b/net/spdy/spdy_framer_test.cc @@ -42,9 +42,10 @@ class MockVisitor : public SpdyFramerVisitorInterface { MOCK_METHOD2(OnCredentialFrameData, bool(const char* header_data, size_t len)); MOCK_METHOD1(OnDataFrameHeader, void(const SpdyDataFrame* frame)); - MOCK_METHOD3(OnStreamFrameData, void(SpdyStreamId stream_id, + MOCK_METHOD4(OnStreamFrameData, void(SpdyStreamId stream_id, const char* data, - size_t len)); + size_t len, + SpdyDataFlags flags)); MOCK_METHOD3(OnSetting, void(SpdySettingsIds id, uint8 flags, uint32 value)); MOCK_METHOD1(OnPing, void(uint32 unique_id)); MOCK_METHOD2(OnRstStream, void(SpdyStreamId stream_id, @@ -185,7 +186,8 @@ class SpdyFramerTestUtil { } virtual void OnStreamFrameData(SpdyStreamId stream_id, const char* data, - size_t len) { + size_t len, + SpdyDataFlags flags) { LOG(FATAL); } virtual void OnSetting(SpdySettingsIds id, uint8 flags, uint32 value) { @@ -345,7 +347,8 @@ class TestSpdyVisitor : public SpdyFramerVisitorInterface { void OnStreamFrameData(SpdyStreamId stream_id, const char* data, - size_t len) { + size_t len, + SpdyDataFlags flags) { EXPECT_EQ(header_stream_id_, stream_id); if (len == 0) ++zero_length_data_frame_count_; @@ -3102,9 +3105,9 @@ TEST_P(SpdyFramerTest, DataFrameFlags) { // Flags are just passed along since they need to be validated at // a higher protocol layer. EXPECT_CALL(visitor, OnDataFrameHeader(_)); - EXPECT_CALL(visitor, OnStreamFrameData(_, _, 5)); + EXPECT_CALL(visitor, OnStreamFrameData(_, _, 5, SpdyDataFlags())); if (flags & DATA_FLAG_FIN) { - EXPECT_CALL(visitor, OnStreamFrameData(_, _, 0)); + EXPECT_CALL(visitor, OnStreamFrameData(_, _, 0, DATA_FLAG_FIN)); } size_t frame_size = frame->length() + SpdyFrame::kHeaderSize; diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc index 7f5ecfc..c127cdf 100644 --- a/net/spdy/spdy_session.cc +++ b/net/spdy/spdy_session.cc @@ -1206,11 +1206,12 @@ void SpdySession::OnStreamError(SpdyStreamId stream_id, void SpdySession::OnStreamFrameData(SpdyStreamId stream_id, const char* data, - size_t len) { + size_t len, + SpdyDataFlags flags) { if (net_log().IsLoggingAllEvents()) { net_log().AddEvent( NetLog::TYPE_SPDY_SESSION_RECV_DATA, - base::Bind(&NetLogSpdyDataCallback, stream_id, len, SpdyDataFlags())); + base::Bind(&NetLogSpdyDataCallback, stream_id, len, flags)); } if (!IsStreamActive(stream_id)) { diff --git a/net/spdy/spdy_session.h b/net/spdy/spdy_session.h index 2c57f72..9b4cf73 100644 --- a/net/spdy/spdy_session.h +++ b/net/spdy/spdy_session.h @@ -472,7 +472,8 @@ class NET_EXPORT SpdySession : public base::RefCounted<SpdySession>, SpdyGoAwayStatus status) OVERRIDE; virtual void OnStreamFrameData(SpdyStreamId stream_id, const char* data, - size_t len) OVERRIDE; + size_t len, + SpdyDataFlags flags) OVERRIDE; virtual void OnSetting( SpdySettingsIds id, uint8 flags, uint32 value) OVERRIDE; virtual void OnWindowUpdate(SpdyStreamId stream_id, |