diff options
author | jgraettinger@chromium.org <jgraettinger@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-25 05:42:05 +0000 |
---|---|---|
committer | jgraettinger@chromium.org <jgraettinger@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-25 05:42:05 +0000 |
commit | 53669f6067d653bd701a145e0bde26edfa074605 (patch) | |
tree | 6e0cb51106b8ee6a1a421ac24f51794474527b07 /net/spdy/spdy_framer_test.cc | |
parent | 1214b853e84214f7e908a61272eefebe82b7303d (diff) | |
download | chromium_src-53669f6067d653bd701a145e0bde26edfa074605.zip chromium_src-53669f6067d653bd701a145e0bde26edfa074605.tar.gz chromium_src-53669f6067d653bd701a145e0bde26edfa074605.tar.bz2 |
Implements the ACK flag for SPDY4/HTTP2 PING frames
This lands server change 61378132 by birenroy.
Also update SpdySession, BufferedSpdyFramer, etc to accept and pass
the |is_ack| flag.
BUG=345769
Review URL: https://codereview.chromium.org/169283012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@253088 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/spdy/spdy_framer_test.cc')
-rw-r--r-- | net/spdy/spdy_framer_test.cc | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/net/spdy/spdy_framer_test.cc b/net/spdy/spdy_framer_test.cc index 1b46bf4..606c2cc 100644 --- a/net/spdy/spdy_framer_test.cc +++ b/net/spdy/spdy_framer_test.cc @@ -151,7 +151,7 @@ class SpdyFramerTestUtil { uint32 value) OVERRIDE { LOG(FATAL); } - virtual void OnPing(uint64 unique_id) OVERRIDE { + virtual void OnPing(SpdyPingId unique_id, bool is_ack) OVERRIDE { LOG(FATAL); } virtual void OnGoAway(SpdyStreamId last_accepted_stream_id, @@ -343,7 +343,7 @@ class TestSpdyVisitor : public SpdyFramerVisitorInterface, setting_count_++; } - virtual void OnPing(uint64 unique_id) OVERRIDE { + virtual void OnPing(SpdyPingId unique_id, bool is_ack) OVERRIDE { DLOG(FATAL); } @@ -2355,10 +2355,27 @@ TEST_P(SpdyFramerTest, CreatePingFrame) { 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xff, }; + const unsigned char kV4FrameDataWithAck[] = { + 0x00, 0x10, 0x06, 0x01, + 0x00, 0x00, 0x00, 0x00, + 0x12, 0x34, 0x56, 0x78, + 0x9a, 0xbc, 0xde, 0xff, + }; scoped_ptr<SpdyFrame> frame; if (IsSpdy4()) { - frame.reset(framer.SerializePing(SpdyPingIR(0x123456789abcdeffull))); + const SpdyPingId kPingId = 0x123456789abcdeffULL; + SpdyPingIR ping_ir(kPingId); + // Tests SpdyPingIR when the ping is not an ack. + ASSERT_FALSE(ping_ir.is_ack()); + frame.reset(framer.SerializePing(ping_ir)); CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); + + // Tests SpdyPingIR when the ping is an ack. + ping_ir.set_is_ack(true); + frame.reset(framer.SerializePing(ping_ir)); + CompareFrame(kDescription, *frame, + kV4FrameDataWithAck, arraysize(kV4FrameDataWithAck)); + } else { frame.reset(framer.SerializePing(SpdyPingIR(0x12345678ull))); CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); @@ -3900,22 +3917,26 @@ TEST_P(SpdyFramerTest, PingFrameFlags) { scoped_ptr<SpdyFrame> frame(framer.SerializePing(SpdyPingIR(42))); SetFrameFlags(frame.get(), flags, spdy_version_); - if (flags != 0) { - EXPECT_CALL(visitor, OnError(_)); + if (spdy_version_ >= SPDY4 && + flags == PING_FLAG_ACK) { + EXPECT_CALL(visitor, OnPing(42, true)); + } else if (flags == 0) { + EXPECT_CALL(visitor, OnPing(42, false)); } else { - EXPECT_CALL(visitor, OnPing(42)); + EXPECT_CALL(visitor, OnError(_)); } framer.ProcessInput(frame->data(), frame->size()); - if (flags != 0) { + if ((spdy_version_ >= SPDY4 && flags == PING_FLAG_ACK) || + flags == 0) { + EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); + EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) + << SpdyFramer::ErrorCodeToString(framer.error_code()); + } else { EXPECT_EQ(SpdyFramer::SPDY_ERROR, framer.state()); EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME_FLAGS, framer.error_code()) << SpdyFramer::ErrorCodeToString(framer.error_code()); - } else { - EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); - EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) - << SpdyFramer::ErrorCodeToString(framer.error_code()); } } } |