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

Side by Side Diff: content/browser/byte_stream_unittest.cc

Issue 1170623003: Revert "content: Remove use of MessageLoopProxy and deprecated MessageLoop APIs" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 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
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 "content/browser/byte_stream.h" 5 #include "content/browser/byte_stream.h"
6 6
7 #include <deque> 7 #include <deque>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/callback.h" 11 #include "base/callback.h"
12 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 #include "base/message_loop/message_loop.h"
13 #include "base/test/test_simple_task_runner.h" 14 #include "base/test/test_simple_task_runner.h"
14 #include "net/base/io_buffer.h" 15 #include "net/base/io_buffer.h"
15 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
16 17
17 namespace content { 18 namespace content {
18 namespace { 19 namespace {
19 20
20 void CountCallbacks(int* counter) { 21 void CountCallbacks(int* counter) {
21 ++*counter; 22 ++*counter;
22 } 23 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 97
97 ByteStreamTest::ByteStreamTest() 98 ByteStreamTest::ByteStreamTest()
98 : producing_seed_key_(0), 99 : producing_seed_key_(0),
99 consuming_seed_key_(0) { } 100 consuming_seed_key_(0) { }
100 101
101 // Confirm that filling and emptying the stream works properly, and that 102 // Confirm that filling and emptying the stream works properly, and that
102 // we get full triggers when we expect. 103 // we get full triggers when we expect.
103 TEST_F(ByteStreamTest, ByteStream_PushBack) { 104 TEST_F(ByteStreamTest, ByteStream_PushBack) {
104 scoped_ptr<ByteStreamWriter> byte_stream_input; 105 scoped_ptr<ByteStreamWriter> byte_stream_input;
105 scoped_ptr<ByteStreamReader> byte_stream_output; 106 scoped_ptr<ByteStreamReader> byte_stream_output;
106 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 107 CreateByteStream(
107 3 * 1024, &byte_stream_input, &byte_stream_output); 108 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
109 3 * 1024, &byte_stream_input, &byte_stream_output);
108 110
109 // Push a series of IO buffers on; test pushback happening and 111 // Push a series of IO buffers on; test pushback happening and
110 // that it's advisory. 112 // that it's advisory.
111 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 113 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
112 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 114 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
113 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 115 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
114 EXPECT_FALSE(Write(byte_stream_input.get(), 1)); 116 EXPECT_FALSE(Write(byte_stream_input.get(), 1));
115 EXPECT_FALSE(Write(byte_stream_input.get(), 1024)); 117 EXPECT_FALSE(Write(byte_stream_input.get(), 1024));
116 // Flush 118 // Flush
117 byte_stream_input->Close(0); 119 byte_stream_input->Close(0);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 message_loop_.RunUntilIdle(); 152 message_loop_.RunUntilIdle();
151 // Reader now knows that all data is read out. 153 // Reader now knows that all data is read out.
152 EXPECT_EQ(1024U, byte_stream_input->GetTotalBufferedBytes()); 154 EXPECT_EQ(1024U, byte_stream_input->GetTotalBufferedBytes());
153 } 155 }
154 156
155 // 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
156 // the reader. 158 // the reader.
157 TEST_F(ByteStreamTest, ByteStream_Flush) { 159 TEST_F(ByteStreamTest, ByteStream_Flush) {
158 scoped_ptr<ByteStreamWriter> byte_stream_input; 160 scoped_ptr<ByteStreamWriter> byte_stream_input;
159 scoped_ptr<ByteStreamReader> byte_stream_output; 161 scoped_ptr<ByteStreamReader> byte_stream_output;
160 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 162 CreateByteStream(
161 1024, &byte_stream_input, &byte_stream_output); 163 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
164 1024, &byte_stream_input, &byte_stream_output);
162 165
163 EXPECT_TRUE(Write(byte_stream_input.get(), 1)); 166 EXPECT_TRUE(Write(byte_stream_input.get(), 1));
164 message_loop_.RunUntilIdle(); 167 message_loop_.RunUntilIdle();
165 168
166 scoped_refptr<net::IOBuffer> output_io_buffer; 169 scoped_refptr<net::IOBuffer> output_io_buffer;
167 size_t output_length = 0; 170 size_t output_length = 0;
168 // Check that data is not sent to the reader yet. 171 // Check that data is not sent to the reader yet.
169 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 172 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
170 byte_stream_output->Read(&output_io_buffer, &output_length)); 173 byte_stream_output->Read(&output_io_buffer, &output_length));
171 174
(...skipping 17 matching lines...) Expand all
189 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE, 192 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE,
190 byte_stream_output->Read(&output_io_buffer, &output_length)); 193 byte_stream_output->Read(&output_io_buffer, &output_length));
191 } 194 }
192 195
193 // Same as above, only use knowledge of the internals to confirm 196 // Same as above, only use knowledge of the internals to confirm
194 // that we're getting pushback even when data's split across the two 197 // that we're getting pushback even when data's split across the two
195 // objects 198 // objects
196 TEST_F(ByteStreamTest, ByteStream_PushBackSplit) { 199 TEST_F(ByteStreamTest, ByteStream_PushBackSplit) {
197 scoped_ptr<ByteStreamWriter> byte_stream_input; 200 scoped_ptr<ByteStreamWriter> byte_stream_input;
198 scoped_ptr<ByteStreamReader> byte_stream_output; 201 scoped_ptr<ByteStreamReader> byte_stream_output;
199 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 202 CreateByteStream(
200 9 * 1024, &byte_stream_input, &byte_stream_output); 203 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
204 9 * 1024, &byte_stream_input, &byte_stream_output);
201 205
202 // Push a series of IO buffers on; test pushback happening and 206 // Push a series of IO buffers on; test pushback happening and
203 // that it's advisory. 207 // that it's advisory.
204 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 208 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
205 message_loop_.RunUntilIdle(); 209 message_loop_.RunUntilIdle();
206 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 210 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
207 message_loop_.RunUntilIdle(); 211 message_loop_.RunUntilIdle();
208 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 212 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
209 message_loop_.RunUntilIdle(); 213 message_loop_.RunUntilIdle();
210 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 214 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 // Confirm that a Close() notification transmits in-order 247 // Confirm that a Close() notification transmits in-order
244 // with data on the stream. 248 // with data on the stream.
245 TEST_F(ByteStreamTest, ByteStream_CompleteTransmits) { 249 TEST_F(ByteStreamTest, ByteStream_CompleteTransmits) {
246 scoped_ptr<ByteStreamWriter> byte_stream_input; 250 scoped_ptr<ByteStreamWriter> byte_stream_input;
247 scoped_ptr<ByteStreamReader> byte_stream_output; 251 scoped_ptr<ByteStreamReader> byte_stream_output;
248 252
249 scoped_refptr<net::IOBuffer> output_io_buffer; 253 scoped_refptr<net::IOBuffer> output_io_buffer;
250 size_t output_length; 254 size_t output_length;
251 255
252 // Empty stream, non-error case. 256 // Empty stream, non-error case.
253 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 257 CreateByteStream(
254 3 * 1024, &byte_stream_input, &byte_stream_output); 258 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
259 3 * 1024, &byte_stream_input, &byte_stream_output);
255 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 260 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
256 byte_stream_output->Read(&output_io_buffer, &output_length)); 261 byte_stream_output->Read(&output_io_buffer, &output_length));
257 byte_stream_input->Close(0); 262 byte_stream_input->Close(0);
258 message_loop_.RunUntilIdle(); 263 message_loop_.RunUntilIdle();
259 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, 264 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE,
260 byte_stream_output->Read(&output_io_buffer, &output_length)); 265 byte_stream_output->Read(&output_io_buffer, &output_length));
261 EXPECT_EQ(0, byte_stream_output->GetStatus()); 266 EXPECT_EQ(0, byte_stream_output->GetStatus());
262 267
263 // Non-empty stream, non-error case. 268 // Non-empty stream, non-error case.
264 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 269 CreateByteStream(
265 3 * 1024, &byte_stream_input, &byte_stream_output); 270 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
271 3 * 1024, &byte_stream_input, &byte_stream_output);
266 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 272 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
267 byte_stream_output->Read(&output_io_buffer, &output_length)); 273 byte_stream_output->Read(&output_io_buffer, &output_length));
268 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 274 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
269 byte_stream_input->Close(0); 275 byte_stream_input->Close(0);
270 message_loop_.RunUntilIdle(); 276 message_loop_.RunUntilIdle();
271 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 277 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
272 byte_stream_output->Read(&output_io_buffer, &output_length)); 278 byte_stream_output->Read(&output_io_buffer, &output_length));
273 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 279 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
274 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, 280 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE,
275 byte_stream_output->Read(&output_io_buffer, &output_length)); 281 byte_stream_output->Read(&output_io_buffer, &output_length));
276 EXPECT_EQ(0, byte_stream_output->GetStatus()); 282 EXPECT_EQ(0, byte_stream_output->GetStatus());
277 283
278 const int kFakeErrorCode = 22; 284 const int kFakeErrorCode = 22;
279 285
280 // Empty stream, error case. 286 // Empty stream, error case.
281 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 287 CreateByteStream(
282 3 * 1024, &byte_stream_input, &byte_stream_output); 288 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
289 3 * 1024, &byte_stream_input, &byte_stream_output);
283 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 290 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
284 byte_stream_output->Read(&output_io_buffer, &output_length)); 291 byte_stream_output->Read(&output_io_buffer, &output_length));
285 byte_stream_input->Close(kFakeErrorCode); 292 byte_stream_input->Close(kFakeErrorCode);
286 message_loop_.RunUntilIdle(); 293 message_loop_.RunUntilIdle();
287 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, 294 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE,
288 byte_stream_output->Read(&output_io_buffer, &output_length)); 295 byte_stream_output->Read(&output_io_buffer, &output_length));
289 EXPECT_EQ(kFakeErrorCode, byte_stream_output->GetStatus()); 296 EXPECT_EQ(kFakeErrorCode, byte_stream_output->GetStatus());
290 297
291 // Non-empty stream, error case. 298 // Non-empty stream, error case.
292 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 299 CreateByteStream(
293 3 * 1024, &byte_stream_input, &byte_stream_output); 300 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
301 3 * 1024, &byte_stream_input, &byte_stream_output);
294 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 302 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
295 byte_stream_output->Read(&output_io_buffer, &output_length)); 303 byte_stream_output->Read(&output_io_buffer, &output_length));
296 EXPECT_TRUE(Write(byte_stream_input.get(), 1024)); 304 EXPECT_TRUE(Write(byte_stream_input.get(), 1024));
297 byte_stream_input->Close(kFakeErrorCode); 305 byte_stream_input->Close(kFakeErrorCode);
298 message_loop_.RunUntilIdle(); 306 message_loop_.RunUntilIdle();
299 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA, 307 EXPECT_EQ(ByteStreamReader::STREAM_HAS_DATA,
300 byte_stream_output->Read(&output_io_buffer, &output_length)); 308 byte_stream_output->Read(&output_io_buffer, &output_length));
301 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length)); 309 EXPECT_TRUE(ValidateIOBuffer(output_io_buffer, output_length));
302 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE, 310 ASSERT_EQ(ByteStreamReader::STREAM_COMPLETE,
303 byte_stream_output->Read(&output_io_buffer, &output_length)); 311 byte_stream_output->Read(&output_io_buffer, &output_length));
304 EXPECT_EQ(kFakeErrorCode, byte_stream_output->GetStatus()); 312 EXPECT_EQ(kFakeErrorCode, byte_stream_output->GetStatus());
305 } 313 }
306 314
307 // Confirm that callbacks on the sink side are triggered when they should be. 315 // Confirm that callbacks on the sink side are triggered when they should be.
308 TEST_F(ByteStreamTest, ByteStream_SinkCallback) { 316 TEST_F(ByteStreamTest, ByteStream_SinkCallback) {
309 scoped_refptr<base::TestSimpleTaskRunner> task_runner( 317 scoped_refptr<base::TestSimpleTaskRunner> task_runner(
310 new base::TestSimpleTaskRunner()); 318 new base::TestSimpleTaskRunner());
311 319
312 scoped_ptr<ByteStreamWriter> byte_stream_input; 320 scoped_ptr<ByteStreamWriter> byte_stream_input;
313 scoped_ptr<ByteStreamReader> byte_stream_output; 321 scoped_ptr<ByteStreamReader> byte_stream_output;
314 CreateByteStream(message_loop_.task_runner(), task_runner, 10000, 322 CreateByteStream(
315 &byte_stream_input, &byte_stream_output); 323 message_loop_.message_loop_proxy(), task_runner,
324 10000, &byte_stream_input, &byte_stream_output);
316 325
317 scoped_refptr<net::IOBuffer> output_io_buffer; 326 scoped_refptr<net::IOBuffer> output_io_buffer;
318 size_t output_length; 327 size_t output_length;
319 328
320 // Note that the specifics of when the callbacks are called with regard 329 // Note that the specifics of when the callbacks are called with regard
321 // to how much data is pushed onto the stream is not (currently) part 330 // to how much data is pushed onto the stream is not (currently) part
322 // of the interface contract. If it becomes part of the contract, the 331 // of the interface contract. If it becomes part of the contract, the
323 // tests below should get much more precise. 332 // tests below should get much more precise.
324 333
325 // Confirm callback called when you add more than 33% of the buffer. 334 // Confirm callback called when you add more than 33% of the buffer.
(...skipping 29 matching lines...) Expand all
355 } 364 }
356 365
357 // Confirm that callbacks on the source side are triggered when they should 366 // Confirm that callbacks on the source side are triggered when they should
358 // be. 367 // be.
359 TEST_F(ByteStreamTest, ByteStream_SourceCallback) { 368 TEST_F(ByteStreamTest, ByteStream_SourceCallback) {
360 scoped_refptr<base::TestSimpleTaskRunner> task_runner( 369 scoped_refptr<base::TestSimpleTaskRunner> task_runner(
361 new base::TestSimpleTaskRunner()); 370 new base::TestSimpleTaskRunner());
362 371
363 scoped_ptr<ByteStreamWriter> byte_stream_input; 372 scoped_ptr<ByteStreamWriter> byte_stream_input;
364 scoped_ptr<ByteStreamReader> byte_stream_output; 373 scoped_ptr<ByteStreamReader> byte_stream_output;
365 CreateByteStream(task_runner, message_loop_.task_runner(), 10000, 374 CreateByteStream(
366 &byte_stream_input, &byte_stream_output); 375 task_runner, message_loop_.message_loop_proxy(),
376 10000, &byte_stream_input, &byte_stream_output);
367 377
368 scoped_refptr<net::IOBuffer> output_io_buffer; 378 scoped_refptr<net::IOBuffer> output_io_buffer;
369 size_t output_length; 379 size_t output_length;
370 380
371 // Note that the specifics of when the callbacks are called with regard 381 // Note that the specifics of when the callbacks are called with regard
372 // to how much data is pulled from the stream is not (currently) part 382 // to how much data is pulled from the stream is not (currently) part
373 // of the interface contract. If it becomes part of the contract, the 383 // of the interface contract. If it becomes part of the contract, the
374 // tests below should get much more precise. 384 // tests below should get much more precise.
375 385
376 // Confirm callback called when about 33% space available, and not 386 // Confirm callback called when about 33% space available, and not
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 } 426 }
417 427
418 // Confirm that racing a change to a sink callback with a post results 428 // Confirm that racing a change to a sink callback with a post results
419 // in the new callback being called. 429 // in the new callback being called.
420 TEST_F(ByteStreamTest, ByteStream_SinkInterrupt) { 430 TEST_F(ByteStreamTest, ByteStream_SinkInterrupt) {
421 scoped_refptr<base::TestSimpleTaskRunner> task_runner( 431 scoped_refptr<base::TestSimpleTaskRunner> task_runner(
422 new base::TestSimpleTaskRunner()); 432 new base::TestSimpleTaskRunner());
423 433
424 scoped_ptr<ByteStreamWriter> byte_stream_input; 434 scoped_ptr<ByteStreamWriter> byte_stream_input;
425 scoped_ptr<ByteStreamReader> byte_stream_output; 435 scoped_ptr<ByteStreamReader> byte_stream_output;
426 CreateByteStream(message_loop_.task_runner(), task_runner, 10000, 436 CreateByteStream(
427 &byte_stream_input, &byte_stream_output); 437 message_loop_.message_loop_proxy(), task_runner,
438 10000, &byte_stream_input, &byte_stream_output);
428 439
429 scoped_refptr<net::IOBuffer> output_io_buffer; 440 scoped_refptr<net::IOBuffer> output_io_buffer;
430 size_t output_length; 441 size_t output_length;
431 base::Closure intermediate_callback; 442 base::Closure intermediate_callback;
432 443
433 // Record initial state. 444 // Record initial state.
434 int num_callbacks = 0; 445 int num_callbacks = 0;
435 byte_stream_output->RegisterCallback( 446 byte_stream_output->RegisterCallback(
436 base::Bind(CountCallbacks, &num_callbacks)); 447 base::Bind(CountCallbacks, &num_callbacks));
437 448
(...skipping 24 matching lines...) Expand all
462 } 473 }
463 474
464 // Confirm that racing a change to a source callback with a post results 475 // Confirm that racing a change to a source callback with a post results
465 // in the new callback being called. 476 // in the new callback being called.
466 TEST_F(ByteStreamTest, ByteStream_SourceInterrupt) { 477 TEST_F(ByteStreamTest, ByteStream_SourceInterrupt) {
467 scoped_refptr<base::TestSimpleTaskRunner> task_runner( 478 scoped_refptr<base::TestSimpleTaskRunner> task_runner(
468 new base::TestSimpleTaskRunner()); 479 new base::TestSimpleTaskRunner());
469 480
470 scoped_ptr<ByteStreamWriter> byte_stream_input; 481 scoped_ptr<ByteStreamWriter> byte_stream_input;
471 scoped_ptr<ByteStreamReader> byte_stream_output; 482 scoped_ptr<ByteStreamReader> byte_stream_output;
472 CreateByteStream(task_runner, message_loop_.task_runner(), 10000, 483 CreateByteStream(
473 &byte_stream_input, &byte_stream_output); 484 task_runner, message_loop_.message_loop_proxy(),
485 10000, &byte_stream_input, &byte_stream_output);
474 486
475 scoped_refptr<net::IOBuffer> output_io_buffer; 487 scoped_refptr<net::IOBuffer> output_io_buffer;
476 size_t output_length; 488 size_t output_length;
477 base::Closure intermediate_callback; 489 base::Closure intermediate_callback;
478 490
479 // Setup state for test. 491 // Setup state for test.
480 int num_callbacks = 0; 492 int num_callbacks = 0;
481 byte_stream_input->RegisterCallback( 493 byte_stream_input->RegisterCallback(
482 base::Bind(CountCallbacks, &num_callbacks)); 494 base::Bind(CountCallbacks, &num_callbacks));
483 EXPECT_TRUE(Write(byte_stream_input.get(), 2000)); 495 EXPECT_TRUE(Write(byte_stream_input.get(), 2000));
(...skipping 29 matching lines...) Expand all
513 } 525 }
514 526
515 // Confirm that callback is called on zero data transfer but source 527 // Confirm that callback is called on zero data transfer but source
516 // complete. 528 // complete.
517 TEST_F(ByteStreamTest, ByteStream_ZeroCallback) { 529 TEST_F(ByteStreamTest, ByteStream_ZeroCallback) {
518 scoped_refptr<base::TestSimpleTaskRunner> task_runner( 530 scoped_refptr<base::TestSimpleTaskRunner> task_runner(
519 new base::TestSimpleTaskRunner()); 531 new base::TestSimpleTaskRunner());
520 532
521 scoped_ptr<ByteStreamWriter> byte_stream_input; 533 scoped_ptr<ByteStreamWriter> byte_stream_input;
522 scoped_ptr<ByteStreamReader> byte_stream_output; 534 scoped_ptr<ByteStreamReader> byte_stream_output;
523 CreateByteStream(message_loop_.task_runner(), task_runner, 10000, 535 CreateByteStream(
524 &byte_stream_input, &byte_stream_output); 536 message_loop_.message_loop_proxy(), task_runner,
537 10000, &byte_stream_input, &byte_stream_output);
525 538
526 base::Closure intermediate_callback; 539 base::Closure intermediate_callback;
527 540
528 // Record initial state. 541 // Record initial state.
529 int num_callbacks = 0; 542 int num_callbacks = 0;
530 byte_stream_output->RegisterCallback( 543 byte_stream_output->RegisterCallback(
531 base::Bind(CountCallbacks, &num_callbacks)); 544 base::Bind(CountCallbacks, &num_callbacks));
532 545
533 // Immediately close the stream. 546 // Immediately close the stream.
534 byte_stream_input->Close(0); 547 byte_stream_input->Close(0);
535 task_runner->RunUntilIdle(); 548 task_runner->RunUntilIdle();
536 EXPECT_EQ(1, num_callbacks); 549 EXPECT_EQ(1, num_callbacks);
537 } 550 }
538 551
539 TEST_F(ByteStreamTest, ByteStream_CloseWithoutAnyWrite) { 552 TEST_F(ByteStreamTest, ByteStream_CloseWithoutAnyWrite) {
540 scoped_ptr<ByteStreamWriter> byte_stream_input; 553 scoped_ptr<ByteStreamWriter> byte_stream_input;
541 scoped_ptr<ByteStreamReader> byte_stream_output; 554 scoped_ptr<ByteStreamReader> byte_stream_output;
542 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 555 CreateByteStream(
543 3 * 1024, &byte_stream_input, &byte_stream_output); 556 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
557 3 * 1024, &byte_stream_input, &byte_stream_output);
544 558
545 byte_stream_input->Close(0); 559 byte_stream_input->Close(0);
546 message_loop_.RunUntilIdle(); 560 message_loop_.RunUntilIdle();
547 561
548 scoped_refptr<net::IOBuffer> output_io_buffer; 562 scoped_refptr<net::IOBuffer> output_io_buffer;
549 size_t output_length; 563 size_t output_length;
550 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE, 564 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE,
551 byte_stream_output->Read(&output_io_buffer, &output_length)); 565 byte_stream_output->Read(&output_io_buffer, &output_length));
552 } 566 }
553 567
554 TEST_F(ByteStreamTest, ByteStream_FlushWithoutAnyWrite) { 568 TEST_F(ByteStreamTest, ByteStream_FlushWithoutAnyWrite) {
555 scoped_ptr<ByteStreamWriter> byte_stream_input; 569 scoped_ptr<ByteStreamWriter> byte_stream_input;
556 scoped_ptr<ByteStreamReader> byte_stream_output; 570 scoped_ptr<ByteStreamReader> byte_stream_output;
557 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 571 CreateByteStream(
558 3 * 1024, &byte_stream_input, &byte_stream_output); 572 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
573 3 * 1024, &byte_stream_input, &byte_stream_output);
559 574
560 byte_stream_input->Flush(); 575 byte_stream_input->Flush();
561 message_loop_.RunUntilIdle(); 576 message_loop_.RunUntilIdle();
562 577
563 scoped_refptr<net::IOBuffer> output_io_buffer; 578 scoped_refptr<net::IOBuffer> output_io_buffer;
564 size_t output_length; 579 size_t output_length;
565 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 580 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
566 byte_stream_output->Read(&output_io_buffer, &output_length)); 581 byte_stream_output->Read(&output_io_buffer, &output_length));
567 582
568 byte_stream_input->Close(0); 583 byte_stream_input->Close(0);
569 message_loop_.RunUntilIdle(); 584 message_loop_.RunUntilIdle();
570 585
571 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE, 586 EXPECT_EQ(ByteStreamReader::STREAM_COMPLETE,
572 byte_stream_output->Read(&output_io_buffer, &output_length)); 587 byte_stream_output->Read(&output_io_buffer, &output_length));
573 } 588 }
574 589
575 TEST_F(ByteStreamTest, ByteStream_WriteOverflow) { 590 TEST_F(ByteStreamTest, ByteStream_WriteOverflow) {
576 scoped_ptr<ByteStreamWriter> byte_stream_input; 591 scoped_ptr<ByteStreamWriter> byte_stream_input;
577 scoped_ptr<ByteStreamReader> byte_stream_output; 592 scoped_ptr<ByteStreamReader> byte_stream_output;
578 CreateByteStream(message_loop_.task_runner(), message_loop_.task_runner(), 593 CreateByteStream(
579 std::numeric_limits<size_t>::max(), &byte_stream_input, 594 message_loop_.message_loop_proxy(), message_loop_.message_loop_proxy(),
580 &byte_stream_output); 595 std::numeric_limits<size_t>::max(),
596 &byte_stream_input, &byte_stream_output);
581 597
582 EXPECT_TRUE(Write(byte_stream_input.get(), 1)); 598 EXPECT_TRUE(Write(byte_stream_input.get(), 1));
583 // 1 + size_t max -> Overflow. 599 // 1 + size_t max -> Overflow.
584 scoped_refptr<net::IOBuffer> empty_io_buffer; 600 scoped_refptr<net::IOBuffer> empty_io_buffer;
585 EXPECT_FALSE(byte_stream_input->Write(empty_io_buffer, 601 EXPECT_FALSE(byte_stream_input->Write(empty_io_buffer,
586 std::numeric_limits<size_t>::max())); 602 std::numeric_limits<size_t>::max()));
587 message_loop_.RunUntilIdle(); 603 message_loop_.RunUntilIdle();
588 604
589 // The first write is below PostToPeer threshold. We shouldn't get anything 605 // The first write is below PostToPeer threshold. We shouldn't get anything
590 // from the output. 606 // from the output.
591 scoped_refptr<net::IOBuffer> output_io_buffer; 607 scoped_refptr<net::IOBuffer> output_io_buffer;
592 size_t output_length; 608 size_t output_length;
593 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY, 609 EXPECT_EQ(ByteStreamReader::STREAM_EMPTY,
594 byte_stream_output->Read(&output_io_buffer, &output_length)); 610 byte_stream_output->Read(&output_io_buffer, &output_length));
595 } 611 }
596 612
597 } // namespace content 613 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/browser_thread_unittest.cc ('k') | content/browser/cache_storage/cache_storage.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698