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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/memory/weak_ptr.h" | 10 #include "base/memory/weak_ptr.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 #include "content/public/browser/browser_thread.h" | 31 #include "content/public/browser/browser_thread.h" |
32 #include "content/public/browser/notification_service.h" | 32 #include "content/public/browser/notification_service.h" |
33 #include "content/public/browser/notification_types.h" | 33 #include "content/public/browser/notification_types.h" |
34 #include "content/public/browser/render_frame_host.h" | 34 #include "content/public/browser/render_frame_host.h" |
35 #include "content/public/browser/render_view_host.h" | 35 #include "content/public/browser/render_view_host.h" |
36 #include "content/public/browser/web_contents.h" | 36 #include "content/public/browser/web_contents.h" |
37 #include "content/public/browser/web_contents_observer.h" | 37 #include "content/public/browser/web_contents_observer.h" |
38 #include "content/public/test/browser_test_utils.h" | 38 #include "content/public/test/browser_test_utils.h" |
39 #include "content/public/test/test_navigation_observer.h" | 39 #include "content/public/test/test_navigation_observer.h" |
40 #include "content/test/net/url_request_failed_job.h" | 40 #include "content/test/net/url_request_failed_job.h" |
41 #include "content/test/net/url_request_mock_http_job.h" | |
42 #include "net/base/net_errors.h" | 41 #include "net/base/net_errors.h" |
43 #include "net/base/net_util.h" | 42 #include "net/base/net_util.h" |
44 #include "net/http/failing_http_transaction_factory.h" | 43 #include "net/http/failing_http_transaction_factory.h" |
45 #include "net/http/http_cache.h" | 44 #include "net/http/http_cache.h" |
46 #include "net/test/spawned_test_server/spawned_test_server.h" | 45 #include "net/test/spawned_test_server/spawned_test_server.h" |
| 46 #include "net/test/url_request/url_request_mock_http_job.h" |
47 #include "net/url_request/url_request_context.h" | 47 #include "net/url_request/url_request_context.h" |
48 #include "net/url_request/url_request_context_getter.h" | 48 #include "net/url_request/url_request_context_getter.h" |
49 #include "net/url_request/url_request_filter.h" | 49 #include "net/url_request/url_request_filter.h" |
50 #include "net/url_request/url_request_interceptor.h" | 50 #include "net/url_request/url_request_interceptor.h" |
51 #include "net/url_request/url_request_job.h" | 51 #include "net/url_request/url_request_job.h" |
52 #include "net/url_request/url_request_test_job.h" | 52 #include "net/url_request/url_request_test_job.h" |
53 #include "net/url_request/url_request_test_util.h" | 53 #include "net/url_request/url_request_test_util.h" |
54 #include "ui/base/l10n/l10n_util.h" | 54 #include "ui/base/l10n/l10n_util.h" |
55 | 55 |
56 using content::BrowserThread; | 56 using content::BrowserThread; |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 net::NetworkDelegate* network_delegate) const OVERRIDE { | 208 net::NetworkDelegate* network_delegate) const OVERRIDE { |
209 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 209 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
210 | 210 |
211 BrowserThread::PostTask( | 211 BrowserThread::PostTask( |
212 BrowserThread::UI, FROM_HERE, | 212 BrowserThread::UI, FROM_HERE, |
213 base::Bind(&LinkDoctorInterceptor::RequestCreated, | 213 base::Bind(&LinkDoctorInterceptor::RequestCreated, |
214 weak_factory_.GetWeakPtr())); | 214 weak_factory_.GetWeakPtr())); |
215 | 215 |
216 base::FilePath root_http; | 216 base::FilePath root_http; |
217 PathService::Get(chrome::DIR_TEST_DATA, &root_http); | 217 PathService::Get(chrome::DIR_TEST_DATA, &root_http); |
218 return new content::URLRequestMockHTTPJob( | 218 return new net::URLRequestMockHTTPJob( |
219 request, network_delegate, | 219 request, network_delegate, |
220 root_http.AppendASCII("mock-link-doctor.json")); | 220 root_http.AppendASCII("mock-link-doctor.json"), |
| 221 content::BrowserThread::GetBlockingPool()); |
221 } | 222 } |
222 | 223 |
223 void WaitForRequests(int requests_to_wait_for) { | 224 void WaitForRequests(int requests_to_wait_for) { |
224 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 225 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
225 DCHECK_EQ(-1, requests_to_wait_for_); | 226 DCHECK_EQ(-1, requests_to_wait_for_); |
226 DCHECK(!run_loop_); | 227 DCHECK(!run_loop_); |
227 | 228 |
228 if (requests_to_wait_for >= num_requests_) | 229 if (requests_to_wait_for >= num_requests_) |
229 return; | 230 return; |
230 | 231 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 const GURL& search_url, | 270 const GURL& search_url, |
270 scoped_ptr<net::URLRequestInterceptor> link_doctor_interceptor) { | 271 scoped_ptr<net::URLRequestInterceptor> link_doctor_interceptor) { |
271 chrome_browser_net::SetUrlRequestMocksEnabled(true); | 272 chrome_browser_net::SetUrlRequestMocksEnabled(true); |
272 | 273 |
273 AddInterceptorForURL(google_util::LinkDoctorBaseURL(), | 274 AddInterceptorForURL(google_util::LinkDoctorBaseURL(), |
274 link_doctor_interceptor.Pass()); | 275 link_doctor_interceptor.Pass()); |
275 | 276 |
276 // Add a mock for the search engine the error page will use. | 277 // Add a mock for the search engine the error page will use. |
277 base::FilePath root_http; | 278 base::FilePath root_http; |
278 PathService::Get(chrome::DIR_TEST_DATA, &root_http); | 279 PathService::Get(chrome::DIR_TEST_DATA, &root_http); |
279 content::URLRequestMockHTTPJob::AddHostnameToFileHandler( | 280 net::URLRequestMockHTTPJob::AddHostnameToFileHandler( |
280 search_url.host(), root_http.AppendASCII("title3.html")); | 281 search_url.host(), root_http.AppendASCII("title3.html"), |
| 282 content::BrowserThread::GetBlockingPool()); |
281 } | 283 } |
282 | 284 |
283 class ErrorPageTest : public InProcessBrowserTest { | 285 class ErrorPageTest : public InProcessBrowserTest { |
284 public: | 286 public: |
285 enum HistoryNavigationDirection { | 287 enum HistoryNavigationDirection { |
286 HISTORY_NAVIGATE_BACK, | 288 HISTORY_NAVIGATE_BACK, |
287 HISTORY_NAVIGATE_FORWARD, | 289 HISTORY_NAVIGATE_FORWARD, |
288 }; | 290 }; |
289 | 291 |
290 ErrorPageTest() : link_doctor_interceptor_(NULL) {} | 292 ErrorPageTest() : link_doctor_interceptor_(NULL) {} |
291 virtual ~ErrorPageTest() {} | 293 virtual ~ErrorPageTest() {} |
292 | 294 |
293 // Navigates the active tab to a mock url created for the file at |file_path|. | 295 // Navigates the active tab to a mock url created for the file at |file_path|. |
294 // Needed for StaleCacheStatus and StaleCacheStatusFailedCorrections tests. | 296 // Needed for StaleCacheStatus and StaleCacheStatusFailedCorrections tests. |
295 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 297 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
296 command_line->AppendSwitch(switches::kEnableOfflineLoadStaleCache); | 298 command_line->AppendSwitch(switches::kEnableOfflineLoadStaleCache); |
297 } | 299 } |
298 | 300 |
299 // Navigates the active tab to a mock url created for the file at |file_path|. | 301 // Navigates the active tab to a mock url created for the file at |file_path|. |
300 void NavigateToFileURL(const base::FilePath::StringType& file_path) { | 302 void NavigateToFileURL(const base::FilePath::StringType& file_path) { |
301 ui_test_utils::NavigateToURL( | 303 ui_test_utils::NavigateToURL( |
302 browser(), | 304 browser(), |
303 content::URLRequestMockHTTPJob::GetMockUrl(base::FilePath(file_path))); | 305 net::URLRequestMockHTTPJob::GetMockUrl(base::FilePath(file_path))); |
304 } | 306 } |
305 | 307 |
306 // Navigates to the given URL and waits for |num_navigations| to occur, and | 308 // Navigates to the given URL and waits for |num_navigations| to occur, and |
307 // the title to change to |expected_title|. | 309 // the title to change to |expected_title|. |
308 void NavigateToURLAndWaitForTitle(const GURL& url, | 310 void NavigateToURLAndWaitForTitle(const GURL& url, |
309 const std::string& expected_title, | 311 const std::string& expected_title, |
310 int num_navigations) { | 312 int num_navigations) { |
311 content::TitleWatcher title_watcher( | 313 content::TitleWatcher title_watcher( |
312 browser()->tab_strip_model()->GetActiveWebContents(), | 314 browser()->tab_strip_model()->GetActiveWebContents(), |
313 base::ASCIIToUTF16(expected_title)); | 315 base::ASCIIToUTF16(expected_title)); |
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
693 // to make sure to wait the tracking request, since the new page does not | 695 // to make sure to wait the tracking request, since the new page does not |
694 // depend on it. | 696 // depend on it. |
695 link_doctor_interceptor()->WaitForRequests(2); | 697 link_doctor_interceptor()->WaitForRequests(2); |
696 EXPECT_EQ(2, link_doctor_interceptor()->num_requests()); | 698 EXPECT_EQ(2, link_doctor_interceptor()->num_requests()); |
697 } | 699 } |
698 | 700 |
699 // Test that a DNS error occuring in an iframe does not result in showing | 701 // Test that a DNS error occuring in an iframe does not result in showing |
700 // navigation corrections. | 702 // navigation corrections. |
701 IN_PROC_BROWSER_TEST_F(ErrorPageTest, IFrameDNSError_Basic) { | 703 IN_PROC_BROWSER_TEST_F(ErrorPageTest, IFrameDNSError_Basic) { |
702 NavigateToURLAndWaitForTitle( | 704 NavigateToURLAndWaitForTitle( |
703 content::URLRequestMockHTTPJob::GetMockUrl( | 705 net::URLRequestMockHTTPJob::GetMockUrl( |
704 base::FilePath(FILE_PATH_LITERAL("iframe_dns_error.html"))), | 706 base::FilePath(FILE_PATH_LITERAL("iframe_dns_error.html"))), |
705 "Blah", | 707 "Blah", |
706 1); | 708 1); |
707 // We expect to have two history entries, since we started off with navigation | 709 // We expect to have two history entries, since we started off with navigation |
708 // to "about:blank" and then navigated to "iframe_dns_error.html". | 710 // to "about:blank" and then navigated to "iframe_dns_error.html". |
709 EXPECT_EQ(2, | 711 EXPECT_EQ(2, |
710 browser()->tab_strip_model()->GetActiveWebContents()-> | 712 browser()->tab_strip_model()->GetActiveWebContents()-> |
711 GetController().GetEntryCount()); | 713 GetController().GetEntryCount()); |
712 EXPECT_EQ(0, link_doctor_interceptor()->num_requests()); | 714 EXPECT_EQ(0, link_doctor_interceptor()->num_requests()); |
713 } | 715 } |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
807 EXPECT_EQ(fail_url, fail_observer.fail_url()); | 809 EXPECT_EQ(fail_url, fail_observer.fail_url()); |
808 EXPECT_EQ(2, wc->GetController().GetEntryCount()); | 810 EXPECT_EQ(2, wc->GetController().GetEntryCount()); |
809 } | 811 } |
810 EXPECT_EQ(0, link_doctor_interceptor()->num_requests()); | 812 EXPECT_EQ(0, link_doctor_interceptor()->num_requests()); |
811 } | 813 } |
812 | 814 |
813 // Checks that navigation corrections are not loaded when we receive an actual | 815 // Checks that navigation corrections are not loaded when we receive an actual |
814 // 404 page. | 816 // 404 page. |
815 IN_PROC_BROWSER_TEST_F(ErrorPageTest, Page404) { | 817 IN_PROC_BROWSER_TEST_F(ErrorPageTest, Page404) { |
816 NavigateToURLAndWaitForTitle( | 818 NavigateToURLAndWaitForTitle( |
817 content::URLRequestMockHTTPJob::GetMockUrl( | 819 net::URLRequestMockHTTPJob::GetMockUrl( |
818 base::FilePath(FILE_PATH_LITERAL("page404.html"))), | 820 base::FilePath(FILE_PATH_LITERAL("page404.html"))), |
819 "SUCCESS", | 821 "SUCCESS", |
820 1); | 822 1); |
821 EXPECT_EQ(0, link_doctor_interceptor()->num_requests()); | 823 EXPECT_EQ(0, link_doctor_interceptor()->num_requests()); |
822 } | 824 } |
823 | 825 |
824 // Checks that when an error occurs, the stale cache status of the page | 826 // Checks that when an error occurs, the stale cache status of the page |
825 // is correctly transferred, and that stale cached copied can be loaded | 827 // is correctly transferred, and that stale cached copied can be loaded |
826 // from the javascript. | 828 // from the javascript. |
827 IN_PROC_BROWSER_TEST_F(ErrorPageTest, StaleCacheStatus) { | 829 IN_PROC_BROWSER_TEST_F(ErrorPageTest, StaleCacheStatus) { |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1093 browser(), | 1095 browser(), |
1094 URLRequestFailedJob::GetMockHttpUrlForHostname(net::ERR_UNSAFE_PORT, | 1096 URLRequestFailedJob::GetMockHttpUrlForHostname(net::ERR_UNSAFE_PORT, |
1095 kHostname), | 1097 kHostname), |
1096 1); | 1098 1); |
1097 | 1099 |
1098 ToggleHelpBox(browser()); | 1100 ToggleHelpBox(browser()); |
1099 EXPECT_TRUE(IsDisplayingText(browser(), kHostnameJSUnicode)); | 1101 EXPECT_TRUE(IsDisplayingText(browser(), kHostnameJSUnicode)); |
1100 } | 1102 } |
1101 | 1103 |
1102 } // namespace | 1104 } // namespace |
OLD | NEW |