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

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

Issue 2574063003: Move ResourceHandler deferred actions ahead of external protocol handling. (Closed)
Patch Set: Reverts URLRequest changes; redirect bugfix; improved unit tests. Created 4 years 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) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/resource_loader.h" 5 #include "content/browser/loader/resource_loader.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 494
495 // ResourceLoaderDelegate: 495 // ResourceLoaderDelegate:
496 ResourceDispatcherHostLoginDelegate* CreateLoginDelegate( 496 ResourceDispatcherHostLoginDelegate* CreateLoginDelegate(
497 ResourceLoader* loader, 497 ResourceLoader* loader,
498 net::AuthChallengeInfo* auth_info) override { 498 net::AuthChallengeInfo* auth_info) override {
499 return NULL; 499 return NULL;
500 } 500 }
501 bool HandleExternalProtocol(ResourceLoader* loader, 501 bool HandleExternalProtocol(ResourceLoader* loader,
502 const GURL& url) override { 502 const GURL& url) override {
503 EXPECT_EQ(loader, loader_.get()); 503 EXPECT_EQ(loader, loader_.get());
504 ++handle_external_protocol_;
505
506 // Check that calls to HandleExternalProtocol always happen after the calls
507 // to the ResourceHandler's OnWillStart and OnRequestRedirected.
508 EXPECT_EQ(handle_external_protocol_,
509 raw_ptr_resource_handler_->on_will_start_called() +
510 raw_ptr_resource_handler_->on_request_redirected_called());
504 return false; 511 return false;
mmenke 2016/12/16 16:19:36 Do we have any tests where HandleExternalProtocol
carlosk 2016/12/20 19:23:31 Done.
505 } 512 }
506 void DidStartRequest(ResourceLoader* loader) override { 513 void DidStartRequest(ResourceLoader* loader) override {
507 EXPECT_EQ(loader, loader_.get()); 514 EXPECT_EQ(loader, loader_.get());
508 EXPECT_EQ(0, did_finish_loading_); 515 EXPECT_EQ(0, did_finish_loading_);
509 EXPECT_EQ(0, did_start_request_); 516 EXPECT_EQ(0, did_start_request_);
510 ++did_start_request_; 517 ++did_start_request_;
511 } 518 }
512 void DidReceiveRedirect(ResourceLoader* loader, 519 void DidReceiveRedirect(ResourceLoader* loader,
513 const GURL& new_url, 520 const GURL& new_url,
514 ResourceResponse* response) override { 521 ResourceResponse* response) override {
(...skipping 27 matching lines...) Expand all
542 549
543 TestBrowserThreadBundle thread_bundle_; 550 TestBrowserThreadBundle thread_bundle_;
544 RenderViewHostTestEnabler rvh_test_enabler_; 551 RenderViewHostTestEnabler rvh_test_enabler_;
545 552
546 // Record which ResourceDispatcherHostDelegate methods have been invoked. 553 // Record which ResourceDispatcherHostDelegate methods have been invoked.
547 int did_start_request_ = 0; 554 int did_start_request_ = 0;
548 int did_received_redirect_ = 0; 555 int did_received_redirect_ = 0;
549 int did_receive_response_ = 0; 556 int did_receive_response_ = 0;
550 int did_finish_loading_ = 0; 557 int did_finish_loading_ = 0;
551 558
559 int handle_external_protocol_ = 0;
560
552 net::URLRequestJobFactoryImpl job_factory_; 561 net::URLRequestJobFactoryImpl job_factory_;
553 TestNetworkQualityEstimator network_quality_estimator_; 562 TestNetworkQualityEstimator network_quality_estimator_;
554 net::TestURLRequestContext test_url_request_context_; 563 net::TestURLRequestContext test_url_request_context_;
555 MockResourceContext resource_context_; 564 MockResourceContext resource_context_;
556 std::unique_ptr<TestBrowserContext> browser_context_; 565 std::unique_ptr<TestBrowserContext> browser_context_;
557 std::unique_ptr<TestWebContents> web_contents_; 566 std::unique_ptr<TestWebContents> web_contents_;
558 std::unique_ptr<net::ClientCertStore> dummy_cert_store_; 567 std::unique_ptr<net::ClientCertStore> dummy_cert_store_;
559 568
560 // The ResourceLoader owns the URLRequest and the ResourceHandler. 569 // The ResourceLoader owns the URLRequest and the ResourceHandler.
561 TestResourceHandler* raw_ptr_resource_handler_; 570 TestResourceHandler* raw_ptr_resource_handler_;
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 } 751 }
743 752
744 // Test the case the ResourceHandler defers nothing. 753 // Test the case the ResourceHandler defers nothing.
745 TEST_F(ResourceLoaderTest, SyncResourceHandler) { 754 TEST_F(ResourceLoaderTest, SyncResourceHandler) {
746 loader_->StartRequest(); 755 loader_->StartRequest();
747 raw_ptr_resource_handler_->WaitUntilResponseComplete(); 756 raw_ptr_resource_handler_->WaitUntilResponseComplete();
748 EXPECT_EQ(1, did_start_request_); 757 EXPECT_EQ(1, did_start_request_);
749 EXPECT_EQ(1, did_received_redirect_); 758 EXPECT_EQ(1, did_received_redirect_);
750 EXPECT_EQ(1, did_receive_response_); 759 EXPECT_EQ(1, did_receive_response_);
751 EXPECT_EQ(1, did_finish_loading_); 760 EXPECT_EQ(1, did_finish_loading_);
761 EXPECT_EQ(2, handle_external_protocol_);
752 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called()); 762 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
753 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 763 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
754 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error()); 764 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error());
755 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body()); 765 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
756 } 766 }
757 767
758 // Same as above, except reads complete asynchronously, and there's no redirect. 768 // Same as above, except reads complete asynchronously, and there's no redirect.
759 TEST_F(ResourceLoaderTest, SyncResourceHandlerAsyncReads) { 769 TEST_F(ResourceLoaderTest, SyncResourceHandlerAsyncReads) {
760 SetUpResourceLoaderForUrl(test_async_url()); 770 SetUpResourceLoaderForUrl(test_async_url());
761 771
762 loader_->StartRequest(); 772 loader_->StartRequest();
763 raw_ptr_resource_handler_->WaitUntilResponseComplete(); 773 raw_ptr_resource_handler_->WaitUntilResponseComplete();
764 EXPECT_EQ(1, did_start_request_); 774 EXPECT_EQ(1, did_start_request_);
765 EXPECT_EQ(0, did_received_redirect_); 775 EXPECT_EQ(0, did_received_redirect_);
766 EXPECT_EQ(1, did_receive_response_); 776 EXPECT_EQ(1, did_receive_response_);
767 EXPECT_EQ(1, did_finish_loading_); 777 EXPECT_EQ(1, did_finish_loading_);
778 EXPECT_EQ(1, handle_external_protocol_);
768 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 779 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
769 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 780 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
770 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error()); 781 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error());
771 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body()); 782 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
772 } 783 }
773 784
774 // Test the case the ResourceHandler defers everything. 785 // Test the case the ResourceHandler defers everything.
775 TEST_F(ResourceLoaderTest, AsyncResourceHandler) { 786 TEST_F(ResourceLoaderTest, AsyncResourceHandler) {
776 raw_ptr_resource_handler_->set_defer_on_will_start(true); 787 raw_ptr_resource_handler_->set_defer_on_will_start(true);
777 raw_ptr_resource_handler_->set_defer_on_request_redirected(true); 788 raw_ptr_resource_handler_->set_defer_on_request_redirected(true);
778 raw_ptr_resource_handler_->set_defer_on_response_started(true); 789 raw_ptr_resource_handler_->set_defer_on_response_started(true);
779 raw_ptr_resource_handler_->set_defer_on_read_completed(true); 790 raw_ptr_resource_handler_->set_defer_on_read_completed(true);
780 raw_ptr_resource_handler_->set_defer_on_read_eof(true); 791 raw_ptr_resource_handler_->set_defer_on_read_eof(true);
781 raw_ptr_resource_handler_->set_defer_on_response_completed(true); 792 raw_ptr_resource_handler_->set_defer_on_response_completed(true);
782 793
783 // Start and run until OnWillStart. 794 // Start and run until OnWillStart.
784 loader_->StartRequest(); 795 loader_->StartRequest();
785 raw_ptr_resource_handler_->WaitUntilDeferred(); 796 raw_ptr_resource_handler_->WaitUntilDeferred();
786 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 797 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
787 798
788 // Spinning the message loop should not advance the state further. 799 // Spinning the message loop should not advance the state further.
789 base::RunLoop().RunUntilIdle(); 800 base::RunLoop().RunUntilIdle();
790 EXPECT_EQ(0, did_start_request_); 801 EXPECT_EQ(0, did_start_request_);
791 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 802 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
792 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 803 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
793 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 804 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
805 EXPECT_EQ(0, handle_external_protocol_);
794 806
795 // Resume and run until OnRequestRedirected. 807 // Resume and run until OnRequestRedirected.
796 raw_ptr_resource_handler_->Resume(); 808 raw_ptr_resource_handler_->Resume();
797 raw_ptr_resource_handler_->WaitUntilDeferred(); 809 raw_ptr_resource_handler_->WaitUntilDeferred();
798 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called()); 810 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
811 EXPECT_EQ(1, handle_external_protocol_);
799 812
800 // Spinning the message loop should not advance the state further. 813 // Spinning the message loop should not advance the state further.
801 base::RunLoop().RunUntilIdle(); 814 base::RunLoop().RunUntilIdle();
802 EXPECT_EQ(1, did_received_redirect_); 815 EXPECT_EQ(1, did_received_redirect_);
803 EXPECT_EQ(0, did_receive_response_); 816 EXPECT_EQ(0, did_receive_response_);
804 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called()); 817 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
805 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called()); 818 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called());
806 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 819 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
820 EXPECT_EQ(1, handle_external_protocol_);
807 821
808 // Resume and run until OnResponseStarted. 822 // Resume and run until OnResponseStarted.
809 raw_ptr_resource_handler_->Resume(); 823 raw_ptr_resource_handler_->Resume();
810 raw_ptr_resource_handler_->WaitUntilDeferred(); 824 raw_ptr_resource_handler_->WaitUntilDeferred();
811 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called()); 825 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
826 EXPECT_EQ(2, handle_external_protocol_);
812 827
813 // Spinning the message loop should not advance the state further. 828 // Spinning the message loop should not advance the state further.
814 base::RunLoop().RunUntilIdle(); 829 base::RunLoop().RunUntilIdle();
815 EXPECT_EQ(1, did_receive_response_); 830 EXPECT_EQ(1, did_receive_response_);
816 EXPECT_EQ(0, did_finish_loading_); 831 EXPECT_EQ(0, did_finish_loading_);
817 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called()); 832 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
818 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called()); 833 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called());
819 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 834 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
820 835
821 // Resume and run until OnReadCompleted. 836 // Resume and run until OnReadCompleted.
822 raw_ptr_resource_handler_->Resume(); 837 raw_ptr_resource_handler_->Resume();
823 raw_ptr_resource_handler_->WaitUntilDeferred(); 838 raw_ptr_resource_handler_->WaitUntilDeferred();
824 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called()); 839 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called());
825 840
826 // Spinning the message loop should not advance the state further. 841 // Spinning the message loop should not advance the state further.
827 base::RunLoop().RunUntilIdle(); 842 base::RunLoop().RunUntilIdle();
828 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_read_called()); 843 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_read_called());
829 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called()); 844 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called());
830 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof()); 845 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof());
831 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 846 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
832 847
833 // Resume and run until the final 0-byte read, signalling EOF. 848 // Resume and run until the final 0-byte read, signaling EOF.
834 raw_ptr_resource_handler_->Resume(); 849 raw_ptr_resource_handler_->Resume();
835 raw_ptr_resource_handler_->WaitUntilDeferred(); 850 raw_ptr_resource_handler_->WaitUntilDeferred();
836 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof()); 851 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof());
837 852
838 // Spinning the message loop should not advance the state further. 853 // Spinning the message loop should not advance the state further.
839 base::RunLoop().RunUntilIdle(); 854 base::RunLoop().RunUntilIdle();
840 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof()); 855 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof());
841 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 856 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
842 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body()); 857 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
843 858
844 // Resume and run until OnResponseCompleted is called, which again defers the 859 // Resume and run until OnResponseCompleted is called, which again defers the
845 // request. 860 // request.
846 raw_ptr_resource_handler_->Resume(); 861 raw_ptr_resource_handler_->Resume();
847 raw_ptr_resource_handler_->WaitUntilResponseComplete(); 862 raw_ptr_resource_handler_->WaitUntilResponseComplete();
848 EXPECT_EQ(0, did_finish_loading_); 863 EXPECT_EQ(0, did_finish_loading_);
849 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 864 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
850 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error()); 865 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error());
851 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body()); 866 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
852 867
853 // Resume and run until all pending tasks. Note that OnResponseCompleted was 868 // Resume and run until all pending tasks. Note that OnResponseCompleted was
854 // invoked in the previous section, so can't use RunUntilCompleted(). 869 // invoked in the previous section, so can't use RunUntilCompleted().
855 raw_ptr_resource_handler_->Resume(); 870 raw_ptr_resource_handler_->Resume();
856 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 871 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
857 872
858 base::RunLoop().RunUntilIdle(); 873 base::RunLoop().RunUntilIdle();
859 EXPECT_EQ(1, did_finish_loading_); 874 EXPECT_EQ(1, did_finish_loading_);
860 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 875 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
861 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error()); 876 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error());
862 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body()); 877 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
878 EXPECT_EQ(2, handle_external_protocol_);
863 } 879 }
864 880
865 // Same as above, except reads complete asynchronously and there's no redirect. 881 // Same as above, except reads complete asynchronously and there's no redirect.
866 TEST_F(ResourceLoaderTest, AsyncResourceHandlerAsyncReads) { 882 TEST_F(ResourceLoaderTest, AsyncResourceHandlerAsyncReads) {
867 SetUpResourceLoaderForUrl(test_async_url()); 883 SetUpResourceLoaderForUrl(test_async_url());
868 884
869 raw_ptr_resource_handler_->set_defer_on_will_start(true); 885 raw_ptr_resource_handler_->set_defer_on_will_start(true);
870 raw_ptr_resource_handler_->set_defer_on_response_started(true); 886 raw_ptr_resource_handler_->set_defer_on_response_started(true);
871 raw_ptr_resource_handler_->set_defer_on_read_completed(true); 887 raw_ptr_resource_handler_->set_defer_on_read_completed(true);
872 raw_ptr_resource_handler_->set_defer_on_read_eof(true); 888 raw_ptr_resource_handler_->set_defer_on_read_eof(true);
873 raw_ptr_resource_handler_->set_defer_on_response_completed(true); 889 raw_ptr_resource_handler_->set_defer_on_response_completed(true);
874 890
875 // Start and run until OnWillStart. 891 // Start and run until OnWillStart.
876 loader_->StartRequest(); 892 loader_->StartRequest();
877 raw_ptr_resource_handler_->WaitUntilDeferred(); 893 raw_ptr_resource_handler_->WaitUntilDeferred();
878 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 894 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
879 895
880 // Spinning the message loop should not advance the state further. 896 // Spinning the message loop should not advance the state further.
881 base::RunLoop().RunUntilIdle(); 897 base::RunLoop().RunUntilIdle();
882 EXPECT_EQ(0, did_start_request_); 898 EXPECT_EQ(0, did_start_request_);
883 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 899 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
884 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 900 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
885 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 901 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
902 EXPECT_EQ(0, handle_external_protocol_);
886 903
887 // Resume and run until OnResponseStarted. 904 // Resume and run until OnResponseStarted.
888 raw_ptr_resource_handler_->Resume(); 905 raw_ptr_resource_handler_->Resume();
889 raw_ptr_resource_handler_->WaitUntilDeferred(); 906 raw_ptr_resource_handler_->WaitUntilDeferred();
890 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called()); 907 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
908 EXPECT_EQ(1, handle_external_protocol_);
891 909
892 // Spinning the message loop should not advance the state further. 910 // Spinning the message loop should not advance the state further.
893 base::RunLoop().RunUntilIdle(); 911 base::RunLoop().RunUntilIdle();
894 EXPECT_EQ(1, did_receive_response_); 912 EXPECT_EQ(1, did_receive_response_);
895 EXPECT_EQ(0, did_finish_loading_); 913 EXPECT_EQ(0, did_finish_loading_);
896 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called()); 914 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
897 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called()); 915 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called());
898 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 916 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
899 917
900 // Resume and run until OnReadCompleted. 918 // Resume and run until OnReadCompleted.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
932 // Resume and run until all pending tasks. Note that OnResponseCompleted was 950 // Resume and run until all pending tasks. Note that OnResponseCompleted was
933 // invoked in the previous section, so can't use RunUntilCompleted(). 951 // invoked in the previous section, so can't use RunUntilCompleted().
934 raw_ptr_resource_handler_->Resume(); 952 raw_ptr_resource_handler_->Resume();
935 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 953 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
936 954
937 base::RunLoop().RunUntilIdle(); 955 base::RunLoop().RunUntilIdle();
938 EXPECT_EQ(1, did_finish_loading_); 956 EXPECT_EQ(1, did_finish_loading_);
939 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 957 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
940 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error()); 958 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error());
941 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body()); 959 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
960 EXPECT_EQ(1, handle_external_protocol_);
942 } 961 }
943 962
944 TEST_F(ResourceLoaderTest, SyncCancelOnWillStart) { 963 TEST_F(ResourceLoaderTest, SyncCancelOnWillStart) {
945 raw_ptr_resource_handler_->set_on_will_start_result(false); 964 raw_ptr_resource_handler_->set_on_will_start_result(false);
946 965
947 loader_->StartRequest(); 966 loader_->StartRequest();
948 raw_ptr_resource_handler_->WaitUntilResponseComplete(); 967 raw_ptr_resource_handler_->WaitUntilResponseComplete();
949 base::RunLoop().RunUntilIdle(); 968 base::RunLoop().RunUntilIdle();
950 EXPECT_EQ(0, did_start_request_); 969 EXPECT_EQ(0, did_start_request_);
951 EXPECT_EQ(1, did_finish_loading_); 970 EXPECT_EQ(1, did_finish_loading_);
971 EXPECT_EQ(0, handle_external_protocol_);
952 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 972 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
953 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 973 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
954 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called()); 974 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
955 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 975 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
956 976
957 EXPECT_EQ(net::ERR_ABORTED, 977 EXPECT_EQ(net::ERR_ABORTED,
958 raw_ptr_resource_handler_->final_status().error()); 978 raw_ptr_resource_handler_->final_status().error());
959 EXPECT_EQ("", raw_ptr_resource_handler_->body()); 979 EXPECT_EQ("", raw_ptr_resource_handler_->body());
960 } 980 }
961 981
962 TEST_F(ResourceLoaderTest, SyncCancelOnRequestRedirected) { 982 TEST_F(ResourceLoaderTest, SyncCancelOnRequestRedirected) {
963 raw_ptr_resource_handler_->set_on_request_redirected_result(false); 983 raw_ptr_resource_handler_->set_on_request_redirected_result(false);
964 984
965 loader_->StartRequest(); 985 loader_->StartRequest();
966 raw_ptr_resource_handler_->WaitUntilResponseComplete(); 986 raw_ptr_resource_handler_->WaitUntilResponseComplete();
967 base::RunLoop().RunUntilIdle(); 987 base::RunLoop().RunUntilIdle();
968 EXPECT_EQ(1, did_received_redirect_); 988 EXPECT_EQ(1, did_received_redirect_);
969 EXPECT_EQ(0, did_receive_response_); 989 EXPECT_EQ(0, did_receive_response_);
970 EXPECT_EQ(1, did_finish_loading_); 990 EXPECT_EQ(1, did_finish_loading_);
991 EXPECT_EQ(1, handle_external_protocol_);
971 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called()); 992 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
972 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called()); 993 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called());
973 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called()); 994 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
974 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 995 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
975 996
976 EXPECT_EQ(net::ERR_ABORTED, 997 EXPECT_EQ(net::ERR_ABORTED,
977 raw_ptr_resource_handler_->final_status().error()); 998 raw_ptr_resource_handler_->final_status().error());
978 EXPECT_EQ("", raw_ptr_resource_handler_->body()); 999 EXPECT_EQ("", raw_ptr_resource_handler_->body());
979 } 1000 }
980 1001
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1083 1104
1084 TEST_F(ResourceLoaderTest, AsyncCancelOnWillStart) { 1105 TEST_F(ResourceLoaderTest, AsyncCancelOnWillStart) {
1085 raw_ptr_resource_handler_->set_defer_on_will_start(true); 1106 raw_ptr_resource_handler_->set_defer_on_will_start(true);
1086 1107
1087 loader_->StartRequest(); 1108 loader_->StartRequest();
1088 raw_ptr_resource_handler_->WaitUntilDeferred(); 1109 raw_ptr_resource_handler_->WaitUntilDeferred();
1089 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED); 1110 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED);
1090 base::RunLoop().RunUntilIdle(); 1111 base::RunLoop().RunUntilIdle();
1091 EXPECT_EQ(0, did_start_request_); 1112 EXPECT_EQ(0, did_start_request_);
1092 EXPECT_EQ(1, did_finish_loading_); 1113 EXPECT_EQ(1, did_finish_loading_);
1114 EXPECT_EQ(0, handle_external_protocol_);
1093 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 1115 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
1094 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 1116 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
1095 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called()); 1117 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
1096 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 1118 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
1097 1119
1098 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); 1120 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
1099 EXPECT_EQ("", raw_ptr_resource_handler_->body()); 1121 EXPECT_EQ("", raw_ptr_resource_handler_->body());
1100 } 1122 }
1101 1123
1102 TEST_F(ResourceLoaderTest, AsyncCancelOnRequestRedirected) { 1124 TEST_F(ResourceLoaderTest, AsyncCancelOnRequestRedirected) {
1103 raw_ptr_resource_handler_->set_defer_on_request_redirected(true); 1125 raw_ptr_resource_handler_->set_defer_on_request_redirected(true);
1104 1126
1105 loader_->StartRequest(); 1127 loader_->StartRequest();
1106 raw_ptr_resource_handler_->WaitUntilDeferred(); 1128 raw_ptr_resource_handler_->WaitUntilDeferred();
1107 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED); 1129 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED);
1108 base::RunLoop().RunUntilIdle(); 1130 base::RunLoop().RunUntilIdle();
1109 EXPECT_EQ(1, did_received_redirect_); 1131 EXPECT_EQ(1, did_received_redirect_);
1110 EXPECT_EQ(0, did_receive_response_); 1132 EXPECT_EQ(0, did_receive_response_);
1111 EXPECT_EQ(1, did_finish_loading_); 1133 EXPECT_EQ(1, did_finish_loading_);
1134 EXPECT_EQ(1, handle_external_protocol_);
1112 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called()); 1135 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
1113 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called()); 1136 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called());
1114 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called()); 1137 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
1115 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 1138 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
1116 1139
1117 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); 1140 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
1118 EXPECT_EQ("", raw_ptr_resource_handler_->body()); 1141 EXPECT_EQ("", raw_ptr_resource_handler_->body());
1119 } 1142 }
1120 1143
1121 TEST_F(ResourceLoaderTest, AsyncCancelOnResponseStarted) { 1144 TEST_F(ResourceLoaderTest, AsyncCancelOnResponseStarted) {
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1208 SetUpResourceLoaderForUrl( 1231 SetUpResourceLoaderForUrl(
1209 net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase( 1232 net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase(
1210 net::URLRequestFailedJob::START, net::ERR_FAILED)); 1233 net::URLRequestFailedJob::START, net::ERR_FAILED));
1211 1234
1212 loader_->StartRequest(); 1235 loader_->StartRequest();
1213 raw_ptr_resource_handler_->WaitUntilResponseComplete(); 1236 raw_ptr_resource_handler_->WaitUntilResponseComplete();
1214 base::RunLoop().RunUntilIdle(); 1237 base::RunLoop().RunUntilIdle();
1215 EXPECT_EQ(0, did_received_redirect_); 1238 EXPECT_EQ(0, did_received_redirect_);
1216 EXPECT_EQ(0, did_receive_response_); 1239 EXPECT_EQ(0, did_receive_response_);
1217 EXPECT_EQ(1, did_finish_loading_); 1240 EXPECT_EQ(1, did_finish_loading_);
1241 EXPECT_EQ(1, handle_external_protocol_);
1218 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 1242 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
1219 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 1243 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
1220 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called()); 1244 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
1221 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 1245 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
1222 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); 1246 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
1223 EXPECT_EQ("", raw_ptr_resource_handler_->body()); 1247 EXPECT_EQ("", raw_ptr_resource_handler_->body());
1224 } 1248 }
1225 1249
1226 TEST_F(ResourceLoaderTest, RequestFailsOnReadSync) { 1250 TEST_F(ResourceLoaderTest, RequestFailsOnReadSync) {
1227 SetUpResourceLoaderForUrl( 1251 SetUpResourceLoaderForUrl(
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1267 SetUpResourceLoaderForUrl( 1291 SetUpResourceLoaderForUrl(
1268 net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase( 1292 net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase(
1269 net::URLRequestFailedJob::START, net::ERR_IO_PENDING)); 1293 net::URLRequestFailedJob::START, net::ERR_IO_PENDING));
1270 1294
1271 loader_->StartRequest(); 1295 loader_->StartRequest();
1272 base::RunLoop().RunUntilIdle(); 1296 base::RunLoop().RunUntilIdle();
1273 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 1297 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
1274 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 1298 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
1275 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called()); 1299 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
1276 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 1300 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
1301 EXPECT_EQ(1, handle_external_protocol_);
1277 1302
1278 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED); 1303 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED);
1279 raw_ptr_resource_handler_->WaitUntilResponseComplete(); 1304 raw_ptr_resource_handler_->WaitUntilResponseComplete();
1280 1305
1281 EXPECT_EQ(0, did_received_redirect_); 1306 EXPECT_EQ(0, did_received_redirect_);
1282 EXPECT_EQ(0, did_receive_response_); 1307 EXPECT_EQ(0, did_receive_response_);
1283 EXPECT_EQ(1, did_finish_loading_); 1308 EXPECT_EQ(1, did_finish_loading_);
1309 EXPECT_EQ(1, handle_external_protocol_);
1284 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 1310 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
1285 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 1311 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
1286 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called()); 1312 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
1287 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 1313 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
1288 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); 1314 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
1289 EXPECT_EQ("", raw_ptr_resource_handler_->body()); 1315 EXPECT_EQ("", raw_ptr_resource_handler_->body());
1290 } 1316 }
1291 1317
1292 TEST_F(ResourceLoaderTest, OutOfBandCancelDuringRead) { 1318 TEST_F(ResourceLoaderTest, OutOfBandCancelDuringRead) {
1293 SetUpResourceLoaderForUrl( 1319 SetUpResourceLoaderForUrl(
1294 net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase( 1320 net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase(
1295 net::URLRequestFailedJob::READ_SYNC, net::ERR_IO_PENDING)); 1321 net::URLRequestFailedJob::READ_SYNC, net::ERR_IO_PENDING));
1296 1322
1297 loader_->StartRequest(); 1323 loader_->StartRequest();
1298 base::RunLoop().RunUntilIdle(); 1324 base::RunLoop().RunUntilIdle();
1299 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 1325 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
1300 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 1326 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
1301 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called()); 1327 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
1302 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called()); 1328 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
1303 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 1329 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
1330 EXPECT_EQ(1, handle_external_protocol_);
1304 1331
1305 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED); 1332 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED);
1306 raw_ptr_resource_handler_->WaitUntilResponseComplete(); 1333 raw_ptr_resource_handler_->WaitUntilResponseComplete();
1307 EXPECT_EQ(0, did_received_redirect_); 1334 EXPECT_EQ(0, did_received_redirect_);
1308 EXPECT_EQ(1, did_receive_response_); 1335 EXPECT_EQ(1, did_receive_response_);
1309 EXPECT_EQ(1, did_finish_loading_); 1336 EXPECT_EQ(1, did_finish_loading_);
1337 EXPECT_EQ(1, handle_external_protocol_);
1310 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 1338 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
1311 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 1339 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
1312 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called()); 1340 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
1313 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called()); 1341 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
1314 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 1342 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
1315 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); 1343 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
1316 EXPECT_EQ("", raw_ptr_resource_handler_->body()); 1344 EXPECT_EQ("", raw_ptr_resource_handler_->body());
1317 } 1345 }
1318 1346
1319 TEST_F(ResourceLoaderTest, ResumeCanceledRequest) { 1347 TEST_F(ResourceLoaderTest, ResumeCanceledRequest) {
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
1602 1630
1603 // Tests that the effective connection type is not set on non-main frame 1631 // Tests that the effective connection type is not set on non-main frame
1604 // requests. 1632 // requests.
1605 TEST_F(EffectiveConnectionTypeResourceLoaderTest, DoesNotBelongToMainFrame) { 1633 TEST_F(EffectiveConnectionTypeResourceLoaderTest, DoesNotBelongToMainFrame) {
1606 VerifyEffectiveConnectionType(RESOURCE_TYPE_OBJECT, false, 1634 VerifyEffectiveConnectionType(RESOURCE_TYPE_OBJECT, false,
1607 net::EFFECTIVE_CONNECTION_TYPE_3G, 1635 net::EFFECTIVE_CONNECTION_TYPE_3G,
1608 net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN); 1636 net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN);
1609 } 1637 }
1610 1638
1611 } // namespace content 1639 } // namespace content
OLDNEW
« content/browser/loader/resource_loader.cc ('K') | « content/browser/loader/resource_loader.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698