| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/spdy/spdy_framer.h" | 5 #include "net/spdy/spdy_framer.h" |
| 6 | 6 |
| 7 #include <stdlib.h> | 7 #include <stdlib.h> |
| 8 #include <string.h> | 8 #include <string.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 2415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2426 | 2426 |
| 2427 { | 2427 { |
| 2428 const char kDescription[] = "RST_STREAM frame"; | 2428 const char kDescription[] = "RST_STREAM frame"; |
| 2429 const unsigned char kV3FrameData[] = { // Also applies for V2. | 2429 const unsigned char kV3FrameData[] = { // Also applies for V2. |
| 2430 0x80, spdy_version_ch_, 0x00, 0x03, | 2430 0x80, spdy_version_ch_, 0x00, 0x03, |
| 2431 0x00, 0x00, 0x00, 0x08, | 2431 0x00, 0x00, 0x00, 0x08, |
| 2432 0x00, 0x00, 0x00, 0x01, | 2432 0x00, 0x00, 0x00, 0x01, |
| 2433 0x00, 0x00, 0x00, 0x01, | 2433 0x00, 0x00, 0x00, 0x01, |
| 2434 }; | 2434 }; |
| 2435 const unsigned char kH2FrameData[] = { | 2435 const unsigned char kH2FrameData[] = { |
| 2436 0x00, 0x00, 0x07, 0x03, | 2436 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0x00, |
| 2437 0x00, 0x00, 0x00, 0x00, | 2437 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, |
| 2438 0x01, 0x00, 0x00, 0x00, | |
| 2439 0x01, 0x52, 0x53, 0x54 | |
| 2440 }; | 2438 }; |
| 2441 SpdyRstStreamIR rst_stream(1, RST_STREAM_PROTOCOL_ERROR, "RST"); | 2439 SpdyRstStreamIR rst_stream(1, RST_STREAM_PROTOCOL_ERROR); |
| 2442 scoped_ptr<SpdyFrame> frame(framer.SerializeRstStream(rst_stream)); | 2440 scoped_ptr<SpdyFrame> frame(framer.SerializeRstStream(rst_stream)); |
| 2443 if (IsHttp2()) { | 2441 if (IsHttp2()) { |
| 2444 CompareFrame(kDescription, *frame, kH2FrameData, arraysize(kH2FrameData)); | 2442 CompareFrame(kDescription, *frame, kH2FrameData, arraysize(kH2FrameData)); |
| 2445 } else { | 2443 } else { |
| 2446 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); | 2444 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
| 2447 } | 2445 } |
| 2448 } | 2446 } |
| 2449 | 2447 |
| 2450 { | 2448 { |
| 2451 const char kDescription[] = "RST_STREAM frame with max stream ID"; | 2449 const char kDescription[] = "RST_STREAM frame with max stream ID"; |
| 2452 const unsigned char kV3FrameData[] = { // Also applies for V2. | 2450 const unsigned char kV3FrameData[] = { // Also applies for V2. |
| 2453 0x80, spdy_version_ch_, 0x00, 0x03, | 2451 0x80, spdy_version_ch_, 0x00, 0x03, |
| 2454 0x00, 0x00, 0x00, 0x08, | 2452 0x00, 0x00, 0x00, 0x08, |
| 2455 0x7f, 0xff, 0xff, 0xff, | 2453 0x7f, 0xff, 0xff, 0xff, |
| 2456 0x00, 0x00, 0x00, 0x01, | 2454 0x00, 0x00, 0x00, 0x01, |
| 2457 }; | 2455 }; |
| 2458 const unsigned char kH2FrameData[] = { | 2456 const unsigned char kH2FrameData[] = { |
| 2459 0x00, 0x00, 0x04, 0x03, | 2457 0x00, 0x00, 0x04, 0x03, |
| 2460 0x00, 0x7f, 0xff, 0xff, | 2458 0x00, 0x7f, 0xff, 0xff, |
| 2461 0xff, 0x00, 0x00, 0x00, | 2459 0xff, 0x00, 0x00, 0x00, |
| 2462 0x01, | 2460 0x01, |
| 2463 }; | 2461 }; |
| 2464 SpdyRstStreamIR rst_stream(0x7FFFFFFF, | 2462 SpdyRstStreamIR rst_stream(0x7FFFFFFF, RST_STREAM_PROTOCOL_ERROR); |
| 2465 RST_STREAM_PROTOCOL_ERROR, | |
| 2466 ""); | |
| 2467 scoped_ptr<SpdyFrame> frame(framer.SerializeRstStream(rst_stream)); | 2463 scoped_ptr<SpdyFrame> frame(framer.SerializeRstStream(rst_stream)); |
| 2468 if (IsHttp2()) { | 2464 if (IsHttp2()) { |
| 2469 CompareFrame(kDescription, *frame, kH2FrameData, arraysize(kH2FrameData)); | 2465 CompareFrame(kDescription, *frame, kH2FrameData, arraysize(kH2FrameData)); |
| 2470 } else { | 2466 } else { |
| 2471 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); | 2467 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
| 2472 } | 2468 } |
| 2473 } | 2469 } |
| 2474 | 2470 |
| 2475 { | 2471 { |
| 2476 const char kDescription[] = "RST_STREAM frame with max status code"; | 2472 const char kDescription[] = "RST_STREAM frame with max status code"; |
| 2477 const unsigned char kV3FrameData[] = { // Also applies for V2. | 2473 const unsigned char kV3FrameData[] = { // Also applies for V2. |
| 2478 0x80, spdy_version_ch_, 0x00, 0x03, | 2474 0x80, spdy_version_ch_, 0x00, 0x03, |
| 2479 0x00, 0x00, 0x00, 0x08, | 2475 0x00, 0x00, 0x00, 0x08, |
| 2480 0x7f, 0xff, 0xff, 0xff, | 2476 0x7f, 0xff, 0xff, 0xff, |
| 2481 0x00, 0x00, 0x00, 0x06, | 2477 0x00, 0x00, 0x00, 0x06, |
| 2482 }; | 2478 }; |
| 2483 const unsigned char kH2FrameData[] = { | 2479 const unsigned char kH2FrameData[] = { |
| 2484 0x00, 0x00, 0x04, 0x03, | 2480 0x00, 0x00, 0x04, 0x03, |
| 2485 0x00, 0x7f, 0xff, 0xff, | 2481 0x00, 0x7f, 0xff, 0xff, |
| 2486 0xff, 0x00, 0x00, 0x00, | 2482 0xff, 0x00, 0x00, 0x00, |
| 2487 0x02, | 2483 0x02, |
| 2488 }; | 2484 }; |
| 2489 SpdyRstStreamIR rst_stream(0x7FFFFFFF, | 2485 SpdyRstStreamIR rst_stream(0x7FFFFFFF, RST_STREAM_INTERNAL_ERROR); |
| 2490 RST_STREAM_INTERNAL_ERROR, | |
| 2491 ""); | |
| 2492 scoped_ptr<SpdyFrame> frame(framer.SerializeRstStream(rst_stream)); | 2486 scoped_ptr<SpdyFrame> frame(framer.SerializeRstStream(rst_stream)); |
| 2493 if (IsHttp2()) { | 2487 if (IsHttp2()) { |
| 2494 CompareFrame(kDescription, *frame, kH2FrameData, arraysize(kH2FrameData)); | 2488 CompareFrame(kDescription, *frame, kH2FrameData, arraysize(kH2FrameData)); |
| 2495 } else { | 2489 } else { |
| 2496 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); | 2490 CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
| 2497 } | 2491 } |
| 2498 } | 2492 } |
| 2499 } | 2493 } |
| 2500 | 2494 |
| 2501 TEST_P(SpdyFramerTest, CreateSettings) { | 2495 TEST_P(SpdyFramerTest, CreateSettings) { |
| (...skipping 2633 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5135 | 5129 |
| 5136 TEST_P(SpdyFramerTest, RstStreamFrameFlags) { | 5130 TEST_P(SpdyFramerTest, RstStreamFrameFlags) { |
| 5137 uint8 flags = 0; | 5131 uint8 flags = 0; |
| 5138 do { | 5132 do { |
| 5139 SCOPED_TRACE(testing::Message() << "Flags " << flags); | 5133 SCOPED_TRACE(testing::Message() << "Flags " << flags); |
| 5140 | 5134 |
| 5141 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; | 5135 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; |
| 5142 SpdyFramer framer(spdy_version_); | 5136 SpdyFramer framer(spdy_version_); |
| 5143 framer.set_visitor(&visitor); | 5137 framer.set_visitor(&visitor); |
| 5144 | 5138 |
| 5145 SpdyRstStreamIR rst_stream(13, RST_STREAM_CANCEL, ""); | 5139 SpdyRstStreamIR rst_stream(13, RST_STREAM_CANCEL); |
| 5146 scoped_ptr<SpdyFrame> frame(framer.SerializeRstStream(rst_stream)); | 5140 scoped_ptr<SpdyFrame> frame(framer.SerializeRstStream(rst_stream)); |
| 5147 SetFrameFlags(frame.get(), flags, spdy_version_); | 5141 SetFrameFlags(frame.get(), flags, spdy_version_); |
| 5148 | 5142 |
| 5149 if (flags != 0) { | 5143 if (flags != 0) { |
| 5150 EXPECT_CALL(visitor, OnError(_)); | 5144 EXPECT_CALL(visitor, OnError(_)); |
| 5151 } else { | 5145 } else { |
| 5152 EXPECT_CALL(visitor, OnRstStream(13, RST_STREAM_CANCEL)); | 5146 EXPECT_CALL(visitor, OnRstStream(13, RST_STREAM_CANCEL)); |
| 5153 } | 5147 } |
| 5154 | 5148 |
| 5155 framer.ProcessInput(frame->data(), frame->size()); | 5149 framer.ProcessInput(frame->data(), frame->size()); |
| (...skipping 963 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6119 | 6113 |
| 6120 EXPECT_EQ(1, visitor->data_frame_count_); | 6114 EXPECT_EQ(1, visitor->data_frame_count_); |
| 6121 EXPECT_EQ(strlen(four_score), static_cast<unsigned>(visitor->data_bytes_)); | 6115 EXPECT_EQ(strlen(four_score), static_cast<unsigned>(visitor->data_bytes_)); |
| 6122 EXPECT_EQ(0, visitor->headers_frame_count_); | 6116 EXPECT_EQ(0, visitor->headers_frame_count_); |
| 6123 } | 6117 } |
| 6124 } | 6118 } |
| 6125 | 6119 |
| 6126 } // namespace test | 6120 } // namespace test |
| 6127 | 6121 |
| 6128 } // namespace net | 6122 } // namespace net |
| OLD | NEW |