Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
| 9 #include "base/scoped_temp_dir.h" | |
| 10 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 11 #include "chrome/browser/content_settings/host_content_settings_map.h" | 10 #include "chrome/browser/content_settings/host_content_settings_map.h" |
| 12 #include "chrome/browser/prefs/pref_service.h" | 11 #include "chrome/browser/prefs/pref_service.h" |
| 13 #include "chrome/browser/prerender/prerender_contents.h" | 12 #include "chrome/browser/prerender/prerender_contents.h" |
| 14 #include "chrome/browser/prerender/prerender_manager.h" | 13 #include "chrome/browser/prerender/prerender_manager.h" |
| 15 #include "chrome/browser/profiles/profile.h" | 14 #include "chrome/browser/profiles/profile.h" |
| 16 #include "chrome/browser/task_manager/task_manager.h" | 15 #include "chrome/browser/task_manager/task_manager.h" |
| 17 #include "chrome/browser/ui/browser.h" | 16 #include "chrome/browser/ui/browser.h" |
| 18 #include "chrome/browser/ui/browser_window.h" | 17 #include "chrome/browser/ui/browser_window.h" |
| 19 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 18 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 235 // explicitly registered. | 234 // explicitly registered. |
| 236 FilePath app_dir; | 235 FilePath app_dir; |
| 237 PathService::Get(chrome::DIR_APP, &app_dir); | 236 PathService::Get(chrome::DIR_APP, &app_dir); |
| 238 command_line->AppendSwitchPath( | 237 command_line->AppendSwitchPath( |
| 239 switches::kExtraPluginDir, | 238 switches::kExtraPluginDir, |
| 240 app_dir.Append(FILE_PATH_LITERAL("plugins"))); | 239 app_dir.Append(FILE_PATH_LITERAL("plugins"))); |
| 241 #endif | 240 #endif |
| 242 } | 241 } |
| 243 | 242 |
| 244 virtual void SetUpOnMainThread() OVERRIDE { | 243 virtual void SetUpOnMainThread() OVERRIDE { |
| 245 // TODO(mmenke): Once downloading is stopped earlier, remove this. | 244 // TODO(mmenke): Once downloading is stopped earlier, remove this. |
|
dominich
2011/05/20 17:42:35
still need this?
mmenke
2011/05/20 17:45:12
No. Thanks.
| |
| 246 browser()->profile()->GetPrefs()->SetBoolean(prefs::kPromptForDownload, | 245 browser()->profile()->GetPrefs()->SetBoolean(prefs::kPromptForDownload, |
| 247 false); | 246 false); |
| 248 | |
| 249 ASSERT_TRUE(downloads_directory_.CreateUniqueTempDir()); | |
| 250 | |
| 251 browser()->profile()->GetPrefs()->SetFilePath( | |
| 252 prefs::kDownloadDefaultDirectory, | |
| 253 downloads_directory_.path()); | |
| 254 } | 247 } |
| 255 | 248 |
| 256 // Overload for a single expected final status | 249 // Overload for a single expected final status |
| 257 void PrerenderTestURL(const std::string& html_file, | 250 void PrerenderTestURL(const std::string& html_file, |
| 258 FinalStatus expected_final_status, | 251 FinalStatus expected_final_status, |
| 259 int total_navigations) { | 252 int total_navigations) { |
| 260 std::deque<FinalStatus> expected_final_status_queue(1, | 253 std::deque<FinalStatus> expected_final_status_queue(1, |
| 261 expected_final_status); | 254 expected_final_status); |
| 262 PrerenderTestURL(html_file, | 255 PrerenderTestURL(html_file, |
| 263 expected_final_status_queue, | 256 expected_final_status_queue, |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 427 L"window.domAutomationController.send(DidDisplayPass())", | 420 L"window.domAutomationController.send(DidDisplayPass())", |
| 428 &display_test_result)); | 421 &display_test_result)); |
| 429 EXPECT_TRUE(display_test_result); | 422 EXPECT_TRUE(display_test_result); |
| 430 } | 423 } |
| 431 } | 424 } |
| 432 | 425 |
| 433 WaitForLoadPrerenderContentsFactory* prerender_contents_factory_; | 426 WaitForLoadPrerenderContentsFactory* prerender_contents_factory_; |
| 434 GURL dest_url_; | 427 GURL dest_url_; |
| 435 bool use_https_src_server_; | 428 bool use_https_src_server_; |
| 436 bool call_javascript_; | 429 bool call_javascript_; |
| 437 | |
| 438 // Location of the downloads directory for these tests | |
| 439 ScopedTempDir downloads_directory_; | |
| 440 }; | 430 }; |
| 441 | 431 |
| 442 // Checks that a page is correctly prerendered in the case of a | 432 // Checks that a page is correctly prerendered in the case of a |
| 443 // <link rel=prefetch> tag and then loaded into a tab in response to a | 433 // <link rel=prefetch> tag and then loaded into a tab in response to a |
| 444 // navigation. | 434 // navigation. |
| 445 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPage) { | 435 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPage) { |
| 446 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); | 436 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
| 447 NavigateToDestURL(); | 437 NavigateToDestURL(); |
| 448 } | 438 } |
| 449 | 439 |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 663 "files/prerender/prerender_with_iframe.html", | 653 "files/prerender/prerender_with_iframe.html", |
| 664 replacement_text, | 654 replacement_text, |
| 665 &replacement_path)); | 655 &replacement_path)); |
| 666 PrerenderTestURL(replacement_path, FINAL_STATUS_USED, 1); | 656 PrerenderTestURL(replacement_path, FINAL_STATUS_USED, 1); |
| 667 EXPECT_FALSE(UrlIsInPrerenderManager(https_url)); | 657 EXPECT_FALSE(UrlIsInPrerenderManager(https_url)); |
| 668 NavigateToDestURL(); | 658 NavigateToDestURL(); |
| 669 } | 659 } |
| 670 | 660 |
| 671 // Prerenders a page that contains an automatic download triggered through an | 661 // Prerenders a page that contains an automatic download triggered through an |
| 672 // iframe. This should not prerender successfully. | 662 // iframe. This should not prerender successfully. |
| 673 // Flaky: http://crbug.com/81985 | 663 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderDownloadIframe) { |
| 674 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, FLAKY_PrerenderDownloadIframe) { | |
| 675 PrerenderTestURL("files/prerender/prerender_download_iframe.html", | 664 PrerenderTestURL("files/prerender/prerender_download_iframe.html", |
| 676 FINAL_STATUS_DOWNLOAD, | 665 FINAL_STATUS_DOWNLOAD, |
| 677 1); | 666 1); |
| 678 } | 667 } |
| 679 | 668 |
| 680 // Prerenders a page that contains an automatic download triggered through | 669 // Prerenders a page that contains an automatic download triggered through |
| 681 // Javascript changing the window.location. This should not prerender | 670 // Javascript changing the window.location. This should not prerender |
| 682 // successfully | 671 // successfully |
| 683 // Flaky: http://crbug.com/81985 | 672 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderDownloadLocation) { |
| 684 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
| 685 FLAKY_PrerenderDownloadLocation) { | |
| 686 PrerenderTestURL(CreateClientRedirect("files/download-test1.lib"), | 673 PrerenderTestURL(CreateClientRedirect("files/download-test1.lib"), |
| 687 FINAL_STATUS_DOWNLOAD, | 674 FINAL_STATUS_DOWNLOAD, |
| 688 1); | 675 1); |
| 689 } | 676 } |
| 690 | 677 |
| 691 // Prerenders a page that contains an automatic download triggered through a | 678 // Prerenders a page that contains an automatic download triggered through a |
| 692 // client-issued redirect. This should not prerender successfully. | 679 // client-issued redirect. This should not prerender successfully. |
| 693 // Flaky: http://crbug.com/81985 | 680 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderDownloadClientRedirect) { |
| 694 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | |
| 695 FLAKY_PrerenderDownloadClientRedirect) { | |
| 696 PrerenderTestURL("files/prerender/prerender_download_refresh.html", | 681 PrerenderTestURL("files/prerender/prerender_download_refresh.html", |
| 697 FINAL_STATUS_DOWNLOAD, | 682 FINAL_STATUS_DOWNLOAD, |
| 698 1); | 683 1); |
| 699 } | 684 } |
| 700 | 685 |
| 701 // Checks that the referrer is set when prerendering. | 686 // Checks that the referrer is set when prerendering. |
| 702 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderReferrer) { | 687 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderReferrer) { |
| 703 PrerenderTestURL("files/prerender/prerender_referrer.html", | 688 PrerenderTestURL("files/prerender/prerender_referrer.html", |
| 704 FINAL_STATUS_USED, | 689 FINAL_STATUS_USED, |
| 705 1); | 690 1); |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 961 | 946 |
| 962 // Checks that prerendering a JPG works correctly. | 947 // Checks that prerendering a JPG works correctly. |
| 963 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderImageJpeg) { | 948 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderImageJpeg) { |
| 964 DisableJavascriptCalls(); | 949 DisableJavascriptCalls(); |
| 965 PrerenderTestURL("files/prerender/image.jpeg", FINAL_STATUS_USED, 1); | 950 PrerenderTestURL("files/prerender/image.jpeg", FINAL_STATUS_USED, 1); |
| 966 NavigateToDestURL(); | 951 NavigateToDestURL(); |
| 967 } | 952 } |
| 968 | 953 |
| 969 // Checks that a prerender of a CRX will result in a cancellation due to | 954 // Checks that a prerender of a CRX will result in a cancellation due to |
| 970 // download. | 955 // download. |
| 971 // Flaky: http://crbug.com/81985 | 956 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderCrx) { |
| 972 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, FLAKY_PrerenderCrx) { | |
| 973 PrerenderTestURL("files/prerender/extension.crx", FINAL_STATUS_DOWNLOAD, 1); | 957 PrerenderTestURL("files/prerender/extension.crx", FINAL_STATUS_DOWNLOAD, 1); |
| 974 } | 958 } |
| 975 | 959 |
| 976 // Checks that xhr GET requests allow prerenders. | 960 // Checks that xhr GET requests allow prerenders. |
| 977 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderXhrGet) { | 961 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderXhrGet) { |
| 978 PrerenderTestURL("files/prerender/prerender_xhr_get.html", | 962 PrerenderTestURL("files/prerender/prerender_xhr_get.html", |
| 979 FINAL_STATUS_USED, | 963 FINAL_STATUS_USED, |
| 980 1); | 964 1); |
| 981 NavigateToDestURL(); | 965 NavigateToDestURL(); |
| 982 } | 966 } |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1090 } | 1074 } |
| 1091 | 1075 |
| 1092 // Checks that we cancel correctly when window.print() is called. | 1076 // Checks that we cancel correctly when window.print() is called. |
| 1093 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPrint) { | 1077 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPrint) { |
| 1094 PrerenderTestURL("files/prerender/prerender_print.html", | 1078 PrerenderTestURL("files/prerender/prerender_print.html", |
| 1095 FINAL_STATUS_WINDOW_PRINT, | 1079 FINAL_STATUS_WINDOW_PRINT, |
| 1096 1); | 1080 1); |
| 1097 } | 1081 } |
| 1098 | 1082 |
| 1099 } // namespace prerender | 1083 } // namespace prerender |
| OLD | NEW |