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 "content/browser/byte_stream.h" | 5 #include "content/browser/byte_stream.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <deque> | 9 #include <deque> |
10 #include <limits> | 10 #include <limits> |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 std::deque<size_t> length_queue_; | 96 std::deque<size_t> length_queue_; |
97 }; | 97 }; |
98 | 98 |
99 ByteStreamTest::ByteStreamTest() | 99 ByteStreamTest::ByteStreamTest() |
100 : producing_seed_key_(0), | 100 : producing_seed_key_(0), |
101 consuming_seed_key_(0) { } | 101 consuming_seed_key_(0) { } |
102 | 102 |
103 // Confirm that filling and emptying the stream works properly, and that | 103 // Confirm that filling and emptying the stream works properly, and that |
104 // we get full triggers when we expect. | 104 // we get full triggers when we expect. |
105 TEST_F(ByteStreamTest, ByteStream_PushBack) { | 105 TEST_F(ByteStreamTest, ByteStream_PushBack) { |
106 scoped_ptr<ByteStreamWriter> byte_stream_input; | 106 std::unique_ptr<ByteStreamWriter> byte_stream_input; |
107 scoped_ptr<ByteStreamReader> byte_stream_output; | 107 std::unique_ptr<ByteStreamReader> byte_stream_output; |
108 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), | 108 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), |
109 3 * 1024, &byte_stream_input, &byte_stream_output); | 109 3 * 1024, &byte_stream_input, &byte_stream_output); |
110 | 110 |
111 // Push a series of IO buffers on; test pushback happening and | 111 // Push a series of IO buffers on; test pushback happening and |
112 // that it's advisory. | 112 // that it's advisory. |
113 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); | 113 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); |
114 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); | 114 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); |
115 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); | 115 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); |
116 EXPECT_FALSE(Write(byte_stream_input.get(), 1)); | 116 EXPECT_FALSE(Write(byte_stream_input.get(), 1)); |
117 EXPECT_FALSE(Write(byte_stream_input.get(), 1024)); | 117 EXPECT_FALSE(Write(byte_stream_input.get(), 1024)); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 byte_stream_output->Read(&output_io_buffer, &output_length)); | 150 byte_stream_output->Read(&output_io_buffer, &output_length)); |
151 | 151 |
152 message_loop_.RunUntilIdle(); | 152 message_loop_.RunUntilIdle(); |
153 // Reader now knows that all data is read out. | 153 // Reader now knows that all data is read out. |
154 EXPECT_EQ(1024U, byte_stream_input->GetTotalBufferedBytes()); | 154 EXPECT_EQ(1024U, byte_stream_input->GetTotalBufferedBytes()); |
155 } | 155 } |
156 | 156 |
157 // Confirm that Flush() method makes the writer to send written contents to | 157 // Confirm that Flush() method makes the writer to send written contents to |
158 // the reader. | 158 // the reader. |
159 TEST_F(ByteStreamTest, ByteStream_Flush) { | 159 TEST_F(ByteStreamTest, ByteStream_Flush) { |
160 scoped_ptr<ByteStreamWriter> byte_stream_input; | 160 std::unique_ptr<ByteStreamWriter> byte_stream_input; |
161 scoped_ptr<ByteStreamReader> byte_stream_output; | 161 std::unique_ptr<ByteStreamReader> byte_stream_output; |
162 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), | 162 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), |
163 1024, &byte_stream_input, &byte_stream_output); | 163 1024, &byte_stream_input, &byte_stream_output); |
164 | 164 |
165 EXPECT_TRUE(Write(byte_stream_input.get(), 1)); | 165 EXPECT_TRUE(Write(byte_stream_input.get(), 1)); |
166 message_loop_.RunUntilIdle(); | 166 message_loop_.RunUntilIdle(); |
167 | 167 |
168 scoped_refptr<net::IOBuffer> output_io_buffer; | 168 scoped_refptr<net::IOBuffer> output_io_buffer; |
169 size_t output_length = 0; | 169 size_t output_length = 0; |
170 // Check that data is not sent to the reader yet. | 170 // Check that data is not sent to the reader yet. |
171 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, | 171 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, |
(...skipping 17 matching lines...) Expand all Loading... |
189 message_loop_.RunUntilIdle(); | 189 message_loop_.RunUntilIdle(); |
190 | 190 |
191 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE, | 191 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE, |
192 byte_stream_output->Read(&output_io_buffer, &output_length)); | 192 byte_stream_output->Read(&output_io_buffer, &output_length)); |
193 } | 193 } |
194 | 194 |
195 // Same as above, only use knowledge of the internals to confirm | 195 // Same as above, only use knowledge of the internals to confirm |
196 // that we're getting pushback even when data's split across the two | 196 // that we're getting pushback even when data's split across the two |
197 // objects | 197 // objects |
198 TEST_F(ByteStreamTest, ByteStream_PushBackSplit) { | 198 TEST_F(ByteStreamTest, ByteStream_PushBackSplit) { |
199 scoped_ptr<ByteStreamWriter> byte_stream_input; | 199 std::unique_ptr<ByteStreamWriter> byte_stream_input; |
200 scoped_ptr<ByteStreamReader> byte_stream_output; | 200 std::unique_ptr<ByteStreamReader> byte_stream_output; |
201 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), | 201 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), |
202 9 * 1024, &byte_stream_input, &byte_stream_output); | 202 9 * 1024, &byte_stream_input, &byte_stream_output); |
203 | 203 |
204 // Push a series of IO buffers on; test pushback happening and | 204 // Push a series of IO buffers on; test pushback happening and |
205 // that it's advisory. | 205 // that it's advisory. |
206 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); | 206 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); |
207 message_loop_.RunUntilIdle(); | 207 message_loop_.RunUntilIdle(); |
208 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); | 208 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); |
209 message_loop_.RunUntilIdle(); | 209 message_loop_.RunUntilIdle(); |
210 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); | 210 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); |
(...skipping 27 matching lines...) Expand all Loading... |
238 byte_stream_output->Read(&output_io_buffer, &output_length)); | 238 byte_stream_output->Read(&output_io_buffer, &output_length)); |
239 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); | 239 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); |
240 | 240 |
241 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, | 241 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, |
242 byte_stream_output->Read(&output_io_buffer, &output_length)); | 242 byte_stream_output->Read(&output_io_buffer, &output_length)); |
243 } | 243 } |
244 | 244 |
245 // Confirm that a Close() notification transmits in-order | 245 // Confirm that a Close() notification transmits in-order |
246 // with data on the stream. | 246 // with data on the stream. |
247 TEST_F(ByteStreamTest, ByteStream_CompleteTransmits) { | 247 TEST_F(ByteStreamTest, ByteStream_CompleteTransmits) { |
248 scoped_ptr<ByteStreamWriter> byte_stream_input; | 248 std::unique_ptr<ByteStreamWriter> byte_stream_input; |
249 scoped_ptr<ByteStreamReader> byte_stream_output; | 249 std::unique_ptr<ByteStreamReader> byte_stream_output; |
250 | 250 |
251 scoped_refptr<net::IOBuffer> output_io_buffer; | 251 scoped_refptr<net::IOBuffer> output_io_buffer; |
252 size_t output_length; | 252 size_t output_length; |
253 | 253 |
254 // Empty stream, non-error case. | 254 // Empty stream, non-error case. |
255 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), | 255 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), |
256 3 * 1024, &byte_stream_input, &byte_stream_output); | 256 3 * 1024, &byte_stream_input, &byte_stream_output); |
257 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, | 257 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, |
258 byte_stream_output->Read(&output_io_buffer, &output_length)); | 258 byte_stream_output->Read(&output_io_buffer, &output_length)); |
259 byte_stream_input->Close(0); | 259 byte_stream_input->Close(0); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, | 304 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, |
305 byte_stream_output->Read(&output_io_buffer, &output_length)); | 305 byte_stream_output->Read(&output_io_buffer, &output_length)); |
306 EXPECT_EQ(kFakeErrorCode, byte_stream_output->GetStatus()); | 306 EXPECT_EQ(kFakeErrorCode, byte_stream_output->GetStatus()); |
307 } | 307 } |
308 | 308 |
309 // Confirm that callbacks on the sink side are triggered when they should be. | 309 // Confirm that callbacks on the sink side are triggered when they should be. |
310 TEST_F(ByteStreamTest, ByteStream_SinkCallback) { | 310 TEST_F(ByteStreamTest, ByteStream_SinkCallback) { |
311 scoped_refptr<base::TestSimpleTaskRunner> task_runner( | 311 scoped_refptr<base::TestSimpleTaskRunner> task_runner( |
312 new base::TestSimpleTaskRunner()); | 312 new base::TestSimpleTaskRunner()); |
313 | 313 |
314 scoped_ptr<ByteStreamWriter> byte_stream_input; | 314 std::unique_ptr<ByteStreamWriter> byte_stream_input; |
315 scoped_ptr<ByteStreamReader> byte_stream_output; | 315 std::unique_ptr<ByteStreamReader> byte_stream_output; |
316 CreateByteStream(message_loop_.task_runner(), task_runner, 10000, | 316 CreateByteStream(message_loop_.task_runner(), task_runner, 10000, |
317 &byte_stream_input, &byte_stream_output); | 317 &byte_stream_input, &byte_stream_output); |
318 | 318 |
319 scoped_refptr<net::IOBuffer> output_io_buffer; | 319 scoped_refptr<net::IOBuffer> output_io_buffer; |
320 size_t output_length; | 320 size_t output_length; |
321 | 321 |
322 // Note that the specifics of when the callbacks are called with regard | 322 // Note that the specifics of when the callbacks are called with regard |
323 // to how much data is pushed onto the stream is not (currently) part | 323 // to how much data is pushed onto the stream is not (currently) part |
324 // of the interface contract. If it becomes part of the contract, the | 324 // of the interface contract. If it becomes part of the contract, the |
325 // tests below should get much more precise. | 325 // tests below should get much more precise. |
(...skipping 29 matching lines...) Expand all Loading... |
355 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, | 355 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, |
356 byte_stream_output->Read(&output_io_buffer, &output_length)); | 356 byte_stream_output->Read(&output_io_buffer, &output_length)); |
357 } | 357 } |
358 | 358 |
359 // Confirm that callbacks on the source side are triggered when they should | 359 // Confirm that callbacks on the source side are triggered when they should |
360 // be. | 360 // be. |
361 TEST_F(ByteStreamTest, ByteStream_SourceCallback) { | 361 TEST_F(ByteStreamTest, ByteStream_SourceCallback) { |
362 scoped_refptr<base::TestSimpleTaskRunner> task_runner( | 362 scoped_refptr<base::TestSimpleTaskRunner> task_runner( |
363 new base::TestSimpleTaskRunner()); | 363 new base::TestSimpleTaskRunner()); |
364 | 364 |
365 scoped_ptr<ByteStreamWriter> byte_stream_input; | 365 std::unique_ptr<ByteStreamWriter> byte_stream_input; |
366 scoped_ptr<ByteStreamReader> byte_stream_output; | 366 std::unique_ptr<ByteStreamReader> byte_stream_output; |
367 CreateByteStream(task_runner, message_loop_.task_runner(), 10000, | 367 CreateByteStream(task_runner, message_loop_.task_runner(), 10000, |
368 &byte_stream_input, &byte_stream_output); | 368 &byte_stream_input, &byte_stream_output); |
369 | 369 |
370 scoped_refptr<net::IOBuffer> output_io_buffer; | 370 scoped_refptr<net::IOBuffer> output_io_buffer; |
371 size_t output_length; | 371 size_t output_length; |
372 | 372 |
373 // Note that the specifics of when the callbacks are called with regard | 373 // Note that the specifics of when the callbacks are called with regard |
374 // to how much data is pulled from the stream is not (currently) part | 374 // to how much data is pulled from the stream is not (currently) part |
375 // of the interface contract. If it becomes part of the contract, the | 375 // of the interface contract. If it becomes part of the contract, the |
376 // tests below should get much more precise. | 376 // tests below should get much more precise. |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 // callback. | 416 // callback. |
417 EXPECT_EQ(1, num_callbacks); | 417 EXPECT_EQ(1, num_callbacks); |
418 } | 418 } |
419 | 419 |
420 // Confirm that racing a change to a sink callback with a post results | 420 // Confirm that racing a change to a sink callback with a post results |
421 // in the new callback being called. | 421 // in the new callback being called. |
422 TEST_F(ByteStreamTest, ByteStream_SinkInterrupt) { | 422 TEST_F(ByteStreamTest, ByteStream_SinkInterrupt) { |
423 scoped_refptr<base::TestSimpleTaskRunner> task_runner( | 423 scoped_refptr<base::TestSimpleTaskRunner> task_runner( |
424 new base::TestSimpleTaskRunner()); | 424 new base::TestSimpleTaskRunner()); |
425 | 425 |
426 scoped_ptr<ByteStreamWriter> byte_stream_input; | 426 std::unique_ptr<ByteStreamWriter> byte_stream_input; |
427 scoped_ptr<ByteStreamReader> byte_stream_output; | 427 std::unique_ptr<ByteStreamReader> byte_stream_output; |
428 CreateByteStream(message_loop_.task_runner(), task_runner, 10000, | 428 CreateByteStream(message_loop_.task_runner(), task_runner, 10000, |
429 &byte_stream_input, &byte_stream_output); | 429 &byte_stream_input, &byte_stream_output); |
430 | 430 |
431 scoped_refptr<net::IOBuffer> output_io_buffer; | 431 scoped_refptr<net::IOBuffer> output_io_buffer; |
432 size_t output_length; | 432 size_t output_length; |
433 base::Closure intermediate_callback; | 433 base::Closure intermediate_callback; |
434 | 434 |
435 // Record initial state. | 435 // Record initial state. |
436 int num_callbacks = 0; | 436 int num_callbacks = 0; |
437 byte_stream_output->RegisterCallback( | 437 byte_stream_output->RegisterCallback( |
(...skipping 24 matching lines...) Expand all Loading... |
462 byte_stream_output->Read(&output_io_buffer, &output_length)); | 462 byte_stream_output->Read(&output_io_buffer, &output_length)); |
463 | 463 |
464 } | 464 } |
465 | 465 |
466 // Confirm that racing a change to a source callback with a post results | 466 // Confirm that racing a change to a source callback with a post results |
467 // in the new callback being called. | 467 // in the new callback being called. |
468 TEST_F(ByteStreamTest, ByteStream_SourceInterrupt) { | 468 TEST_F(ByteStreamTest, ByteStream_SourceInterrupt) { |
469 scoped_refptr<base::TestSimpleTaskRunner> task_runner( | 469 scoped_refptr<base::TestSimpleTaskRunner> task_runner( |
470 new base::TestSimpleTaskRunner()); | 470 new base::TestSimpleTaskRunner()); |
471 | 471 |
472 scoped_ptr<ByteStreamWriter> byte_stream_input; | 472 std::unique_ptr<ByteStreamWriter> byte_stream_input; |
473 scoped_ptr<ByteStreamReader> byte_stream_output; | 473 std::unique_ptr<ByteStreamReader> byte_stream_output; |
474 CreateByteStream(task_runner, message_loop_.task_runner(), 10000, | 474 CreateByteStream(task_runner, message_loop_.task_runner(), 10000, |
475 &byte_stream_input, &byte_stream_output); | 475 &byte_stream_input, &byte_stream_output); |
476 | 476 |
477 scoped_refptr<net::IOBuffer> output_io_buffer; | 477 scoped_refptr<net::IOBuffer> output_io_buffer; |
478 size_t output_length; | 478 size_t output_length; |
479 base::Closure intermediate_callback; | 479 base::Closure intermediate_callback; |
480 | 480 |
481 // Setup state for test. | 481 // Setup state for test. |
482 int num_callbacks = 0; | 482 int num_callbacks = 0; |
483 byte_stream_input->RegisterCallback( | 483 byte_stream_input->RegisterCallback( |
(...skipping 29 matching lines...) Expand all Loading... |
513 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, | 513 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, |
514 byte_stream_output->Read(&output_io_buffer, &output_length)); | 514 byte_stream_output->Read(&output_io_buffer, &output_length)); |
515 } | 515 } |
516 | 516 |
517 // Confirm that callback is called on zero data transfer but source | 517 // Confirm that callback is called on zero data transfer but source |
518 // complete. | 518 // complete. |
519 TEST_F(ByteStreamTest, ByteStream_ZeroCallback) { | 519 TEST_F(ByteStreamTest, ByteStream_ZeroCallback) { |
520 scoped_refptr<base::TestSimpleTaskRunner> task_runner( | 520 scoped_refptr<base::TestSimpleTaskRunner> task_runner( |
521 new base::TestSimpleTaskRunner()); | 521 new base::TestSimpleTaskRunner()); |
522 | 522 |
523 scoped_ptr<ByteStreamWriter> byte_stream_input; | 523 std::unique_ptr<ByteStreamWriter> byte_stream_input; |
524 scoped_ptr<ByteStreamReader> byte_stream_output; | 524 std::unique_ptr<ByteStreamReader> byte_stream_output; |
525 CreateByteStream(message_loop_.task_runner(), task_runner, 10000, | 525 CreateByteStream(message_loop_.task_runner(), task_runner, 10000, |
526 &byte_stream_input, &byte_stream_output); | 526 &byte_stream_input, &byte_stream_output); |
527 | 527 |
528 base::Closure intermediate_callback; | 528 base::Closure intermediate_callback; |
529 | 529 |
530 // Record initial state. | 530 // Record initial state. |
531 int num_callbacks = 0; | 531 int num_callbacks = 0; |
532 byte_stream_output->RegisterCallback( | 532 byte_stream_output->RegisterCallback( |
533 base::Bind(CountCallbacks, &num_callbacks)); | 533 base::Bind(CountCallbacks, &num_callbacks)); |
534 | 534 |
535 // Immediately close the stream. | 535 // Immediately close the stream. |
536 byte_stream_input->Close(0); | 536 byte_stream_input->Close(0); |
537 task_runner->RunUntilIdle(); | 537 task_runner->RunUntilIdle(); |
538 EXPECT_EQ(1, num_callbacks); | 538 EXPECT_EQ(1, num_callbacks); |
539 } | 539 } |
540 | 540 |
541 TEST_F(ByteStreamTest, ByteStream_CloseWithoutAnyWrite) { | 541 TEST_F(ByteStreamTest, ByteStream_CloseWithoutAnyWrite) { |
542 scoped_ptr<ByteStreamWriter> byte_stream_input; | 542 std::unique_ptr<ByteStreamWriter> byte_stream_input; |
543 scoped_ptr<ByteStreamReader> byte_stream_output; | 543 std::unique_ptr<ByteStreamReader> byte_stream_output; |
544 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), | 544 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), |
545 3 * 1024, &byte_stream_input, &byte_stream_output); | 545 3 * 1024, &byte_stream_input, &byte_stream_output); |
546 | 546 |
547 byte_stream_input->Close(0); | 547 byte_stream_input->Close(0); |
548 message_loop_.RunUntilIdle(); | 548 message_loop_.RunUntilIdle(); |
549 | 549 |
550 scoped_refptr<net::IOBuffer> output_io_buffer; | 550 scoped_refptr<net::IOBuffer> output_io_buffer; |
551 size_t output_length; | 551 size_t output_length; |
552 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE, | 552 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE, |
553 byte_stream_output->Read(&output_io_buffer, &output_length)); | 553 byte_stream_output->Read(&output_io_buffer, &output_length)); |
554 } | 554 } |
555 | 555 |
556 TEST_F(ByteStreamTest, ByteStream_FlushWithoutAnyWrite) { | 556 TEST_F(ByteStreamTest, ByteStream_FlushWithoutAnyWrite) { |
557 scoped_ptr<ByteStreamWriter> byte_stream_input; | 557 std::unique_ptr<ByteStreamWriter> byte_stream_input; |
558 scoped_ptr<ByteStreamReader> byte_stream_output; | 558 std::unique_ptr<ByteStreamReader> byte_stream_output; |
559 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), | 559 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), |
560 3 * 1024, &byte_stream_input, &byte_stream_output); | 560 3 * 1024, &byte_stream_input, &byte_stream_output); |
561 | 561 |
562 byte_stream_input->Flush(); | 562 byte_stream_input->Flush(); |
563 message_loop_.RunUntilIdle(); | 563 message_loop_.RunUntilIdle(); |
564 | 564 |
565 scoped_refptr<net::IOBuffer> output_io_buffer; | 565 scoped_refptr<net::IOBuffer> output_io_buffer; |
566 size_t output_length; | 566 size_t output_length; |
567 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, | 567 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, |
568 byte_stream_output->Read(&output_io_buffer, &output_length)); | 568 byte_stream_output->Read(&output_io_buffer, &output_length)); |
569 | 569 |
570 byte_stream_input->Close(0); | 570 byte_stream_input->Close(0); |
571 message_loop_.RunUntilIdle(); | 571 message_loop_.RunUntilIdle(); |
572 | 572 |
573 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE, | 573 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE, |
574 byte_stream_output->Read(&output_io_buffer, &output_length)); | 574 byte_stream_output->Read(&output_io_buffer, &output_length)); |
575 } | 575 } |
576 | 576 |
577 TEST_F(ByteStreamTest, ByteStream_WriteOverflow) { | 577 TEST_F(ByteStreamTest, ByteStream_WriteOverflow) { |
578 scoped_ptr<ByteStreamWriter> byte_stream_input; | 578 std::unique_ptr<ByteStreamWriter> byte_stream_input; |
579 scoped_ptr<ByteStreamReader> byte_stream_output; | 579 std::unique_ptr<ByteStreamReader> byte_stream_output; |
580 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), | 580 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), |
581 std::numeric_limits<size_t>::max(), &byte_stream_input, | 581 std::numeric_limits<size_t>::max(), &byte_stream_input, |
582 &byte_stream_output); | 582 &byte_stream_output); |
583 | 583 |
584 EXPECT_TRUE(Write(byte_stream_input.get(), 1)); | 584 EXPECT_TRUE(Write(byte_stream_input.get(), 1)); |
585 // 1 + size_t max -> Overflow. | 585 // 1 + size_t max -> Overflow. |
586 scoped_refptr<net::IOBuffer> empty_io_buffer; | 586 scoped_refptr<net::IOBuffer> empty_io_buffer; |
587 EXPECT_FALSE(byte_stream_input->Write(empty_io_buffer, | 587 EXPECT_FALSE(byte_stream_input->Write(empty_io_buffer, |
588 std::numeric_limits<size_t>::max())); | 588 std::numeric_limits<size_t>::max())); |
589 message_loop_.RunUntilIdle(); | 589 message_loop_.RunUntilIdle(); |
590 | 590 |
591 // The first write is below PostToPeer threshold. We shouldn't get anything | 591 // The first write is below PostToPeer threshold. We shouldn't get anything |
592 // from the output. | 592 // from the output. |
593 scoped_refptr<net::IOBuffer> output_io_buffer; | 593 scoped_refptr<net::IOBuffer> output_io_buffer; |
594 size_t output_length; | 594 size_t output_length; |
595 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, | 595 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, |
596 byte_stream_output->Read(&output_io_buffer, &output_length)); | 596 byte_stream_output->Read(&output_io_buffer, &output_length)); |
597 } | 597 } |
598 | 598 |
599 } // namespace content | 599 } // namespace content |
OLD | NEW |