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

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

Issue 2660723002: ResourceHandler::OnWillStart: Remove min_size argument. (Closed)
Patch Set: Merge Created 3 years, 10 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 515 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 526
527 url_loader_client_.RunUntilCachedMetadataReceived(); 527 url_loader_client_.RunUntilCachedMetadataReceived();
528 EXPECT_EQ("hello", url_loader_client_.cached_metadata()); 528 EXPECT_EQ("hello", url_loader_client_.cached_metadata());
529 529
530 EXPECT_FALSE(url_loader_client_.has_received_upload_progress()); 530 EXPECT_FALSE(url_loader_client_.has_received_upload_progress());
531 } 531 }
532 532
533 TEST_F(MojoAsyncResourceHandlerTest, OnWillReadAndInFlightRequests) { 533 TEST_F(MojoAsyncResourceHandlerTest, OnWillReadAndInFlightRequests) {
534 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 534 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
535 EXPECT_EQ(0, rdh_.num_in_flight_requests_for_testing()); 535 EXPECT_EQ(0, rdh_.num_in_flight_requests_for_testing());
536 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 536 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
537 EXPECT_EQ(1, rdh_.num_in_flight_requests_for_testing()); 537 EXPECT_EQ(1, rdh_.num_in_flight_requests_for_testing());
538 handler_ = nullptr; 538 handler_ = nullptr;
539 EXPECT_EQ(0, rdh_.num_in_flight_requests_for_testing()); 539 EXPECT_EQ(0, rdh_.num_in_flight_requests_for_testing());
540 } 540 }
541 541
542 TEST_F(MojoAsyncResourceHandlerTest, OnWillReadWithInsufficientResource) { 542 TEST_F(MojoAsyncResourceHandlerTest, OnWillReadWithInsufficientResource) {
543 rdh_.set_max_num_in_flight_requests_per_process(0); 543 rdh_.set_max_num_in_flight_requests_per_process(0);
544 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 544 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
545 545
546 ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->OnWillRead(-1)); 546 ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->OnWillRead());
547 // TODO(mmenke): Make this fail with net::ERR_INSUFFICIENT_RESOURCES. 547 // TODO(mmenke): Make this fail with net::ERR_INSUFFICIENT_RESOURCES.
548 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code()); 548 EXPECT_EQ(net::ERR_ABORTED, mock_loader_->error_code());
549 EXPECT_EQ(1, rdh_.num_in_flight_requests_for_testing()); 549 EXPECT_EQ(1, rdh_.num_in_flight_requests_for_testing());
550 handler_ = nullptr; 550 handler_ = nullptr;
551 EXPECT_EQ(0, rdh_.num_in_flight_requests_for_testing()); 551 EXPECT_EQ(0, rdh_.num_in_flight_requests_for_testing());
552 } 552 }
553 553
554 TEST_F(MojoAsyncResourceHandlerTest, OnWillReadAndOnReadCompleted) { 554 TEST_F(MojoAsyncResourceHandlerTest, OnWillReadAndOnReadCompleted) {
555 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 555 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
556 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 556 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
557 // The buffer size that the mime sniffer requires implicitly. 557 // The buffer size that the mime sniffer requires implicitly.
558 ASSERT_GE(mock_loader_->io_buffer_size(), 558 ASSERT_GE(mock_loader_->io_buffer_size(),
559 kSizeMimeSnifferRequiresForFirstOnWillRead); 559 kSizeMimeSnifferRequiresForFirstOnWillRead);
560 560
561 ASSERT_EQ(MockResourceLoader::Status::IDLE, 561 ASSERT_EQ(MockResourceLoader::Status::IDLE,
562 mock_loader_->OnReadCompleted("AB")); 562 mock_loader_->OnReadCompleted("AB"));
563 563
564 url_loader_client_.RunUntilResponseBodyArrived(); 564 url_loader_client_.RunUntilResponseBodyArrived();
565 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 565 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
566 566
(...skipping 11 matching lines...) Expand all
578 contents.append(buffer, read_size); 578 contents.append(buffer, read_size);
579 } 579 }
580 EXPECT_EQ("AB", contents); 580 EXPECT_EQ("AB", contents);
581 } 581 }
582 582
583 TEST_F(MojoAsyncResourceHandlerTest, 583 TEST_F(MojoAsyncResourceHandlerTest,
584 OnWillReadAndOnReadCompletedWithInsufficientInitialCapacity) { 584 OnWillReadAndOnReadCompletedWithInsufficientInitialCapacity) {
585 MojoAsyncResourceHandler::SetAllocationSizeForTesting(2); 585 MojoAsyncResourceHandler::SetAllocationSizeForTesting(2);
586 586
587 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 587 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
588 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 588 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
589 // The buffer size that the mime sniffer requires implicitly. 589 // The buffer size that the mime sniffer requires implicitly.
590 ASSERT_GE(mock_loader_->io_buffer_size(), 590 ASSERT_GE(mock_loader_->io_buffer_size(),
591 kSizeMimeSnifferRequiresForFirstOnWillRead); 591 kSizeMimeSnifferRequiresForFirstOnWillRead);
592 592
593 const std::string data("abcdefgh"); 593 const std::string data("abcdefgh");
594 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, 594 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
595 mock_loader_->OnReadCompleted(data)); 595 mock_loader_->OnReadCompleted(data));
596 596
597 url_loader_client_.RunUntilResponseBodyArrived(); 597 url_loader_client_.RunUntilResponseBodyArrived();
598 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 598 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
(...skipping 13 matching lines...) Expand all
612 contents.append(buffer, read_size); 612 contents.append(buffer, read_size);
613 } 613 }
614 EXPECT_EQ(data, contents); 614 EXPECT_EQ(data, contents);
615 EXPECT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, 615 EXPECT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
616 mock_loader_->status()); 616 mock_loader_->status());
617 } 617 }
618 618
619 TEST_F(MojoAsyncResourceHandlerTest, 619 TEST_F(MojoAsyncResourceHandlerTest,
620 IOBufferFromOnWillReadShouldRemainValidEvenIfHandlerIsGone) { 620 IOBufferFromOnWillReadShouldRemainValidEvenIfHandlerIsGone) {
621 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 621 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
622 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 622 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
623 // The io_buffer size that the mime sniffer requires implicitly. 623 // The io_buffer size that the mime sniffer requires implicitly.
624 ASSERT_GE(mock_loader_->io_buffer_size(), 624 ASSERT_GE(mock_loader_->io_buffer_size(),
625 kSizeMimeSnifferRequiresForFirstOnWillRead); 625 kSizeMimeSnifferRequiresForFirstOnWillRead);
626 626
627 handler_ = nullptr; 627 handler_ = nullptr;
628 url_loader_client_.Unbind(); 628 url_loader_client_.Unbind();
629 base::RunLoop().RunUntilIdle(); 629 base::RunLoop().RunUntilIdle();
630 630
631 // Hopefully ASAN checks this operation's validity. 631 // Hopefully ASAN checks this operation's validity.
632 mock_loader_->io_buffer()->data()[0] = 'A'; 632 mock_loader_->io_buffer()->data()[0] = 'A';
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
712 712
713 url_loader_client_.RunUntilComplete(); 713 url_loader_client_.RunUntilComplete();
714 EXPECT_TRUE(url_loader_client_.has_received_completion()); 714 EXPECT_TRUE(url_loader_client_.has_received_completion());
715 EXPECT_EQ(net::ERR_TIMED_OUT, 715 EXPECT_EQ(net::ERR_TIMED_OUT,
716 url_loader_client_.completion_status().error_code); 716 url_loader_client_.completion_status().error_code);
717 } 717 }
718 718
719 TEST_F(MojoAsyncResourceHandlerTest, ResponseCompletionShouldCloseDataPipe) { 719 TEST_F(MojoAsyncResourceHandlerTest, ResponseCompletionShouldCloseDataPipe) {
720 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 720 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
721 721
722 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 722 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
723 ASSERT_EQ(MockResourceLoader::Status::IDLE, 723 ASSERT_EQ(MockResourceLoader::Status::IDLE,
724 mock_loader_->OnReadCompleted("AB")); 724 mock_loader_->OnReadCompleted("AB"));
725 url_loader_client_.RunUntilResponseBodyArrived(); 725 url_loader_client_.RunUntilResponseBodyArrived();
726 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 726 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
727 727
728 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK); 728 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK);
729 ASSERT_EQ(MockResourceLoader::Status::IDLE, 729 ASSERT_EQ(MockResourceLoader::Status::IDLE,
730 mock_loader_->OnResponseCompleted(status)); 730 mock_loader_->OnResponseCompleted(status));
731 731
732 url_loader_client_.RunUntilComplete(); 732 url_loader_client_.RunUntilComplete();
733 EXPECT_TRUE(url_loader_client_.has_received_completion()); 733 EXPECT_TRUE(url_loader_client_.has_received_completion());
734 EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code); 734 EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code);
735 735
736 while (true) { 736 while (true) {
737 char buffer[16]; 737 char buffer[16];
738 uint32_t read_size = sizeof(buffer); 738 uint32_t read_size = sizeof(buffer);
739 MojoResult result = 739 MojoResult result =
740 mojo::ReadDataRaw(url_loader_client_.response_body(), buffer, 740 mojo::ReadDataRaw(url_loader_client_.response_body(), buffer,
741 &read_size, MOJO_READ_DATA_FLAG_NONE); 741 &read_size, MOJO_READ_DATA_FLAG_NONE);
742 if (result == MOJO_RESULT_FAILED_PRECONDITION) 742 if (result == MOJO_RESULT_FAILED_PRECONDITION)
743 break; 743 break;
744 ASSERT_TRUE(result == MOJO_RESULT_SHOULD_WAIT || result == MOJO_RESULT_OK); 744 ASSERT_TRUE(result == MOJO_RESULT_SHOULD_WAIT || result == MOJO_RESULT_OK);
745 } 745 }
746 } 746 }
747 747
748 TEST_F(MojoAsyncResourceHandlerTest, OutOfBandCancelDuringBodyTransmission) { 748 TEST_F(MojoAsyncResourceHandlerTest, OutOfBandCancelDuringBodyTransmission) {
749 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 749 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
750 750
751 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 751 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
752 std::string data(mock_loader_->io_buffer_size(), 'a'); 752 std::string data(mock_loader_->io_buffer_size(), 'a');
753 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, 753 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
754 mock_loader_->OnReadCompleted(data)); 754 mock_loader_->OnReadCompleted(data));
755 url_loader_client_.RunUntilResponseBodyArrived(); 755 url_loader_client_.RunUntilResponseBodyArrived();
756 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 756 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
757 757
758 net::URLRequestStatus status(net::URLRequestStatus::FAILED, net::ERR_FAILED); 758 net::URLRequestStatus status(net::URLRequestStatus::FAILED, net::ERR_FAILED);
759 ASSERT_EQ( 759 ASSERT_EQ(
760 MockResourceLoader::Status::IDLE, 760 MockResourceLoader::Status::IDLE,
761 mock_loader_->OnResponseCompletedFromExternalOutOfBandCancel(status)); 761 mock_loader_->OnResponseCompletedFromExternalOutOfBandCancel(status));
(...skipping 17 matching lines...) Expand all
779 } 779 }
780 EXPECT_EQ(MOJO_RESULT_OK, result); 780 EXPECT_EQ(MOJO_RESULT_OK, result);
781 actual.append(buf, read_size); 781 actual.append(buf, read_size);
782 } 782 }
783 EXPECT_EQ(data, actual); 783 EXPECT_EQ(data, actual);
784 } 784 }
785 785
786 TEST_F(MojoAsyncResourceHandlerTest, BeginWriteFailsOnWillRead) { 786 TEST_F(MojoAsyncResourceHandlerTest, BeginWriteFailsOnWillRead) {
787 handler_->set_begin_write_expectation(MOJO_RESULT_UNKNOWN); 787 handler_->set_begin_write_expectation(MOJO_RESULT_UNKNOWN);
788 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 788 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
789 ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->OnWillRead(-1)); 789 ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->OnWillRead());
790 } 790 }
791 791
792 TEST_F(MojoAsyncResourceHandlerTest, BeginWriteReturnsShouldWaitOnWillRead) { 792 TEST_F(MojoAsyncResourceHandlerTest, BeginWriteReturnsShouldWaitOnWillRead) {
793 handler_->set_begin_write_expectation(MOJO_RESULT_SHOULD_WAIT); 793 handler_->set_begin_write_expectation(MOJO_RESULT_SHOULD_WAIT);
794 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 794 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
795 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 795 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
796 } 796 }
797 797
798 TEST_F(MojoAsyncResourceHandlerTest, 798 TEST_F(MojoAsyncResourceHandlerTest,
799 BeginWriteReturnsShouldWaitOnWillReadAndThenReturnsOK) { 799 BeginWriteReturnsShouldWaitOnWillReadAndThenReturnsOK) {
800 handler_->set_begin_write_expectation(MOJO_RESULT_SHOULD_WAIT); 800 handler_->set_begin_write_expectation(MOJO_RESULT_SHOULD_WAIT);
801 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 801 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
802 size_t written = 0; 802 size_t written = 0;
803 while (true) { 803 while (true) {
804 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 804 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
805 MockResourceLoader::Status result = mock_loader_->OnReadCompleted( 805 MockResourceLoader::Status result = mock_loader_->OnReadCompleted(
806 std::string(mock_loader_->io_buffer_size(), 'X')); 806 std::string(mock_loader_->io_buffer_size(), 'X'));
807 written += mock_loader_->io_buffer_size(); 807 written += mock_loader_->io_buffer_size();
808 if (result == MockResourceLoader::Status::CALLBACK_PENDING) 808 if (result == MockResourceLoader::Status::CALLBACK_PENDING)
809 break; 809 break;
810 ASSERT_EQ(MockResourceLoader::Status::IDLE, result); 810 ASSERT_EQ(MockResourceLoader::Status::IDLE, result);
811 } 811 }
812 812
813 url_loader_client_.RunUntilResponseBodyArrived(); 813 url_loader_client_.RunUntilResponseBodyArrived();
814 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 814 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
(...skipping 15 matching lines...) Expand all
830 830
831 EXPECT_EQ(std::string(written, 'X'), actual); 831 EXPECT_EQ(std::string(written, 'X'), actual);
832 EXPECT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status()); 832 EXPECT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->status());
833 } 833 }
834 834
835 TEST_F(MojoAsyncResourceHandlerTest, 835 TEST_F(MojoAsyncResourceHandlerTest,
836 EndWriteFailsOnWillReadWithInsufficientInitialCapacity) { 836 EndWriteFailsOnWillReadWithInsufficientInitialCapacity) {
837 MojoAsyncResourceHandler::SetAllocationSizeForTesting(2); 837 MojoAsyncResourceHandler::SetAllocationSizeForTesting(2);
838 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 838 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
839 handler_->set_end_write_expectation(MOJO_RESULT_UNKNOWN); 839 handler_->set_end_write_expectation(MOJO_RESULT_UNKNOWN);
840 ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->OnWillRead(-1)); 840 ASSERT_EQ(MockResourceLoader::Status::CANCELED, mock_loader_->OnWillRead());
841 } 841 }
842 842
843 TEST_F(MojoAsyncResourceHandlerTest, EndWriteFailsOnReadCompleted) { 843 TEST_F(MojoAsyncResourceHandlerTest, EndWriteFailsOnReadCompleted) {
844 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 844 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
845 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 845 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
846 846
847 handler_->set_end_write_expectation(MOJO_RESULT_SHOULD_WAIT); 847 handler_->set_end_write_expectation(MOJO_RESULT_SHOULD_WAIT);
848 ASSERT_EQ(MockResourceLoader::Status::CANCELED, 848 ASSERT_EQ(MockResourceLoader::Status::CANCELED,
849 mock_loader_->OnReadCompleted( 849 mock_loader_->OnReadCompleted(
850 std::string(mock_loader_->io_buffer_size(), 'w'))); 850 std::string(mock_loader_->io_buffer_size(), 'w')));
851 } 851 }
852 852
853 TEST_F(MojoAsyncResourceHandlerTest, 853 TEST_F(MojoAsyncResourceHandlerTest,
854 EndWriteFailsOnReadCompletedWithInsufficientInitialCapacity) { 854 EndWriteFailsOnReadCompletedWithInsufficientInitialCapacity) {
855 MojoAsyncResourceHandler::SetAllocationSizeForTesting(2); 855 MojoAsyncResourceHandler::SetAllocationSizeForTesting(2);
856 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 856 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
857 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 857 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
858 858
859 handler_->set_end_write_expectation(MOJO_RESULT_SHOULD_WAIT); 859 handler_->set_end_write_expectation(MOJO_RESULT_SHOULD_WAIT);
860 ASSERT_EQ(MockResourceLoader::Status::CANCELED, 860 ASSERT_EQ(MockResourceLoader::Status::CANCELED,
861 mock_loader_->OnReadCompleted( 861 mock_loader_->OnReadCompleted(
862 std::string(mock_loader_->io_buffer_size(), 'w'))); 862 std::string(mock_loader_->io_buffer_size(), 'w')));
863 } 863 }
864 864
865 TEST_F(MojoAsyncResourceHandlerTest, 865 TEST_F(MojoAsyncResourceHandlerTest,
866 EndWriteFailsOnResumeWithInsufficientInitialCapacity) { 866 EndWriteFailsOnResumeWithInsufficientInitialCapacity) {
867 MojoAsyncResourceHandler::SetAllocationSizeForTesting(8); 867 MojoAsyncResourceHandler::SetAllocationSizeForTesting(8);
868 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 868 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
869 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 869 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
870 870
871 while (true) { 871 while (true) {
872 MockResourceLoader::Status result = mock_loader_->OnReadCompleted( 872 MockResourceLoader::Status result = mock_loader_->OnReadCompleted(
873 std::string(mock_loader_->io_buffer_size(), 'A')); 873 std::string(mock_loader_->io_buffer_size(), 'A'));
874 if (result == MockResourceLoader::Status::CALLBACK_PENDING) 874 if (result == MockResourceLoader::Status::CALLBACK_PENDING)
875 break; 875 break;
876 ASSERT_EQ(MockResourceLoader::Status::IDLE, result); 876 ASSERT_EQ(MockResourceLoader::Status::IDLE, result);
877 877
878 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 878 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
879 } 879 }
880 880
881 url_loader_client_.RunUntilResponseBodyArrived(); 881 url_loader_client_.RunUntilResponseBodyArrived();
882 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 882 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
883 883
884 while (true) { 884 while (true) {
885 char buf[16]; 885 char buf[16];
886 uint32_t read_size = sizeof(buf); 886 uint32_t read_size = sizeof(buf);
887 MojoResult result = 887 MojoResult result =
888 mojo::ReadDataRaw(url_loader_client_.response_body(), buf, &read_size, 888 mojo::ReadDataRaw(url_loader_client_.response_body(), buf, &read_size,
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
962 EXPECT_EQ(net::LOWEST, request_->priority()); 962 EXPECT_EQ(net::LOWEST, request_->priority());
963 963
964 handler_->SetPriority(net::RequestPriority::HIGHEST, kIntraPriority); 964 handler_->SetPriority(net::RequestPriority::HIGHEST, kIntraPriority);
965 965
966 EXPECT_EQ(net::HIGHEST, request_->priority()); 966 EXPECT_EQ(net::HIGHEST, request_->priority());
967 } 967 }
968 968
969 TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, 969 TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
970 OnWillReadWithLongContents) { 970 OnWillReadWithLongContents) {
971 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 971 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
972 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 972 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
973 std::string expected; 973 std::string expected;
974 for (int i = 0; i < 3 * mock_loader_->io_buffer_size() + 2; ++i) 974 for (int i = 0; i < 3 * mock_loader_->io_buffer_size() + 2; ++i)
975 expected += ('A' + i % 26); 975 expected += ('A' + i % 26);
976 976
977 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnReadCompleted(0)); 977 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnReadCompleted(0));
978 978
979 size_t written = 0; 979 size_t written = 0;
980 std::string actual; 980 std::string actual;
981 while (actual.size() < expected.size()) { 981 while (actual.size() < expected.size()) {
982 while (written < expected.size() && 982 while (written < expected.size() &&
983 mock_loader_->status() == MockResourceLoader::Status::IDLE) { 983 mock_loader_->status() == MockResourceLoader::Status::IDLE) {
984 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 984 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
985 const size_t to_be_written = 985 const size_t to_be_written =
986 std::min(static_cast<size_t>(mock_loader_->io_buffer_size()), 986 std::min(static_cast<size_t>(mock_loader_->io_buffer_size()),
987 expected.size() - written); 987 expected.size() - written);
988 988
989 // Request should be resumed or paused. 989 // Request should be resumed or paused.
990 ASSERT_NE(MockResourceLoader::Status::CANCELED, 990 ASSERT_NE(MockResourceLoader::Status::CANCELED,
991 mock_loader_->OnReadCompleted( 991 mock_loader_->OnReadCompleted(
992 expected.substr(written, to_be_written))); 992 expected.substr(written, to_be_written)));
993 993
994 written += to_be_written; 994 written += to_be_written;
(...skipping 16 matching lines...) Expand all
1011 // Give mojo a chance pass data back and forth, and to request more data 1011 // Give mojo a chance pass data back and forth, and to request more data
1012 // from the handler. 1012 // from the handler.
1013 base::RunLoop().RunUntilIdle(); 1013 base::RunLoop().RunUntilIdle();
1014 } 1014 }
1015 EXPECT_EQ(expected, actual); 1015 EXPECT_EQ(expected, actual);
1016 } 1016 }
1017 1017
1018 TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, 1018 TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
1019 BeginWriteFailsOnReadCompleted) { 1019 BeginWriteFailsOnReadCompleted) {
1020 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 1020 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
1021 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 1021 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
1022 1022
1023 handler_->set_begin_write_expectation(MOJO_RESULT_UNKNOWN); 1023 handler_->set_begin_write_expectation(MOJO_RESULT_UNKNOWN);
1024 ASSERT_EQ(MockResourceLoader::Status::CANCELED, 1024 ASSERT_EQ(MockResourceLoader::Status::CANCELED,
1025 mock_loader_->OnReadCompleted( 1025 mock_loader_->OnReadCompleted(
1026 std::string(mock_loader_->io_buffer_size(), 'A'))); 1026 std::string(mock_loader_->io_buffer_size(), 'A')));
1027 } 1027 }
1028 1028
1029 TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, 1029 TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
1030 BeginWriteReturnsShouldWaitOnReadCompleted) { 1030 BeginWriteReturnsShouldWaitOnReadCompleted) {
1031 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 1031 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
1032 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 1032 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
1033 1033
1034 handler_->set_begin_write_expectation(MOJO_RESULT_SHOULD_WAIT); 1034 handler_->set_begin_write_expectation(MOJO_RESULT_SHOULD_WAIT);
1035 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, 1035 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING,
1036 mock_loader_->OnReadCompleted( 1036 mock_loader_->OnReadCompleted(
1037 std::string(mock_loader_->io_buffer_size(), 'A'))); 1037 std::string(mock_loader_->io_buffer_size(), 'A')));
1038 } 1038 }
1039 1039
1040 TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, 1040 TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
1041 BeginWriteFailsOnResume) { 1041 BeginWriteFailsOnResume) {
1042 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 1042 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
1043 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 1043 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
1044 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnReadCompleted(0)); 1044 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnReadCompleted(0));
1045 1045
1046 while (true) { 1046 while (true) {
1047 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 1047 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
1048 MockResourceLoader::Status result = mock_loader_->OnReadCompleted( 1048 MockResourceLoader::Status result = mock_loader_->OnReadCompleted(
1049 std::string(mock_loader_->io_buffer_size(), 'A')); 1049 std::string(mock_loader_->io_buffer_size(), 'A'));
1050 if (result == MockResourceLoader::Status::CALLBACK_PENDING) 1050 if (result == MockResourceLoader::Status::CALLBACK_PENDING)
1051 break; 1051 break;
1052 ASSERT_EQ(MockResourceLoader::Status::IDLE, result); 1052 ASSERT_EQ(MockResourceLoader::Status::IDLE, result);
1053 } 1053 }
1054 url_loader_client_.RunUntilResponseBodyArrived(); 1054 url_loader_client_.RunUntilResponseBodyArrived();
1055 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 1055 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
1056 1056
1057 handler_->set_begin_write_expectation(MOJO_RESULT_UNKNOWN); 1057 handler_->set_begin_write_expectation(MOJO_RESULT_UNKNOWN);
1058 1058
1059 while (mock_loader_->status() != MockResourceLoader::Status::CANCELED) { 1059 while (mock_loader_->status() != MockResourceLoader::Status::CANCELED) {
1060 char buf[256]; 1060 char buf[256];
1061 uint32_t read_size = sizeof(buf); 1061 uint32_t read_size = sizeof(buf);
1062 MojoResult result = 1062 MojoResult result =
1063 mojo::ReadDataRaw(url_loader_client_.response_body(), buf, &read_size, 1063 mojo::ReadDataRaw(url_loader_client_.response_body(), buf, &read_size,
1064 MOJO_READ_DATA_FLAG_NONE); 1064 MOJO_READ_DATA_FLAG_NONE);
1065 ASSERT_TRUE(result == MOJO_RESULT_OK || result == MOJO_RESULT_SHOULD_WAIT); 1065 ASSERT_TRUE(result == MOJO_RESULT_OK || result == MOJO_RESULT_SHOULD_WAIT);
1066 base::RunLoop().RunUntilIdle(); 1066 base::RunLoop().RunUntilIdle();
1067 } 1067 }
1068 1068
1069 EXPECT_FALSE(url_loader_client_.has_received_completion()); 1069 EXPECT_FALSE(url_loader_client_.has_received_completion());
1070 EXPECT_EQ(net::ERR_FAILED, mock_loader_->error_code()); 1070 EXPECT_EQ(net::ERR_FAILED, mock_loader_->error_code());
1071 } 1071 }
1072 1072
1073 TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, CancelWhileWaiting) { 1073 TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, CancelWhileWaiting) {
1074 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted()); 1074 ASSERT_TRUE(CallOnWillStartAndOnResponseStarted());
1075 1075
1076 while (true) { 1076 while (true) {
1077 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 1077 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
1078 MockResourceLoader::Status result = mock_loader_->OnReadCompleted( 1078 MockResourceLoader::Status result = mock_loader_->OnReadCompleted(
1079 std::string(mock_loader_->io_buffer_size(), 'A')); 1079 std::string(mock_loader_->io_buffer_size(), 'A'));
1080 if (result == MockResourceLoader::Status::CALLBACK_PENDING) 1080 if (result == MockResourceLoader::Status::CALLBACK_PENDING)
1081 break; 1081 break;
1082 ASSERT_EQ(MockResourceLoader::Status::IDLE, result); 1082 ASSERT_EQ(MockResourceLoader::Status::IDLE, result);
1083 } 1083 }
1084 1084
1085 url_loader_client_.RunUntilResponseBodyArrived(); 1085 url_loader_client_.RunUntilResponseBodyArrived();
1086 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 1086 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
1087 1087
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1190 1190
1191 ASSERT_EQ(MockResourceLoader::Status::IDLE, 1191 ASSERT_EQ(MockResourceLoader::Status::IDLE,
1192 mock_loader_->OnWillStart(request_->url())); 1192 mock_loader_->OnWillStart(request_->url()));
1193 ASSERT_EQ(MockResourceLoader::Status::IDLE, 1193 ASSERT_EQ(MockResourceLoader::Status::IDLE,
1194 mock_loader_->OnResponseStarted( 1194 mock_loader_->OnResponseStarted(
1195 make_scoped_refptr(new ResourceResponse()))); 1195 make_scoped_refptr(new ResourceResponse())));
1196 1196
1197 ASSERT_FALSE(url_loader_client_.has_received_response()); 1197 ASSERT_FALSE(url_loader_client_.has_received_response());
1198 url_loader_client_.RunUntilResponseReceived(); 1198 url_loader_client_.RunUntilResponseReceived();
1199 1199
1200 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 1200 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
1201 1201
1202 ASSERT_FALSE(url_loader_client_.response_body().is_valid()); 1202 ASSERT_FALSE(url_loader_client_.response_body().is_valid());
1203 1203
1204 ASSERT_EQ(MockResourceLoader::Status::IDLE, 1204 ASSERT_EQ(MockResourceLoader::Status::IDLE,
1205 mock_loader_->OnReadCompleted("A")); 1205 mock_loader_->OnReadCompleted("A"));
1206 url_loader_client_.RunUntilResponseBodyArrived(); 1206 url_loader_client_.RunUntilResponseBodyArrived();
1207 ASSERT_TRUE(url_loader_client_.response_body().is_valid()); 1207 ASSERT_TRUE(url_loader_client_.response_body().is_valid());
1208 1208
1209 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK); 1209 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK);
1210 ASSERT_EQ(MockResourceLoader::Status::IDLE, 1210 ASSERT_EQ(MockResourceLoader::Status::IDLE,
(...skipping 24 matching lines...) Expand all
1235 1235
1236 // MimeResourceHandler calls delegated ResourceHandler's methods in this order. 1236 // MimeResourceHandler calls delegated ResourceHandler's methods in this order.
1237 TEST_P( 1237 TEST_P(
1238 MojoAsyncResourceHandlerWithAllocationSizeTest, 1238 MojoAsyncResourceHandlerWithAllocationSizeTest,
1239 OnWillStartThenOnWillReadThenOnResponseStartedThenOnReadCompletedThenOnRespo nseCompleted) { 1239 OnWillStartThenOnWillReadThenOnResponseStartedThenOnReadCompletedThenOnRespo nseCompleted) {
1240 rdh_delegate_.set_num_on_response_started_calls_expectation(1); 1240 rdh_delegate_.set_num_on_response_started_calls_expectation(1);
1241 1241
1242 ASSERT_EQ(MockResourceLoader::Status::IDLE, 1242 ASSERT_EQ(MockResourceLoader::Status::IDLE,
1243 mock_loader_->OnWillStart(request_->url())); 1243 mock_loader_->OnWillStart(request_->url()));
1244 1244
1245 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead(-1)); 1245 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader_->OnWillRead());
1246 1246
1247 ASSERT_EQ(MockResourceLoader::Status::IDLE, 1247 ASSERT_EQ(MockResourceLoader::Status::IDLE,
1248 mock_loader_->OnResponseStarted( 1248 mock_loader_->OnResponseStarted(
1249 make_scoped_refptr(new ResourceResponse()))); 1249 make_scoped_refptr(new ResourceResponse())));
1250 1250
1251 ASSERT_FALSE(url_loader_client_.has_received_response()); 1251 ASSERT_FALSE(url_loader_client_.has_received_response());
1252 url_loader_client_.RunUntilResponseReceived(); 1252 url_loader_client_.RunUntilResponseReceived();
1253 1253
1254 ASSERT_EQ(MockResourceLoader::Status::IDLE, 1254 ASSERT_EQ(MockResourceLoader::Status::IDLE,
1255 mock_loader_->OnReadCompleted("B")); 1255 mock_loader_->OnReadCompleted("B"));
(...skipping 27 matching lines...) Expand all
1283 } 1283 }
1284 } 1284 }
1285 EXPECT_EQ("B", body); 1285 EXPECT_EQ("B", body);
1286 } 1286 }
1287 1287
1288 INSTANTIATE_TEST_CASE_P(MojoAsyncResourceHandlerWithAllocationSizeTest, 1288 INSTANTIATE_TEST_CASE_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
1289 MojoAsyncResourceHandlerWithAllocationSizeTest, 1289 MojoAsyncResourceHandlerWithAllocationSizeTest,
1290 ::testing::Values(8, 32 * 2014)); 1290 ::testing::Values(8, 32 * 2014));
1291 } // namespace 1291 } // namespace
1292 } // namespace content 1292 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/loader/mojo_async_resource_handler.cc ('k') | content/browser/loader/navigation_resource_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698