OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <stdint.h> | 5 #include <stdint.h> |
6 #include <string.h> | 6 #include <string.h> |
7 | 7 |
8 #include <stack> | 8 #include <stack> |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
311 // Individual Tests --------------------------------------------------------- | 311 // Individual Tests --------------------------------------------------------- |
312 // Most of the individual tests involve multiple async steps. Each test | 312 // Most of the individual tests involve multiple async steps. Each test |
313 // is delineated with a section header. | 313 // is delineated with a section header. |
314 | 314 |
315 | 315 |
316 // ReadNonExistentResponse ------------------------------------------- | 316 // ReadNonExistentResponse ------------------------------------------- |
317 void ReadNonExistentResponse() { | 317 void ReadNonExistentResponse() { |
318 // 1. Attempt to ReadInfo | 318 // 1. Attempt to ReadInfo |
319 // 2. Attempt to ReadData | 319 // 2. Attempt to ReadData |
320 | 320 |
321 reader_.reset(service_->storage()->CreateResponseReader( | 321 reader_.reset( |
322 GURL(), 0, kNoSuchResponseId)); | 322 service_->storage()->CreateResponseReader(GURL(), kNoSuchResponseId)); |
323 | 323 |
324 // Push tasks in reverse order | 324 // Push tasks in reverse order |
325 PushNextTask(base::Bind(&AppCacheResponseTest::ReadNonExistentData, | 325 PushNextTask(base::Bind(&AppCacheResponseTest::ReadNonExistentData, |
326 base::Unretained(this))); | 326 base::Unretained(this))); |
327 PushNextTask(base::Bind(&AppCacheResponseTest::ReadNonExistentInfo, | 327 PushNextTask(base::Bind(&AppCacheResponseTest::ReadNonExistentInfo, |
328 base::Unretained(this))); | 328 base::Unretained(this))); |
329 ScheduleNextTask(); | 329 ScheduleNextTask(); |
330 } | 330 } |
331 | 331 |
332 void ReadNonExistentInfo() { | 332 void ReadNonExistentInfo() { |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
366 | 366 |
367 // LoadResponseInfo_Hit ---------------------------------------------------- | 367 // LoadResponseInfo_Hit ---------------------------------------------------- |
368 void LoadResponseInfo_Hit() { | 368 void LoadResponseInfo_Hit() { |
369 // This tests involves multiple async steps. | 369 // This tests involves multiple async steps. |
370 // 1. Write a response headers and body to storage | 370 // 1. Write a response headers and body to storage |
371 // a. headers | 371 // a. headers |
372 // b. body | 372 // b. body |
373 // 2. Use LoadResponseInfo to read the response headers back out | 373 // 2. Use LoadResponseInfo to read the response headers back out |
374 PushNextTask(base::Bind(&AppCacheResponseTest::LoadResponseInfo_Hit_Step2, | 374 PushNextTask(base::Bind(&AppCacheResponseTest::LoadResponseInfo_Hit_Step2, |
375 base::Unretained(this))); | 375 base::Unretained(this))); |
376 writer_.reset(service_->storage()->CreateResponseWriter(GURL(), 0)); | 376 writer_.reset(service_->storage()->CreateResponseWriter(GURL())); |
377 written_response_id_ = writer_->response_id(); | 377 written_response_id_ = writer_->response_id(); |
378 WriteBasicResponse(); | 378 WriteBasicResponse(); |
379 } | 379 } |
380 | 380 |
381 void LoadResponseInfo_Hit_Step2() { | 381 void LoadResponseInfo_Hit_Step2() { |
382 writer_.reset(); | 382 writer_.reset(); |
383 PushNextTask(base::Bind(&AppCacheResponseTest::LoadResponseInfo_Hit_Verify, | 383 PushNextTask(base::Bind(&AppCacheResponseTest::LoadResponseInfo_Hit_Verify, |
384 base::Unretained(this))); | 384 base::Unretained(this))); |
385 service_->storage()->LoadResponseInfo(GURL(), 0, written_response_id_, | 385 service_->storage()->LoadResponseInfo(GURL(), 0, written_response_id_, |
386 storage_delegate_.get()); | 386 storage_delegate_.get()); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
424 PushNextTask(base::Bind(&AppCacheResponseTest::Metadata_WriteMetadata, | 424 PushNextTask(base::Bind(&AppCacheResponseTest::Metadata_WriteMetadata, |
425 base::Unretained(this), "Second")); | 425 base::Unretained(this), "Second")); |
426 PushNextTask(base::Bind(&AppCacheResponseTest::Metadata_VerifyMetadata, | 426 PushNextTask(base::Bind(&AppCacheResponseTest::Metadata_VerifyMetadata, |
427 base::Unretained(this), "Metadata First")); | 427 base::Unretained(this), "Metadata First")); |
428 PushNextTask(base::Bind(&AppCacheResponseTest::Metadata_LoadResponseInfo, | 428 PushNextTask(base::Bind(&AppCacheResponseTest::Metadata_LoadResponseInfo, |
429 base::Unretained(this))); | 429 base::Unretained(this))); |
430 PushNextTask(base::Bind(&AppCacheResponseTest::Metadata_WriteMetadata, | 430 PushNextTask(base::Bind(&AppCacheResponseTest::Metadata_WriteMetadata, |
431 base::Unretained(this), "Metadata First")); | 431 base::Unretained(this), "Metadata First")); |
432 PushNextTask(base::Bind(&AppCacheResponseTest::Metadata_ResetWriter, | 432 PushNextTask(base::Bind(&AppCacheResponseTest::Metadata_ResetWriter, |
433 base::Unretained(this))); | 433 base::Unretained(this))); |
434 writer_.reset(service_->storage()->CreateResponseWriter(GURL(), 0)); | 434 writer_.reset(service_->storage()->CreateResponseWriter(GURL())); |
435 written_response_id_ = writer_->response_id(); | 435 written_response_id_ = writer_->response_id(); |
436 WriteBasicResponse(); | 436 WriteBasicResponse(); |
437 } | 437 } |
438 | 438 |
439 void Metadata_ResetWriter() { | 439 void Metadata_ResetWriter() { |
440 writer_.reset(); | 440 writer_.reset(); |
441 ScheduleNextTask(); | 441 ScheduleNextTask(); |
442 } | 442 } |
443 | 443 |
444 void Metadata_WriteMetadata(const char* metadata) { | 444 void Metadata_WriteMetadata(const char* metadata) { |
445 metadata_writer_.reset(service_->storage()->CreateResponseMetadataWriter( | 445 metadata_writer_.reset(service_->storage()->CreateResponseMetadataWriter( |
446 0, written_response_id_)); | 446 written_response_id_)); |
447 scoped_refptr<IOBuffer> buffer(new WrappedIOBuffer(metadata)); | 447 scoped_refptr<IOBuffer> buffer(new WrappedIOBuffer(metadata)); |
448 WriteResponseMetadata(buffer.get(), strlen(metadata)); | 448 WriteResponseMetadata(buffer.get(), strlen(metadata)); |
449 } | 449 } |
450 | 450 |
451 void Metadata_LoadResponseInfo() { | 451 void Metadata_LoadResponseInfo() { |
452 metadata_writer_.reset(); | 452 metadata_writer_.reset(); |
453 storage_delegate_.reset(new MockStorageDelegate(this)); | 453 storage_delegate_.reset(new MockStorageDelegate(this)); |
454 service_->storage()->LoadResponseInfo(GURL(), 0, written_response_id_, | 454 service_->storage()->LoadResponseInfo(GURL(), 0, written_response_id_, |
455 storage_delegate_.get()); | 455 storage_delegate_.get()); |
456 } | 456 } |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
490 // Push tasks in reverse order. | 490 // Push tasks in reverse order. |
491 PushNextTask(base::Bind(&AppCacheResponseTest::Verify_AmountWritten, | 491 PushNextTask(base::Bind(&AppCacheResponseTest::Verify_AmountWritten, |
492 base::Unretained(this), expected_amount_written)); | 492 base::Unretained(this), expected_amount_written)); |
493 for (int i = 0; i < kNumBlocks; ++i) { | 493 for (int i = 0; i < kNumBlocks; ++i) { |
494 PushNextTask(base::Bind(&AppCacheResponseTest::WriteOneBlock, | 494 PushNextTask(base::Bind(&AppCacheResponseTest::WriteOneBlock, |
495 base::Unretained(this), kNumBlocks - i)); | 495 base::Unretained(this), kNumBlocks - i)); |
496 } | 496 } |
497 PushNextTask(base::Bind(&AppCacheResponseTest::WriteResponseHead, | 497 PushNextTask(base::Bind(&AppCacheResponseTest::WriteResponseHead, |
498 base::Unretained(this), head)); | 498 base::Unretained(this), head)); |
499 | 499 |
500 writer_.reset(service_->storage()->CreateResponseWriter(GURL(), 0)); | 500 writer_.reset(service_->storage()->CreateResponseWriter(GURL())); |
501 written_response_id_ = writer_->response_id(); | 501 written_response_id_ = writer_->response_id(); |
502 ScheduleNextTask(); | 502 ScheduleNextTask(); |
503 } | 503 } |
504 | 504 |
505 void Verify_AmountWritten(int expected_amount_written) { | 505 void Verify_AmountWritten(int expected_amount_written) { |
506 EXPECT_EQ(expected_amount_written, writer_->amount_written()); | 506 EXPECT_EQ(expected_amount_written, writer_->amount_written()); |
507 TestFinished(); | 507 TestFinished(); |
508 } | 508 } |
509 | 509 |
510 | 510 |
(...skipping 25 matching lines...) Expand all Loading... |
536 PushNextTask(base::Bind(&AppCacheResponseTest::ReadInBlocks, | 536 PushNextTask(base::Bind(&AppCacheResponseTest::ReadInBlocks, |
537 base::Unretained(this))); | 537 base::Unretained(this))); |
538 PushNextTask(base::Bind(&AppCacheResponseTest::WriteOutBlocks, | 538 PushNextTask(base::Bind(&AppCacheResponseTest::WriteOutBlocks, |
539 base::Unretained(this))); | 539 base::Unretained(this))); |
540 | 540 |
541 // Get them going. | 541 // Get them going. |
542 ScheduleNextTask(); | 542 ScheduleNextTask(); |
543 } | 543 } |
544 | 544 |
545 void WriteOutBlocks() { | 545 void WriteOutBlocks() { |
546 writer_.reset(service_->storage()->CreateResponseWriter(GURL(), 0)); | 546 writer_.reset(service_->storage()->CreateResponseWriter(GURL())); |
547 written_response_id_ = writer_->response_id(); | 547 written_response_id_ = writer_->response_id(); |
548 for (int i = 0; i < kNumBlocks; ++i) { | 548 for (int i = 0; i < kNumBlocks; ++i) { |
549 PushNextTask(base::Bind(&AppCacheResponseTest::WriteOneBlock, | 549 PushNextTask(base::Bind(&AppCacheResponseTest::WriteOneBlock, |
550 base::Unretained(this), kNumBlocks - i)); | 550 base::Unretained(this), kNumBlocks - i)); |
551 } | 551 } |
552 ScheduleNextTask(); | 552 ScheduleNextTask(); |
553 } | 553 } |
554 | 554 |
555 void WriteOneBlock(int block_number) { | 555 void WriteOneBlock(int block_number) { |
556 scoped_refptr<IOBuffer> io_buffer( | 556 scoped_refptr<IOBuffer> io_buffer( |
557 new IOBuffer(kBlockSize)); | 557 new IOBuffer(kBlockSize)); |
558 FillData(block_number, io_buffer->data(), kBlockSize); | 558 FillData(block_number, io_buffer->data(), kBlockSize); |
559 WriteResponseBody(io_buffer, kBlockSize); | 559 WriteResponseBody(io_buffer, kBlockSize); |
560 } | 560 } |
561 | 561 |
562 void ReadInBlocks() { | 562 void ReadInBlocks() { |
563 writer_.reset(); | 563 writer_.reset(); |
564 reader_.reset(service_->storage()->CreateResponseReader( | 564 reader_.reset(service_->storage()->CreateResponseReader( |
565 GURL(), 0, written_response_id_)); | 565 GURL(), written_response_id_)); |
566 for (int i = 0; i < kNumBlocks; ++i) { | 566 for (int i = 0; i < kNumBlocks; ++i) { |
567 PushNextTask(base::Bind(&AppCacheResponseTest::ReadOneBlock, | 567 PushNextTask(base::Bind(&AppCacheResponseTest::ReadOneBlock, |
568 base::Unretained(this), kNumBlocks - i)); | 568 base::Unretained(this), kNumBlocks - i)); |
569 } | 569 } |
570 ScheduleNextTask(); | 570 ScheduleNextTask(); |
571 } | 571 } |
572 | 572 |
573 void ReadOneBlock(int block_number) { | 573 void ReadOneBlock(int block_number) { |
574 PushNextTask(base::Bind(&AppCacheResponseTest::VerifyOneBlock, | 574 PushNextTask(base::Bind(&AppCacheResponseTest::VerifyOneBlock, |
575 base::Unretained(this), block_number)); | 575 base::Unretained(this), block_number)); |
576 ReadResponseBody(new IOBuffer(kBlockSize), kBlockSize); | 576 ReadResponseBody(new IOBuffer(kBlockSize), kBlockSize); |
577 } | 577 } |
578 | 578 |
579 void VerifyOneBlock(int block_number) { | 579 void VerifyOneBlock(int block_number) { |
580 EXPECT_TRUE(CheckData(block_number, read_buffer_->data(), kBlockSize)); | 580 EXPECT_TRUE(CheckData(block_number, read_buffer_->data(), kBlockSize)); |
581 ScheduleNextTask(); | 581 ScheduleNextTask(); |
582 } | 582 } |
583 | 583 |
584 void ReadAllAtOnce() { | 584 void ReadAllAtOnce() { |
585 PushNextTask(base::Bind(&AppCacheResponseTest::VerifyAllAtOnce, | 585 PushNextTask(base::Bind(&AppCacheResponseTest::VerifyAllAtOnce, |
586 base::Unretained(this))); | 586 base::Unretained(this))); |
587 reader_.reset(service_->storage()->CreateResponseReader( | 587 reader_.reset(service_->storage()->CreateResponseReader( |
588 GURL(), 0, written_response_id_)); | 588 GURL(), written_response_id_)); |
589 int big_size = kNumBlocks * kBlockSize; | 589 int big_size = kNumBlocks * kBlockSize; |
590 ReadResponseBody(new IOBuffer(big_size), big_size); | 590 ReadResponseBody(new IOBuffer(big_size), big_size); |
591 } | 591 } |
592 | 592 |
593 void VerifyAllAtOnce() { | 593 void VerifyAllAtOnce() { |
594 char* p = read_buffer_->data(); | 594 char* p = read_buffer_->data(); |
595 for (int i = 0; i < kNumBlocks; ++i, p += kBlockSize) | 595 for (int i = 0; i < kNumBlocks; ++i, p += kBlockSize) |
596 EXPECT_TRUE(CheckData(i + 1, p, kBlockSize)); | 596 EXPECT_TRUE(CheckData(i + 1, p, kBlockSize)); |
597 ScheduleNextTask(); | 597 ScheduleNextTask(); |
598 } | 598 } |
599 | 599 |
600 void ReadPastEOF() { | 600 void ReadPastEOF() { |
601 EXPECT_FALSE(reader_->IsReadPending()); | 601 EXPECT_FALSE(reader_->IsReadPending()); |
602 read_buffer_ = new IOBuffer(kBlockSize); | 602 read_buffer_ = new IOBuffer(kBlockSize); |
603 expected_read_result_ = 0; | 603 expected_read_result_ = 0; |
604 reader_->ReadData(read_buffer_.get(), | 604 reader_->ReadData(read_buffer_.get(), |
605 kBlockSize, | 605 kBlockSize, |
606 base::Bind(&AppCacheResponseTest::OnReadComplete, | 606 base::Bind(&AppCacheResponseTest::OnReadComplete, |
607 base::Unretained(this))); | 607 base::Unretained(this))); |
608 } | 608 } |
609 | 609 |
610 void ReadRange() { | 610 void ReadRange() { |
611 PushNextTask(base::Bind(&AppCacheResponseTest::VerifyRange, | 611 PushNextTask(base::Bind(&AppCacheResponseTest::VerifyRange, |
612 base::Unretained(this))); | 612 base::Unretained(this))); |
613 reader_.reset(service_->storage()->CreateResponseReader( | 613 reader_.reset(service_->storage()->CreateResponseReader( |
614 GURL(), 0, written_response_id_)); | 614 GURL(), written_response_id_)); |
615 reader_->SetReadRange(kBlockSize, kBlockSize); | 615 reader_->SetReadRange(kBlockSize, kBlockSize); |
616 ReadResponseBody(new IOBuffer(kBlockSize), kBlockSize); | 616 ReadResponseBody(new IOBuffer(kBlockSize), kBlockSize); |
617 } | 617 } |
618 | 618 |
619 void VerifyRange() { | 619 void VerifyRange() { |
620 EXPECT_TRUE(CheckData(2, read_buffer_->data(), kBlockSize)); | 620 EXPECT_TRUE(CheckData(2, read_buffer_->data(), kBlockSize)); |
621 ScheduleNextTask(); // ReadPastEOF is scheduled next | 621 ScheduleNextTask(); // ReadPastEOF is scheduled next |
622 } | 622 } |
623 | 623 |
624 void ReadRangePartiallyBeyondEOF() { | 624 void ReadRangePartiallyBeyondEOF() { |
625 PushNextTask(base::Bind(&AppCacheResponseTest::VerifyRangeBeyondEOF, | 625 PushNextTask(base::Bind(&AppCacheResponseTest::VerifyRangeBeyondEOF, |
626 base::Unretained(this))); | 626 base::Unretained(this))); |
627 reader_.reset(service_->storage()->CreateResponseReader( | 627 reader_.reset(service_->storage()->CreateResponseReader( |
628 GURL(), 0, written_response_id_)); | 628 GURL(), written_response_id_)); |
629 reader_->SetReadRange(kBlockSize, kNumBlocks * kBlockSize); | 629 reader_->SetReadRange(kBlockSize, kNumBlocks * kBlockSize); |
630 ReadResponseBody(new IOBuffer(kNumBlocks * kBlockSize), | 630 ReadResponseBody(new IOBuffer(kNumBlocks * kBlockSize), |
631 kNumBlocks * kBlockSize); | 631 kNumBlocks * kBlockSize); |
632 expected_read_result_ = (kNumBlocks - 1) * kBlockSize; | 632 expected_read_result_ = (kNumBlocks - 1) * kBlockSize; |
633 } | 633 } |
634 | 634 |
635 void VerifyRangeBeyondEOF() { | 635 void VerifyRangeBeyondEOF() { |
636 // Just verify the first 1k | 636 // Just verify the first 1k |
637 VerifyRange(); | 637 VerifyRange(); |
638 } | 638 } |
639 | 639 |
640 void ReadRangeFullyBeyondEOF() { | 640 void ReadRangeFullyBeyondEOF() { |
641 reader_.reset(service_->storage()->CreateResponseReader( | 641 reader_.reset(service_->storage()->CreateResponseReader( |
642 GURL(), 0, written_response_id_)); | 642 GURL(), written_response_id_)); |
643 reader_->SetReadRange((kNumBlocks * kBlockSize) + 1, kBlockSize); | 643 reader_->SetReadRange((kNumBlocks * kBlockSize) + 1, kBlockSize); |
644 ReadResponseBody(new IOBuffer(kBlockSize), kBlockSize); | 644 ReadResponseBody(new IOBuffer(kBlockSize), kBlockSize); |
645 expected_read_result_ = 0; | 645 expected_read_result_ = 0; |
646 } | 646 } |
647 | 647 |
648 // IOChaining ------------------------------------------- | 648 // IOChaining ------------------------------------------- |
649 void IOChaining() { | 649 void IOChaining() { |
650 // 1. Write several blocks out initiating the subsequent write | 650 // 1. Write several blocks out initiating the subsequent write |
651 // from within the completion callback of the previous write. | 651 // from within the completion callback of the previous write. |
652 // 2. Read and verify several blocks in similarly chaining reads. | 652 // 2. Read and verify several blocks in similarly chaining reads. |
653 | 653 |
654 // Push tasks in reverse order | 654 // Push tasks in reverse order |
655 PushNextTaskAsImmediate( | 655 PushNextTaskAsImmediate( |
656 base::Bind(&AppCacheResponseTest::ReadInBlocksImmediately, | 656 base::Bind(&AppCacheResponseTest::ReadInBlocksImmediately, |
657 base::Unretained(this))); | 657 base::Unretained(this))); |
658 PushNextTaskAsImmediate( | 658 PushNextTaskAsImmediate( |
659 base::Bind(&AppCacheResponseTest::WriteOutBlocksImmediately, | 659 base::Bind(&AppCacheResponseTest::WriteOutBlocksImmediately, |
660 base::Unretained(this))); | 660 base::Unretained(this))); |
661 | 661 |
662 // Get them going. | 662 // Get them going. |
663 ScheduleNextTask(); | 663 ScheduleNextTask(); |
664 } | 664 } |
665 | 665 |
666 void WriteOutBlocksImmediately() { | 666 void WriteOutBlocksImmediately() { |
667 writer_.reset(service_->storage()->CreateResponseWriter(GURL(), 0)); | 667 writer_.reset(service_->storage()->CreateResponseWriter(GURL())); |
668 written_response_id_ = writer_->response_id(); | 668 written_response_id_ = writer_->response_id(); |
669 for (int i = 0; i < kNumBlocks; ++i) { | 669 for (int i = 0; i < kNumBlocks; ++i) { |
670 PushNextTaskAsImmediate( | 670 PushNextTaskAsImmediate( |
671 base::Bind(&AppCacheResponseTest::WriteOneBlock, | 671 base::Bind(&AppCacheResponseTest::WriteOneBlock, |
672 base::Unretained(this), kNumBlocks - i)); | 672 base::Unretained(this), kNumBlocks - i)); |
673 } | 673 } |
674 ScheduleNextTask(); | 674 ScheduleNextTask(); |
675 } | 675 } |
676 | 676 |
677 void ReadInBlocksImmediately() { | 677 void ReadInBlocksImmediately() { |
678 writer_.reset(); | 678 writer_.reset(); |
679 reader_.reset(service_->storage()->CreateResponseReader( | 679 reader_.reset(service_->storage()->CreateResponseReader( |
680 GURL(), 0, written_response_id_)); | 680 GURL(), written_response_id_)); |
681 for (int i = 0; i < kNumBlocks; ++i) { | 681 for (int i = 0; i < kNumBlocks; ++i) { |
682 PushNextTaskAsImmediate( | 682 PushNextTaskAsImmediate( |
683 base::Bind(&AppCacheResponseTest::ReadOneBlockImmediately, | 683 base::Bind(&AppCacheResponseTest::ReadOneBlockImmediately, |
684 base::Unretained(this), | 684 base::Unretained(this), |
685 kNumBlocks - i)); | 685 kNumBlocks - i)); |
686 } | 686 } |
687 ScheduleNextTask(); | 687 ScheduleNextTask(); |
688 } | 688 } |
689 | 689 |
690 void ReadOneBlockImmediately(int block_number) { | 690 void ReadOneBlockImmediately(int block_number) { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
730 write_callback_was_called_ = false; | 730 write_callback_was_called_ = false; |
731 WriteOneBlock(5); | 731 WriteOneBlock(5); |
732 EXPECT_TRUE(writer_->IsWritePending()); | 732 EXPECT_TRUE(writer_->IsWritePending()); |
733 writer_.reset(); | 733 writer_.reset(); |
734 ScheduleNextTask(); | 734 ScheduleNextTask(); |
735 } | 735 } |
736 | 736 |
737 void ReadThenDelete() { | 737 void ReadThenDelete() { |
738 read_callback_was_called_ = false; | 738 read_callback_was_called_ = false; |
739 reader_.reset(service_->storage()->CreateResponseReader( | 739 reader_.reset(service_->storage()->CreateResponseReader( |
740 GURL(), 0, written_response_id_)); | 740 GURL(), written_response_id_)); |
741 ReadResponseBody(new IOBuffer(kBlockSize), kBlockSize); | 741 ReadResponseBody(new IOBuffer(kBlockSize), kBlockSize); |
742 EXPECT_TRUE(reader_->IsReadPending()); | 742 EXPECT_TRUE(reader_->IsReadPending()); |
743 reader_.reset(); | 743 reader_.reset(); |
744 | 744 |
745 // Wait a moment to verify no callbacks. | 745 // Wait a moment to verify no callbacks. |
746 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 746 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
747 FROM_HERE, base::Bind(&AppCacheResponseTest::VerifyNoCallbacks, | 747 FROM_HERE, base::Bind(&AppCacheResponseTest::VerifyNoCallbacks, |
748 base::Unretained(this)), | 748 base::Unretained(this)), |
749 base::TimeDelta::FromMilliseconds(10)); | 749 base::TimeDelta::FromMilliseconds(10)); |
750 } | 750 } |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
816 | 816 |
817 TEST_F(AppCacheResponseTest, DeleteWithinCallbacks) { | 817 TEST_F(AppCacheResponseTest, DeleteWithinCallbacks) { |
818 RunTestOnIOThread(&AppCacheResponseTest::DeleteWithinCallbacks); | 818 RunTestOnIOThread(&AppCacheResponseTest::DeleteWithinCallbacks); |
819 } | 819 } |
820 | 820 |
821 TEST_F(AppCacheResponseTest, DeleteWithIOPending) { | 821 TEST_F(AppCacheResponseTest, DeleteWithIOPending) { |
822 RunTestOnIOThread(&AppCacheResponseTest::DeleteWithIOPending); | 822 RunTestOnIOThread(&AppCacheResponseTest::DeleteWithIOPending); |
823 } | 823 } |
824 | 824 |
825 } // namespace content | 825 } // namespace content |
OLD | NEW |