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

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: Adds external protocol handling tests for sync and async cases. 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
« no previous file with comments | « content/browser/loader/resource_loader.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <deque>
10 #include <memory> 11 #include <memory>
11 #include <utility> 12 #include <utility>
13 #include <vector>
12 14
13 #include "base/files/file.h" 15 #include "base/files/file.h"
14 #include "base/files/file_util.h" 16 #include "base/files/file_util.h"
15 #include "base/location.h" 17 #include "base/location.h"
16 #include "base/macros.h" 18 #include "base/macros.h"
17 #include "base/memory/ptr_util.h" 19 #include "base/memory/ptr_util.h"
18 #include "base/memory/weak_ptr.h" 20 #include "base/memory/weak_ptr.h"
19 #include "base/run_loop.h" 21 #include "base/run_loop.h"
20 #include "base/single_thread_task_runner.h" 22 #include "base/single_thread_task_runner.h"
21 #include "base/threading/thread_task_runner_handle.h" 23 #include "base/threading/thread_task_runner_handle.h"
(...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 496
495 // ResourceLoaderDelegate: 497 // ResourceLoaderDelegate:
496 ResourceDispatcherHostLoginDelegate* CreateLoginDelegate( 498 ResourceDispatcherHostLoginDelegate* CreateLoginDelegate(
497 ResourceLoader* loader, 499 ResourceLoader* loader,
498 net::AuthChallengeInfo* auth_info) override { 500 net::AuthChallengeInfo* auth_info) override {
499 return NULL; 501 return NULL;
500 } 502 }
501 bool HandleExternalProtocol(ResourceLoader* loader, 503 bool HandleExternalProtocol(ResourceLoader* loader,
502 const GURL& url) override { 504 const GURL& url) override {
503 EXPECT_EQ(loader, loader_.get()); 505 EXPECT_EQ(loader, loader_.get());
504 return false; 506 ++handle_external_protocol_;
507
508 // Check that calls to HandleExternalProtocol always happen after the calls
509 // to the ResourceHandler's OnWillStart and OnRequestRedirected.
510 EXPECT_EQ(handle_external_protocol_,
511 raw_ptr_resource_handler_->on_will_start_called() +
512 raw_ptr_resource_handler_->on_request_redirected_called());
513
514 bool return_value = handle_external_protocol_results_.front();
515 if (handle_external_protocol_results_.size() > 1)
516 handle_external_protocol_results_.pop_front();
517 return return_value;
505 } 518 }
506 void DidStartRequest(ResourceLoader* loader) override { 519 void DidStartRequest(ResourceLoader* loader) override {
507 EXPECT_EQ(loader, loader_.get()); 520 EXPECT_EQ(loader, loader_.get());
508 EXPECT_EQ(0, did_finish_loading_); 521 EXPECT_EQ(0, did_finish_loading_);
509 EXPECT_EQ(0, did_start_request_); 522 EXPECT_EQ(0, did_start_request_);
510 ++did_start_request_; 523 ++did_start_request_;
511 } 524 }
512 void DidReceiveRedirect(ResourceLoader* loader, 525 void DidReceiveRedirect(ResourceLoader* loader,
513 const GURL& new_url, 526 const GURL& new_url,
514 ResourceResponse* response) override { 527 ResourceResponse* response) override {
(...skipping 26 matching lines...) Expand all
541 } 554 }
542 555
543 TestBrowserThreadBundle thread_bundle_; 556 TestBrowserThreadBundle thread_bundle_;
544 RenderViewHostTestEnabler rvh_test_enabler_; 557 RenderViewHostTestEnabler rvh_test_enabler_;
545 558
546 // Record which ResourceDispatcherHostDelegate methods have been invoked. 559 // Record which ResourceDispatcherHostDelegate methods have been invoked.
547 int did_start_request_ = 0; 560 int did_start_request_ = 0;
548 int did_received_redirect_ = 0; 561 int did_received_redirect_ = 0;
549 int did_receive_response_ = 0; 562 int did_receive_response_ = 0;
550 int did_finish_loading_ = 0; 563 int did_finish_loading_ = 0;
564 int handle_external_protocol_ = 0;
565
566 // Allows controlling the return values of sequential calls to
567 // HandleExternalProtocol. Values are removed by the measure they are used
568 // but the last one which is used for all following calls.
569 std::deque<bool> handle_external_protocol_results_{false};
551 570
552 net::URLRequestJobFactoryImpl job_factory_; 571 net::URLRequestJobFactoryImpl job_factory_;
553 TestNetworkQualityEstimator network_quality_estimator_; 572 TestNetworkQualityEstimator network_quality_estimator_;
554 net::TestURLRequestContext test_url_request_context_; 573 net::TestURLRequestContext test_url_request_context_;
555 MockResourceContext resource_context_; 574 MockResourceContext resource_context_;
556 std::unique_ptr<TestBrowserContext> browser_context_; 575 std::unique_ptr<TestBrowserContext> browser_context_;
557 std::unique_ptr<TestWebContents> web_contents_; 576 std::unique_ptr<TestWebContents> web_contents_;
558 std::unique_ptr<net::ClientCertStore> dummy_cert_store_; 577 std::unique_ptr<net::ClientCertStore> dummy_cert_store_;
559 578
560 // The ResourceLoader owns the URLRequest and the ResourceHandler. 579 // The ResourceLoader owns the URLRequest and the ResourceHandler.
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 } 761 }
743 762
744 // Test the case the ResourceHandler defers nothing. 763 // Test the case the ResourceHandler defers nothing.
745 TEST_F(ResourceLoaderTest, SyncResourceHandler) { 764 TEST_F(ResourceLoaderTest, SyncResourceHandler) {
746 loader_->StartRequest(); 765 loader_->StartRequest();
747 raw_ptr_resource_handler_->WaitUntilResponseComplete(); 766 raw_ptr_resource_handler_->WaitUntilResponseComplete();
748 EXPECT_EQ(1, did_start_request_); 767 EXPECT_EQ(1, did_start_request_);
749 EXPECT_EQ(1, did_received_redirect_); 768 EXPECT_EQ(1, did_received_redirect_);
750 EXPECT_EQ(1, did_receive_response_); 769 EXPECT_EQ(1, did_receive_response_);
751 EXPECT_EQ(1, did_finish_loading_); 770 EXPECT_EQ(1, did_finish_loading_);
771 EXPECT_EQ(2, handle_external_protocol_);
752 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called()); 772 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
753 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 773 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
754 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error()); 774 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error());
755 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body()); 775 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
756 } 776 }
757 777
758 // Same as above, except reads complete asynchronously, and there's no redirect. 778 // Same as above, except reads complete asynchronously, and there's no redirect.
759 TEST_F(ResourceLoaderTest, SyncResourceHandlerAsyncReads) { 779 TEST_F(ResourceLoaderTest, SyncResourceHandlerAsyncReads) {
760 SetUpResourceLoaderForUrl(test_async_url()); 780 SetUpResourceLoaderForUrl(test_async_url());
761 781
762 loader_->StartRequest(); 782 loader_->StartRequest();
763 raw_ptr_resource_handler_->WaitUntilResponseComplete(); 783 raw_ptr_resource_handler_->WaitUntilResponseComplete();
764 EXPECT_EQ(1, did_start_request_); 784 EXPECT_EQ(1, did_start_request_);
765 EXPECT_EQ(0, did_received_redirect_); 785 EXPECT_EQ(0, did_received_redirect_);
766 EXPECT_EQ(1, did_receive_response_); 786 EXPECT_EQ(1, did_receive_response_);
767 EXPECT_EQ(1, did_finish_loading_); 787 EXPECT_EQ(1, did_finish_loading_);
788 EXPECT_EQ(1, handle_external_protocol_);
768 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 789 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
769 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 790 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
770 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error()); 791 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error());
771 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body()); 792 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
772 } 793 }
773 794
795 // Test the case where ResourceHandler defers nothing and the request is handled
796 // as an external protocol on start.
797 TEST_F(ResourceLoaderTest, SyncExternalProtocolHandlingOnStart) {
798 handle_external_protocol_results_ = {true};
799
800 loader_->StartRequest();
801 raw_ptr_resource_handler_->WaitUntilResponseComplete();
802 EXPECT_EQ(0, did_start_request_);
803 EXPECT_EQ(0, did_received_redirect_);
804 EXPECT_EQ(0, did_receive_response_);
805 EXPECT_EQ(1, did_finish_loading_);
806 EXPECT_EQ(1, handle_external_protocol_);
807 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
808 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
809 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
810 EXPECT_EQ(net::ERR_ABORTED,
811 raw_ptr_resource_handler_->final_status().error());
812 EXPECT_TRUE(raw_ptr_resource_handler_->body().empty());
813 }
814
815 // Test the case where ResourceHandler defers nothing and the request is handled
816 // as an external protocol on redirect.
817 TEST_F(ResourceLoaderTest, SyncExternalProtocolHandlingOnRedirect) {
818 handle_external_protocol_results_ = {false, true};
819
820 loader_->StartRequest();
821 raw_ptr_resource_handler_->WaitUntilResponseComplete();
822 EXPECT_EQ(1, did_start_request_);
823 EXPECT_EQ(1, did_received_redirect_);
824 EXPECT_EQ(0, did_receive_response_);
825 EXPECT_EQ(1, did_finish_loading_);
826 EXPECT_EQ(2, handle_external_protocol_);
827 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
828 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
829 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
830 EXPECT_EQ(net::ERR_ABORTED,
831 raw_ptr_resource_handler_->final_status().error());
832 EXPECT_TRUE(raw_ptr_resource_handler_->body().empty());
833 }
834
774 // Test the case the ResourceHandler defers everything. 835 // Test the case the ResourceHandler defers everything.
775 TEST_F(ResourceLoaderTest, AsyncResourceHandler) { 836 TEST_F(ResourceLoaderTest, AsyncResourceHandler) {
776 raw_ptr_resource_handler_->set_defer_on_will_start(true); 837 raw_ptr_resource_handler_->set_defer_on_will_start(true);
777 raw_ptr_resource_handler_->set_defer_on_request_redirected(true); 838 raw_ptr_resource_handler_->set_defer_on_request_redirected(true);
778 raw_ptr_resource_handler_->set_defer_on_response_started(true); 839 raw_ptr_resource_handler_->set_defer_on_response_started(true);
779 raw_ptr_resource_handler_->set_defer_on_read_completed(true); 840 raw_ptr_resource_handler_->set_defer_on_read_completed(true);
780 raw_ptr_resource_handler_->set_defer_on_read_eof(true); 841 raw_ptr_resource_handler_->set_defer_on_read_eof(true);
781 raw_ptr_resource_handler_->set_defer_on_response_completed(true); 842 raw_ptr_resource_handler_->set_defer_on_response_completed(true);
782 843
783 // Start and run until OnWillStart. 844 // Start and run until OnWillStart.
784 loader_->StartRequest(); 845 loader_->StartRequest();
785 raw_ptr_resource_handler_->WaitUntilDeferred(); 846 raw_ptr_resource_handler_->WaitUntilDeferred();
786 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 847 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
787 848
788 // Spinning the message loop should not advance the state further. 849 // Spinning the message loop should not advance the state further.
789 base::RunLoop().RunUntilIdle(); 850 base::RunLoop().RunUntilIdle();
790 EXPECT_EQ(0, did_start_request_); 851 EXPECT_EQ(0, did_start_request_);
791 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 852 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
792 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 853 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
793 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 854 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
855 EXPECT_EQ(0, handle_external_protocol_);
794 856
795 // Resume and run until OnRequestRedirected. 857 // Resume and run until OnRequestRedirected.
796 raw_ptr_resource_handler_->Resume(); 858 raw_ptr_resource_handler_->Resume();
797 raw_ptr_resource_handler_->WaitUntilDeferred(); 859 raw_ptr_resource_handler_->WaitUntilDeferred();
798 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called()); 860 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
861 EXPECT_EQ(1, handle_external_protocol_);
799 862
800 // Spinning the message loop should not advance the state further. 863 // Spinning the message loop should not advance the state further.
801 base::RunLoop().RunUntilIdle(); 864 base::RunLoop().RunUntilIdle();
802 EXPECT_EQ(1, did_received_redirect_); 865 EXPECT_EQ(1, did_received_redirect_);
803 EXPECT_EQ(0, did_receive_response_); 866 EXPECT_EQ(0, did_receive_response_);
804 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called()); 867 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
805 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called()); 868 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called());
806 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 869 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
870 EXPECT_EQ(1, handle_external_protocol_);
807 871
808 // Resume and run until OnResponseStarted. 872 // Resume and run until OnResponseStarted.
809 raw_ptr_resource_handler_->Resume(); 873 raw_ptr_resource_handler_->Resume();
810 raw_ptr_resource_handler_->WaitUntilDeferred(); 874 raw_ptr_resource_handler_->WaitUntilDeferred();
811 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called()); 875 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
876 EXPECT_EQ(2, handle_external_protocol_);
812 877
813 // Spinning the message loop should not advance the state further. 878 // Spinning the message loop should not advance the state further.
814 base::RunLoop().RunUntilIdle(); 879 base::RunLoop().RunUntilIdle();
815 EXPECT_EQ(1, did_receive_response_); 880 EXPECT_EQ(1, did_receive_response_);
816 EXPECT_EQ(0, did_finish_loading_); 881 EXPECT_EQ(0, did_finish_loading_);
817 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called()); 882 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
818 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called()); 883 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called());
819 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 884 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
820 885
821 // Resume and run until OnReadCompleted. 886 // Resume and run until OnReadCompleted.
822 raw_ptr_resource_handler_->Resume(); 887 raw_ptr_resource_handler_->Resume();
823 raw_ptr_resource_handler_->WaitUntilDeferred(); 888 raw_ptr_resource_handler_->WaitUntilDeferred();
824 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called()); 889 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called());
825 890
826 // Spinning the message loop should not advance the state further. 891 // Spinning the message loop should not advance the state further.
827 base::RunLoop().RunUntilIdle(); 892 base::RunLoop().RunUntilIdle();
828 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_read_called()); 893 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_read_called());
829 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called()); 894 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_completed_called());
830 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof()); 895 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_eof());
831 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 896 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
832 897
833 // Resume and run until the final 0-byte read, signalling EOF. 898 // Resume and run until the final 0-byte read, signaling EOF.
834 raw_ptr_resource_handler_->Resume(); 899 raw_ptr_resource_handler_->Resume();
835 raw_ptr_resource_handler_->WaitUntilDeferred(); 900 raw_ptr_resource_handler_->WaitUntilDeferred();
836 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof()); 901 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof());
837 902
838 // Spinning the message loop should not advance the state further. 903 // Spinning the message loop should not advance the state further.
839 base::RunLoop().RunUntilIdle(); 904 base::RunLoop().RunUntilIdle();
840 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof()); 905 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof());
841 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 906 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
842 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body()); 907 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
843 908
844 // Resume and run until OnResponseCompleted is called, which again defers the 909 // Resume and run until OnResponseCompleted is called, which again defers the
845 // request. 910 // request.
846 raw_ptr_resource_handler_->Resume(); 911 raw_ptr_resource_handler_->Resume();
847 raw_ptr_resource_handler_->WaitUntilResponseComplete(); 912 raw_ptr_resource_handler_->WaitUntilResponseComplete();
848 EXPECT_EQ(0, did_finish_loading_); 913 EXPECT_EQ(0, did_finish_loading_);
849 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 914 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
850 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error()); 915 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error());
851 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body()); 916 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
852 917
853 // Resume and run until all pending tasks. Note that OnResponseCompleted was 918 // Resume and run until all pending tasks. Note that OnResponseCompleted was
854 // invoked in the previous section, so can't use RunUntilCompleted(). 919 // invoked in the previous section, so can't use RunUntilCompleted().
855 raw_ptr_resource_handler_->Resume(); 920 raw_ptr_resource_handler_->Resume();
856 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 921 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
857 922
858 base::RunLoop().RunUntilIdle(); 923 base::RunLoop().RunUntilIdle();
859 EXPECT_EQ(1, did_finish_loading_); 924 EXPECT_EQ(1, did_finish_loading_);
860 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 925 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
861 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error()); 926 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error());
862 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body()); 927 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
928 EXPECT_EQ(2, handle_external_protocol_);
863 } 929 }
864 930
865 // Same as above, except reads complete asynchronously and there's no redirect. 931 // Same as above, except reads complete asynchronously and there's no redirect.
866 TEST_F(ResourceLoaderTest, AsyncResourceHandlerAsyncReads) { 932 TEST_F(ResourceLoaderTest, AsyncResourceHandlerAsyncReads) {
867 SetUpResourceLoaderForUrl(test_async_url()); 933 SetUpResourceLoaderForUrl(test_async_url());
868 934
869 raw_ptr_resource_handler_->set_defer_on_will_start(true); 935 raw_ptr_resource_handler_->set_defer_on_will_start(true);
870 raw_ptr_resource_handler_->set_defer_on_response_started(true); 936 raw_ptr_resource_handler_->set_defer_on_response_started(true);
871 raw_ptr_resource_handler_->set_defer_on_read_completed(true); 937 raw_ptr_resource_handler_->set_defer_on_read_completed(true);
872 raw_ptr_resource_handler_->set_defer_on_read_eof(true); 938 raw_ptr_resource_handler_->set_defer_on_read_eof(true);
873 raw_ptr_resource_handler_->set_defer_on_response_completed(true); 939 raw_ptr_resource_handler_->set_defer_on_response_completed(true);
874 940
875 // Start and run until OnWillStart. 941 // Start and run until OnWillStart.
876 loader_->StartRequest(); 942 loader_->StartRequest();
877 raw_ptr_resource_handler_->WaitUntilDeferred(); 943 raw_ptr_resource_handler_->WaitUntilDeferred();
878 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 944 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
879 945
880 // Spinning the message loop should not advance the state further. 946 // Spinning the message loop should not advance the state further.
881 base::RunLoop().RunUntilIdle(); 947 base::RunLoop().RunUntilIdle();
882 EXPECT_EQ(0, did_start_request_); 948 EXPECT_EQ(0, did_start_request_);
883 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 949 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
884 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 950 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
885 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 951 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
952 EXPECT_EQ(0, handle_external_protocol_);
886 953
887 // Resume and run until OnResponseStarted. 954 // Resume and run until OnResponseStarted.
888 raw_ptr_resource_handler_->Resume(); 955 raw_ptr_resource_handler_->Resume();
889 raw_ptr_resource_handler_->WaitUntilDeferred(); 956 raw_ptr_resource_handler_->WaitUntilDeferred();
890 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called()); 957 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
958 EXPECT_EQ(1, handle_external_protocol_);
891 959
892 // Spinning the message loop should not advance the state further. 960 // Spinning the message loop should not advance the state further.
893 base::RunLoop().RunUntilIdle(); 961 base::RunLoop().RunUntilIdle();
894 EXPECT_EQ(1, did_receive_response_); 962 EXPECT_EQ(1, did_receive_response_);
895 EXPECT_EQ(0, did_finish_loading_); 963 EXPECT_EQ(0, did_finish_loading_);
896 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called()); 964 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
897 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called()); 965 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called());
898 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 966 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
899 967
900 // Resume and run until OnReadCompleted. 968 // 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 1000 // Resume and run until all pending tasks. Note that OnResponseCompleted was
933 // invoked in the previous section, so can't use RunUntilCompleted(). 1001 // invoked in the previous section, so can't use RunUntilCompleted().
934 raw_ptr_resource_handler_->Resume(); 1002 raw_ptr_resource_handler_->Resume();
935 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 1003 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
936 1004
937 base::RunLoop().RunUntilIdle(); 1005 base::RunLoop().RunUntilIdle();
938 EXPECT_EQ(1, did_finish_loading_); 1006 EXPECT_EQ(1, did_finish_loading_);
939 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 1007 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
940 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error()); 1008 EXPECT_EQ(net::OK, raw_ptr_resource_handler_->final_status().error());
941 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body()); 1009 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
1010 EXPECT_EQ(1, handle_external_protocol_);
942 } 1011 }
943 1012
944 TEST_F(ResourceLoaderTest, SyncCancelOnWillStart) { 1013 TEST_F(ResourceLoaderTest, SyncCancelOnWillStart) {
945 raw_ptr_resource_handler_->set_on_will_start_result(false); 1014 raw_ptr_resource_handler_->set_on_will_start_result(false);
946 1015
947 loader_->StartRequest(); 1016 loader_->StartRequest();
948 raw_ptr_resource_handler_->WaitUntilResponseComplete(); 1017 raw_ptr_resource_handler_->WaitUntilResponseComplete();
949 base::RunLoop().RunUntilIdle(); 1018 base::RunLoop().RunUntilIdle();
950 EXPECT_EQ(0, did_start_request_); 1019 EXPECT_EQ(0, did_start_request_);
951 EXPECT_EQ(1, did_finish_loading_); 1020 EXPECT_EQ(1, did_finish_loading_);
1021 EXPECT_EQ(0, handle_external_protocol_);
952 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 1022 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
953 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 1023 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
954 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called()); 1024 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
955 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 1025 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
956 1026
957 EXPECT_EQ(net::ERR_ABORTED, 1027 EXPECT_EQ(net::ERR_ABORTED,
958 raw_ptr_resource_handler_->final_status().error()); 1028 raw_ptr_resource_handler_->final_status().error());
959 EXPECT_EQ("", raw_ptr_resource_handler_->body()); 1029 EXPECT_EQ("", raw_ptr_resource_handler_->body());
960 } 1030 }
961 1031
962 TEST_F(ResourceLoaderTest, SyncCancelOnRequestRedirected) { 1032 TEST_F(ResourceLoaderTest, SyncCancelOnRequestRedirected) {
963 raw_ptr_resource_handler_->set_on_request_redirected_result(false); 1033 raw_ptr_resource_handler_->set_on_request_redirected_result(false);
964 1034
965 loader_->StartRequest(); 1035 loader_->StartRequest();
966 raw_ptr_resource_handler_->WaitUntilResponseComplete(); 1036 raw_ptr_resource_handler_->WaitUntilResponseComplete();
967 base::RunLoop().RunUntilIdle(); 1037 base::RunLoop().RunUntilIdle();
968 EXPECT_EQ(1, did_received_redirect_); 1038 EXPECT_EQ(1, did_received_redirect_);
969 EXPECT_EQ(0, did_receive_response_); 1039 EXPECT_EQ(0, did_receive_response_);
970 EXPECT_EQ(1, did_finish_loading_); 1040 EXPECT_EQ(1, did_finish_loading_);
1041 EXPECT_EQ(1, handle_external_protocol_);
971 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called()); 1042 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
972 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called()); 1043 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called());
973 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called()); 1044 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
974 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 1045 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
975 1046
976 EXPECT_EQ(net::ERR_ABORTED, 1047 EXPECT_EQ(net::ERR_ABORTED,
977 raw_ptr_resource_handler_->final_status().error()); 1048 raw_ptr_resource_handler_->final_status().error());
978 EXPECT_EQ("", raw_ptr_resource_handler_->body()); 1049 EXPECT_EQ("", raw_ptr_resource_handler_->body());
979 } 1050 }
980 1051
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1083 1154
1084 TEST_F(ResourceLoaderTest, AsyncCancelOnWillStart) { 1155 TEST_F(ResourceLoaderTest, AsyncCancelOnWillStart) {
1085 raw_ptr_resource_handler_->set_defer_on_will_start(true); 1156 raw_ptr_resource_handler_->set_defer_on_will_start(true);
1086 1157
1087 loader_->StartRequest(); 1158 loader_->StartRequest();
1088 raw_ptr_resource_handler_->WaitUntilDeferred(); 1159 raw_ptr_resource_handler_->WaitUntilDeferred();
1089 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED); 1160 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED);
1090 base::RunLoop().RunUntilIdle(); 1161 base::RunLoop().RunUntilIdle();
1091 EXPECT_EQ(0, did_start_request_); 1162 EXPECT_EQ(0, did_start_request_);
1092 EXPECT_EQ(1, did_finish_loading_); 1163 EXPECT_EQ(1, did_finish_loading_);
1164 EXPECT_EQ(0, handle_external_protocol_);
1093 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 1165 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
1094 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 1166 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
1095 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called()); 1167 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
1096 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 1168 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
1097 1169
1098 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); 1170 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
1099 EXPECT_EQ("", raw_ptr_resource_handler_->body()); 1171 EXPECT_EQ("", raw_ptr_resource_handler_->body());
1100 } 1172 }
1101 1173
1102 TEST_F(ResourceLoaderTest, AsyncCancelOnRequestRedirected) { 1174 TEST_F(ResourceLoaderTest, AsyncCancelOnRequestRedirected) {
1103 raw_ptr_resource_handler_->set_defer_on_request_redirected(true); 1175 raw_ptr_resource_handler_->set_defer_on_request_redirected(true);
1104 1176
1105 loader_->StartRequest(); 1177 loader_->StartRequest();
1106 raw_ptr_resource_handler_->WaitUntilDeferred(); 1178 raw_ptr_resource_handler_->WaitUntilDeferred();
1107 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED); 1179 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED);
1108 base::RunLoop().RunUntilIdle(); 1180 base::RunLoop().RunUntilIdle();
1109 EXPECT_EQ(1, did_received_redirect_); 1181 EXPECT_EQ(1, did_received_redirect_);
1110 EXPECT_EQ(0, did_receive_response_); 1182 EXPECT_EQ(0, did_receive_response_);
1111 EXPECT_EQ(1, did_finish_loading_); 1183 EXPECT_EQ(1, did_finish_loading_);
1184 EXPECT_EQ(1, handle_external_protocol_);
1112 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called()); 1185 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
1113 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called()); 1186 EXPECT_EQ(0, raw_ptr_resource_handler_->on_will_read_called());
1114 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called()); 1187 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
1115 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 1188 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
1116 1189
1117 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); 1190 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
1118 EXPECT_EQ("", raw_ptr_resource_handler_->body()); 1191 EXPECT_EQ("", raw_ptr_resource_handler_->body());
1119 } 1192 }
1120 1193
1121 TEST_F(ResourceLoaderTest, AsyncCancelOnResponseStarted) { 1194 TEST_F(ResourceLoaderTest, AsyncCancelOnResponseStarted) {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1197 base::RunLoop().RunUntilIdle(); 1270 base::RunLoop().RunUntilIdle();
1198 EXPECT_EQ(1, did_receive_response_); 1271 EXPECT_EQ(1, did_receive_response_);
1199 EXPECT_EQ(1, did_finish_loading_); 1272 EXPECT_EQ(1, did_finish_loading_);
1200 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof()); 1273 EXPECT_EQ(1, raw_ptr_resource_handler_->on_read_eof());
1201 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 1274 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
1202 1275
1203 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); 1276 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
1204 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body()); 1277 EXPECT_EQ(test_data(), raw_ptr_resource_handler_->body());
1205 } 1278 }
1206 1279
1280 // Tests the request being deferred and then being handled as an external
1281 // protocol, both on start.
1282 TEST_F(ResourceLoaderTest, AsyncExternalProtocolHandlingOnStart) {
1283 handle_external_protocol_results_ = {true};
1284 raw_ptr_resource_handler_->set_defer_on_will_start(true);
1285
1286 loader_->StartRequest();
1287 raw_ptr_resource_handler_->WaitUntilDeferred();
1288 EXPECT_EQ(0, did_finish_loading_);
1289 EXPECT_EQ(0, handle_external_protocol_);
1290 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
1291 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
1292
1293 raw_ptr_resource_handler_->Resume();
1294 raw_ptr_resource_handler_->WaitUntilResponseComplete();
1295 EXPECT_EQ(0, did_start_request_);
1296 EXPECT_EQ(1, did_finish_loading_);
1297 EXPECT_EQ(1, handle_external_protocol_);
1298 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
1299 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
1300 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
1301 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
1302
1303 EXPECT_EQ(net::ERR_ABORTED,
1304 raw_ptr_resource_handler_->final_status().error());
1305 EXPECT_EQ("", raw_ptr_resource_handler_->body());
1306 }
1307
1308 // Tests the request being deferred and then being handled as an external
1309 // protocol, both on redirect.
1310 TEST_F(ResourceLoaderTest, AsyncExternalProtocolHandlingOnRedirect) {
1311 handle_external_protocol_results_ = {false, true};
1312 raw_ptr_resource_handler_->set_defer_on_request_redirected(true);
1313
1314 loader_->StartRequest();
1315 raw_ptr_resource_handler_->WaitUntilDeferred();
1316 EXPECT_EQ(1, did_start_request_);
1317 EXPECT_EQ(1, did_received_redirect_);
carlosk 2016/12/20 19:23:31 In the process I created the async tests I noticed
jam 2016/12/20 20:55:56 I suspect the order didn't matter and it wasn't in
carlosk 2016/12/20 22:21:56 It is orthogonal; I was just curious. Thanks.
1318 EXPECT_EQ(0, did_finish_loading_);
1319 EXPECT_EQ(1, handle_external_protocol_);
1320 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
1321 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
1322 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
1323
1324 raw_ptr_resource_handler_->Resume();
1325 raw_ptr_resource_handler_->WaitUntilResponseComplete();
1326 EXPECT_EQ(1, did_start_request_);
1327 EXPECT_EQ(1, did_received_redirect_);
1328 EXPECT_EQ(0, did_receive_response_);
1329 EXPECT_EQ(1, did_finish_loading_);
1330 EXPECT_EQ(2, handle_external_protocol_);
1331 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
1332 EXPECT_EQ(1, raw_ptr_resource_handler_->on_request_redirected_called());
1333 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
1334 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
1335
1336 EXPECT_EQ(net::ERR_ABORTED,
1337 raw_ptr_resource_handler_->final_status().error());
1338 EXPECT_EQ("", raw_ptr_resource_handler_->body());
1339 }
1340
1207 TEST_F(ResourceLoaderTest, RequestFailsOnStart) { 1341 TEST_F(ResourceLoaderTest, RequestFailsOnStart) {
1208 SetUpResourceLoaderForUrl( 1342 SetUpResourceLoaderForUrl(
1209 net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase( 1343 net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase(
1210 net::URLRequestFailedJob::START, net::ERR_FAILED)); 1344 net::URLRequestFailedJob::START, net::ERR_FAILED));
1211 1345
1212 loader_->StartRequest(); 1346 loader_->StartRequest();
1213 raw_ptr_resource_handler_->WaitUntilResponseComplete(); 1347 raw_ptr_resource_handler_->WaitUntilResponseComplete();
1214 base::RunLoop().RunUntilIdle(); 1348 base::RunLoop().RunUntilIdle();
1215 EXPECT_EQ(0, did_received_redirect_); 1349 EXPECT_EQ(0, did_received_redirect_);
1216 EXPECT_EQ(0, did_receive_response_); 1350 EXPECT_EQ(0, did_receive_response_);
1217 EXPECT_EQ(1, did_finish_loading_); 1351 EXPECT_EQ(1, did_finish_loading_);
1352 EXPECT_EQ(1, handle_external_protocol_);
1218 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 1353 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
1219 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 1354 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
1220 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called()); 1355 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
1221 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 1356 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
1222 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); 1357 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
1223 EXPECT_EQ("", raw_ptr_resource_handler_->body()); 1358 EXPECT_EQ("", raw_ptr_resource_handler_->body());
1224 } 1359 }
1225 1360
1226 TEST_F(ResourceLoaderTest, RequestFailsOnReadSync) { 1361 TEST_F(ResourceLoaderTest, RequestFailsOnReadSync) {
1227 SetUpResourceLoaderForUrl( 1362 SetUpResourceLoaderForUrl(
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1267 SetUpResourceLoaderForUrl( 1402 SetUpResourceLoaderForUrl(
1268 net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase( 1403 net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase(
1269 net::URLRequestFailedJob::START, net::ERR_IO_PENDING)); 1404 net::URLRequestFailedJob::START, net::ERR_IO_PENDING));
1270 1405
1271 loader_->StartRequest(); 1406 loader_->StartRequest();
1272 base::RunLoop().RunUntilIdle(); 1407 base::RunLoop().RunUntilIdle();
1273 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 1408 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
1274 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 1409 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
1275 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called()); 1410 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
1276 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 1411 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
1412 EXPECT_EQ(1, handle_external_protocol_);
1277 1413
1278 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED); 1414 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED);
1279 raw_ptr_resource_handler_->WaitUntilResponseComplete(); 1415 raw_ptr_resource_handler_->WaitUntilResponseComplete();
1280 1416
1281 EXPECT_EQ(0, did_received_redirect_); 1417 EXPECT_EQ(0, did_received_redirect_);
1282 EXPECT_EQ(0, did_receive_response_); 1418 EXPECT_EQ(0, did_receive_response_);
1283 EXPECT_EQ(1, did_finish_loading_); 1419 EXPECT_EQ(1, did_finish_loading_);
1420 EXPECT_EQ(1, handle_external_protocol_);
1284 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 1421 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
1285 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 1422 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
1286 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called()); 1423 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_started_called());
1287 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 1424 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
1288 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); 1425 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
1289 EXPECT_EQ("", raw_ptr_resource_handler_->body()); 1426 EXPECT_EQ("", raw_ptr_resource_handler_->body());
1290 } 1427 }
1291 1428
1292 TEST_F(ResourceLoaderTest, OutOfBandCancelDuringRead) { 1429 TEST_F(ResourceLoaderTest, OutOfBandCancelDuringRead) {
1293 SetUpResourceLoaderForUrl( 1430 SetUpResourceLoaderForUrl(
1294 net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase( 1431 net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase(
1295 net::URLRequestFailedJob::READ_SYNC, net::ERR_IO_PENDING)); 1432 net::URLRequestFailedJob::READ_SYNC, net::ERR_IO_PENDING));
1296 1433
1297 loader_->StartRequest(); 1434 loader_->StartRequest();
1298 base::RunLoop().RunUntilIdle(); 1435 base::RunLoop().RunUntilIdle();
1299 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 1436 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
1300 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 1437 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
1301 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called()); 1438 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
1302 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called()); 1439 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
1303 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called()); 1440 EXPECT_EQ(0, raw_ptr_resource_handler_->on_response_completed_called());
1441 EXPECT_EQ(1, handle_external_protocol_);
1304 1442
1305 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED); 1443 raw_ptr_resource_handler_->CancelWithError(net::ERR_FAILED);
1306 raw_ptr_resource_handler_->WaitUntilResponseComplete(); 1444 raw_ptr_resource_handler_->WaitUntilResponseComplete();
1307 EXPECT_EQ(0, did_received_redirect_); 1445 EXPECT_EQ(0, did_received_redirect_);
1308 EXPECT_EQ(1, did_receive_response_); 1446 EXPECT_EQ(1, did_receive_response_);
1309 EXPECT_EQ(1, did_finish_loading_); 1447 EXPECT_EQ(1, did_finish_loading_);
1448 EXPECT_EQ(1, handle_external_protocol_);
1310 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called()); 1449 EXPECT_EQ(1, raw_ptr_resource_handler_->on_will_start_called());
1311 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called()); 1450 EXPECT_EQ(0, raw_ptr_resource_handler_->on_request_redirected_called());
1312 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called()); 1451 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_started_called());
1313 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called()); 1452 EXPECT_EQ(0, raw_ptr_resource_handler_->on_read_completed_called());
1314 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called()); 1453 EXPECT_EQ(1, raw_ptr_resource_handler_->on_response_completed_called());
1315 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error()); 1454 EXPECT_EQ(net::ERR_FAILED, raw_ptr_resource_handler_->final_status().error());
1316 EXPECT_EQ("", raw_ptr_resource_handler_->body()); 1455 EXPECT_EQ("", raw_ptr_resource_handler_->body());
1317 } 1456 }
1318 1457
1319 TEST_F(ResourceLoaderTest, ResumeCanceledRequest) { 1458 TEST_F(ResourceLoaderTest, ResumeCanceledRequest) {
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
1602 1741
1603 // Tests that the effective connection type is not set on non-main frame 1742 // Tests that the effective connection type is not set on non-main frame
1604 // requests. 1743 // requests.
1605 TEST_F(EffectiveConnectionTypeResourceLoaderTest, DoesNotBelongToMainFrame) { 1744 TEST_F(EffectiveConnectionTypeResourceLoaderTest, DoesNotBelongToMainFrame) {
1606 VerifyEffectiveConnectionType(RESOURCE_TYPE_OBJECT, false, 1745 VerifyEffectiveConnectionType(RESOURCE_TYPE_OBJECT, false,
1607 net::EFFECTIVE_CONNECTION_TYPE_3G, 1746 net::EFFECTIVE_CONNECTION_TYPE_3G,
1608 net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN); 1747 net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN);
1609 } 1748 }
1610 1749
1611 } // namespace content 1750 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/loader/resource_loader.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698