OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <deque> | 5 #include <deque> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/bind.h" | 8 #include "base/bind.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 #include "content/public/browser/render_frame_host.h" | 74 #include "content/public/browser/render_frame_host.h" |
75 #include "content/public/browser/render_process_host.h" | 75 #include "content/public/browser/render_process_host.h" |
76 #include "content/public/browser/render_view_host.h" | 76 #include "content/public/browser/render_view_host.h" |
77 #include "content/public/browser/site_instance.h" | 77 #include "content/public/browser/site_instance.h" |
78 #include "content/public/browser/web_contents.h" | 78 #include "content/public/browser/web_contents.h" |
79 #include "content/public/browser/web_contents_observer.h" | 79 #include "content/public/browser/web_contents_observer.h" |
80 #include "content/public/common/url_constants.h" | 80 #include "content/public/common/url_constants.h" |
81 #include "content/public/test/browser_test_utils.h" | 81 #include "content/public/test/browser_test_utils.h" |
82 #include "content/public/test/test_navigation_observer.h" | 82 #include "content/public/test/test_navigation_observer.h" |
83 #include "content/public/test/test_utils.h" | 83 #include "content/public/test/test_utils.h" |
84 #include "content/test/net/url_request_mock_http_job.h" | |
85 #include "extensions/common/switches.h" | 84 #include "extensions/common/switches.h" |
86 #include "extensions/test/result_catcher.h" | 85 #include "extensions/test/result_catcher.h" |
87 #include "net/base/escape.h" | 86 #include "net/base/escape.h" |
88 #include "net/cert/x509_certificate.h" | 87 #include "net/cert/x509_certificate.h" |
89 #include "net/dns/mock_host_resolver.h" | 88 #include "net/dns/mock_host_resolver.h" |
90 #include "net/ssl/client_cert_store.h" | 89 #include "net/ssl/client_cert_store.h" |
91 #include "net/ssl/ssl_cert_request_info.h" | 90 #include "net/ssl/ssl_cert_request_info.h" |
| 91 #include "net/test/url_request/url_request_mock_http_job.h" |
92 #include "net/url_request/url_request_context.h" | 92 #include "net/url_request/url_request_context.h" |
93 #include "net/url_request/url_request_context_getter.h" | 93 #include "net/url_request/url_request_context_getter.h" |
94 #include "net/url_request/url_request_filter.h" | 94 #include "net/url_request/url_request_filter.h" |
95 #include "net/url_request/url_request_interceptor.h" | 95 #include "net/url_request/url_request_interceptor.h" |
96 #include "net/url_request/url_request_job.h" | 96 #include "net/url_request/url_request_job.h" |
97 #include "ui/base/l10n/l10n_util.h" | 97 #include "ui/base/l10n/l10n_util.h" |
98 #include "url/gurl.h" | 98 #include "url/gurl.h" |
99 | 99 |
100 using content::BrowserThread; | 100 using content::BrowserThread; |
101 using content::DevToolsAgentHost; | 101 using content::DevToolsAgentHost; |
(...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
791 net::URLRequest* request, | 791 net::URLRequest* request, |
792 net::NetworkDelegate* network_delegate) const OVERRIDE { | 792 net::NetworkDelegate* network_delegate) const OVERRIDE { |
793 if (first_run_) { | 793 if (first_run_) { |
794 first_run_ = false; | 794 first_run_ = false; |
795 if (!callback_.is_null()) { | 795 if (!callback_.is_null()) { |
796 BrowserThread::PostTask( | 796 BrowserThread::PostTask( |
797 BrowserThread::UI, FROM_HERE, callback_); | 797 BrowserThread::UI, FROM_HERE, callback_); |
798 } | 798 } |
799 return new HangingURLRequestJob(request, network_delegate); | 799 return new HangingURLRequestJob(request, network_delegate); |
800 } | 800 } |
801 return new content::URLRequestMockHTTPJob(request, network_delegate, file_); | 801 return new net::URLRequestMockHTTPJob( |
| 802 request, |
| 803 network_delegate, |
| 804 file_, |
| 805 BrowserThread::GetBlockingPool()->GetTaskRunnerWithShutdownBehavior( |
| 806 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)); |
802 } | 807 } |
803 | 808 |
804 private: | 809 private: |
805 base::FilePath file_; | 810 base::FilePath file_; |
806 base::Closure callback_; | 811 base::Closure callback_; |
807 mutable bool first_run_; | 812 mutable bool first_run_; |
808 }; | 813 }; |
809 | 814 |
810 // Makes |url| never respond on the first load, and then with the contents of | 815 // Makes |url| never respond on the first load, and then with the contents of |
811 // |file| afterwards. When the first load has been scheduled, runs |callback| on | 816 // |file| afterwards. When the first load has been scheduled, runs |callback| on |
812 // the UI thread. | 817 // the UI thread. |
813 void CreateHangingFirstRequestInterceptorOnIO( | 818 void CreateHangingFirstRequestInterceptorOnIO( |
814 const GURL& url, const base::FilePath& file, base::Closure callback) { | 819 const GURL& url, const base::FilePath& file, base::Closure callback) { |
815 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 820 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
816 scoped_ptr<net::URLRequestInterceptor> never_respond_handler( | 821 scoped_ptr<net::URLRequestInterceptor> never_respond_handler( |
817 new HangingFirstRequestInterceptor(file, callback)); | 822 new HangingFirstRequestInterceptor(file, callback)); |
818 net::URLRequestFilter::GetInstance()->AddUrlInterceptor( | 823 net::URLRequestFilter::GetInstance()->AddUrlInterceptor( |
819 url, never_respond_handler.Pass()); | 824 url, never_respond_handler.Pass()); |
820 } | 825 } |
821 | 826 |
822 // Wrapper over URLRequestMockHTTPJob that exposes extra callbacks. | 827 // Wrapper over URLRequestMockHTTPJob that exposes extra callbacks. |
823 class MockHTTPJob : public content::URLRequestMockHTTPJob { | 828 class MockHTTPJob : public net::URLRequestMockHTTPJob { |
824 public: | 829 public: |
825 MockHTTPJob(net::URLRequest* request, | 830 MockHTTPJob(net::URLRequest* request, |
826 net::NetworkDelegate* delegate, | 831 net::NetworkDelegate* delegate, |
827 const base::FilePath& file) | 832 const base::FilePath& file) |
828 : content::URLRequestMockHTTPJob(request, delegate, file) { | 833 : net::URLRequestMockHTTPJob( |
829 } | 834 request, |
| 835 delegate, |
| 836 file, |
| 837 BrowserThread::GetBlockingPool()->GetTaskRunnerWithShutdownBehavior( |
| 838 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)) {} |
830 | 839 |
831 void set_start_callback(const base::Closure& start_callback) { | 840 void set_start_callback(const base::Closure& start_callback) { |
832 start_callback_ = start_callback; | 841 start_callback_ = start_callback; |
833 } | 842 } |
834 | 843 |
835 virtual void Start() OVERRIDE { | 844 virtual void Start() OVERRIDE { |
836 if (!start_callback_.is_null()) | 845 if (!start_callback_.is_null()) |
837 start_callback_.Run(); | 846 start_callback_.Run(); |
838 content::URLRequestMockHTTPJob::Start(); | 847 net::URLRequestMockHTTPJob::Start(); |
839 } | 848 } |
840 | 849 |
841 private: | 850 private: |
842 virtual ~MockHTTPJob() {} | 851 virtual ~MockHTTPJob() {} |
843 | 852 |
844 base::Closure start_callback_; | 853 base::Closure start_callback_; |
845 }; | 854 }; |
846 | 855 |
847 // Dummy counter class to live on the UI thread for counting requests. | 856 // Dummy counter class to live on the UI thread for counting requests. |
848 class RequestCounter : public base::SupportsWeakPtr<RequestCounter> { | 857 class RequestCounter : public base::SupportsWeakPtr<RequestCounter> { |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
918 new CountingInterceptor(file, counter)); | 927 new CountingInterceptor(file, counter)); |
919 net::URLRequestFilter::GetInstance()->AddUrlInterceptor( | 928 net::URLRequestFilter::GetInstance()->AddUrlInterceptor( |
920 url, request_interceptor.Pass()); | 929 url, request_interceptor.Pass()); |
921 } | 930 } |
922 | 931 |
923 // Makes |url| respond to requests with the contents of |file|. | 932 // Makes |url| respond to requests with the contents of |file|. |
924 void CreateMockInterceptorOnIO(const GURL& url, const base::FilePath& file) { | 933 void CreateMockInterceptorOnIO(const GURL& url, const base::FilePath& file) { |
925 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 934 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
926 net::URLRequestFilter::GetInstance()->AddUrlInterceptor( | 935 net::URLRequestFilter::GetInstance()->AddUrlInterceptor( |
927 url, | 936 url, |
928 content::URLRequestMockHTTPJob::CreateInterceptorForSingleFile(file)); | 937 net::URLRequestMockHTTPJob::CreateInterceptorForSingleFile( |
| 938 file, BrowserThread::GetBlockingPool())); |
929 } | 939 } |
930 | 940 |
931 // A ContentBrowserClient that cancels all prerenderers on OpenURL. | 941 // A ContentBrowserClient that cancels all prerenderers on OpenURL. |
932 class TestContentBrowserClient : public chrome::ChromeContentBrowserClient { | 942 class TestContentBrowserClient : public chrome::ChromeContentBrowserClient { |
933 public: | 943 public: |
934 TestContentBrowserClient() {} | 944 TestContentBrowserClient() {} |
935 virtual ~TestContentBrowserClient() {} | 945 virtual ~TestContentBrowserClient() {} |
936 | 946 |
937 // chrome::ChromeContentBrowserClient implementation. | 947 // chrome::ChromeContentBrowserClient implementation. |
938 virtual bool ShouldAllowOpenURL(content::SiteInstance* site_instance, | 948 virtual bool ShouldAllowOpenURL(content::SiteInstance* site_instance, |
(...skipping 3479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4418 | 4428 |
4419 // Navigate to the URL entered. | 4429 // Navigate to the URL entered. |
4420 omnibox_view->model()->AcceptInput(CURRENT_TAB, false); | 4430 omnibox_view->model()->AcceptInput(CURRENT_TAB, false); |
4421 | 4431 |
4422 // Prerender should be running, but abandoned. | 4432 // Prerender should be running, but abandoned. |
4423 EXPECT_TRUE( | 4433 EXPECT_TRUE( |
4424 GetAutocompleteActionPredictor()->IsPrerenderAbandonedForTesting()); | 4434 GetAutocompleteActionPredictor()->IsPrerenderAbandonedForTesting()); |
4425 } | 4435 } |
4426 | 4436 |
4427 } // namespace prerender | 4437 } // namespace prerender |
OLD | NEW |