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

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

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