| Index: net/spdy/buffered_spdy_framer_unittest.cc
|
| diff --git a/net/spdy/buffered_spdy_framer_unittest.cc b/net/spdy/buffered_spdy_framer_unittest.cc
|
| index 4814d8304c0415f7dfb4e64139c2c3664829387d..1a08caf3172e1dd51f2ef8a0c36c371e95e3e25a 100644
|
| --- a/net/spdy/buffered_spdy_framer_unittest.cc
|
| +++ b/net/spdy/buffered_spdy_framer_unittest.cc
|
| @@ -23,6 +23,7 @@ class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface {
|
| headers_frame_count_(0),
|
| push_promise_frame_count_(0),
|
| goaway_count_(0),
|
| + altsvc_count_(0),
|
| header_stream_id_(static_cast<SpdyStreamId>(-1)),
|
| promised_stream_id_(static_cast<SpdyStreamId>(-1)) {}
|
|
|
| @@ -132,6 +133,16 @@ class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface {
|
| headers_ = headers;
|
| }
|
|
|
| + void OnAltSvc(SpdyStreamId stream_id,
|
| + base::StringPiece origin,
|
| + const SpdyAltSvcWireFormat::AlternativeServiceVector&
|
| + altsvc_vector) override {
|
| + altsvc_count_++;
|
| + altsvc_stream_id_ = stream_id;
|
| + origin.CopyToString(&altsvc_origin_);
|
| + altsvc_vector_ = altsvc_vector;
|
| + }
|
| +
|
| bool OnUnknownFrame(SpdyStreamId stream_id, int frame_type) override {
|
| return true;
|
| }
|
| @@ -166,6 +177,7 @@ class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface {
|
| int headers_frame_count_;
|
| int push_promise_frame_count_;
|
| int goaway_count_;
|
| + int altsvc_count_;
|
|
|
| // Header block streaming state:
|
| SpdyStreamId header_stream_id_;
|
| @@ -179,6 +191,11 @@ class TestBufferedSpdyVisitor : public BufferedSpdyFramerVisitorInterface {
|
| SpdyStreamId goaway_last_accepted_stream_id_;
|
| SpdyGoAwayStatus goaway_status_;
|
| std::string goaway_debug_data_;
|
| +
|
| + // OnAltSvc parameters.
|
| + SpdyStreamId altsvc_stream_id_;
|
| + std::string altsvc_origin_;
|
| + SpdyAltSvcWireFormat::AlternativeServiceVector altsvc_vector_;
|
| };
|
|
|
| } // namespace
|
| @@ -338,4 +355,31 @@ TEST_P(BufferedSpdyFramerTest, GoAwayDebugData) {
|
| EXPECT_EQ("foo", visitor.goaway_debug_data_);
|
| }
|
|
|
| +TEST_P(BufferedSpdyFramerTest, OnAltSvc) {
|
| + if (spdy_version() < HTTP2)
|
| + return;
|
| +
|
| + const SpdyStreamId altsvc_stream_id(1);
|
| + const char altsvc_origin[] = "https://www.example.org";
|
| + SpdyAltSvcIR altsvc_ir(altsvc_stream_id);
|
| + SpdyAltSvcWireFormat::AlternativeService alternative_service(
|
| + "quic", "alternative.example.org", 443, 86400,
|
| + SpdyAltSvcWireFormat::VersionVector());
|
| + altsvc_ir.add_altsvc(alternative_service);
|
| + altsvc_ir.set_origin(altsvc_origin);
|
| + BufferedSpdyFramer framer(spdy_version());
|
| + SpdySerializedFrame altsvc_frame(framer.SerializeFrame(altsvc_ir));
|
| +
|
| + TestBufferedSpdyVisitor visitor(spdy_version());
|
| + visitor.SimulateInFramer(
|
| + reinterpret_cast<unsigned char*>(altsvc_frame.data()),
|
| + altsvc_frame.size());
|
| + EXPECT_EQ(0, visitor.error_count_);
|
| + EXPECT_EQ(1, visitor.altsvc_count_);
|
| + EXPECT_EQ(altsvc_stream_id, visitor.altsvc_stream_id_);
|
| + EXPECT_EQ(altsvc_origin, visitor.altsvc_origin_);
|
| + ASSERT_EQ(1u, visitor.altsvc_vector_.size());
|
| + EXPECT_EQ(alternative_service, visitor.altsvc_vector_[0]);
|
| +}
|
| +
|
| } // namespace net
|
|
|