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

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

Issue 681713002: Update from chromium https://crrev.com/301315 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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/spdy_framer.cc ('k') | net/spdy/spdy_protocol.h » ('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 <algorithm> 5 #include <algorithm>
6 #include <iostream> 6 #include <iostream>
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 header_buffer_valid_ = true; 495 header_buffer_valid_ = true;
496 DCHECK_NE(header_stream_id_, SpdyFramer::kInvalidStream); 496 DCHECK_NE(header_stream_id_, SpdyFramer::kInvalidStream);
497 } 497 }
498 498
499 // Override the default buffer size (16K). Call before using the framer! 499 // Override the default buffer size (16K). Call before using the framer!
500 void set_header_buffer_size(size_t header_buffer_size) { 500 void set_header_buffer_size(size_t header_buffer_size) {
501 header_buffer_size_ = header_buffer_size; 501 header_buffer_size_ = header_buffer_size;
502 header_buffer_.reset(new char[header_buffer_size]); 502 header_buffer_.reset(new char[header_buffer_size]);
503 } 503 }
504 504
505 // Largest control frame that the SPDY implementation sends, including the
506 // size of the header.
507 static size_t sent_control_frame_max_size() {
508 return SpdyFramer::kMaxControlFrameSize;
509 }
510
505 static size_t header_data_chunk_max_size() { 511 static size_t header_data_chunk_max_size() {
506 return SpdyFramer::kHeaderDataChunkMaxSize; 512 return SpdyFramer::kHeaderDataChunkMaxSize;
507 } 513 }
508 514
509 SpdyFramer framer_; 515 SpdyFramer framer_;
510 bool use_compression_; 516 bool use_compression_;
511 517
512 // Counters from the visitor callbacks. 518 // Counters from the visitor callbacks.
513 int error_count_; 519 int error_count_;
514 int syn_frame_count_; 520 int syn_frame_count_;
(...skipping 2625 matching lines...) Expand 10 before | Expand all | Expand 10 after
3140 { 3146 {
3141 // Test framing in a case such that a PUSH_PROMISE frame, with one byte of 3147 // Test framing in a case such that a PUSH_PROMISE frame, with one byte of
3142 // padding, cannot hold all the data payload, which is overflowed to the 3148 // padding, cannot hold all the data payload, which is overflowed to the
3143 // consecutive CONTINUATION frame. 3149 // consecutive CONTINUATION frame.
3144 SpdyFramer framer(spdy_version_); 3150 SpdyFramer framer(spdy_version_);
3145 framer.set_enable_compression(false); 3151 framer.set_enable_compression(false);
3146 const char kDescription[] = 3152 const char kDescription[] =
3147 "PUSH_PROMISE and CONTINUATION frames with one byte of padding"; 3153 "PUSH_PROMISE and CONTINUATION frames with one byte of padding";
3148 3154
3149 const unsigned char kPartialPushPromiseFrameData[] = { 3155 const unsigned char kPartialPushPromiseFrameData[] = {
3150 0x00, 0x03, 0xf6, 0x05, // PUSH_PROMISE 3156 0x00, 0x03, 0xf7, 0x05, // PUSH_PROMISE
3151 0x08, 0x00, 0x00, 0x00, // PADDED 3157 0x08, 0x00, 0x00, 0x00, // PADDED
3152 0x2a, 0x00, 0x00, 0x00, // Stream 42 3158 0x2a, 0x00, 0x00, 0x00, // Stream 42
3153 0x00, 0x39, 0x00, 0x03, // Promised stream 57 3159 0x00, 0x39, 0x00, 0x03, // Promised stream 57
3154 0x78, 0x78, 0x78, 0x7f, // xxx. 3160 0x78, 0x78, 0x78, 0x7f, // xxx.
3155 0x80, 0x07, 0x78, 0x78, // ..xx 3161 0x81, 0x07, 0x78, 0x78, // ..xx
3156 0x78, 0x78, 0x78, 0x78, // xxxx 3162 0x78, 0x78, 0x78, 0x78, // xxxx
3157 0x78, 0x78, 0x78, 0x78, // xxxx 3163 0x78, 0x78, 0x78, 0x78, // xxxx
3158 0x78, 0x78, 0x78, 0x78, // xxxx 3164 0x78, 0x78, 0x78, 0x78, // xxxx
3159 0x78, 0x78, 0x78, 0x78, // xxxx 3165 0x78, 0x78, 0x78, 0x78, // xxxx
3160 0x78, 0x78, 0x78, 0x78, // xxxx 3166 0x78, 0x78, 0x78, 0x78, // xxxx
3161 0x78, 0x78, 0x78, 0x78, // xxxx 3167 0x78, 0x78, 0x78, 0x78, // xxxx
3162 0x78, 0x78, 0x78, 0x78, // xxxx 3168 0x78, 0x78, 0x78, 0x78, // xxxx
3163 0x78, 0x78, 0x78, 0x78, // xxxx 3169 0x78, 0x78, 0x78, 0x78, // xxxx
3164 0x78, 0x78, 0x78, 0x78, // xxxx 3170 0x78, 0x78, 0x78, 0x78, // xxxx
3165 0x78, 0x78, 0x78, 0x78, // xxxx 3171 0x78, 0x78, 0x78, 0x78, // xxxx
(...skipping 16 matching lines...) Expand all
3182 0x2a, 0x78, 0x78, 0x78, // Stream 42, xxx 3188 0x2a, 0x78, 0x78, 0x78, // Stream 42, xxx
3183 0x78, 0x78, 0x78, 0x78, // xxxx 3189 0x78, 0x78, 0x78, 0x78, // xxxx
3184 0x78, 0x78, 0x78, 0x78, // xxxx 3190 0x78, 0x78, 0x78, 0x78, // xxxx
3185 0x78, 0x78, 0x78, 0x78, // xxxx 3191 0x78, 0x78, 0x78, 0x78, // xxxx
3186 0x78, 0x78, 0x78, 0x78, // xxxx 3192 0x78, 0x78, 0x78, 0x78, // xxxx
3187 0x78, 0x78, 3193 0x78, 0x78,
3188 }; 3194 };
3189 3195
3190 SpdyPushPromiseIR push_promise(42, 57); 3196 SpdyPushPromiseIR push_promise(42, 57);
3191 push_promise.set_padding_len(1); 3197 push_promise.set_padding_len(1);
3192 string big_value(framer.GetHeaderFragmentMaxSize(), 'x'); 3198 string big_value(TestSpdyVisitor::sent_control_frame_max_size(), 'x');
3193 push_promise.SetHeader("xxx", big_value); 3199 push_promise.SetHeader("xxx", big_value);
3194 scoped_ptr<SpdySerializedFrame> frame( 3200 scoped_ptr<SpdySerializedFrame> frame(
3195 framer.SerializePushPromise(push_promise)); 3201 framer.SerializePushPromise(push_promise));
3196 3202
3197 // The entire frame should look like below: 3203 // The entire frame should look like below:
3198 // Name Length in Byte 3204 // Name Length in Byte
3199 // ------------------------------------------- Begin of PUSH_PROMISE frame 3205 // ------------------------------------------- Begin of PUSH_PROMISE frame
3200 // PUSH_PROMISE header 9 3206 // PUSH_PROMISE header 9
3201 // Pad length field 1 3207 // Pad length field 1
3202 // Promised stream 4 3208 // Promised stream 4
3203 // Length field of key 2 3209 // Length field of key 2
3204 // Content of key 3 3210 // Content of key 3
3205 // Length field of value 3 3211 // Length field of value 3
3206 // Part of big_value 16361 3212 // Part of big_value 16361
3207 // ------------------------------------------- Begin of CONTINUATION frame 3213 // ------------------------------------------- Begin of CONTINUATION frame
3208 // CONTINUATION header 9 3214 // CONTINUATION header 9
3209 // Remaining of big_value 22 3215 // Remaining of big_value 22
3210 // ------------------------------------------- End 3216 // ------------------------------------------- End
3211 3217
3212 // Length of everything listed above except big_value. 3218 // Length of everything listed above except big_value.
3213 int len_non_data_payload = 31; 3219 int len_non_data_payload = 31;
3214 EXPECT_EQ(framer.GetHeaderFragmentMaxSize() + len_non_data_payload, 3220 EXPECT_EQ(
3215 frame->size()); 3221 TestSpdyVisitor::sent_control_frame_max_size() + len_non_data_payload,
3222 frame->size());
3216 3223
3217 // Partially compare the PUSH_PROMISE frame against the template. 3224 // Partially compare the PUSH_PROMISE frame against the template.
3218 const unsigned char* frame_data = 3225 const unsigned char* frame_data =
3219 reinterpret_cast<const unsigned char*>(frame->data()); 3226 reinterpret_cast<const unsigned char*>(frame->data());
3220 CompareCharArraysWithHexError(kDescription, 3227 CompareCharArraysWithHexError(kDescription,
3221 frame_data, 3228 frame_data,
3222 arraysize(kPartialPushPromiseFrameData), 3229 arraysize(kPartialPushPromiseFrameData),
3223 kPartialPushPromiseFrameData, 3230 kPartialPushPromiseFrameData,
3224 arraysize(kPartialPushPromiseFrameData)); 3231 arraysize(kPartialPushPromiseFrameData));
3225 3232
3226 // Compare the CONTINUATION frame against the template. 3233 // Compare the CONTINUATION frame against the template.
3227 frame_data += framer.GetHeaderFragmentMaxSize(); 3234 frame_data += TestSpdyVisitor::sent_control_frame_max_size();
3228 CompareCharArraysWithHexError(kDescription, 3235 CompareCharArraysWithHexError(kDescription,
3229 frame_data, 3236 frame_data,
3230 arraysize(kContinuationFrameData), 3237 arraysize(kContinuationFrameData),
3231 kContinuationFrameData, 3238 kContinuationFrameData,
3232 arraysize(kContinuationFrameData)); 3239 arraysize(kContinuationFrameData));
3233 } 3240 }
3234 } 3241 }
3235 3242
3236 TEST_P(SpdyFramerTest, CreateAltSvc) { 3243 TEST_P(SpdyFramerTest, CreateAltSvc) {
3237 if (spdy_version_ <= SPDY3) { 3244 if (spdy_version_ <= SPDY3) {
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
3388 } 3395 }
3389 // First find the size of the header value in order to just reach the control 3396 // First find the size of the header value in order to just reach the control
3390 // frame max size. 3397 // frame max size.
3391 SpdyFramer framer(spdy_version_); 3398 SpdyFramer framer(spdy_version_);
3392 framer.set_enable_compression(false); 3399 framer.set_enable_compression(false);
3393 SpdySynStreamIR syn_stream(1); 3400 SpdySynStreamIR syn_stream(1);
3394 syn_stream.set_priority(1); 3401 syn_stream.set_priority(1);
3395 syn_stream.SetHeader("aa", ""); 3402 syn_stream.SetHeader("aa", "");
3396 scoped_ptr<SpdyFrame> control_frame(framer.SerializeSynStream(syn_stream)); 3403 scoped_ptr<SpdyFrame> control_frame(framer.SerializeSynStream(syn_stream));
3397 const size_t kBigValueSize = 3404 const size_t kBigValueSize =
3398 framer.GetControlFrameBufferMaxSize() - control_frame->size(); 3405 TestSpdyVisitor::sent_control_frame_max_size() - control_frame->size();
3399 3406
3400 // Create a frame at exactly that size. 3407 // Create a frame at exactly that size.
3401 string big_value(kBigValueSize, 'x'); 3408 string big_value(kBigValueSize, 'x');
3402 syn_stream.SetHeader("aa", big_value); 3409 syn_stream.SetHeader("aa", big_value);
3403 control_frame.reset(framer.SerializeSynStream(syn_stream)); 3410 control_frame.reset(framer.SerializeSynStream(syn_stream));
3404 EXPECT_TRUE(control_frame.get() != NULL); 3411 EXPECT_TRUE(control_frame.get() != NULL);
3405 EXPECT_EQ(framer.GetControlFrameBufferMaxSize(), control_frame->size()); 3412 EXPECT_EQ(TestSpdyVisitor::sent_control_frame_max_size(),
3413 control_frame->size());
3406 3414
3407 TestSpdyVisitor visitor(spdy_version_); 3415 TestSpdyVisitor visitor(spdy_version_);
3408 visitor.SimulateInFramer( 3416 visitor.SimulateInFramer(
3409 reinterpret_cast<unsigned char*>(control_frame->data()), 3417 reinterpret_cast<unsigned char*>(control_frame->data()),
3410 control_frame->size()); 3418 control_frame->size());
3411 EXPECT_TRUE(visitor.header_buffer_valid_); 3419 EXPECT_TRUE(visitor.header_buffer_valid_);
3412 EXPECT_EQ(0, visitor.error_count_); 3420 EXPECT_EQ(0, visitor.error_count_);
3413 EXPECT_EQ(1, visitor.syn_frame_count_); 3421 EXPECT_EQ(1, visitor.syn_frame_count_);
3414 EXPECT_EQ(1, visitor.zero_length_control_frame_header_data_count_); 3422 EXPECT_EQ(1, visitor.zero_length_control_frame_header_data_count_);
3415 EXPECT_EQ(0, visitor.zero_length_data_frame_count_); 3423 EXPECT_EQ(0, visitor.zero_length_data_frame_count_);
3416 EXPECT_LT(kBigValueSize, visitor.header_buffer_length_); 3424 EXPECT_LT(kBigValueSize, visitor.header_buffer_length_);
3417 } 3425 }
3418 3426
3419 TEST_P(SpdyFramerTest, ControlFrameTooLarge) { 3427 // This test is disabled because Chromium is willing to accept control frames up
3428 // to the maximum size allowed by the specification, and SpdyFrameBuilder is not
3429 // capable of building larger frames.
3430 TEST_P(SpdyFramerTest, DISABLED_ControlFrameTooLarge) {
3420 if (spdy_version_ > SPDY3) { 3431 if (spdy_version_ > SPDY3) {
3421 // TODO(jgraettinger): This test setup doesn't work with HPACK. 3432 // TODO(jgraettinger): This test setup doesn't work with HPACK.
3422 return; 3433 return;
3423 } 3434 }
3424 // First find the size of the header value in order to just reach the control 3435 // First find the size of the header value in order to just reach the control
3425 // frame max size. 3436 // frame max size.
3426 SpdyFramer framer(spdy_version_); 3437 SpdyFramer framer(spdy_version_);
3427 framer.set_enable_compression(false); 3438 framer.set_enable_compression(false);
3428 SpdySynStreamIR syn_stream(1); 3439 SpdySynStreamIR syn_stream(1);
3429 syn_stream.SetHeader("aa", ""); 3440 syn_stream.SetHeader("aa", "");
3430 syn_stream.set_priority(1); 3441 syn_stream.set_priority(1);
3431 scoped_ptr<SpdyFrame> control_frame(framer.SerializeSynStream(syn_stream)); 3442 scoped_ptr<SpdyFrame> control_frame(framer.SerializeSynStream(syn_stream));
3432 const size_t kBigValueSize = 3443 const size_t kBigValueSize =
3433 framer.GetControlFrameBufferMaxSize() - control_frame->size() + 1; 3444 SpdyConstants::GetFrameMaximumSize(spdy_version_) -
3445 control_frame->size() + 1;
3434 3446
3435 // Create a frame at exatly that size. 3447 // Create a frame at exatly that size.
3436 string big_value(kBigValueSize, 'x'); 3448 string big_value(kBigValueSize, 'x');
3437 syn_stream.SetHeader("aa", big_value); 3449 syn_stream.SetHeader("aa", big_value);
3438 // Upstream branches here and wraps SPDY4 with EXPECT_DEBUG_DFATAL. We 3450 // Upstream branches here and wraps SPDY4 with EXPECT_DEBUG_DFATAL. We
3439 // neither support that in Chromium, nor do we use the same DFATAL (see 3451 // neither support that in Chromium, nor do we use the same DFATAL (see
3440 // SpdyFrameBuilder::WriteFramePrefix()). 3452 // SpdyFrameBuilder::WriteFramePrefix()).
3441 control_frame.reset(framer.SerializeSynStream(syn_stream)); 3453 control_frame.reset(framer.SerializeSynStream(syn_stream));
3442 3454
3443 EXPECT_TRUE(control_frame.get() != NULL); 3455 EXPECT_TRUE(control_frame.get() != NULL);
3444 EXPECT_EQ(framer.GetControlFrameBufferMaxSize() + 1, 3456 EXPECT_EQ(SpdyConstants::GetFrameMaximumSize(spdy_version_) + 1,
3445 control_frame->size()); 3457 control_frame->size());
3446 3458
3447 TestSpdyVisitor visitor(spdy_version_); 3459 TestSpdyVisitor visitor(spdy_version_);
3448 visitor.SimulateInFramer( 3460 visitor.SimulateInFramer(
3449 reinterpret_cast<unsigned char*>(control_frame->data()), 3461 reinterpret_cast<unsigned char*>(control_frame->data()),
3450 control_frame->size()); 3462 control_frame->size());
3451 EXPECT_FALSE(visitor.header_buffer_valid_); 3463 EXPECT_FALSE(visitor.header_buffer_valid_);
3452 EXPECT_EQ(1, visitor.error_count_); 3464 EXPECT_EQ(1, visitor.error_count_);
3453 EXPECT_EQ(SpdyFramer::SPDY_CONTROL_PAYLOAD_TOO_LARGE, 3465 EXPECT_EQ(SpdyFramer::SPDY_CONTROL_PAYLOAD_TOO_LARGE,
3454 visitor.framer_.error_code()) 3466 visitor.framer_.error_code())
3455 << SpdyFramer::ErrorCodeToString(framer.error_code()); 3467 << SpdyFramer::ErrorCodeToString(framer.error_code());
3456 EXPECT_EQ(0, visitor.syn_frame_count_); 3468 EXPECT_EQ(0, visitor.syn_frame_count_);
3457 EXPECT_EQ(0u, visitor.header_buffer_length_); 3469 EXPECT_EQ(0u, visitor.header_buffer_length_);
3458 } 3470 }
3459 3471
3460 TEST_P(SpdyFramerTest, TooLargeHeadersFrameUsesContinuation) { 3472 TEST_P(SpdyFramerTest, TooLargeHeadersFrameUsesContinuation) {
3461 if (spdy_version_ <= SPDY3) { 3473 if (spdy_version_ <= SPDY3) {
3462 return; 3474 return;
3463 } 3475 }
3464 SpdyFramer framer(spdy_version_); 3476 SpdyFramer framer(spdy_version_);
3465 framer.set_enable_compression(false); 3477 framer.set_enable_compression(false);
3466 SpdyHeadersIR headers(1); 3478 SpdyHeadersIR headers(1);
3467 headers.set_padding_len(256); 3479 headers.set_padding_len(256);
3468 3480
3469 // Exact payload length will change with HPACK, but this should be long 3481 // Exact payload length will change with HPACK, but this should be long
3470 // enough to cause an overflow. 3482 // enough to cause an overflow.
3471 const size_t kBigValueSize = framer.GetControlFrameBufferMaxSize(); 3483 const size_t kBigValueSize = kControlFrameSizeLimit;
3472 string big_value(kBigValueSize, 'x'); 3484 string big_value(kBigValueSize, 'x');
3473 headers.SetHeader("aa", big_value); 3485 headers.SetHeader("aa", big_value);
3474 scoped_ptr<SpdyFrame> control_frame(framer.SerializeHeaders(headers)); 3486 scoped_ptr<SpdyFrame> control_frame(framer.SerializeHeaders(headers));
3475 EXPECT_TRUE(control_frame.get() != NULL); 3487 EXPECT_TRUE(control_frame.get() != NULL);
3476 EXPECT_GT(control_frame->size(), framer.GetControlFrameBufferMaxSize()); 3488 EXPECT_GT(control_frame->size(),
3489 TestSpdyVisitor::sent_control_frame_max_size());
3477 3490
3478 TestSpdyVisitor visitor(spdy_version_); 3491 TestSpdyVisitor visitor(spdy_version_);
3479 visitor.SimulateInFramer( 3492 visitor.SimulateInFramer(
3480 reinterpret_cast<unsigned char*>(control_frame->data()), 3493 reinterpret_cast<unsigned char*>(control_frame->data()),
3481 control_frame->size()); 3494 control_frame->size());
3482 EXPECT_TRUE(visitor.header_buffer_valid_); 3495 EXPECT_TRUE(visitor.header_buffer_valid_);
3483 EXPECT_EQ(0, visitor.error_count_); 3496 EXPECT_EQ(0, visitor.error_count_);
3484 EXPECT_EQ(1, visitor.headers_frame_count_); 3497 EXPECT_EQ(1, visitor.headers_frame_count_);
3485 EXPECT_EQ(16, visitor.continuation_count_); 3498 EXPECT_EQ(16, visitor.continuation_count_);
3486 EXPECT_EQ(1, visitor.zero_length_control_frame_header_data_count_); 3499 EXPECT_EQ(1, visitor.zero_length_control_frame_header_data_count_);
3487 } 3500 }
3488 3501
3489 TEST_P(SpdyFramerTest, TooLargePushPromiseFrameUsesContinuation) { 3502 TEST_P(SpdyFramerTest, TooLargePushPromiseFrameUsesContinuation) {
3490 if (spdy_version_ <= SPDY3) { 3503 if (spdy_version_ <= SPDY3) {
3491 return; 3504 return;
3492 } 3505 }
3493 SpdyFramer framer(spdy_version_); 3506 SpdyFramer framer(spdy_version_);
3494 framer.set_enable_compression(false); 3507 framer.set_enable_compression(false);
3495 SpdyPushPromiseIR push_promise(1, 2); 3508 SpdyPushPromiseIR push_promise(1, 2);
3496 push_promise.set_padding_len(256); 3509 push_promise.set_padding_len(256);
3497 3510
3498 // Exact payload length will change with HPACK, but this should be long 3511 // Exact payload length will change with HPACK, but this should be long
3499 // enough to cause an overflow. 3512 // enough to cause an overflow.
3500 const size_t kBigValueSize = framer.GetControlFrameBufferMaxSize(); 3513 const size_t kBigValueSize = kControlFrameSizeLimit;
3501 string big_value(kBigValueSize, 'x'); 3514 string big_value(kBigValueSize, 'x');
3502 push_promise.SetHeader("aa", big_value); 3515 push_promise.SetHeader("aa", big_value);
3503 scoped_ptr<SpdyFrame> control_frame( 3516 scoped_ptr<SpdyFrame> control_frame(
3504 framer.SerializePushPromise(push_promise)); 3517 framer.SerializePushPromise(push_promise));
3505 EXPECT_TRUE(control_frame.get() != NULL); 3518 EXPECT_TRUE(control_frame.get() != NULL);
3506 EXPECT_GT(control_frame->size(), framer.GetControlFrameBufferMaxSize()); 3519 EXPECT_GT(control_frame->size(),
3520 TestSpdyVisitor::sent_control_frame_max_size());
3507 3521
3508 TestSpdyVisitor visitor(spdy_version_); 3522 TestSpdyVisitor visitor(spdy_version_);
3509 visitor.SimulateInFramer( 3523 visitor.SimulateInFramer(
3510 reinterpret_cast<unsigned char*>(control_frame->data()), 3524 reinterpret_cast<unsigned char*>(control_frame->data()),
3511 control_frame->size()); 3525 control_frame->size());
3512 EXPECT_TRUE(visitor.header_buffer_valid_); 3526 EXPECT_TRUE(visitor.header_buffer_valid_);
3513 EXPECT_EQ(0, visitor.error_count_); 3527 EXPECT_EQ(0, visitor.error_count_);
3514 EXPECT_EQ(1, visitor.push_promise_frame_count_); 3528 EXPECT_EQ(1, visitor.push_promise_frame_count_);
3515 EXPECT_EQ(16, visitor.continuation_count_); 3529 EXPECT_EQ(16, visitor.continuation_count_);
3516 EXPECT_EQ(1, visitor.zero_length_control_frame_header_data_count_); 3530 EXPECT_EQ(1, visitor.zero_length_control_frame_header_data_count_);
(...skipping 2225 matching lines...) Expand 10 before | Expand all | Expand 10 after
5742 TestSpdyVisitor visitor(spdy_version_); 5756 TestSpdyVisitor visitor(spdy_version_);
5743 visitor.SimulateInFramer(kFrameData, sizeof(kFrameData)); 5757 visitor.SimulateInFramer(kFrameData, sizeof(kFrameData));
5744 5758
5745 EXPECT_EQ(SpdyFramer::SPDY_ERROR, visitor.framer_.state()); 5759 EXPECT_EQ(SpdyFramer::SPDY_ERROR, visitor.framer_.state());
5746 EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME, 5760 EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME,
5747 visitor.framer_.error_code()) 5761 visitor.framer_.error_code())
5748 << SpdyFramer::ErrorCodeToString(visitor.framer_.error_code()); 5762 << SpdyFramer::ErrorCodeToString(visitor.framer_.error_code());
5749 } 5763 }
5750 5764
5751 } // namespace net 5765 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_framer.cc ('k') | net/spdy/spdy_protocol.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698