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

Side by Side Diff: net/quic/quic_headers_stream_test.cc

Issue 1961573002: Avoids the "re-encode HPACK as SPDY3" step. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update new test Created 4 years, 7 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/quic/quic_headers_stream.cc ('k') | net/quic/quic_spdy_stream.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/quic/quic_headers_stream.h" 5 #include "net/quic/quic_headers_stream.h"
6 6
7 #include "net/quic/quic_utils.h" 7 #include "net/quic/quic_utils.h"
8 #include "net/quic/spdy_utils.h" 8 #include "net/quic/spdy_utils.h"
9 #include "net/quic/test_tools/quic_connection_peer.h" 9 #include "net/quic/test_tools/quic_connection_peer.h"
10 #include "net/quic/test_tools/quic_spdy_session_peer.h" 10 #include "net/quic/test_tools/quic_spdy_session_peer.h"
11 #include "net/quic/test_tools/quic_test_utils.h" 11 #include "net/quic/test_tools/quic_test_utils.h"
12 #include "net/quic/test_tools/reliable_quic_stream_peer.h" 12 #include "net/quic/test_tools/reliable_quic_stream_peer.h"
13 #include "net/spdy/spdy_alt_svc_wire_format.h" 13 #include "net/spdy/spdy_alt_svc_wire_format.h"
14 #include "net/spdy/spdy_protocol.h" 14 #include "net/spdy/spdy_protocol.h"
15 #include "net/spdy/spdy_test_utils.h" 15 #include "net/spdy/spdy_test_utils.h"
16 #include "net/test/gtest_util.h" 16 #include "net/test/gtest_util.h"
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 18
19 using base::StringPiece; 19 using base::StringPiece;
20 using std::ostream; 20 using std::ostream;
21 using std::string; 21 using std::string;
22 using std::vector; 22 using std::vector;
23 using testing::ElementsAre; 23 using testing::ElementsAre;
24 using testing::InSequence; 24 using testing::InSequence;
25 using testing::Invoke; 25 using testing::Invoke;
26 using testing::Return;
26 using testing::StrictMock; 27 using testing::StrictMock;
27 using testing::WithArgs; 28 using testing::WithArgs;
28 using testing::_; 29 using testing::_;
29 30
30 namespace net { 31 namespace net {
31 namespace test { 32 namespace test {
32 33
33 class MockHpackDebugVisitor : public QuicHeadersStream::HpackDebugVisitor { 34 class MockHpackDebugVisitor : public QuicHeadersStream::HpackDebugVisitor {
34 public: 35 public:
35 explicit MockHpackDebugVisitor() : HpackDebugVisitor() {} 36 explicit MockHpackDebugVisitor() : HpackDebugVisitor() {}
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 169
169 bool SaveHeaderData(const char* data, int len) { 170 bool SaveHeaderData(const char* data, int len) {
170 saved_header_data_.append(data, len); 171 saved_header_data_.append(data, len);
171 return true; 172 return true;
172 } 173 }
173 174
174 void SaveHeaderDataStringPiece(StringPiece data) { 175 void SaveHeaderDataStringPiece(StringPiece data) {
175 saved_header_data_.append(data.data(), data.length()); 176 saved_header_data_.append(data.data(), data.length());
176 } 177 }
177 178
179 void SavePromiseHeaderList(QuicStreamId /* stream_id */,
180 QuicStreamId /* promised_stream_id */,
181 size_t size,
182 const QuicHeaderList& header_list) {
183 SaveToHandler(size, header_list);
184 }
185
186 void SaveHeaderList(QuicStreamId /* stream_id */,
187 bool /* fin */,
188 size_t size,
189 const QuicHeaderList& header_list) {
190 SaveToHandler(size, header_list);
191 }
192
193 void SaveToHandler(size_t size, const QuicHeaderList& header_list) {
194 headers_handler_.reset(new TestHeadersHandler);
195 headers_handler_->OnHeaderBlockStart();
196 for (const auto& p : header_list) {
197 headers_handler_->OnHeader(p.first, p.second);
198 }
199 headers_handler_->OnHeaderBlockEnd(size);
200 }
201
178 void WriteHeadersAndExpectSynStream(QuicStreamId stream_id, 202 void WriteHeadersAndExpectSynStream(QuicStreamId stream_id,
179 bool fin, 203 bool fin,
180 SpdyPriority priority) { 204 SpdyPriority priority) {
181 WriteHeadersAndCheckData(stream_id, fin, priority, SYN_STREAM); 205 WriteHeadersAndCheckData(stream_id, fin, priority, SYN_STREAM);
182 } 206 }
183 207
184 void WriteHeadersAndExpectSynReply(QuicStreamId stream_id, bool fin) { 208 void WriteHeadersAndExpectSynReply(QuicStreamId stream_id, bool fin) {
185 WriteHeadersAndCheckData(stream_id, fin, 0, SYN_REPLY); 209 WriteHeadersAndCheckData(stream_id, fin, 0, SYN_REPLY);
186 } 210 }
187 211
(...skipping 13 matching lines...) Expand all
201 OnHeaders(stream_id, kHasPriority, priority, 225 OnHeaders(stream_id, kHasPriority, priority,
202 /*parent_stream_id=*/0, 226 /*parent_stream_id=*/0,
203 /*exclusive=*/false, fin, kFrameComplete)); 227 /*exclusive=*/false, fin, kFrameComplete));
204 } else { 228 } else {
205 EXPECT_CALL(visitor_, 229 EXPECT_CALL(visitor_,
206 OnHeaders(stream_id, !kHasPriority, 230 OnHeaders(stream_id, !kHasPriority,
207 /*priority=*/0, 231 /*priority=*/0,
208 /*parent_stream_id=*/0, 232 /*parent_stream_id=*/0,
209 /*exclusive=*/false, fin, kFrameComplete)); 233 /*exclusive=*/false, fin, kFrameComplete));
210 } 234 }
211 EXPECT_CALL(visitor_, OnControlFrameHeaderData(stream_id, _, _)) 235 headers_handler_.reset(new TestHeadersHandler);
212 .WillRepeatedly(WithArgs<1, 2>( 236 EXPECT_CALL(visitor_, OnHeaderFrameStart(stream_id))
213 Invoke(this, &QuicHeadersStreamTest::SaveHeaderData))); 237 .WillOnce(Return(headers_handler_.get()));
238 EXPECT_CALL(visitor_, OnHeaderFrameEnd(stream_id, true)).Times(1);
214 if (fin) { 239 if (fin) {
215 EXPECT_CALL(visitor_, OnStreamEnd(stream_id)); 240 EXPECT_CALL(visitor_, OnStreamEnd(stream_id));
216 } 241 }
217 framer_->ProcessInput(saved_data_.data(), saved_data_.length()); 242 framer_->ProcessInput(saved_data_.data(), saved_data_.length());
218 EXPECT_FALSE(framer_->HasError()) 243 EXPECT_FALSE(framer_->HasError())
219 << SpdyFramer::ErrorCodeToString(framer_->error_code()); 244 << SpdyFramer::ErrorCodeToString(framer_->error_code());
220 245
221 CheckHeaders(); 246 CheckHeaders();
222 saved_data_.clear(); 247 saved_data_.clear();
223 } 248 }
224 249
225 void CheckHeaders() { 250 void CheckHeaders() {
226 SpdyHeaderBlock headers; 251 EXPECT_EQ(headers_, headers_handler_->decoded_block());
227 EXPECT_TRUE(framer_->ParseHeaderBlockInBuffer( 252 headers_handler_.reset();
228 saved_header_data_.data(), saved_header_data_.length(), &headers));
229 EXPECT_EQ(headers_, headers);
230 saved_header_data_.clear();
231 } 253 }
232 254
233 Perspective perspective() { return GetParam().perspective; } 255 Perspective perspective() { return GetParam().perspective; }
234 256
235 QuicVersion version() { return GetParam().version; } 257 QuicVersion version() { return GetParam().version; }
236 258
237 QuicVersionVector GetVersion() { 259 QuicVersionVector GetVersion() {
238 QuicVersionVector versions; 260 QuicVersionVector versions;
239 versions.push_back(version()); 261 versions.push_back(version());
240 return versions; 262 return versions;
241 } 263 }
242 264
243 void TearDownLocalConnectionState() { 265 void TearDownLocalConnectionState() {
244 QuicConnectionPeer::TearDownLocalConnectionState(connection_); 266 QuicConnectionPeer::TearDownLocalConnectionState(connection_);
245 } 267 }
246 268
247 QuicStreamId NextPromisedStreamId() { return next_promised_stream_id_ += 2; } 269 QuicStreamId NextPromisedStreamId() { return next_promised_stream_id_ += 2; }
248 270
249 static const bool kFrameComplete = true; 271 static const bool kFrameComplete = true;
250 static const bool kHasPriority = true; 272 static const bool kHasPriority = true;
251 273
252 MockQuicConnectionHelper helper_; 274 MockQuicConnectionHelper helper_;
253 MockAlarmFactory alarm_factory_; 275 MockAlarmFactory alarm_factory_;
254 StrictMock<MockQuicConnection>* connection_; 276 StrictMock<MockQuicConnection>* connection_;
255 StrictMock<MockQuicSpdySession> session_; 277 StrictMock<MockQuicSpdySession> session_;
256 QuicHeadersStream* headers_stream_; 278 QuicHeadersStream* headers_stream_;
257 SpdyHeaderBlock headers_; 279 SpdyHeaderBlock headers_;
280 std::unique_ptr<TestHeadersHandler> headers_handler_;
258 string body_; 281 string body_;
259 string saved_data_; 282 string saved_data_;
260 string saved_header_data_; 283 string saved_header_data_;
261 std::unique_ptr<SpdyFramer> framer_; 284 std::unique_ptr<SpdyFramer> framer_;
262 StrictMock<MockVisitor> visitor_; 285 StrictMock<MockVisitor> visitor_;
263 std::unique_ptr<StrictMock<MockHpackDebugVisitor>> hpack_encoder_visitor_; 286 std::unique_ptr<StrictMock<MockHpackDebugVisitor>> hpack_encoder_visitor_;
264 std::unique_ptr<StrictMock<MockHpackDebugVisitor>> hpack_decoder_visitor_; 287 std::unique_ptr<StrictMock<MockHpackDebugVisitor>> hpack_decoder_visitor_;
265 QuicStreamFrame stream_frame_; 288 QuicStreamFrame stream_frame_;
266 QuicStreamId next_promised_stream_id_; 289 QuicStreamId next_promised_stream_id_;
267 }; 290 };
(...skipping 30 matching lines...) Expand all
298 // Write the headers and capture the outgoing data 321 // Write the headers and capture the outgoing data
299 EXPECT_CALL(session_, WritevData(headers_stream_, kHeadersStreamId, _, _, 322 EXPECT_CALL(session_, WritevData(headers_stream_, kHeadersStreamId, _, _,
300 false, nullptr)) 323 false, nullptr))
301 .WillOnce(WithArgs<2>(Invoke(this, &QuicHeadersStreamTest::SaveIov))); 324 .WillOnce(WithArgs<2>(Invoke(this, &QuicHeadersStreamTest::SaveIov)));
302 headers_stream_->WritePushPromise(stream_id, promised_stream_id, headers_, 325 headers_stream_->WritePushPromise(stream_id, promised_stream_id, headers_,
303 nullptr); 326 nullptr);
304 327
305 // Parse the outgoing data and check that it matches was was written. 328 // Parse the outgoing data and check that it matches was was written.
306 EXPECT_CALL(visitor_, 329 EXPECT_CALL(visitor_,
307 OnPushPromise(stream_id, promised_stream_id, kFrameComplete)); 330 OnPushPromise(stream_id, promised_stream_id, kFrameComplete));
308 EXPECT_CALL(visitor_, OnControlFrameHeaderData(stream_id, _, _)) 331 headers_handler_.reset(new TestHeadersHandler);
309 .WillRepeatedly(WithArgs<1, 2>( 332 EXPECT_CALL(visitor_, OnHeaderFrameStart(stream_id))
310 Invoke(this, &QuicHeadersStreamTest::SaveHeaderData))); 333 .WillOnce(Return(headers_handler_.get()));
334 EXPECT_CALL(visitor_, OnHeaderFrameEnd(stream_id, true)).Times(1);
311 framer_->ProcessInput(saved_data_.data(), saved_data_.length()); 335 framer_->ProcessInput(saved_data_.data(), saved_data_.length());
312 EXPECT_FALSE(framer_->HasError()) 336 EXPECT_FALSE(framer_->HasError())
313 << SpdyFramer::ErrorCodeToString(framer_->error_code()); 337 << SpdyFramer::ErrorCodeToString(framer_->error_code());
314 CheckHeaders(); 338 CheckHeaders();
315 saved_data_.clear(); 339 saved_data_.clear();
316 } else { 340 } else {
317 EXPECT_DFATAL(headers_stream_->WritePushPromise( 341 EXPECT_DFATAL(headers_stream_->WritePushPromise(
318 stream_id, promised_stream_id, headers_, nullptr), 342 stream_id, promised_stream_id, headers_, nullptr),
319 "Client shouldn't send PUSH_PROMISE"); 343 "Client shouldn't send PUSH_PROMISE");
320 } 344 }
(...skipping 13 matching lines...) Expand all
334 headers_frame.set_fin(fin); 358 headers_frame.set_fin(fin);
335 headers_frame.set_has_priority(true); 359 headers_frame.set_has_priority(true);
336 frame = framer_->SerializeFrame(headers_frame); 360 frame = framer_->SerializeFrame(headers_frame);
337 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); 361 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0));
338 } else { 362 } else {
339 SpdyHeadersIR headers_frame(stream_id); 363 SpdyHeadersIR headers_frame(stream_id);
340 headers_frame.set_header_block(headers_); 364 headers_frame.set_header_block(headers_);
341 headers_frame.set_fin(fin); 365 headers_frame.set_fin(fin);
342 frame = framer_->SerializeFrame(headers_frame); 366 frame = framer_->SerializeFrame(headers_frame);
343 } 367 }
344 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _))
345 .WillRepeatedly(WithArgs<1>(Invoke(
346 this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece)));
347 EXPECT_CALL(session_, 368 EXPECT_CALL(session_,
348 OnStreamHeadersComplete(stream_id, fin, frame.size())); 369 OnStreamHeaderList(stream_id, fin, frame.size(), _))
370 .WillOnce(Invoke(this, &QuicHeadersStreamTest::SaveHeaderList));
349 stream_frame_.data_buffer = frame.data(); 371 stream_frame_.data_buffer = frame.data();
350 stream_frame_.data_length = frame.size(); 372 stream_frame_.data_length = frame.size();
351 headers_stream_->OnStreamFrame(stream_frame_); 373 headers_stream_->OnStreamFrame(stream_frame_);
352 stream_frame_.offset += frame.size(); 374 stream_frame_.offset += frame.size();
353 CheckHeaders(); 375 CheckHeaders();
354 } 376 }
355 } 377 }
356 } 378 }
357 } 379 }
358 380
359 TEST_P(QuicHeadersStreamTest, ProcessPushPromise) { 381 TEST_P(QuicHeadersStreamTest, ProcessPushPromise) {
360 if (perspective() == Perspective::IS_SERVER) 382 if (perspective() == Perspective::IS_SERVER)
361 return; 383 return;
362 for (QuicStreamId stream_id = kClientDataStreamId1; 384 for (QuicStreamId stream_id = kClientDataStreamId1;
363 stream_id < kClientDataStreamId3; stream_id += 2) { 385 stream_id < kClientDataStreamId3; stream_id += 2) {
364 QuicStreamId promised_stream_id = NextPromisedStreamId(); 386 QuicStreamId promised_stream_id = NextPromisedStreamId();
365 SpdyPushPromiseIR push_promise(stream_id, promised_stream_id); 387 SpdyPushPromiseIR push_promise(stream_id, promised_stream_id);
366 push_promise.set_header_block(headers_); 388 push_promise.set_header_block(headers_);
367 SpdySerializedFrame frame(framer_->SerializeFrame(push_promise)); 389 SpdySerializedFrame frame(framer_->SerializeFrame(push_promise));
368 if (perspective() == Perspective::IS_SERVER) { 390 if (perspective() == Perspective::IS_SERVER) {
369 EXPECT_CALL(*connection_, 391 EXPECT_CALL(*connection_,
370 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, 392 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA,
371 "PUSH_PROMISE not supported.", _)) 393 "PUSH_PROMISE not supported.", _))
372 .WillRepeatedly(InvokeWithoutArgs( 394 .WillRepeatedly(InvokeWithoutArgs(
373 this, &QuicHeadersStreamTest::TearDownLocalConnectionState)); 395 this, &QuicHeadersStreamTest::TearDownLocalConnectionState));
374 } else { 396 } else {
375 EXPECT_CALL(session_, OnPromiseHeaders(stream_id, _)) 397 EXPECT_CALL(session_, OnPromiseHeaderList(stream_id, promised_stream_id,
376 .WillRepeatedly(WithArgs<1>( 398 frame.size(), _))
377 Invoke(this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece))); 399 .WillOnce(
378 EXPECT_CALL(session_, OnPromiseHeadersComplete( 400 Invoke(this, &QuicHeadersStreamTest::SavePromiseHeaderList));
379 stream_id, promised_stream_id, frame.size()));
380 } 401 }
381 stream_frame_.data_buffer = frame.data(); 402 stream_frame_.data_buffer = frame.data();
382 stream_frame_.data_length = frame.size(); 403 stream_frame_.data_length = frame.size();
383 headers_stream_->OnStreamFrame(stream_frame_); 404 headers_stream_->OnStreamFrame(stream_frame_);
384 if (perspective() == Perspective::IS_CLIENT) { 405 if (perspective() == Perspective::IS_CLIENT) {
385 stream_frame_.offset += frame.size(); 406 stream_frame_.offset += frame.size();
386 CheckHeaders(); 407 CheckHeaders();
387 } 408 }
388 } 409 }
389 } 410 }
(...skipping 15 matching lines...) Expand all
405 headers_frame.set_fin(fin); 426 headers_frame.set_fin(fin);
406 headers_frame.set_has_priority(true); 427 headers_frame.set_has_priority(true);
407 frame = framer_->SerializeFrame(headers_frame); 428 frame = framer_->SerializeFrame(headers_frame);
408 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); 429 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0));
409 } else { 430 } else {
410 SpdyHeadersIR headers_frame(stream_id); 431 SpdyHeadersIR headers_frame(stream_id);
411 headers_frame.set_header_block(headers_); 432 headers_frame.set_header_block(headers_);
412 headers_frame.set_fin(fin); 433 headers_frame.set_fin(fin);
413 frame = framer_->SerializeFrame(headers_frame); 434 frame = framer_->SerializeFrame(headers_frame);
414 } 435 }
415 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _)); 436 EXPECT_CALL(session_, OnStreamHeaderList(stream_id, fin, frame.size(), _))
416 EXPECT_CALL(session_, 437 .Times(1);
417 OnStreamHeadersComplete(stream_id, fin, frame.size()));
418 stream_frame_.data_buffer = frame.data(); 438 stream_frame_.data_buffer = frame.data();
419 stream_frame_.data_length = frame.size(); 439 stream_frame_.data_length = frame.size();
420 headers_stream_->OnStreamFrame(stream_frame_); 440 headers_stream_->OnStreamFrame(stream_frame_);
421 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1)); 441 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1));
422 stream_frame_.offset += frame.size(); 442 stream_frame_.offset += frame.size();
423 } 443 }
424 } 444 }
425 445
426 TEST_P(QuicHeadersStreamTest, NonEmptyHeaderHOLBlockedTime) { 446 TEST_P(QuicHeadersStreamTest, NonEmptyHeaderHOLBlockedTime) {
427 if (!FLAGS_quic_measure_headers_hol_blocking_time) { 447 if (!FLAGS_quic_measure_headers_hol_blocking_time) {
(...skipping 21 matching lines...) Expand all
449 headers_frame.set_fin(fin); 469 headers_frame.set_fin(fin);
450 frames[stream_num] = framer_->SerializeFrame(headers_frame); 470 frames[stream_num] = framer_->SerializeFrame(headers_frame);
451 } 471 }
452 stream_frames[stream_num].stream_id = stream_frame_.stream_id; 472 stream_frames[stream_num].stream_id = stream_frame_.stream_id;
453 stream_frames[stream_num].offset = stream_frame_.offset; 473 stream_frames[stream_num].offset = stream_frame_.offset;
454 stream_frames[stream_num].data_buffer = frames[stream_num].data(); 474 stream_frames[stream_num].data_buffer = frames[stream_num].data();
455 stream_frames[stream_num].data_length = frames[stream_num].size(); 475 stream_frames[stream_num].data_length = frames[stream_num].size();
456 DVLOG(1) << "make frame for stream " << stream_num << " offset " 476 DVLOG(1) << "make frame for stream " << stream_num << " offset "
457 << stream_frames[stream_num].offset; 477 << stream_frames[stream_num].offset;
458 stream_frame_.offset += frames[stream_num].size(); 478 stream_frame_.offset += frames[stream_num].size();
459 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _)).Times(1); 479 EXPECT_CALL(session_, OnStreamHeaderList(stream_id, fin, _, _)).Times(1);
460 EXPECT_CALL(session_, OnStreamHeadersComplete(stream_id, fin, _))
461 .Times(1);
462 } 480 }
463 } 481 }
464 482
465 // Actually writing the frames in reverse order will cause HOL blocking. 483 // Actually writing the frames in reverse order will cause HOL blocking.
466 EXPECT_CALL(session_, OnHeadersHeadOfLineBlocking(_)).Times(9); 484 EXPECT_CALL(session_, OnHeadersHeadOfLineBlocking(_)).Times(9);
467 485
468 for (int stream_num = 9; stream_num >= 0; --stream_num) { 486 for (int stream_num = 9; stream_num >= 0; --stream_num) {
469 DVLOG(1) << "OnStreamFrame for stream " << stream_num << " offset " 487 DVLOG(1) << "OnStreamFrame for stream " << stream_num << " offset "
470 << stream_frames[stream_num].offset; 488 << stream_frames[stream_num].offset;
471 headers_stream_->OnStreamFrame(stream_frames[stream_num]); 489 headers_stream_->OnStreamFrame(stream_frames[stream_num]);
(...skipping 20 matching lines...) Expand all
492 headers_frame.set_fin(fin); 510 headers_frame.set_fin(fin);
493 headers_frame.set_has_priority(true); 511 headers_frame.set_has_priority(true);
494 frame = framer_->SerializeFrame(headers_frame); 512 frame = framer_->SerializeFrame(headers_frame);
495 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); 513 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0));
496 } else { 514 } else {
497 SpdyHeadersIR headers_frame(stream_id); 515 SpdyHeadersIR headers_frame(stream_id);
498 headers_frame.set_header_block(headers_); 516 headers_frame.set_header_block(headers_);
499 headers_frame.set_fin(fin); 517 headers_frame.set_fin(fin);
500 frame = framer_->SerializeFrame(headers_frame); 518 frame = framer_->SerializeFrame(headers_frame);
501 } 519 }
502 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _))
503 .WillRepeatedly(WithArgs<1>(Invoke(
504 this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece)));
505 EXPECT_CALL(session_, 520 EXPECT_CALL(session_,
506 OnStreamHeadersComplete(stream_id, fin, frame.size())); 521 OnStreamHeaderList(stream_id, fin, frame.size(), _))
522 .WillOnce(Invoke(this, &QuicHeadersStreamTest::SaveHeaderList));
507 stream_frame_.data_buffer = frame.data(); 523 stream_frame_.data_buffer = frame.data();
508 stream_frame_.data_length = frame.size(); 524 stream_frame_.data_length = frame.size();
509 headers_stream_->OnStreamFrame(stream_frame_); 525 headers_stream_->OnStreamFrame(stream_frame_);
510 stream_frame_.offset += frame.size(); 526 stream_frame_.offset += frame.size();
511 CheckHeaders(); 527 CheckHeaders();
512 } 528 }
513 } 529 }
514 } 530 }
515 } 531 }
516 532
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 headers_frame.set_fin(fin); 652 headers_frame.set_fin(fin);
637 headers_frame.set_has_priority(true); 653 headers_frame.set_has_priority(true);
638 frame = framer_->SerializeFrame(headers_frame); 654 frame = framer_->SerializeFrame(headers_frame);
639 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); 655 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0));
640 } else { 656 } else {
641 SpdyHeadersIR headers_frame(stream_id); 657 SpdyHeadersIR headers_frame(stream_id);
642 headers_frame.set_header_block(headers_); 658 headers_frame.set_header_block(headers_);
643 headers_frame.set_fin(fin); 659 headers_frame.set_fin(fin);
644 frame = framer_->SerializeFrame(headers_frame); 660 frame = framer_->SerializeFrame(headers_frame);
645 } 661 }
646 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _))
647 .WillRepeatedly(WithArgs<1>(Invoke(
648 this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece)));
649 EXPECT_CALL(session_, 662 EXPECT_CALL(session_,
650 OnStreamHeadersComplete(stream_id, fin, frame.size())); 663 OnStreamHeaderList(stream_id, fin, frame.size(), _))
664 .WillOnce(Invoke(this, &QuicHeadersStreamTest::SaveHeaderList));
651 stream_frame_.data_buffer = frame.data(); 665 stream_frame_.data_buffer = frame.data();
652 stream_frame_.data_length = frame.size(); 666 stream_frame_.data_length = frame.size();
653 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1)); 667 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1));
654 headers_stream_->OnStreamFrame(stream_frame_); 668 headers_stream_->OnStreamFrame(stream_frame_);
655 stream_frame_.offset += frame.size(); 669 stream_frame_.offset += frame.size();
656 CheckHeaders(); 670 CheckHeaders();
657 } 671 }
658 } 672 }
659 } 673 }
660 } 674 }
(...skipping 30 matching lines...) Expand all
691 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1)); 705 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1));
692 } 706 }
693 } 707 }
694 } 708 }
695 } 709 }
696 } 710 }
697 711
698 } // namespace 712 } // namespace
699 } // namespace test 713 } // namespace test
700 } // namespace net 714 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/quic_headers_stream.cc ('k') | net/quic/quic_spdy_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698