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

Side by Side Diff: content/browser/loader/mojo_async_resource_handler_unittest.cc

Issue 2633123002: [Mojo-Loading] OnStartLoadingResponseBody should be called after OnReceiveResponse (Closed)
Patch Set: fix Created 3 years, 11 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/loader/mojo_async_resource_handler.h" 5 #include "content/browser/loader/mojo_async_resource_handler.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 EXPECT_EQ(0, rdh_.num_in_flight_requests_for_testing()); 450 EXPECT_EQ(0, rdh_.num_in_flight_requests_for_testing());
451 } 451 }
452 452
453 TEST_F(MojoAsyncResourceHandlerTest, OnWillReadAndOnReadCompleted) { 453 TEST_F(MojoAsyncResourceHandlerTest, OnWillReadAndOnReadCompleted) {
454 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 454 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
455 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 455 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
456 // The buffer size that the mime sniffer requires implicitly. 456 // The buffer size that the mime sniffer requires implicitly.
457 ASSERT_GE(mock_loader_->io_buffer_size(), 457 ASSERT_GE(mock_loader_->io_buffer_size(),
458 kSizeMimeSnifferRequiresForFirstOnWillRead); 458 kSizeMimeSnifferRequiresForFirstOnWillRead);
459 459
460 ASSERT_EQ(MockResourceLoader::Status::IDLE,
461 mock_loader_->OnReadCompleted("AB"));
462
460 url_loader_client_.RunUntilResponseBodyArrived(); 463 url_loader_client_.RunUntilResponseBodyArrived();
461 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 464 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
462 465
463 ASSERT_EQ(MockResourceLoader::Status::IDLE,
464 mock_loader_->OnReadCompleted("AB"));
465
466 std::string contents; 466 std::string contents;
467 while (contents.size() < 2) { 467 while (contents.size() < 2) {
468 char buffer[16]; 468 char buffer[16];
469 uint32_t read_size = sizeof(buffer); 469 uint32_t read_size = sizeof(buffer);
470 MojoResult result = 470 MojoResult result =
471 mojo::ReadDataRaw(url_loader_client_.response_body(), buffer, 471 mojo::ReadDataRaw(url_loader_client_.response_body(), buffer,
472 &read_size, MOJO_READ_DATA_FLAG_NONE); 472 &read_size, MOJO_READ_DATA_FLAG_NONE);
473 if (result == MOJO_RESULT_SHOULD_WAIT) { 473 if (result == MOJO_RESULT_SHOULD_WAIT) {
474 base::RunLoop().RunUntilIdle(); 474 base::RunLoop().RunUntilIdle();
475 continue; 475 continue;
476 } 476 }
477 contents.append(buffer, read_size); 477 contents.append(buffer, read_size);
478 } 478 }
479 EXPECT_EQ("AB", contents); 479 EXPECT_EQ("AB", contents);
480 } 480 }
481 481
482 TEST_F(MojoAsyncResourceHandlerTest, 482 TEST_F(MojoAsyncResourceHandlerTest,
483 OnWillReadAndOnReadCompletedWithInsufficientInitialCapacity) { 483 OnWillReadAndOnReadCompletedWithInsufficientInitialCapacity) {
484 MojoAsyncResourceHandler::SetAllocationSizeForTesting(2); 484 MojoAsyncResourceHandler::SetAllocationSizeForTesting(2);
485 485
486 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 486 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
487 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 487 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
488 // The buffer size that the mime sniffer requires implicitly. 488 // The buffer size that the mime sniffer requires implicitly.
489 ASSERT_GE(mock_loader_->io_buffer_size(), 489 ASSERT_GE(mock_loader_->io_buffer_size(),
490 kSizeMimeSnifferRequiresForFirstOnWillRead); 490 kSizeMimeSnifferRequiresForFirstOnWillRead);
491 491
492 url_loader_client_.RunUntilResponseBodyArrived();
493 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
494
495 const std::string data("abcdefgh"); 492 const std::string data("abcdefgh");
496 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, 493 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
497 mock_loader_->OnReadCompleted(data)); 494 mock_loader_->OnReadCompleted(data));
498 495
496 url_loader_client_.RunUntilResponseBodyArrived();
497 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
498
499 std::string contents; 499 std::string contents;
500 while (contents.size() < data.size()) { 500 while (contents.size() < data.size()) {
501 // This is needed for Resume to be called. 501 // This is needed for Resume to be called.
502 base::RunLoop().RunUntilIdle(); 502 base::RunLoop().RunUntilIdle();
503 char buffer[16]; 503 char buffer[16];
504 uint32_t read_size = sizeof(buffer); 504 uint32_t read_size = sizeof(buffer);
505 MojoResult result = 505 MojoResult result =
506 mojo::ReadDataRaw(url_loader_client_.response_body(), buffer, 506 mojo::ReadDataRaw(url_loader_client_.response_body(), buffer,
507 &read_size, MOJO_READ_DATA_FLAG_NONE); 507 &read_size, MOJO_READ_DATA_FLAG_NONE);
508 if (result == MOJO_RESULT_SHOULD_WAIT) 508 if (result == MOJO_RESULT_SHOULD_WAIT)
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 url_loader_client_.RunUntilComplete(); 612 url_loader_client_.RunUntilComplete();
613 EXPECT_TRUE(url_loader_client_.has_received_completion()); 613 EXPECT_TRUE(url_loader_client_.has_received_completion());
614 EXPECT_EQ(net::ERR_TIMED_OUT, 614 EXPECT_EQ(net::ERR_TIMED_OUT,
615 url_loader_client_.completion_status().error_code); 615 url_loader_client_.completion_status().error_code);
616 } 616 }
617 617
618 TEST_F(MojoAsyncResourceHandlerTest, ResponseCompletionShouldCloseDataPipe) { 618 TEST_F(MojoAsyncResourceHandlerTest, ResponseCompletionShouldCloseDataPipe) {
619 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 619 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
620 620
621 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 621 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
622 ASSERT_EQ(MockResourceLoader::Status::IDLE,
623 mock_loader_->OnReadCompleted("AB"));
622 url_loader_client_.RunUntilResponseBodyArrived(); 624 url_loader_client_.RunUntilResponseBodyArrived();
623 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 625 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
624 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnReadCompleted(0));
625 626
626 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK); 627 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK);
627 ASSERT_EQ(MockResourceLoader::Status::IDLE, 628 ASSERT_EQ(MockResourceLoader::Status::IDLE,
628 mock_loader_->OnResponseCompleted(status)); 629 mock_loader_->OnResponseCompleted(status));
629 630
630 url_loader_client_.RunUntilComplete(); 631 url_loader_client_.RunUntilComplete();
631 EXPECT_TRUE(url_loader_client_.has_received_completion()); 632 EXPECT_TRUE(url_loader_client_.has_received_completion());
632 EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code); 633 EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code);
633 634
634 while (true) { 635 while (true) {
635 char buffer[16]; 636 char buffer[16];
636 uint32_t read_size = sizeof(buffer); 637 uint32_t read_size = sizeof(buffer);
637 MojoResult result = 638 MojoResult result =
638 mojo::ReadDataRaw(url_loader_client_.response_body(), buffer, 639 mojo::ReadDataRaw(url_loader_client_.response_body(), buffer,
639 &read_size, MOJO_READ_DATA_FLAG_NONE); 640 &read_size, MOJO_READ_DATA_FLAG_NONE);
640 if (result == MOJO_RESULT_FAILED_PRECONDITION) 641 if (result == MOJO_RESULT_FAILED_PRECONDITION)
641 break; 642 break;
642 ASSERT_EQ(result, MOJO_RESULT_SHOULD_WAIT); 643 ASSERT_TRUE(result == MOJO_RESULT_SHOULD_WAIT || result == MOJO_RESULT_OK);
643 } 644 }
644 } 645 }
645 646
646 TEST_F(MojoAsyncResourceHandlerTest, OutOfBandCancelDuringBodyTransmission) { 647 TEST_F(MojoAsyncResourceHandlerTest, OutOfBandCancelDuringBodyTransmission) {
647 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 648 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
648 649
649 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 650 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
650 url_loader_client_.RunUntilResponseBodyArrived();
651 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
652 std::string data(mock_loader_->io_buffer_size(), 'a'); 651 std::string data(mock_loader_->io_buffer_size(), 'a');
653 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, 652 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
654 mock_loader_->OnReadCompleted(data)); 653 mock_loader_->OnReadCompleted(data));
654 url_loader_client_.RunUntilResponseBodyArrived();
655 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
655 656
656 net::URLRequestStatus status(net::URLRequestStatus::FAILED, net::ERR_FAILED); 657 net::URLRequestStatus status(net::URLRequestStatus::FAILED, net::ERR_FAILED);
657 ASSERT_EQ( 658 ASSERT_EQ(
658 MockResourceLoader::Status::IDLE, 659 MockResourceLoader::Status::IDLE,
659 mock_loader_->OnResponseCompletedFromExternalOutOfBandCancel(status)); 660 mock_loader_->OnResponseCompletedFromExternalOutOfBandCancel(status));
660 661
661 url_loader_client_.RunUntilComplete(); 662 url_loader_client_.RunUntilComplete();
662 EXPECT_TRUE(url_loader_client_.has_received_completion()); 663 EXPECT_TRUE(url_loader_client_.has_received_completion());
663 EXPECT_EQ(net::ERR_FAILED, url_loader_client_.completion_status().error_code); 664 EXPECT_EQ(net::ERR_FAILED, url_loader_client_.completion_status().error_code);
664 665
665 std::string actual; 666 std::string actual;
666 while (true) { 667 while (true) {
667 char buf[16]; 668 char buf[16];
668 uint32_t read_size = sizeof(buf); 669 uint32_t read_size = sizeof(buf);
669 MojoResult result = 670 MojoResult result =
670 mojo::ReadDataRaw(url_loader_client_.response_body(), buf, &read_size, 671 mojo::ReadDataRaw(url_loader_client_.response_body(), buf, &read_size,
671 MOJO_READ_DATA_FLAG_NONE); 672 MOJO_READ_DATA_FLAG_NONE);
672 if (result == MOJO_RESULT_FAILED_PRECONDITION) 673 if (result == MOJO_RESULT_FAILED_PRECONDITION)
673 break; 674 break;
674 if (result == MOJO_RESULT_SHOULD_WAIT) { 675 if (result == MOJO_RESULT_SHOULD_WAIT) {
675 base::RunLoop().RunUntilIdle(); 676 base::RunLoop().RunUntilIdle();
676 continue; 677 continue;
677 } 678 }
678 EXPECT_EQ(MOJO_RESULT_OK, result); 679 EXPECT_EQ(MOJO_RESULT_OK, result);
679 actual.append(buf, read_size); 680 actual.append(buf, read_size);
680 } 681 }
681 EXPECT_EQ(data, actual); 682 EXPECT_EQ(data, actual);
682 } 683 }
683 684
684 // In this case, an error is notified after OnWillRead, before OnReadCompleted.
685 TEST_F(MojoAsyncResourceHandlerTest, ResponseErrorDuringBodyTransmission2) {
mmenke 2017/01/18 16:26:12 Why did you remove this test?
yhirano 2017/01/19 03:25:50 This test doesn't have an OnReadCompleted call. Wi
686 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
687
688 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
689 url_loader_client_.RunUntilResponseBodyArrived();
690 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
691 net::URLRequestStatus status(net::URLRequestStatus::FAILED, net::ERR_FAILED);
692 ASSERT_EQ(MockResourceLoader::Status::IDLE,
693 mock_loader_->OnResponseCompleted(status));
694
695 url_loader_client_.RunUntilComplete();
696 EXPECT_TRUE(url_loader_client_.has_received_completion());
697 EXPECT_EQ(net::ERR_FAILED, url_loader_client_.completion_status().error_code);
698
699 while (true) {
700 char buf[16];
701 uint32_t read_size = sizeof(buf);
702 MojoResult result =
703 mojo::ReadDataRaw(url_loader_client_.response_body(), buf, &read_size,
704 MOJO_READ_DATA_FLAG_NONE);
705 if (result == MOJO_RESULT_FAILED_PRECONDITION)
706 break;
707 ASSERT_EQ(MOJO_RESULT_SHOULD_WAIT, result);
708 base::RunLoop().RunUntilIdle();
709 }
710 }
711
712 TEST_F(MojoAsyncResourceHandlerTest, BeginWriteFailsOnWillRead) { 685 TEST_F(MojoAsyncResourceHandlerTest, BeginWriteFailsOnWillRead) {
713 handler_->set_begin_write_expectation(MOJO_RESULT_UNKNOWN); 686 handler_->set_begin_write_expectation(MOJO_RESULT_UNKNOWN);
714 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 687 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
715 ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->OnWillRead(-1)); 688 ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->OnWillRead(-1));
716 } 689 }
717 690
718 TEST_F(MojoAsyncResourceHandlerTest, BeginWriteReturnsShouldWaitOnWillRead) { 691 TEST_F(MojoAsyncResourceHandlerTest, BeginWriteReturnsShouldWaitOnWillRead) {
719 handler_->set_begin_write_expectation(MOJO_RESULT_SHOULD_WAIT); 692 handler_->set_begin_write_expectation(MOJO_RESULT_SHOULD_WAIT);
720 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 693 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
721 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 694 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 ASSERT_EQ(MockResourceLoader::Status::CANCELED, 759 ASSERT_EQ(MockResourceLoader::Status::CANCELED,
787 mock_loader_->OnReadCompleted( 760 mock_loader_->OnReadCompleted(
788 std::string(mock_loader_->io_buffer_size(), 'w'))); 761 std::string(mock_loader_->io_buffer_size(), 'w')));
789 } 762 }
790 763
791 TEST_F(MojoAsyncResourceHandlerTest, 764 TEST_F(MojoAsyncResourceHandlerTest,
792 EndWriteFailsOnResumeWithInsufficientInitialCapacity) { 765 EndWriteFailsOnResumeWithInsufficientInitialCapacity) {
793 MojoAsyncResourceHandler::SetAllocationSizeForTesting(8); 766 MojoAsyncResourceHandler::SetAllocationSizeForTesting(8);
794 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 767 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
795 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 768 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
796 url_loader_client_.RunUntilResponseBodyArrived();
797 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
798 769
799 while (true) { 770 while (true) {
800 MockResourceLoader::Status result = mock_loader_->OnReadCompleted( 771 MockResourceLoader::Status result = mock_loader_->OnReadCompleted(
801 std::string(mock_loader_->io_buffer_size(), 'A')); 772 std::string(mock_loader_->io_buffer_size(), 'A'));
802 if (result == MockResourceLoader::Status::CALLBACK_PENDING) 773 if (result == MockResourceLoader::Status::CALLBACK_PENDING)
803 break; 774 break;
804 ASSERT_EQ(MockResourceLoader::Status::IDLE, result); 775 ASSERT_EQ(MockResourceLoader::Status::IDLE, result);
805 776
806 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 777 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
807 } 778 }
808 779
780 url_loader_client_.RunUntilResponseBodyArrived();
781 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
782
809 while (true) { 783 while (true) {
810 char buf[16]; 784 char buf[16];
811 uint32_t read_size = sizeof(buf); 785 uint32_t read_size = sizeof(buf);
812 MojoResult result = 786 MojoResult result =
813 mojo::ReadDataRaw(url_loader_client_.response_body(), buf, &read_size, 787 mojo::ReadDataRaw(url_loader_client_.response_body(), buf, &read_size,
814 MOJO_READ_DATA_FLAG_NONE); 788 MOJO_READ_DATA_FLAG_NONE);
815 if (result == MOJO_RESULT_SHOULD_WAIT) 789 if (result == MOJO_RESULT_SHOULD_WAIT)
816 break; 790 break;
817 ASSERT_EQ(MOJO_RESULT_OK, result); 791 ASSERT_EQ(MOJO_RESULT_OK, result);
818 } 792 }
819 793
820 handler_->set_end_write_expectation(MOJO_RESULT_SHOULD_WAIT); 794 handler_->set_end_write_expectation(MOJO_RESULT_SHOULD_WAIT);
821 mock_loader_->WaitUntilIdleOrCanceled(); 795 mock_loader_->WaitUntilIdleOrCanceled();
822 EXPECT_FALSE(url_loader_client_.has_received_completion()); 796 EXPECT_FALSE(url_loader_client_.has_received_completion());
823 EXPECT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->status()); 797 EXPECT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->status());
824 EXPECT_EQ(net::ERR_FAILED, mock_loader_->error_code()); 798 EXPECT_EQ(net::ERR_FAILED, mock_loader_->error_code());
825 } 799 }
826 800
827 TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, 801 TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
828 OnWillReadWithLongContents) { 802 OnWillReadWithLongContents) {
829 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 803 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
830 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 804 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
831 std::string expected; 805 std::string expected;
832 for (int i = 0; i < 3 * mock_loader_->io_buffer_size() + 2; ++i) 806 for (int i = 0; i < 3 * mock_loader_->io_buffer_size() + 2; ++i)
833 expected += ('A' + i % 26); 807 expected += ('A' + i % 26);
834 808
835 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnReadCompleted(0)); 809 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnReadCompleted(0));
836 810
837 url_loader_client_.RunUntilResponseBodyArrived();
838 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
839
840 size_t written = 0; 811 size_t written = 0;
841 std::string actual; 812 std::string actual;
842 while (actual.size() < expected.size()) { 813 while (actual.size() < expected.size()) {
843 while (written < expected.size() && 814 while (written < expected.size() &&
844 mock_loader_->status() == MockResourceLoader::Status::IDLE) { 815 mock_loader_->status() == MockResourceLoader::Status::IDLE) {
845 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 816 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
846 const size_t to_be_written = 817 const size_t to_be_written =
847 std::min(static_cast<size_t>(mock_loader_->io_buffer_size()), 818 std::min(static_cast<size_t>(mock_loader_->io_buffer_size()),
848 expected.size() - written); 819 expected.size() - written);
849 820
850 // Request should be resumed or paused. 821 // Request should be resumed or paused.
851 ASSERT_NE(MockResourceLoader::Status::CANCELED, 822 ASSERT_NE(MockResourceLoader::Status::CANCELED,
852 mock_loader_->OnReadCompleted( 823 mock_loader_->OnReadCompleted(
853 expected.substr(written, to_be_written))); 824 expected.substr(written, to_be_written)));
854 825
855 written += to_be_written; 826 written += to_be_written;
856 } 827 }
828 if (!url_loader_client_.response_body().is_valid()) {
829 url_loader_client_.RunUntilResponseBodyArrived();
830 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
831 }
857 832
858 char buf[16]; 833 char buf[16];
859 uint32_t read_size = sizeof(buf); 834 uint32_t read_size = sizeof(buf);
860 MojoResult result = 835 MojoResult result =
861 mojo::ReadDataRaw(url_loader_client_.response_body(), buf, &read_size, 836 mojo::ReadDataRaw(url_loader_client_.response_body(), buf, &read_size,
862 MOJO_READ_DATA_FLAG_NONE); 837 MOJO_READ_DATA_FLAG_NONE);
863 if (result != MOJO_RESULT_SHOULD_WAIT) { 838 if (result != MOJO_RESULT_SHOULD_WAIT) {
864 ASSERT_EQ(MOJO_RESULT_OK, result); 839 ASSERT_EQ(MOJO_RESULT_OK, result);
865 actual.append(buf, read_size); 840 actual.append(buf, read_size);
866 } 841 }
(...skipping 25 matching lines...) Expand all
892 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, 867 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
893 mock_loader_->OnReadCompleted( 868 mock_loader_->OnReadCompleted(
894 std::string(mock_loader_->io_buffer_size(), 'A'))); 869 std::string(mock_loader_->io_buffer_size(), 'A')));
895 } 870 }
896 871
897 TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, 872 TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
898 BeginWriteFailsOnResume) { 873 BeginWriteFailsOnResume) {
899 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 874 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
900 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 875 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
901 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnReadCompleted(0)); 876 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnReadCompleted(0));
902 url_loader_client_.RunUntilResponseBodyArrived();
903 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
904 877
905 while (true) { 878 while (true) {
906 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 879 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
907 MockResourceLoader::Status result = mock_loader_->OnReadCompleted( 880 MockResourceLoader::Status result = mock_loader_->OnReadCompleted(
908 std::string(mock_loader_->io_buffer_size(), 'A')); 881 std::string(mock_loader_->io_buffer_size(), 'A'));
909 if (result == MockResourceLoader::Status::CALLBACK_PENDING) 882 if (result == MockResourceLoader::Status::CALLBACK_PENDING)
910 break; 883 break;
911 ASSERT_EQ(MockResourceLoader::Status::IDLE, result); 884 ASSERT_EQ(MockResourceLoader::Status::IDLE, result);
912 } 885 }
886 url_loader_client_.RunUntilResponseBodyArrived();
887 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
888
913 handler_->set_begin_write_expectation(MOJO_RESULT_UNKNOWN); 889 handler_->set_begin_write_expectation(MOJO_RESULT_UNKNOWN);
914 890
915 while (mock_loader_->status() != MockResourceLoader::Status::CANCELED) { 891 while (mock_loader_->status() != MockResourceLoader::Status::CANCELED) {
916 char buf[256]; 892 char buf[256];
917 uint32_t read_size = sizeof(buf); 893 uint32_t read_size = sizeof(buf);
918 MojoResult result = 894 MojoResult result =
919 mojo::ReadDataRaw(url_loader_client_.response_body(), buf, &read_size, 895 mojo::ReadDataRaw(url_loader_client_.response_body(), buf, &read_size,
920 MOJO_READ_DATA_FLAG_NONE); 896 MOJO_READ_DATA_FLAG_NONE);
921 ASSERT_TRUE(result == MOJO_RESULT_OK || result == MOJO_RESULT_SHOULD_WAIT); 897 ASSERT_TRUE(result == MOJO_RESULT_OK || result == MOJO_RESULT_SHOULD_WAIT);
922 base::RunLoop().RunUntilIdle(); 898 base::RunLoop().RunUntilIdle();
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
1049 ASSERT_EQ(MockResourceLoader::Status::IDLE, 1025 ASSERT_EQ(MockResourceLoader::Status::IDLE,
1050 mock_loader_->OnResponseStarted( 1026 mock_loader_->OnResponseStarted(
1051 make_scoped_refptr(new ResourceResponse()))); 1027 make_scoped_refptr(new ResourceResponse())));
1052 1028
1053 ASSERT_FALSE(url_loader_client_.has_received_response()); 1029 ASSERT_FALSE(url_loader_client_.has_received_response());
1054 url_loader_client_.RunUntilResponseReceived(); 1030 url_loader_client_.RunUntilResponseReceived();
1055 1031
1056 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 1032 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
1057 1033
1058 ASSERT_FALSE(url_loader_client_.response_body().is_valid()); 1034 ASSERT_FALSE(url_loader_client_.response_body().is_valid());
1035
1036 ASSERT_EQ(MockResourceLoader::Status::IDLE,
1037 mock_loader_->OnReadCompleted("A"));
1059 url_loader_client_.RunUntilResponseBodyArrived(); 1038 url_loader_client_.RunUntilResponseBodyArrived();
1060 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 1039 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
1061 1040
1062 ASSERT_EQ(MockResourceLoader::Status::IDLE,
1063 mock_loader_->OnReadCompleted("A"));
1064 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK); 1041 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK);
1065 ASSERT_EQ(MockResourceLoader::Status::IDLE, 1042 ASSERT_EQ(MockResourceLoader::Status::IDLE,
1066 mock_loader_->OnResponseCompleted(status)); 1043 mock_loader_->OnResponseCompleted(status));
1067 1044
1068 ASSERT_FALSE(url_loader_client_.has_received_completion()); 1045 ASSERT_FALSE(url_loader_client_.has_received_completion());
1069 url_loader_client_.RunUntilComplete(); 1046 url_loader_client_.RunUntilComplete();
1070 EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code); 1047 EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code);
1071 1048
1072 std::string body; 1049 std::string body;
1073 while (true) { 1050 while (true) {
(...skipping 18 matching lines...) Expand all
1092 TEST_P( 1069 TEST_P(
1093 MojoAsyncResourceHandlerWithAllocationSizeTest, 1070 MojoAsyncResourceHandlerWithAllocationSizeTest,
1094 OnWillStartThenOnWillReadThenOnResponseStartedThenOnReadCompletedThenOnRespo nseCompleted) { 1071 OnWillStartThenOnWillReadThenOnResponseStartedThenOnReadCompletedThenOnRespo nseCompleted) {
1095 rdh_delegate_.set_num_on_response_started_calls_expectation(1); 1072 rdh_delegate_.set_num_on_response_started_calls_expectation(1);
1096 1073
1097 ASSERT_EQ(MockResourceLoader::Status::IDLE, 1074 ASSERT_EQ(MockResourceLoader::Status::IDLE,
1098 mock_loader_->OnWillStart(request_->url())); 1075 mock_loader_->OnWillStart(request_->url()));
1099 1076
1100 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 1077 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1));
1101 1078
1102 ASSERT_FALSE(url_loader_client_.response_body().is_valid());
1103 url_loader_client_.RunUntilResponseBodyArrived();
1104 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
1105
1106 ASSERT_EQ(MockResourceLoader::Status::IDLE, 1079 ASSERT_EQ(MockResourceLoader::Status::IDLE,
1107 mock_loader_->OnResponseStarted( 1080 mock_loader_->OnResponseStarted(
1108 make_scoped_refptr(new ResourceResponse()))); 1081 make_scoped_refptr(new ResourceResponse())));
1109 1082
1110 ASSERT_FALSE(url_loader_client_.has_received_response()); 1083 ASSERT_FALSE(url_loader_client_.has_received_response());
1111 url_loader_client_.RunUntilResponseReceived(); 1084 url_loader_client_.RunUntilResponseReceived();
1112 1085
1113 ASSERT_EQ(MockResourceLoader::Status::IDLE, 1086 ASSERT_EQ(MockResourceLoader::Status::IDLE,
1114 mock_loader_->OnReadCompleted("B")); 1087 mock_loader_->OnReadCompleted("B"));
1088
1089 ASSERT_FALSE(url_loader_client_.response_body().is_valid());
1090 url_loader_client_.RunUntilResponseBodyArrived();
1091 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
1092
1115 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK); 1093 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK);
1116 ASSERT_EQ(MockResourceLoader::Status::IDLE, 1094 ASSERT_EQ(MockResourceLoader::Status::IDLE,
1117 mock_loader_->OnResponseCompleted(status)); 1095 mock_loader_->OnResponseCompleted(status));
1118 1096
1119 ASSERT_FALSE(url_loader_client_.has_received_completion()); 1097 ASSERT_FALSE(url_loader_client_.has_received_completion());
1120 url_loader_client_.RunUntilComplete(); 1098 url_loader_client_.RunUntilComplete();
1121 EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code); 1099 EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code);
1122 1100
1123 std::string body; 1101 std::string body;
1124 while (true) { 1102 while (true) {
(...skipping 12 matching lines...) Expand all
1137 } 1115 }
1138 } 1116 }
1139 EXPECT_EQ("B", body); 1117 EXPECT_EQ("B", body);
1140 } 1118 }
1141 1119
1142 INSTANTIATE_TEST_CASE_P(MojoAsyncResourceHandlerWithAllocationSizeTest, 1120 INSTANTIATE_TEST_CASE_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
1143 MojoAsyncResourceHandlerWithAllocationSizeTest, 1121 MojoAsyncResourceHandlerWithAllocationSizeTest,
1144 ::testing::Values(8, 32 * 2014)); 1122 ::testing::Values(8, 32 * 2014));
1145 } // namespace 1123 } // namespace
1146 } // namespace content 1124 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698