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

Side by Side Diff: chrome/browser/prerender/prerender_browsertest.cc

Issue 10553029: Handle interface to prerenders. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remediated, and cleaned up in prep for uploading for review Created 8 years, 5 months 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 | Annotate | Revision Log
OLDNEW
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 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/string_util.h" 9 #include "base/string_util.h"
10 #include "base/stringprintf.h" 10 #include "base/stringprintf.h"
11 #include "base/test/test_timeouts.h" 11 #include "base/test/test_timeouts.h"
12 #include "base/utf_string_conversions.h" 12 #include "base/utf_string_conversions.h"
13 #include "base/values.h" 13 #include "base/values.h"
14 #include "chrome/browser/browsing_data_helper.h" 14 #include "chrome/browser/browsing_data_helper.h"
15 #include "chrome/browser/browsing_data_remover.h" 15 #include "chrome/browser/browsing_data_remover.h"
16 #include "chrome/browser/content_settings/host_content_settings_map.h" 16 #include "chrome/browser/content_settings/host_content_settings_map.h"
17 #include "chrome/browser/favicon/favicon_tab_helper.h" 17 #include "chrome/browser/favicon/favicon_tab_helper.h"
18 #include "chrome/browser/prefs/pref_service.h" 18 #include "chrome/browser/prefs/pref_service.h"
19 #include "chrome/browser/prerender/prerender_contents.h" 19 #include "chrome/browser/prerender/prerender_contents.h"
20 #include "chrome/browser/prerender/prerender_handle.h"
20 #include "chrome/browser/prerender/prerender_link_manager.h" 21 #include "chrome/browser/prerender/prerender_link_manager.h"
21 #include "chrome/browser/prerender/prerender_link_manager_factory.h" 22 #include "chrome/browser/prerender/prerender_link_manager_factory.h"
22 #include "chrome/browser/prerender/prerender_manager.h" 23 #include "chrome/browser/prerender/prerender_manager.h"
23 #include "chrome/browser/prerender/prerender_manager_factory.h" 24 #include "chrome/browser/prerender/prerender_manager_factory.h"
24 #include "chrome/browser/profiles/profile.h" 25 #include "chrome/browser/profiles/profile.h"
25 #include "chrome/browser/safe_browsing/safe_browsing_service.h" 26 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
26 #include "chrome/browser/task_manager/task_manager.h" 27 #include "chrome/browser/task_manager/task_manager.h"
27 #include "chrome/browser/task_manager/task_manager_browsertest_util.h" 28 #include "chrome/browser/task_manager/task_manager_browsertest_util.h"
28 #include "chrome/browser/ui/browser.h" 29 #include "chrome/browser/ui/browser.h"
29 #include "chrome/browser/ui/browser_commands.h" 30 #include "chrome/browser/ui/browser_commands.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 prerender_manager->CancelAllPrerenders(); 104 prerender_manager->CancelAllPrerenders();
104 } 105 }
105 106
106 // Returns true if and only if the final status is one in which the prerendered 107 // Returns true if and only if the final status is one in which the prerendered
107 // page should prerender correctly. The page still may not be used. 108 // page should prerender correctly. The page still may not be used.
108 bool ShouldRenderPrerenderedPageCorrectly(FinalStatus status) { 109 bool ShouldRenderPrerenderedPageCorrectly(FinalStatus status) {
109 switch (status) { 110 switch (status) {
110 case FINAL_STATUS_USED: 111 case FINAL_STATUS_USED:
111 case FINAL_STATUS_WINDOW_OPENER: 112 case FINAL_STATUS_WINDOW_OPENER:
112 case FINAL_STATUS_APP_TERMINATING: 113 case FINAL_STATUS_APP_TERMINATING:
113 case FINAL_STATUS_FRAGMENT_MISMATCH:
114 case FINAL_STATUS_CACHE_OR_HISTORY_CLEARED: 114 case FINAL_STATUS_CACHE_OR_HISTORY_CLEARED:
115 // We'll crash the renderer after it's loaded. 115 // We'll crash the renderer after it's loaded.
116 case FINAL_STATUS_RENDERER_CRASHED: 116 case FINAL_STATUS_RENDERER_CRASHED:
117 case FINAL_STATUS_CANCELLED: 117 case FINAL_STATUS_CANCELLED:
118 case FINAL_STATUS_DEVTOOLS_ATTACHED: 118 case FINAL_STATUS_DEVTOOLS_ATTACHED:
119 case FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH:
120 return true; 119 return true;
121 default: 120 default:
122 return false; 121 return false;
123 } 122 }
124 } 123 }
125 124
126 // PrerenderContents that stops the UI message loop on DidStopLoading(). 125 // PrerenderContents that stops the UI message loop on DidStopLoading().
127 class TestPrerenderContents : public PrerenderContents { 126 class TestPrerenderContents : public PrerenderContents {
128 public: 127 public:
128 using PrerenderContents::PendingPrerenderInfo;
dominich 2012/06/28 00:34:32 Do you really need these as a derived class of Pre
gavinp 2012/07/02 18:19:29 They are, but TestPrerenderManager calls them, and
129 using PrerenderContents::PendingPrerenderList;
130 using PrerenderContents::pending_prerender_list;
131
129 TestPrerenderContents( 132 TestPrerenderContents(
130 PrerenderManager* prerender_manager, 133 PrerenderManager* prerender_manager,
131 PrerenderTracker* prerender_tracker, 134 PrerenderTracker* prerender_tracker,
132 Profile* profile, 135 Profile* profile,
133 const GURL& url, 136 const GURL& url,
134 const content::Referrer& referrer, 137 const content::Referrer& referrer,
135 int expected_number_of_loads, 138 int expected_number_of_loads,
136 FinalStatus expected_final_status, 139 FinalStatus expected_final_status,
137 bool prerender_should_wait_for_ready_title) 140 bool prerender_should_wait_for_ready_title)
138 : PrerenderContents(prerender_manager, prerender_tracker, 141 : PrerenderContents(prerender_manager, prerender_tracker,
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 222
220 virtual void DidStopLoading() OVERRIDE { 223 virtual void DidStopLoading() OVERRIDE {
221 PrerenderContents::DidStopLoading(); 224 PrerenderContents::DidStopLoading();
222 ++number_of_loads_; 225 ++number_of_loads_;
223 if (ShouldRenderPrerenderedPageCorrectly(expected_final_status_) && 226 if (ShouldRenderPrerenderedPageCorrectly(expected_final_status_) &&
224 number_of_loads_ == expected_number_of_loads_) { 227 number_of_loads_ == expected_number_of_loads_) {
225 MessageLoopForUI::current()->Quit(); 228 MessageLoopForUI::current()->Quit();
226 } 229 }
227 } 230 }
228 231
229 virtual void AddPendingPrerender(const GURL& url, 232 virtual PrerenderHandle AddPendingPrerender(const GURL& url,
230 const content::Referrer& referrer, 233 const content::Referrer& referrer,
231 const gfx::Size& size) OVERRIDE { 234 const gfx::Size& size) OVERRIDE {
232 PrerenderContents::AddPendingPrerender(url, referrer, size); 235 PrerenderHandle handle =
236 PrerenderContents::AddPendingPrerender(url, referrer, size);
233 if (expected_pending_prerenders_ > 0 && 237 if (expected_pending_prerenders_ > 0 &&
234 pending_prerender_list()->size() == expected_pending_prerenders_) { 238 pending_prerender_list()->size() == expected_pending_prerenders_) {
235 MessageLoop::current()->Quit(); 239 MessageLoop::current()->Quit();
236 } 240 }
241 return handle;
237 } 242 }
238 243
239 virtual WebContents* CreateWebContents( 244 virtual WebContents* CreateWebContents(
240 content::SessionStorageNamespace* session_storage_namespace) OVERRIDE { 245 content::SessionStorageNamespace* session_storage_namespace) OVERRIDE {
241 WebContents* web_contents = PrerenderContents::CreateWebContents( 246 WebContents* web_contents = PrerenderContents::CreateWebContents(
242 session_storage_namespace); 247 session_storage_namespace);
243 string16 ready_title = ASCIIToUTF16(kReadyTitle); 248 string16 ready_title = ASCIIToUTF16(kReadyTitle);
244 if (prerender_should_wait_for_ready_title_) 249 if (prerender_should_wait_for_ready_title_)
245 ready_title_watcher_.reset(new ui_test_utils::TitleWatcher( 250 ready_title_watcher_.reset(new ui_test_utils::TitleWatcher(
246 web_contents, ready_title)); 251 web_contents, ready_title));
(...skipping 19 matching lines...) Expand all
266 EXPECT_EQ(expected_pending_prerenders, pending_prerender_list()->size()); 271 EXPECT_EQ(expected_pending_prerenders, pending_prerender_list()->size());
267 } 272 }
268 273
269 // For tests that open the prerender in a new background tab, the RenderView 274 // For tests that open the prerender in a new background tab, the RenderView
270 // will not have been made visible when the PrerenderContents is destroyed 275 // will not have been made visible when the PrerenderContents is destroyed
271 // even though it is used. 276 // even though it is used.
272 void set_should_be_shown(bool value) { should_be_shown_ = value; } 277 void set_should_be_shown(bool value) { should_be_shown_ = value; }
273 278
274 int number_of_loads() const { return number_of_loads_; } 279 int number_of_loads() const { return number_of_loads_; }
275 280
281 FinalStatus expected_final_status() const { return expected_final_status_; }
282
276 private: 283 private:
277 virtual void OnRenderViewHostCreated( 284 virtual void OnRenderViewHostCreated(
278 RenderViewHost* new_render_view_host) OVERRIDE { 285 RenderViewHost* new_render_view_host) OVERRIDE {
279 // Used to make sure the RenderViewHost is hidden and, if used, 286 // Used to make sure the RenderViewHost is hidden and, if used,
280 // subsequently shown. 287 // subsequently shown.
281 notification_registrar().Add( 288 notification_registrar().Add(
282 this, 289 this,
283 content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED, 290 content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED,
284 content::Source<RenderWidgetHost>(new_render_view_host)); 291 content::Source<RenderWidgetHost>(new_render_view_host));
285 292
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 #endif 489 #endif
483 use_https_src_server_(false), 490 use_https_src_server_(false),
484 call_javascript_(true), 491 call_javascript_(true),
485 loader_path_("files/prerender/prerender_loader.html"), 492 loader_path_("files/prerender/prerender_loader.html"),
486 explicitly_set_browser_(NULL) { 493 explicitly_set_browser_(NULL) {
487 EnableDOMAutomation(); 494 EnableDOMAutomation();
488 } 495 }
489 496
490 virtual ~PrerenderBrowserTest() {} 497 virtual ~PrerenderBrowserTest() {}
491 498
499 content::SessionStorageNamespace* GetSessionStorageNamespace() const {
500 return current_browser()->GetActiveTabContents()->web_contents()->
501 GetRenderViewHost()->GetSessionStorageNamespace();
502 }
503
492 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { 504 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
493 #if defined(ENABLE_SAFE_BROWSING) 505 #if defined(ENABLE_SAFE_BROWSING)
494 SafeBrowsingService::RegisterFactory(safe_browsing_factory_.get()); 506 SafeBrowsingService::RegisterFactory(safe_browsing_factory_.get());
495 #endif 507 #endif
496 } 508 }
497 509
498 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 510 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
499 command_line->AppendSwitchASCII(switches::kPrerenderMode, 511 command_line->AppendSwitchASCII(switches::kPrerenderMode,
500 switches::kPrerenderModeSwitchValueEnabled); 512 switches::kPrerenderModeSwitchValueEnabled);
501 #if defined(OS_MACOSX) 513 #if defined(OS_MACOSX)
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 &js_result)); 707 &js_result));
696 EXPECT_TRUE(js_result); 708 EXPECT_TRUE(js_result);
697 } 709 }
698 710
699 void NavigateToURL(const std::string& dest_html_file) const { 711 void NavigateToURL(const std::string& dest_html_file) const {
700 GURL dest_url = test_server()->GetURL(dest_html_file); 712 GURL dest_url = test_server()->GetURL(dest_html_file);
701 NavigateToURLImpl(dest_url, CURRENT_TAB); 713 NavigateToURLImpl(dest_url, CURRENT_TAB);
702 } 714 }
703 715
704 bool UrlIsInPrerenderManager(const std::string& html_file) const { 716 bool UrlIsInPrerenderManager(const std::string& html_file) const {
705 GURL dest_url = test_server()->GetURL(html_file); 717 return UrlIsInPrerenderManager(test_server()->GetURL(html_file));
706 return (GetPrerenderManager()->FindEntry(dest_url) != NULL);
707 } 718 }
708 719
709 bool UrlIsInPrerenderManager(const GURL& url) { 720 bool UrlIsInPrerenderManager(const GURL& url) const {
710 return (GetPrerenderManager()->FindEntry(url) != NULL); 721 return
dominich 2012/06/28 00:34:32 nit: return GetPrerenderManager()->FindEntry(
722 GetPrerenderManager()->FindEntry(url,
723 GetSessionStorageNamespace()) != NULL;
711 } 724 }
712 725
713 bool UrlIsPendingInPrerenderManager(const std::string& html_file) const { 726 bool UrlIsPendingInPrerenderManager(const std::string& html_file) const {
727 TestPrerenderContents* test_prerender_contents = GetPrerenderContents();
728 if (!test_prerender_contents)
729 return false;
714 GURL dest_url = test_server()->GetURL(html_file); 730 GURL dest_url = test_server()->GetURL(html_file);
715 return GetPrerenderManager()->IsPendingEntry(dest_url); 731 for (TestPrerenderContents::PendingPrerenderList::const_iterator
732 it = test_prerender_contents->pending_prerender_list()->begin(),
733 end = test_prerender_contents->pending_prerender_list()->end();
734 it != end;
735 ++it) {
736 if (it->url == dest_url) {
737 EXPECT_FALSE(GetPrerenderManager()->FindHandle(
738 dest_url, GetSessionStorageNamespace()));
739 EXPECT_TRUE(test_prerender_contents->IsPendingEntry(
740 it->prerender_handle_impl->AsWeakPtr()));
741 EXPECT_TRUE(it->prerender_handle_impl->IsPending());
742 return true;
743 }
744 }
745 return false;
716 } 746 }
717 747
718 void set_use_https_src(bool use_https_src_server) { 748 void set_use_https_src(bool use_https_src_server) {
719 use_https_src_server_ = use_https_src_server; 749 use_https_src_server_ = use_https_src_server;
720 } 750 }
721 751
722 void DisableJavascriptCalls() { 752 void DisableJavascriptCalls() {
723 call_javascript_ = false; 753 call_javascript_ = false;
724 } 754 }
725 755
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
758 } 788 }
759 789
760 #if defined(ENABLE_SAFE_BROWSING) 790 #if defined(ENABLE_SAFE_BROWSING)
761 FakeSafeBrowsingService* GetSafeBrowsingService() { 791 FakeSafeBrowsingService* GetSafeBrowsingService() {
762 return safe_browsing_factory_->most_recent_service(); 792 return safe_browsing_factory_->most_recent_service();
763 } 793 }
764 #endif 794 #endif
765 795
766 TestPrerenderContents* GetPrerenderContents() const { 796 TestPrerenderContents* GetPrerenderContents() const {
767 return static_cast<TestPrerenderContents*>( 797 return static_cast<TestPrerenderContents*>(
768 GetPrerenderManager()->FindEntry(dest_url_)); 798 GetPrerenderManager()->FindEntry(dest_url_,
799 GetSessionStorageNamespace()));
769 } 800 }
770 801
771 void set_loader_path(const std::string& path) { 802 void set_loader_path(const std::string& path) {
772 loader_path_ = path; 803 loader_path_ = path;
773 } 804 }
774 805
775 void set_loader_query_and_fragment(const std::string& query_and_fragment) { 806 void set_loader_query_and_fragment(const std::string& query_and_fragment) {
776 loader_query_and_fragment_ = query_and_fragment; 807 loader_query_and_fragment_ = query_and_fragment;
777 } 808 }
778 809
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 bool prerender_test_result = false; 906 bool prerender_test_result = false;
876 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( 907 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
877 prerender_contents->GetRenderViewHostMutable(), L"", 908 prerender_contents->GetRenderViewHostMutable(), L"",
878 L"window.domAutomationController.send(DidPrerenderPass())", 909 L"window.domAutomationController.send(DidPrerenderPass())",
879 &prerender_test_result)); 910 &prerender_test_result));
880 EXPECT_TRUE(prerender_test_result); 911 EXPECT_TRUE(prerender_test_result);
881 } 912 }
882 } else { 913 } else {
883 // In the failure case, we should have removed |dest_url_| from the 914 // In the failure case, we should have removed |dest_url_| from the
884 // prerender_manager. We ignore dummy PrerenderContents (as indicated 915 // prerender_manager. We ignore dummy PrerenderContents (as indicated
885 // by not having started). 916 // by not having started), and PrerenderContents that are expected to
917 // be left in the manager until the test finishes.
886 EXPECT_TRUE(prerender_contents == NULL || 918 EXPECT_TRUE(prerender_contents == NULL ||
887 !prerender_contents->prerendering_has_started()); 919 !prerender_contents->prerendering_has_started() ||
920 prerender_contents->expected_final_status() ==
921 FINAL_STATUS_MANAGER_SHUTDOWN);
888 } 922 }
889 } 923 }
890 924
891 void NavigateToURLImpl(const GURL& dest_url, 925 void NavigateToURLImpl(const GURL& dest_url,
892 WindowOpenDisposition disposition) const { 926 WindowOpenDisposition disposition) const {
893 ASSERT_TRUE(GetPrerenderManager() != NULL); 927 ASSERT_TRUE(GetPrerenderManager() != NULL);
894 // Make sure in navigating we have a URL to use in the PrerenderManager. 928 // Make sure in navigating we have a URL to use in the PrerenderManager.
895 ASSERT_TRUE(GetPrerenderContents() != NULL); 929 ASSERT_TRUE(GetPrerenderContents() != NULL);
896 930
897 // If opening the page in a background tab, it won't be shown when swapped 931 // If opening the page in a background tab, it won't be shown when swapped
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 const { 980 const {
947 TestPrerenderContents* prerender_contents = GetPrerenderContents(); 981 TestPrerenderContents* prerender_contents = GetPrerenderContents();
948 ASSERT_TRUE(prerender_contents != NULL); 982 ASSERT_TRUE(prerender_contents != NULL);
949 983
950 RenderViewHost* render_view_host = 984 RenderViewHost* render_view_host =
951 current_browser()->GetActiveWebContents()->GetRenderViewHost(); 985 current_browser()->GetActiveWebContents()->GetRenderViewHost();
952 render_view_host->ExecuteJavascriptInWebFrame( 986 render_view_host->ExecuteJavascriptInWebFrame(
953 string16(), 987 string16(),
954 ASCIIToUTF16(javascript_function_name)); 988 ASCIIToUTF16(javascript_function_name));
955 989
956 // Run message loop until the prerender contents is destroyed. 990 if (prerender_contents->expected_final_status() !=
957 ui_test_utils::RunMessageLoop(); 991 FINAL_STATUS_APP_TERMINATING) {
992 // Run message loop until the prerender contents is destroyed.
993 ui_test_utils::RunMessageLoop();
994 }
958 } 995 }
959 996
960 WaitForLoadPrerenderContentsFactory* prerender_contents_factory_; 997 WaitForLoadPrerenderContentsFactory* prerender_contents_factory_;
961 #if defined(ENABLE_SAFE_BROWSING) 998 #if defined(ENABLE_SAFE_BROWSING)
962 scoped_ptr<TestSafeBrowsingServiceFactory> safe_browsing_factory_; 999 scoped_ptr<TestSafeBrowsingServiceFactory> safe_browsing_factory_;
963 #endif 1000 #endif
964 GURL dest_url_; 1001 GURL dest_url_;
965 bool use_https_src_server_; 1002 bool use_https_src_server_;
966 bool call_javascript_; 1003 bool call_javascript_;
967 std::string loader_path_; 1004 std::string loader_path_;
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after
1627 LoadURL( 1664 LoadURL(
1628 GURL(chrome::kChromeUICrashURL), 1665 GURL(chrome::kChromeUICrashURL),
1629 content::Referrer(), 1666 content::Referrer(),
1630 content::PAGE_TRANSITION_TYPED, 1667 content::PAGE_TRANSITION_TYPED,
1631 std::string()); 1668 std::string());
1632 ui_test_utils::RunMessageLoop(); 1669 ui_test_utils::RunMessageLoop();
1633 } 1670 }
1634 1671
1635 // Checks that we correctly use a prerendered page when navigating to a 1672 // Checks that we correctly use a prerendered page when navigating to a
1636 // fragment. 1673 // fragment.
1637 // DISABLED: http://crbug.com/84154 1674 // DISABLED: http://crbug.com/84154
dominich 2012/06/28 00:34:32 shouldn't be disabled any more?
1638 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 1675 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
1639 DISABLED_PrerenderPageNavigateFragment) { 1676 DISABLED_PrerenderPageNavigateFragment) {
1640 PrerenderTestURL("files/prerender/prerender_fragment.html", 1677 PrerenderTestURL("files/prerender/prerender_fragment.html",
1641 FINAL_STATUS_FRAGMENT_MISMATCH, 1678 FINAL_STATUS_APP_TERMINATING,
1642 1); 1679 1);
1643 NavigateToURL("files/prerender/prerender_fragment.html#fragment"); 1680 NavigateToURL("files/prerender/prerender_fragment.html#fragment");
1644 } 1681 }
1645 1682
1646 // Checks that we correctly use a prerendered page when we prerender a fragment 1683 // Checks that we correctly use a prerendered page when we prerender a fragment
1647 // but navigate to the main page. 1684 // but navigate to the main page.
1648 // http://crbug.com/83901 1685 // http://crbug.com/83901
1649 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 1686 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
dominich 2012/06/28 00:34:32 shouldn't be disabled any more?
1650 DISABLED_PrerenderFragmentNavigatePage) { 1687 DISABLED_PrerenderFragmentNavigatePage) {
1651 PrerenderTestURL("files/prerender/prerender_fragment.html#fragment", 1688 PrerenderTestURL("files/prerender/prerender_fragment.html#fragment",
1652 FINAL_STATUS_FRAGMENT_MISMATCH, 1689 FINAL_STATUS_APP_TERMINATING,
1653 1); 1690 1);
1654 NavigateToURL("files/prerender/prerender_fragment.html"); 1691 NavigateToURL("files/prerender/prerender_fragment.html");
1655 } 1692 }
1656 1693
1657 // Checks that we correctly use a prerendered page when we prerender a fragment 1694 // Checks that we correctly use a prerendered page when we prerender a fragment
1658 // but navigate to a different fragment on the same page. 1695 // but navigate to a different fragment on the same page.
1659 // DISABLED: http://crbug.com/84154 1696 // DISABLED: http://crbug.com/84154
1660 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 1697 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
dominich 2012/06/28 00:34:32 shouldn't be disabled any more?
1661 DISABLED_PrerenderFragmentNavigateFragment) { 1698 DISABLED_PrerenderFragmentNavigateFragment) {
1662 PrerenderTestURL("files/prerender/prerender_fragment.html#other_fragment", 1699 PrerenderTestURL("files/prerender/prerender_fragment.html#other_fragment",
1663 FINAL_STATUS_FRAGMENT_MISMATCH, 1700 FINAL_STATUS_APP_TERMINATING,
1664 1); 1701 1);
1665 NavigateToURL("files/prerender/prerender_fragment.html#fragment"); 1702 NavigateToURL("files/prerender/prerender_fragment.html#fragment");
1666 } 1703 }
1667 1704
1668 // Checks that we correctly use a prerendered page when the page uses a client 1705 // Checks that we correctly use a prerendered page when the page uses a client
1669 // redirect to refresh from a fragment on the same page. 1706 // redirect to refresh from a fragment on the same page.
1670 // http://crbug.com/83901 1707 // http://crbug.com/83901
1671 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 1708 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
dominich 2012/06/28 00:34:32 shouldn't be disabled any more?
1672 DISABLED_PrerenderClientRedirectFromFragment) { 1709 DISABLED_PrerenderClientRedirectFromFragment) {
1673 PrerenderTestURL( 1710 PrerenderTestURL(
1674 CreateClientRedirect("files/prerender/prerender_fragment.html#fragment"), 1711 CreateClientRedirect("files/prerender/prerender_fragment.html#fragment"),
1675 FINAL_STATUS_FRAGMENT_MISMATCH, 1712 FINAL_STATUS_APP_TERMINATING,
1676 2); 1713 2);
1677 NavigateToURL("files/prerender/prerender_fragment.html"); 1714 NavigateToURL("files/prerender/prerender_fragment.html");
1678 } 1715 }
1679 1716
1680 // Checks that we correctly use a prerendered page when the page uses a client 1717 // Checks that we correctly use a prerendered page when the page uses a client
1681 // redirect to refresh to a fragment on the same page. 1718 // redirect to refresh to a fragment on the same page.
1682 // DISABLED: http://crbug.com/84154 1719 // DISABLED: http://crbug.com/84154
1683 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 1720 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
dominich 2012/06/28 00:34:32 shouldn't be disabled any more?
1684 DISABLED_PrerenderClientRedirectToFragment) { 1721 DISABLED_PrerenderClientRedirectToFragment) {
1685 PrerenderTestURL( 1722 PrerenderTestURL(
1686 CreateClientRedirect("files/prerender/prerender_fragment.html"), 1723 CreateClientRedirect("files/prerender/prerender_fragment.html"),
1687 FINAL_STATUS_FRAGMENT_MISMATCH, 1724 FINAL_STATUS_APP_TERMINATING,
1688 2); 1725 2);
1689 NavigateToURL("files/prerender/prerender_fragment.html#fragment"); 1726 NavigateToURL("files/prerender/prerender_fragment.html#fragment");
1690 } 1727 }
1691 1728
1692 // Checks that we correctly use a prerendered page when the page uses JS to set 1729 // Checks that we correctly use a prerendered page when the page uses JS to set
1693 // the window.location.hash to a fragment on the same page. 1730 // the window.location.hash to a fragment on the same page.
1694 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 1731 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
1695 PrerenderPageChangeFragmentLocationHash) { 1732 PrerenderPageChangeFragmentLocationHash) {
1696 PrerenderTestURL("files/prerender/prerender_fragment_location_hash.html", 1733 PrerenderTestURL("files/prerender/prerender_fragment_location_hash.html",
1697 FINAL_STATUS_USED, 1734 FINAL_STATUS_USED,
1698 1); 1735 1);
1699 NavigateToURL("files/prerender/prerender_fragment_location_hash.html"); 1736 NavigateToURL("files/prerender/prerender_fragment_location_hash.html");
1700 } 1737 }
1701 1738
1702 // Checks that prerendering a PNG works correctly. 1739 // Checks that preren a PNG works correctly.
dominich 2012/06/28 00:34:32 an accidental s/dering//g ?
1703 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderImagePng) { 1740 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderImagePng) {
1704 DisableJavascriptCalls(); 1741 DisableJavascriptCalls();
1705 PrerenderTestURL("files/prerender/image.png", FINAL_STATUS_USED, 1); 1742 PrerenderTestURL("files/prerender/image.png", FINAL_STATUS_USED, 1);
1706 NavigateToDestURL(); 1743 NavigateToDestURL();
1707 } 1744 }
1708 1745
1709 // Checks that prerendering a JPG works correctly. 1746 // Checks that prerendering a JPG works correctly.
1710 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderImageJpeg) { 1747 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderImageJpeg) {
1711 DisableJavascriptCalls(); 1748 DisableJavascriptCalls();
1712 PrerenderTestURL("files/prerender/image.jpeg", FINAL_STATUS_USED, 1); 1749 PrerenderTestURL("files/prerender/image.jpeg", FINAL_STATUS_USED, 1);
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
1839 PrerenderTestURL("files/prerender/prerender_print.html", 1876 PrerenderTestURL("files/prerender/prerender_print.html",
1840 FINAL_STATUS_WINDOW_PRINT, 1877 FINAL_STATUS_WINDOW_PRINT,
1841 1); 1878 1);
1842 } 1879 }
1843 1880
1844 // Checks that if a page is opened in a new window by javascript and both the 1881 // Checks that if a page is opened in a new window by javascript and both the
1845 // pages are in the same domain, the prerendered page is not used. 1882 // pages are in the same domain, the prerendered page is not used.
1846 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 1883 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
1847 PrerenderSameDomainWindowOpenerWindowOpen) { 1884 PrerenderSameDomainWindowOpenerWindowOpen) {
1848 PrerenderTestURL("files/prerender/prerender_page.html", 1885 PrerenderTestURL("files/prerender/prerender_page.html",
1849 FINAL_STATUS_WINDOW_OPENER, 1886 FINAL_STATUS_APP_TERMINATING,
dominich 2012/06/28 00:34:32 this is surprising. we still want to cancel on WIN
1850 1); 1887 1);
1851 OpenDestURLViaWindowOpen(); 1888 OpenDestURLViaWindowOpen();
1852 } 1889 }
1853 1890
1854 // Checks that if a page is opened due to click on a href with target="_blank" 1891 // Checks that if a page is opened due to click on a href with target="_blank"
1855 // and both pages are in the same domain the prerendered page is not used. 1892 // and both pages are in the same domain the prerendered page is not used.
1856 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 1893 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
1857 PrerenderSameDomainWindowOpenerClickTarget) { 1894 PrerenderSameDomainWindowOpenerClickTarget) {
1858 PrerenderTestURL("files/prerender/prerender_page.html", 1895 PrerenderTestURL("files/prerender/prerender_page.html",
1859 FINAL_STATUS_WINDOW_OPENER, 1896 FINAL_STATUS_APP_TERMINATING,
dominich 2012/06/28 00:34:32 ditto
1860 1); 1897 1);
1861 OpenDestURLViaClickTarget(); 1898 OpenDestURLViaClickTarget();
1862 } 1899 }
1863 1900
1864 // Checks that a top-level page which would normally request an SSL client 1901 // Checks that a top-level page which would normally request an SSL client
1865 // certificate will never be seen since it's an https top-level resource. 1902 // certificate will never be seen since it's an https top-level resource.
1866 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLClientCertTopLevel) { 1903 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLClientCertTopLevel) {
1867 net::TestServer::HTTPSOptions https_options; 1904 net::TestServer::HTTPSOptions https_options;
1868 https_options.request_client_certificate = true; 1905 https_options.request_client_certificate = true;
1869 net::TestServer https_server(https_options, 1906 net::TestServer https_server(https_options,
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
2132 PrerenderTestURL("files/prerender/prerender_page_with_link.html", 2169 PrerenderTestURL("files/prerender/prerender_page_with_link.html",
2133 FINAL_STATUS_USED, 2170 FINAL_STATUS_USED,
2134 1); 2171 1);
2135 OpenDestURLViaClick(); 2172 OpenDestURLViaClick();
2136 NavigateToNextPageAfterPrerender(); 2173 NavigateToNextPageAfterPrerender();
2137 GoBackToPrerender(); 2174 GoBackToPrerender();
2138 } 2175 }
2139 2176
2140 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewWindow) { 2177 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewWindow) {
2141 PrerenderTestURL("files/prerender/prerender_page_with_link.html", 2178 PrerenderTestURL("files/prerender/prerender_page_with_link.html",
2142 FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH, 2179 FINAL_STATUS_APP_TERMINATING,
2143 1); 2180 1);
2144 OpenDestURLViaClickNewWindow(); 2181 OpenDestURLViaClickNewWindow();
2145 } 2182 }
2146 2183
2147 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewForegroundTab) { 2184 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewForegroundTab) {
2148 PrerenderTestURL("files/prerender/prerender_page_with_link.html", 2185 PrerenderTestURL("files/prerender/prerender_page_with_link.html",
2149 FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH, 2186 FINAL_STATUS_APP_TERMINATING,
2150 1); 2187 1);
2151 OpenDestURLViaClickNewForegroundTab(); 2188 OpenDestURLViaClickNewForegroundTab();
2152 } 2189 }
2153 2190
2154 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewBackgroundTab) { 2191 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewBackgroundTab) {
2155 PrerenderTestURL("files/prerender/prerender_page_with_link.html", 2192 PrerenderTestURL("files/prerender/prerender_page_with_link.html",
2156 FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH, 2193 FINAL_STATUS_APP_TERMINATING,
2157 1); 2194 1);
2158 OpenDestURLViaClickNewBackgroundTab(); 2195 OpenDestURLViaClickNewBackgroundTab();
2159 } 2196 }
2160 2197
2161 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 2198 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
2162 NavigateToPrerenderedPageWhenDevToolsAttached) { 2199 NavigateToPrerenderedPageWhenDevToolsAttached) {
2163 DisableJavascriptCalls(); 2200 DisableJavascriptCalls();
2164 WebContents* web_contents = current_browser()->GetActiveWebContents(); 2201 WebContents* web_contents = current_browser()->GetActiveWebContents();
2165 DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( 2202 DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost(
2166 web_contents->GetRenderViewHost()); 2203 web_contents->GetRenderViewHost());
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
2251 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLReferrerPolicy) { 2288 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLReferrerPolicy) {
2252 set_use_https_src(true); 2289 set_use_https_src(true);
2253 set_loader_path("files/prerender/prerender_loader_with_referrer_policy.html"); 2290 set_loader_path("files/prerender/prerender_loader_with_referrer_policy.html");
2254 PrerenderTestURL("files/prerender/prerender_referrer_policy.html", 2291 PrerenderTestURL("files/prerender/prerender_referrer_policy.html",
2255 FINAL_STATUS_USED, 2292 FINAL_STATUS_USED,
2256 1); 2293 1);
2257 NavigateToDestURL(); 2294 NavigateToDestURL();
2258 } 2295 }
2259 2296
2260 } // namespace prerender 2297 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698