Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(171)

Side by Side Diff: net/spdy/core/spdy_framer_test.cc

Issue 2840563003: Implement SpdyMakeUnique and SpdyWrapUnique. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/spdy/core/spdy_framer_decoder_adapter.cc ('k') | net/spdy/core/spdy_header_block.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/core/spdy_framer.h" 5 #include "net/spdy/core/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 11 matching lines...) Expand all
22 #include "base/strings/string_number_conversions.h" 22 #include "base/strings/string_number_conversions.h"
23 #include "net/quic/platform/api/quic_flags.h" 23 #include "net/quic/platform/api/quic_flags.h"
24 #include "net/spdy/chromium/spdy_flags.h" 24 #include "net/spdy/chromium/spdy_flags.h"
25 #include "net/spdy/core/array_output_buffer.h" 25 #include "net/spdy/core/array_output_buffer.h"
26 #include "net/spdy/core/hpack/hpack_constants.h" 26 #include "net/spdy/core/hpack/hpack_constants.h"
27 #include "net/spdy/core/mock_spdy_framer_visitor.h" 27 #include "net/spdy/core/mock_spdy_framer_visitor.h"
28 #include "net/spdy/core/spdy_frame_builder.h" 28 #include "net/spdy/core/spdy_frame_builder.h"
29 #include "net/spdy/core/spdy_frame_reader.h" 29 #include "net/spdy/core/spdy_frame_reader.h"
30 #include "net/spdy/core/spdy_protocol.h" 30 #include "net/spdy/core/spdy_protocol.h"
31 #include "net/spdy/core/spdy_test_utils.h" 31 #include "net/spdy/core/spdy_test_utils.h"
32 #include "net/spdy/platform/api/spdy_ptr_util.h"
32 #include "testing/gmock/include/gmock/gmock.h" 33 #include "testing/gmock/include/gmock/gmock.h"
33 #include "testing/gtest/include/gtest/gtest.h" 34 #include "testing/gtest/include/gtest/gtest.h"
34 #include "testing/platform_test.h" 35 #include "testing/platform_test.h"
35 36
36 using testing::_; 37 using testing::_;
37 38
38 namespace net { 39 namespace net {
39 40
40 namespace test { 41 namespace test {
41 42
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 DecompressionVisitor() : finished_(false) {} 89 DecompressionVisitor() : finished_(false) {}
89 90
90 const SpdyFrameIR& GetFrame() const { 91 const SpdyFrameIR& GetFrame() const {
91 CHECK(finished_); 92 CHECK(finished_);
92 return *frame_; 93 return *frame_;
93 } 94 }
94 95
95 SpdyHeadersHandlerInterface* OnHeaderFrameStart( 96 SpdyHeadersHandlerInterface* OnHeaderFrameStart(
96 SpdyStreamId stream_id) override { 97 SpdyStreamId stream_id) override {
97 if (headers_handler_ == nullptr) { 98 if (headers_handler_ == nullptr) {
98 headers_handler_ = base::MakeUnique<TestHeadersHandler>(); 99 headers_handler_ = SpdyMakeUnique<TestHeadersHandler>();
99 } 100 }
100 return headers_handler_.get(); 101 return headers_handler_.get();
101 } 102 }
102 103
103 void OnHeaderFrameEnd(SpdyStreamId stream_id, bool end_headers) override { 104 void OnHeaderFrameEnd(SpdyStreamId stream_id, bool end_headers) override {
104 CHECK(!finished_); 105 CHECK(!finished_);
105 frame_->set_header_block(headers_handler_->decoded_block().Clone()); 106 frame_->set_header_block(headers_handler_->decoded_block().Clone());
106 finished_ = true; 107 finished_ = true;
107 if (end_headers) { 108 if (end_headers) {
108 headers_handler_.reset(); 109 headers_handler_.reset();
109 } 110 }
110 } 111 }
111 112
112 void OnHeaders(SpdyStreamId stream_id, 113 void OnHeaders(SpdyStreamId stream_id,
113 bool has_priority, 114 bool has_priority,
114 int weight, 115 int weight,
115 SpdyStreamId parent_stream_id, 116 SpdyStreamId parent_stream_id,
116 bool exclusive, 117 bool exclusive,
117 bool fin, 118 bool fin,
118 bool end) override { 119 bool end) override {
119 auto headers = base::MakeUnique<SpdyHeadersIR>(stream_id); 120 auto headers = SpdyMakeUnique<SpdyHeadersIR>(stream_id);
120 headers->set_has_priority(has_priority); 121 headers->set_has_priority(has_priority);
121 headers->set_weight(weight); 122 headers->set_weight(weight);
122 headers->set_parent_stream_id(parent_stream_id); 123 headers->set_parent_stream_id(parent_stream_id);
123 headers->set_exclusive(exclusive); 124 headers->set_exclusive(exclusive);
124 headers->set_fin(fin); 125 headers->set_fin(fin);
125 frame_ = std::move(headers); 126 frame_ = std::move(headers);
126 } 127 }
127 128
128 void OnPushPromise(SpdyStreamId stream_id, 129 void OnPushPromise(SpdyStreamId stream_id,
129 SpdyStreamId promised_stream_id, 130 SpdyStreamId promised_stream_id,
130 bool end) override { 131 bool end) override {
131 frame_ = 132 frame_ = SpdyMakeUnique<SpdyPushPromiseIR>(stream_id, promised_stream_id);
132 base::MakeUnique<SpdyPushPromiseIR>(stream_id, promised_stream_id);
133 } 133 }
134 134
135 // TODO(birenroy): Add support for CONTINUATION. 135 // TODO(birenroy): Add support for CONTINUATION.
136 void OnContinuation(SpdyStreamId stream_id, bool end) override { 136 void OnContinuation(SpdyStreamId stream_id, bool end) override {
137 LOG(FATAL); 137 LOG(FATAL);
138 } 138 }
139 139
140 // All other methods just LOG(FATAL). 140 // All other methods just LOG(FATAL).
141 void OnError(SpdyFramer* framer) override { LOG(FATAL); } 141 void OnError(SpdyFramer* framer) override { LOG(FATAL); }
142 void OnDataFrameHeader(SpdyStreamId stream_id, 142 void OnDataFrameHeader(SpdyStreamId stream_id,
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 return framer->GetNumberRequiredContinuationFrames(size); 228 return framer->GetNumberRequiredContinuationFrames(size);
229 } 229 }
230 static void SetError(SpdyFramer* framer, SpdyFramer::SpdyFramerError error) { 230 static void SetError(SpdyFramer* framer, SpdyFramer::SpdyFramerError error) {
231 framer->set_error(error); 231 framer->set_error(error);
232 } 232 }
233 233
234 // TODO(dahollings): Remove these methods when deprecating non-incremental 234 // TODO(dahollings): Remove these methods when deprecating non-incremental
235 // header serialization path. 235 // header serialization path.
236 static std::unique_ptr<SpdyHeadersIR> CloneSpdyHeadersIR( 236 static std::unique_ptr<SpdyHeadersIR> CloneSpdyHeadersIR(
237 const SpdyHeadersIR& headers) { 237 const SpdyHeadersIR& headers) {
238 auto newHeaders = base::MakeUnique<SpdyHeadersIR>( 238 auto newHeaders = SpdyMakeUnique<SpdyHeadersIR>(
239 headers.stream_id(), headers.header_block().Clone()); 239 headers.stream_id(), headers.header_block().Clone());
240 newHeaders->set_fin(headers.fin()); 240 newHeaders->set_fin(headers.fin());
241 newHeaders->set_has_priority(headers.has_priority()); 241 newHeaders->set_has_priority(headers.has_priority());
242 newHeaders->set_weight(headers.weight()); 242 newHeaders->set_weight(headers.weight());
243 newHeaders->set_parent_stream_id(headers.parent_stream_id()); 243 newHeaders->set_parent_stream_id(headers.parent_stream_id());
244 newHeaders->set_exclusive(headers.exclusive()); 244 newHeaders->set_exclusive(headers.exclusive());
245 if (headers.padded()) { 245 if (headers.padded()) {
246 newHeaders->set_padding_len(headers.padding_payload_len() + 1); 246 newHeaders->set_padding_len(headers.padding_payload_len() + 1);
247 } 247 }
248 newHeaders->set_end_headers(headers.end_headers()); 248 newHeaders->set_end_headers(headers.end_headers());
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 frame_list_buffer.Size() - size_before, false)); 298 frame_list_buffer.Size() - size_before, false));
299 } 299 }
300 framer->debug_visitor_ = saved_debug_visitor; 300 framer->debug_visitor_ = saved_debug_visitor;
301 301
302 EXPECT_THAT(serialized_headers_old_version, IsFrameUnionOf(&frame_list)); 302 EXPECT_THAT(serialized_headers_old_version, IsFrameUnionOf(&frame_list));
303 return serialized_headers_old_version; 303 return serialized_headers_old_version;
304 } 304 }
305 305
306 static std::unique_ptr<SpdyPushPromiseIR> CloneSpdyPushPromiseIR( 306 static std::unique_ptr<SpdyPushPromiseIR> CloneSpdyPushPromiseIR(
307 const SpdyPushPromiseIR& push_promise) { 307 const SpdyPushPromiseIR& push_promise) {
308 auto new_push_promise = base::MakeUnique<SpdyPushPromiseIR>( 308 auto new_push_promise = SpdyMakeUnique<SpdyPushPromiseIR>(
309 push_promise.stream_id(), push_promise.promised_stream_id(), 309 push_promise.stream_id(), push_promise.promised_stream_id(),
310 push_promise.header_block().Clone()); 310 push_promise.header_block().Clone());
311 new_push_promise->set_fin(push_promise.fin()); 311 new_push_promise->set_fin(push_promise.fin());
312 if (push_promise.padded()) { 312 if (push_promise.padded()) {
313 new_push_promise->set_padding_len(push_promise.padding_payload_len() + 1); 313 new_push_promise->set_padding_len(push_promise.padding_payload_len() + 1);
314 } 314 }
315 new_push_promise->set_end_headers(push_promise.end_headers()); 315 new_push_promise->set_end_headers(push_promise.end_headers());
316 return new_push_promise; 316 return new_push_promise;
317 } 317 }
318 318
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 450
451 void OnStreamPadding(SpdyStreamId stream_id, size_t len) override { 451 void OnStreamPadding(SpdyStreamId stream_id, size_t len) override {
452 VLOG(1) << "OnStreamPadding(" << stream_id << ", " << len << ")\n"; 452 VLOG(1) << "OnStreamPadding(" << stream_id << ", " << len << ")\n";
453 EXPECT_EQ(header_stream_id_, stream_id); 453 EXPECT_EQ(header_stream_id_, stream_id);
454 data_bytes_ += len; 454 data_bytes_ += len;
455 } 455 }
456 456
457 SpdyHeadersHandlerInterface* OnHeaderFrameStart( 457 SpdyHeadersHandlerInterface* OnHeaderFrameStart(
458 SpdyStreamId stream_id) override { 458 SpdyStreamId stream_id) override {
459 if (headers_handler_ == nullptr) { 459 if (headers_handler_ == nullptr) {
460 headers_handler_ = base::MakeUnique<TestHeadersHandler>(); 460 headers_handler_ = SpdyMakeUnique<TestHeadersHandler>();
461 } 461 }
462 return headers_handler_.get(); 462 return headers_handler_.get();
463 } 463 }
464 464
465 void OnHeaderFrameEnd(SpdyStreamId stream_id, bool end_headers) override { 465 void OnHeaderFrameEnd(SpdyStreamId stream_id, bool end_headers) override {
466 CHECK(headers_handler_ != nullptr); 466 CHECK(headers_handler_ != nullptr);
467 headers_ = headers_handler_->decoded_block().Clone(); 467 headers_ = headers_handler_->decoded_block().Clone();
468 header_bytes_received_ = headers_handler_->header_bytes_parsed(); 468 header_bytes_received_ = headers_handler_->header_bytes_parsed();
469 if (end_headers) { 469 if (end_headers) {
470 headers_handler_.reset(); 470 headers_handler_.reset();
(...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after
1246 1246
1247 // Test that if we receive a CONTINUATION with stream ID zero, we signal an 1247 // Test that if we receive a CONTINUATION with stream ID zero, we signal an
1248 // SPDY_INVALID_STREAM_ID. 1248 // SPDY_INVALID_STREAM_ID.
1249 TEST_P(SpdyFramerTest, ContinuationWithStreamIdZero) { 1249 TEST_P(SpdyFramerTest, ContinuationWithStreamIdZero) {
1250 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; 1250 testing::StrictMock<test::MockSpdyFramerVisitor> visitor;
1251 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION); 1251 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION);
1252 framer.set_visitor(&visitor); 1252 framer.set_visitor(&visitor);
1253 1253
1254 SpdyContinuationIR continuation(0); 1254 SpdyContinuationIR continuation(0);
1255 auto some_nonsense_encoding = 1255 auto some_nonsense_encoding =
1256 base::MakeUnique<SpdyString>("some nonsense encoding"); 1256 SpdyMakeUnique<SpdyString>("some nonsense encoding");
1257 continuation.take_encoding(std::move(some_nonsense_encoding)); 1257 continuation.take_encoding(std::move(some_nonsense_encoding));
1258 continuation.set_end_headers(true); 1258 continuation.set_end_headers(true);
1259 SpdySerializedFrame frame(framer.SerializeContinuation(continuation)); 1259 SpdySerializedFrame frame(framer.SerializeContinuation(continuation));
1260 if (use_output_) { 1260 if (use_output_) {
1261 ASSERT_TRUE(framer.SerializeContinuation(continuation, &output_)); 1261 ASSERT_TRUE(framer.SerializeContinuation(continuation, &output_));
1262 frame = SpdySerializedFrame(output_.Begin(), output_.Size(), false); 1262 frame = SpdySerializedFrame(output_.Begin(), output_.Size(), false);
1263 } 1263 }
1264 1264
1265 // We shouldn't have to read the whole frame before we signal an error. 1265 // We shouldn't have to read the whole frame before we signal an error.
1266 EXPECT_CALL(visitor, OnError(testing::Eq(&framer))); 1266 EXPECT_CALL(visitor, OnError(testing::Eq(&framer)));
(...skipping 1252 matching lines...) Expand 10 before | Expand all | Expand 10 after
2519 0x03, // Name Len: 3 2519 0x03, // Name Len: 3
2520 0x66, 0x6f, 0x6f, // foo 2520 0x66, 0x6f, 0x6f, // foo
2521 0x03, // Value Len: 3 2521 0x03, // Value Len: 3
2522 0x62, 0x61, 0x72, // bar 2522 0x62, 0x61, 0x72, // bar
2523 }; 2523 };
2524 // frame-format on 2524 // frame-format on
2525 2525
2526 SpdyHeaderBlock header_block; 2526 SpdyHeaderBlock header_block;
2527 header_block["bar"] = "foo"; 2527 header_block["bar"] = "foo";
2528 header_block["foo"] = "bar"; 2528 header_block["foo"] = "bar";
2529 auto buffer = base::MakeUnique<SpdyString>(); 2529 auto buffer = SpdyMakeUnique<SpdyString>();
2530 HpackEncoder encoder(ObtainHpackHuffmanTable()); 2530 HpackEncoder encoder(ObtainHpackHuffmanTable());
2531 encoder.DisableCompression(); 2531 encoder.DisableCompression();
2532 encoder.EncodeHeaderSet(header_block, buffer.get()); 2532 encoder.EncodeHeaderSet(header_block, buffer.get());
2533 2533
2534 SpdyContinuationIR continuation(42); 2534 SpdyContinuationIR continuation(42);
2535 continuation.take_encoding(std::move(buffer)); 2535 continuation.take_encoding(std::move(buffer));
2536 continuation.set_end_headers(true); 2536 continuation.set_end_headers(true);
2537 2537
2538 SpdySerializedFrame frame(framer.SerializeContinuation(continuation)); 2538 SpdySerializedFrame frame(framer.SerializeContinuation(continuation));
2539 if (use_output_) { 2539 if (use_output_) {
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after
2801 control_frame.size()); 2801 control_frame.size());
2802 EXPECT_TRUE(visitor.header_buffer_valid_); 2802 EXPECT_TRUE(visitor.header_buffer_valid_);
2803 EXPECT_EQ(0, visitor.error_count_); 2803 EXPECT_EQ(0, visitor.error_count_);
2804 EXPECT_EQ(1, visitor.headers_frame_count_); 2804 EXPECT_EQ(1, visitor.headers_frame_count_);
2805 EXPECT_EQ(1, visitor.continuation_count_); 2805 EXPECT_EQ(1, visitor.continuation_count_);
2806 EXPECT_EQ(0, visitor.zero_length_control_frame_header_data_count_); 2806 EXPECT_EQ(0, visitor.zero_length_control_frame_header_data_count_);
2807 } 2807 }
2808 2808
2809 TEST_P(SpdyFramerTest, MultipleContinuationFramesWithIterator) { 2809 TEST_P(SpdyFramerTest, MultipleContinuationFramesWithIterator) {
2810 SpdyFramer framer(SpdyFramer::DISABLE_COMPRESSION); 2810 SpdyFramer framer(SpdyFramer::DISABLE_COMPRESSION);
2811 auto headers = base::MakeUnique<SpdyHeadersIR>(1); 2811 auto headers = SpdyMakeUnique<SpdyHeadersIR>(/* stream_id = */ 1);
2812 headers->set_padding_len(256); 2812 headers->set_padding_len(256);
2813 2813
2814 // Exact payload length will change with HPACK, but this should be long 2814 // Exact payload length will change with HPACK, but this should be long
2815 // enough to cause an overflow. 2815 // enough to cause an overflow.
2816 const size_t kBigValueSize = TestSpdyVisitor::sent_control_frame_max_size(); 2816 const size_t kBigValueSize = TestSpdyVisitor::sent_control_frame_max_size();
2817 SpdyString big_valuex(kBigValueSize, 'x'); 2817 SpdyString big_valuex(kBigValueSize, 'x');
2818 headers->SetHeader("aa", big_valuex); 2818 headers->SetHeader("aa", big_valuex);
2819 SpdyString big_valuez(kBigValueSize, 'z'); 2819 SpdyString big_valuez(kBigValueSize, 'z');
2820 headers->SetHeader("bb", big_valuez); 2820 headers->SetHeader("bb", big_valuez);
2821 2821
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
2867 EXPECT_EQ(0, visitor.error_count_); 2867 EXPECT_EQ(0, visitor.error_count_);
2868 EXPECT_EQ(1, visitor.headers_frame_count_); 2868 EXPECT_EQ(1, visitor.headers_frame_count_);
2869 EXPECT_EQ(2, visitor.continuation_count_); 2869 EXPECT_EQ(2, visitor.continuation_count_);
2870 EXPECT_EQ(0, visitor.zero_length_control_frame_header_data_count_); 2870 EXPECT_EQ(0, visitor.zero_length_control_frame_header_data_count_);
2871 2871
2872 EXPECT_FALSE(frame_it.HasNextFrame()); 2872 EXPECT_FALSE(frame_it.HasNextFrame());
2873 } 2873 }
2874 2874
2875 TEST_P(SpdyFramerTest, PushPromiseFramesWithIterator) { 2875 TEST_P(SpdyFramerTest, PushPromiseFramesWithIterator) {
2876 SpdyFramer framer(SpdyFramer::DISABLE_COMPRESSION); 2876 SpdyFramer framer(SpdyFramer::DISABLE_COMPRESSION);
2877 auto push_promise = base::MakeUnique<SpdyPushPromiseIR>(1, 2); 2877 auto push_promise =
2878 SpdyMakeUnique<SpdyPushPromiseIR>(/* stream_id = */ 1,
2879 /* promised_stream_id = */ 2);
2878 push_promise->set_padding_len(256); 2880 push_promise->set_padding_len(256);
2879 2881
2880 // Exact payload length will change with HPACK, but this should be long 2882 // Exact payload length will change with HPACK, but this should be long
2881 // enough to cause an overflow. 2883 // enough to cause an overflow.
2882 const size_t kBigValueSize = TestSpdyVisitor::sent_control_frame_max_size(); 2884 const size_t kBigValueSize = TestSpdyVisitor::sent_control_frame_max_size();
2883 SpdyString big_valuex(kBigValueSize, 'x'); 2885 SpdyString big_valuex(kBigValueSize, 'x');
2884 push_promise->SetHeader("aa", big_valuex); 2886 push_promise->SetHeader("aa", big_valuex);
2885 SpdyString big_valuez(kBigValueSize, 'z'); 2887 SpdyString big_valuez(kBigValueSize, 'z');
2886 push_promise->SetHeader("bb", big_valuez); 2888 push_promise->SetHeader("bb", big_valuez);
2887 2889
(...skipping 1805 matching lines...) Expand 10 before | Expand all | Expand 10 after
4693 visitor.framer_.spdy_framer_error()) 4695 visitor.framer_.spdy_framer_error())
4694 << SpdyFramer::SpdyFramerErrorToString( 4696 << SpdyFramer::SpdyFramerErrorToString(
4695 visitor.framer_.spdy_framer_error()); 4697 visitor.framer_.spdy_framer_error());
4696 } 4698 }
4697 4699
4698 // Test that SpdyFramer processes, by default, all passed input in one call 4700 // Test that SpdyFramer processes, by default, all passed input in one call
4699 // to ProcessInput (i.e. will not be calling set_process_single_input_frame()). 4701 // to ProcessInput (i.e. will not be calling set_process_single_input_frame()).
4700 TEST_P(SpdyFramerTest, ProcessAllInput) { 4702 TEST_P(SpdyFramerTest, ProcessAllInput) {
4701 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION); 4703 SpdyFramer framer(SpdyFramer::ENABLE_COMPRESSION);
4702 auto visitor = 4704 auto visitor =
4703 base::MakeUnique<TestSpdyVisitor>(SpdyFramer::DISABLE_COMPRESSION); 4705 SpdyMakeUnique<TestSpdyVisitor>(SpdyFramer::DISABLE_COMPRESSION);
4704 framer.set_visitor(visitor.get()); 4706 framer.set_visitor(visitor.get());
4705 4707
4706 // Create two input frames. 4708 // Create two input frames.
4707 SpdyHeadersIR headers(1); 4709 SpdyHeadersIR headers(1);
4708 headers.SetHeader("alpha", "beta"); 4710 headers.SetHeader("alpha", "beta");
4709 headers.SetHeader("gamma", "charlie"); 4711 headers.SetHeader("gamma", "charlie");
4710 headers.SetHeader("cookie", "key1=value1; key2=value2"); 4712 headers.SetHeader("cookie", "key1=value1; key2=value2");
4711 SpdySerializedFrame headers_frame(SpdyFramerPeer::SerializeHeaders( 4713 SpdySerializedFrame headers_frame(SpdyFramerPeer::SerializeHeaders(
4712 &framer, headers, use_output_ ? &output_ : nullptr)); 4714 &framer, headers, use_output_ ? &output_ : nullptr));
4713 4715
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
4779 input_buffer.append(frame2.data(), frame2_size); 4781 input_buffer.append(frame2.data(), frame2_size);
4780 4782
4781 const char* buf = input_buffer.data(); 4783 const char* buf = input_buffer.data();
4782 const size_t buf_size = input_buffer.size(); 4784 const size_t buf_size = input_buffer.size();
4783 4785
4784 VLOG(1) << "buf_size = " << buf_size; 4786 VLOG(1) << "buf_size = " << buf_size;
4785 4787
4786 for (size_t first_size = 0; first_size <= buf_size; ++first_size) { 4788 for (size_t first_size = 0; first_size <= buf_size; ++first_size) {
4787 VLOG(1) << "first_size = " << first_size; 4789 VLOG(1) << "first_size = " << first_size;
4788 auto visitor = 4790 auto visitor =
4789 base::MakeUnique<TestSpdyVisitor>(SpdyFramer::DISABLE_COMPRESSION); 4791 SpdyMakeUnique<TestSpdyVisitor>(SpdyFramer::DISABLE_COMPRESSION);
4790 framer.set_visitor(visitor.get()); 4792 framer.set_visitor(visitor.get());
4791 4793
4792 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state()); 4794 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state());
4793 4795
4794 size_t processed_first = framer.ProcessInput(buf, first_size); 4796 size_t processed_first = framer.ProcessInput(buf, first_size);
4795 if (first_size < frame1_size) { 4797 if (first_size < frame1_size) {
4796 EXPECT_EQ(first_size, processed_first); 4798 EXPECT_EQ(first_size, processed_first);
4797 4799
4798 if (first_size == 0) { 4800 if (first_size == 0) {
4799 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state()); 4801 EXPECT_EQ(SpdyFramer::SPDY_READY_FOR_FRAME, framer.state());
(...skipping 22 matching lines...) Expand all
4822 4824
4823 EXPECT_EQ(1, visitor->data_frame_count_); 4825 EXPECT_EQ(1, visitor->data_frame_count_);
4824 EXPECT_EQ(strlen(four_score), static_cast<unsigned>(visitor->data_bytes_)); 4826 EXPECT_EQ(strlen(four_score), static_cast<unsigned>(visitor->data_bytes_));
4825 EXPECT_EQ(0, visitor->headers_frame_count_); 4827 EXPECT_EQ(0, visitor->headers_frame_count_);
4826 } 4828 }
4827 } 4829 }
4828 4830
4829 } // namespace test 4831 } // namespace test
4830 4832
4831 } // namespace net 4833 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/core/spdy_framer_decoder_adapter.cc ('k') | net/spdy/core/spdy_header_block.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698