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

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

Issue 1997863002: Revert of Avoids the "re-encode HPACK as SPDY3" step. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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;
27 using testing::StrictMock; 26 using testing::StrictMock;
28 using testing::WithArgs; 27 using testing::WithArgs;
29 using testing::_; 28 using testing::_;
30 29
31 namespace net { 30 namespace net {
32 namespace test { 31 namespace test {
33 namespace { 32 namespace {
34 33
35 // TODO(ckrasic): this workaround is due to absence of std::initializer_list 34 // TODO(ckrasic): this workaround is due to absence of std::initializer_list
36 const bool kFins[] = {false, true}; 35 const bool kFins[] = {false, true};
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 155
157 bool SaveHeaderData(const char* data, int len) { 156 bool SaveHeaderData(const char* data, int len) {
158 saved_header_data_.append(data, len); 157 saved_header_data_.append(data, len);
159 return true; 158 return true;
160 } 159 }
161 160
162 void SaveHeaderDataStringPiece(StringPiece data) { 161 void SaveHeaderDataStringPiece(StringPiece data) {
163 saved_header_data_.append(data.data(), data.length()); 162 saved_header_data_.append(data.data(), data.length());
164 } 163 }
165 164
166 void SavePromiseHeaderList(QuicStreamId /* stream_id */,
167 QuicStreamId /* promised_stream_id */,
168 size_t size,
169 const QuicHeaderList& header_list) {
170 SaveToHandler(size, header_list);
171 }
172
173 void SaveHeaderList(QuicStreamId /* stream_id */,
174 bool /* fin */,
175 size_t size,
176 const QuicHeaderList& header_list) {
177 SaveToHandler(size, header_list);
178 }
179
180 void SaveToHandler(size_t size, const QuicHeaderList& header_list) {
181 headers_handler_.reset(new TestHeadersHandler);
182 headers_handler_->OnHeaderBlockStart();
183 for (const auto& p : header_list) {
184 headers_handler_->OnHeader(p.first, p.second);
185 }
186 headers_handler_->OnHeaderBlockEnd(size);
187 }
188
189 void WriteHeadersAndExpectSynStream(QuicStreamId stream_id, 165 void WriteHeadersAndExpectSynStream(QuicStreamId stream_id,
190 bool fin, 166 bool fin,
191 SpdyPriority priority) { 167 SpdyPriority priority) {
192 WriteHeadersAndCheckData(stream_id, fin, priority, SYN_STREAM); 168 WriteHeadersAndCheckData(stream_id, fin, priority, SYN_STREAM);
193 } 169 }
194 170
195 void WriteHeadersAndExpectSynReply(QuicStreamId stream_id, bool fin) { 171 void WriteHeadersAndExpectSynReply(QuicStreamId stream_id, bool fin) {
196 WriteHeadersAndCheckData(stream_id, fin, 0, SYN_REPLY); 172 WriteHeadersAndCheckData(stream_id, fin, 0, SYN_REPLY);
197 } 173 }
198 174
(...skipping 12 matching lines...) Expand all
211 OnHeaders(stream_id, kHasPriority, priority, 187 OnHeaders(stream_id, kHasPriority, priority,
212 /*parent_stream_id=*/0, 188 /*parent_stream_id=*/0,
213 /*exclusive=*/false, fin, kFrameComplete)); 189 /*exclusive=*/false, fin, kFrameComplete));
214 } else { 190 } else {
215 EXPECT_CALL(visitor_, 191 EXPECT_CALL(visitor_,
216 OnHeaders(stream_id, !kHasPriority, 192 OnHeaders(stream_id, !kHasPriority,
217 /*priority=*/0, 193 /*priority=*/0,
218 /*parent_stream_id=*/0, 194 /*parent_stream_id=*/0,
219 /*exclusive=*/false, fin, kFrameComplete)); 195 /*exclusive=*/false, fin, kFrameComplete));
220 } 196 }
221 headers_handler_.reset(new TestHeadersHandler); 197 EXPECT_CALL(visitor_, OnControlFrameHeaderData(stream_id, _, _))
222 EXPECT_CALL(visitor_, OnHeaderFrameStart(stream_id)) 198 .WillRepeatedly(WithArgs<1, 2>(
223 .WillOnce(Return(headers_handler_.get())); 199 Invoke(this, &QuicHeadersStreamTest::SaveHeaderData)));
224 EXPECT_CALL(visitor_, OnHeaderFrameEnd(stream_id, true)).Times(1);
225 if (fin) { 200 if (fin) {
226 EXPECT_CALL(visitor_, OnStreamEnd(stream_id)); 201 EXPECT_CALL(visitor_, OnStreamEnd(stream_id));
227 } 202 }
228 framer_->ProcessInput(saved_data_.data(), saved_data_.length()); 203 framer_->ProcessInput(saved_data_.data(), saved_data_.length());
229 EXPECT_FALSE(framer_->HasError()) 204 EXPECT_FALSE(framer_->HasError())
230 << SpdyFramer::ErrorCodeToString(framer_->error_code()); 205 << SpdyFramer::ErrorCodeToString(framer_->error_code());
231 206
232 CheckHeaders(); 207 CheckHeaders();
233 saved_data_.clear(); 208 saved_data_.clear();
234 } 209 }
235 210
236 void CheckHeaders() { 211 void CheckHeaders() {
237 EXPECT_EQ(headers_, headers_handler_->decoded_block()); 212 SpdyHeaderBlock headers;
238 headers_handler_.reset(); 213 EXPECT_TRUE(framer_->ParseHeaderBlockInBuffer(
214 saved_header_data_.data(), saved_header_data_.length(), &headers));
215 EXPECT_EQ(headers_, headers);
216 saved_header_data_.clear();
239 } 217 }
240 218
241 Perspective perspective() { return GetParam().perspective; } 219 Perspective perspective() { return GetParam().perspective; }
242 220
243 QuicVersion version() { return GetParam().version; } 221 QuicVersion version() { return GetParam().version; }
244 222
245 QuicVersionVector GetVersion() { 223 QuicVersionVector GetVersion() {
246 QuicVersionVector versions; 224 QuicVersionVector versions;
247 versions.push_back(version()); 225 versions.push_back(version());
248 return versions; 226 return versions;
249 } 227 }
250 228
251 void TearDownLocalConnectionState() { 229 void TearDownLocalConnectionState() {
252 QuicConnectionPeer::TearDownLocalConnectionState(connection_); 230 QuicConnectionPeer::TearDownLocalConnectionState(connection_);
253 } 231 }
254 232
255 QuicStreamId NextPromisedStreamId() { return next_promised_stream_id_ += 2; } 233 QuicStreamId NextPromisedStreamId() { return next_promised_stream_id_ += 2; }
256 234
257 static const bool kFrameComplete = true; 235 static const bool kFrameComplete = true;
258 static const bool kHasPriority = true; 236 static const bool kHasPriority = true;
259 237
260 MockQuicConnectionHelper helper_; 238 MockQuicConnectionHelper helper_;
261 MockAlarmFactory alarm_factory_; 239 MockAlarmFactory alarm_factory_;
262 StrictMock<MockQuicConnection>* connection_; 240 StrictMock<MockQuicConnection>* connection_;
263 StrictMock<MockQuicSpdySession> session_; 241 StrictMock<MockQuicSpdySession> session_;
264 QuicHeadersStream* headers_stream_; 242 QuicHeadersStream* headers_stream_;
265 SpdyHeaderBlock headers_; 243 SpdyHeaderBlock headers_;
266 std::unique_ptr<TestHeadersHandler> headers_handler_;
267 string body_; 244 string body_;
268 string saved_data_; 245 string saved_data_;
269 string saved_header_data_; 246 string saved_header_data_;
270 std::unique_ptr<SpdyFramer> framer_; 247 std::unique_ptr<SpdyFramer> framer_;
271 StrictMock<MockVisitor> visitor_; 248 StrictMock<MockVisitor> visitor_;
272 QuicStreamFrame stream_frame_; 249 QuicStreamFrame stream_frame_;
273 QuicStreamId next_promised_stream_id_; 250 QuicStreamId next_promised_stream_id_;
274 }; 251 };
275 252
276 INSTANTIATE_TEST_CASE_P(Tests, 253 INSTANTIATE_TEST_CASE_P(Tests,
(...skipping 27 matching lines...) Expand all
304 if (perspective() == Perspective::IS_SERVER) { 281 if (perspective() == Perspective::IS_SERVER) {
305 // Write the headers and capture the outgoing data 282 // Write the headers and capture the outgoing data
306 EXPECT_CALL(session_, WritevData(kHeadersStreamId, _, _, false, nullptr)) 283 EXPECT_CALL(session_, WritevData(kHeadersStreamId, _, _, false, nullptr))
307 .WillOnce(WithArgs<1>(Invoke(this, &QuicHeadersStreamTest::SaveIov))); 284 .WillOnce(WithArgs<1>(Invoke(this, &QuicHeadersStreamTest::SaveIov)));
308 headers_stream_->WritePushPromise(stream_id, promised_stream_id, headers_, 285 headers_stream_->WritePushPromise(stream_id, promised_stream_id, headers_,
309 nullptr); 286 nullptr);
310 287
311 // Parse the outgoing data and check that it matches was was written. 288 // Parse the outgoing data and check that it matches was was written.
312 EXPECT_CALL(visitor_, 289 EXPECT_CALL(visitor_,
313 OnPushPromise(stream_id, promised_stream_id, kFrameComplete)); 290 OnPushPromise(stream_id, promised_stream_id, kFrameComplete));
314 headers_handler_.reset(new TestHeadersHandler); 291 EXPECT_CALL(visitor_, OnControlFrameHeaderData(stream_id, _, _))
315 EXPECT_CALL(visitor_, OnHeaderFrameStart(stream_id)) 292 .WillRepeatedly(WithArgs<1, 2>(
316 .WillOnce(Return(headers_handler_.get())); 293 Invoke(this, &QuicHeadersStreamTest::SaveHeaderData)));
317 EXPECT_CALL(visitor_, OnHeaderFrameEnd(stream_id, true)).Times(1);
318 framer_->ProcessInput(saved_data_.data(), saved_data_.length()); 294 framer_->ProcessInput(saved_data_.data(), saved_data_.length());
319 EXPECT_FALSE(framer_->HasError()) 295 EXPECT_FALSE(framer_->HasError())
320 << SpdyFramer::ErrorCodeToString(framer_->error_code()); 296 << SpdyFramer::ErrorCodeToString(framer_->error_code());
321 CheckHeaders(); 297 CheckHeaders();
322 saved_data_.clear(); 298 saved_data_.clear();
323 } else { 299 } else {
324 EXPECT_DFATAL(headers_stream_->WritePushPromise( 300 EXPECT_DFATAL(headers_stream_->WritePushPromise(
325 stream_id, promised_stream_id, headers_, nullptr), 301 stream_id, promised_stream_id, headers_, nullptr),
326 "Client shouldn't send PUSH_PROMISE"); 302 "Client shouldn't send PUSH_PROMISE");
327 } 303 }
(...skipping 13 matching lines...) Expand all
341 headers_frame.set_fin(fin); 317 headers_frame.set_fin(fin);
342 headers_frame.set_has_priority(true); 318 headers_frame.set_has_priority(true);
343 frame = framer_->SerializeFrame(headers_frame); 319 frame = framer_->SerializeFrame(headers_frame);
344 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); 320 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0));
345 } else { 321 } else {
346 SpdyHeadersIR headers_frame(stream_id); 322 SpdyHeadersIR headers_frame(stream_id);
347 headers_frame.set_header_block(headers_); 323 headers_frame.set_header_block(headers_);
348 headers_frame.set_fin(fin); 324 headers_frame.set_fin(fin);
349 frame = framer_->SerializeFrame(headers_frame); 325 frame = framer_->SerializeFrame(headers_frame);
350 } 326 }
327 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _))
328 .WillRepeatedly(WithArgs<1>(Invoke(
329 this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece)));
351 EXPECT_CALL(session_, 330 EXPECT_CALL(session_,
352 OnStreamHeaderList(stream_id, fin, frame.size(), _)) 331 OnStreamHeadersComplete(stream_id, fin, frame.size()));
353 .WillOnce(Invoke(this, &QuicHeadersStreamTest::SaveHeaderList));
354 stream_frame_.data_buffer = frame.data(); 332 stream_frame_.data_buffer = frame.data();
355 stream_frame_.data_length = frame.size(); 333 stream_frame_.data_length = frame.size();
356 headers_stream_->OnStreamFrame(stream_frame_); 334 headers_stream_->OnStreamFrame(stream_frame_);
357 stream_frame_.offset += frame.size(); 335 stream_frame_.offset += frame.size();
358 CheckHeaders(); 336 CheckHeaders();
359 } 337 }
360 } 338 }
361 } 339 }
362 } 340 }
363 341
364 TEST_P(QuicHeadersStreamTest, ProcessPushPromise) { 342 TEST_P(QuicHeadersStreamTest, ProcessPushPromise) {
365 if (perspective() == Perspective::IS_SERVER) 343 if (perspective() == Perspective::IS_SERVER)
366 return; 344 return;
367 for (QuicStreamId stream_id = kClientDataStreamId1; 345 for (QuicStreamId stream_id = kClientDataStreamId1;
368 stream_id < kClientDataStreamId3; stream_id += 2) { 346 stream_id < kClientDataStreamId3; stream_id += 2) {
369 QuicStreamId promised_stream_id = NextPromisedStreamId(); 347 QuicStreamId promised_stream_id = NextPromisedStreamId();
370 SpdyPushPromiseIR push_promise(stream_id, promised_stream_id); 348 SpdyPushPromiseIR push_promise(stream_id, promised_stream_id);
371 push_promise.set_header_block(headers_); 349 push_promise.set_header_block(headers_);
372 SpdySerializedFrame frame(framer_->SerializeFrame(push_promise)); 350 SpdySerializedFrame frame(framer_->SerializeFrame(push_promise));
373 if (perspective() == Perspective::IS_SERVER) { 351 if (perspective() == Perspective::IS_SERVER) {
374 EXPECT_CALL(*connection_, 352 EXPECT_CALL(*connection_,
375 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, 353 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA,
376 "PUSH_PROMISE not supported.", _)) 354 "PUSH_PROMISE not supported.", _))
377 .WillRepeatedly(InvokeWithoutArgs( 355 .WillRepeatedly(InvokeWithoutArgs(
378 this, &QuicHeadersStreamTest::TearDownLocalConnectionState)); 356 this, &QuicHeadersStreamTest::TearDownLocalConnectionState));
379 } else { 357 } else {
380 EXPECT_CALL(session_, OnPromiseHeaderList(stream_id, promised_stream_id, 358 EXPECT_CALL(session_, OnPromiseHeaders(stream_id, _))
381 frame.size(), _)) 359 .WillRepeatedly(WithArgs<1>(
382 .WillOnce( 360 Invoke(this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece)));
383 Invoke(this, &QuicHeadersStreamTest::SavePromiseHeaderList)); 361 EXPECT_CALL(session_, OnPromiseHeadersComplete(
362 stream_id, promised_stream_id, frame.size()));
384 } 363 }
385 stream_frame_.data_buffer = frame.data(); 364 stream_frame_.data_buffer = frame.data();
386 stream_frame_.data_length = frame.size(); 365 stream_frame_.data_length = frame.size();
387 headers_stream_->OnStreamFrame(stream_frame_); 366 headers_stream_->OnStreamFrame(stream_frame_);
388 if (perspective() == Perspective::IS_CLIENT) { 367 if (perspective() == Perspective::IS_CLIENT) {
389 stream_frame_.offset += frame.size(); 368 stream_frame_.offset += frame.size();
390 CheckHeaders(); 369 CheckHeaders();
391 } 370 }
392 } 371 }
393 } 372 }
(...skipping 15 matching lines...) Expand all
409 headers_frame.set_fin(fin); 388 headers_frame.set_fin(fin);
410 headers_frame.set_has_priority(true); 389 headers_frame.set_has_priority(true);
411 frame = framer_->SerializeFrame(headers_frame); 390 frame = framer_->SerializeFrame(headers_frame);
412 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); 391 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0));
413 } else { 392 } else {
414 SpdyHeadersIR headers_frame(stream_id); 393 SpdyHeadersIR headers_frame(stream_id);
415 headers_frame.set_header_block(headers_); 394 headers_frame.set_header_block(headers_);
416 headers_frame.set_fin(fin); 395 headers_frame.set_fin(fin);
417 frame = framer_->SerializeFrame(headers_frame); 396 frame = framer_->SerializeFrame(headers_frame);
418 } 397 }
419 EXPECT_CALL(session_, OnStreamHeaderList(stream_id, fin, frame.size(), _)) 398 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _));
420 .Times(1); 399 EXPECT_CALL(session_,
400 OnStreamHeadersComplete(stream_id, fin, frame.size()));
421 stream_frame_.data_buffer = frame.data(); 401 stream_frame_.data_buffer = frame.data();
422 stream_frame_.data_length = frame.size(); 402 stream_frame_.data_length = frame.size();
423 headers_stream_->OnStreamFrame(stream_frame_); 403 headers_stream_->OnStreamFrame(stream_frame_);
424 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1)); 404 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1));
425 stream_frame_.offset += frame.size(); 405 stream_frame_.offset += frame.size();
426 } 406 }
427 } 407 }
428 408
429 TEST_P(QuicHeadersStreamTest, NonEmptyHeaderHOLBlockedTime) { 409 TEST_P(QuicHeadersStreamTest, NonEmptyHeaderHOLBlockedTime) {
430 if (!FLAGS_quic_measure_headers_hol_blocking_time) { 410 if (!FLAGS_quic_measure_headers_hol_blocking_time) {
(...skipping 21 matching lines...) Expand all
452 headers_frame.set_fin(fin); 432 headers_frame.set_fin(fin);
453 frames[stream_num] = framer_->SerializeFrame(headers_frame); 433 frames[stream_num] = framer_->SerializeFrame(headers_frame);
454 } 434 }
455 stream_frames[stream_num].stream_id = stream_frame_.stream_id; 435 stream_frames[stream_num].stream_id = stream_frame_.stream_id;
456 stream_frames[stream_num].offset = stream_frame_.offset; 436 stream_frames[stream_num].offset = stream_frame_.offset;
457 stream_frames[stream_num].data_buffer = frames[stream_num].data(); 437 stream_frames[stream_num].data_buffer = frames[stream_num].data();
458 stream_frames[stream_num].data_length = frames[stream_num].size(); 438 stream_frames[stream_num].data_length = frames[stream_num].size();
459 DVLOG(1) << "make frame for stream " << stream_num << " offset " 439 DVLOG(1) << "make frame for stream " << stream_num << " offset "
460 << stream_frames[stream_num].offset; 440 << stream_frames[stream_num].offset;
461 stream_frame_.offset += frames[stream_num].size(); 441 stream_frame_.offset += frames[stream_num].size();
462 EXPECT_CALL(session_, OnStreamHeaderList(stream_id, fin, _, _)).Times(1); 442 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _)).Times(1);
443 EXPECT_CALL(session_, OnStreamHeadersComplete(stream_id, fin, _))
444 .Times(1);
463 } 445 }
464 } 446 }
465 447
466 // Actually writing the frames in reverse order will cause HOL blocking. 448 // Actually writing the frames in reverse order will cause HOL blocking.
467 EXPECT_CALL(session_, OnHeadersHeadOfLineBlocking(_)).Times(9); 449 EXPECT_CALL(session_, OnHeadersHeadOfLineBlocking(_)).Times(9);
468 450
469 for (int stream_num = 9; stream_num >= 0; --stream_num) { 451 for (int stream_num = 9; stream_num >= 0; --stream_num) {
470 DVLOG(1) << "OnStreamFrame for stream " << stream_num << " offset " 452 DVLOG(1) << "OnStreamFrame for stream " << stream_num << " offset "
471 << stream_frames[stream_num].offset; 453 << stream_frames[stream_num].offset;
472 headers_stream_->OnStreamFrame(stream_frames[stream_num]); 454 headers_stream_->OnStreamFrame(stream_frames[stream_num]);
(...skipping 20 matching lines...) Expand all
493 headers_frame.set_fin(fin); 475 headers_frame.set_fin(fin);
494 headers_frame.set_has_priority(true); 476 headers_frame.set_has_priority(true);
495 frame = framer_->SerializeFrame(headers_frame); 477 frame = framer_->SerializeFrame(headers_frame);
496 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); 478 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0));
497 } else { 479 } else {
498 SpdyHeadersIR headers_frame(stream_id); 480 SpdyHeadersIR headers_frame(stream_id);
499 headers_frame.set_header_block(headers_); 481 headers_frame.set_header_block(headers_);
500 headers_frame.set_fin(fin); 482 headers_frame.set_fin(fin);
501 frame = framer_->SerializeFrame(headers_frame); 483 frame = framer_->SerializeFrame(headers_frame);
502 } 484 }
485 EXPECT_CALL(session_, OnStreamHeaders(stream_id, _))
486 .WillRepeatedly(WithArgs<1>(Invoke(
487 this, &QuicHeadersStreamTest::SaveHeaderDataStringPiece)));
503 EXPECT_CALL(session_, 488 EXPECT_CALL(session_,
504 OnStreamHeaderList(stream_id, fin, frame.size(), _)) 489 OnStreamHeadersComplete(stream_id, fin, frame.size()));
505 .WillOnce(Invoke(this, &QuicHeadersStreamTest::SaveHeaderList));
506 stream_frame_.data_buffer = frame.data(); 490 stream_frame_.data_buffer = frame.data();
507 stream_frame_.data_length = frame.size(); 491 stream_frame_.data_length = frame.size();
508 headers_stream_->OnStreamFrame(stream_frame_); 492 headers_stream_->OnStreamFrame(stream_frame_);
509 stream_frame_.offset += frame.size(); 493 stream_frame_.offset += frame.size();
510 CheckHeaders(); 494 CheckHeaders();
511 } 495 }
512 } 496 }
513 } 497 }
514 } 498 }
515 499
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 } 583 }
600 584
601 TEST_P(QuicHeadersStreamTest, NoConnectionLevelFlowControl) { 585 TEST_P(QuicHeadersStreamTest, NoConnectionLevelFlowControl) {
602 EXPECT_FALSE(ReliableQuicStreamPeer::StreamContributesToConnectionFlowControl( 586 EXPECT_FALSE(ReliableQuicStreamPeer::StreamContributesToConnectionFlowControl(
603 headers_stream_)); 587 headers_stream_));
604 } 588 }
605 589
606 } // namespace 590 } // namespace
607 } // namespace test 591 } // namespace test
608 } // namespace net 592 } // 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