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

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

Issue 10540078: TabContentsWrapper -> TabContents, part 23. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 6 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"
(...skipping 10 matching lines...) Expand all
21 #include "chrome/browser/prerender/prerender_link_manager_factory.h" 21 #include "chrome/browser/prerender/prerender_link_manager_factory.h"
22 #include "chrome/browser/prerender/prerender_manager.h" 22 #include "chrome/browser/prerender/prerender_manager.h"
23 #include "chrome/browser/prerender/prerender_manager_factory.h" 23 #include "chrome/browser/prerender/prerender_manager_factory.h"
24 #include "chrome/browser/profiles/profile.h" 24 #include "chrome/browser/profiles/profile.h"
25 #include "chrome/browser/safe_browsing/safe_browsing_service.h" 25 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
26 #include "chrome/browser/task_manager/task_manager.h" 26 #include "chrome/browser/task_manager/task_manager.h"
27 #include "chrome/browser/task_manager/task_manager_browsertest_util.h" 27 #include "chrome/browser/task_manager/task_manager_browsertest_util.h"
28 #include "chrome/browser/ui/browser.h" 28 #include "chrome/browser/ui/browser.h"
29 #include "chrome/browser/ui/browser_finder.h" 29 #include "chrome/browser/ui/browser_finder.h"
30 #include "chrome/browser/ui/browser_window.h" 30 #include "chrome/browser/ui/browser_window.h"
31 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 31 #include "chrome/browser/ui/tab_contents/tab_contents.h"
32 #include "chrome/common/chrome_notification_types.h" 32 #include "chrome/common/chrome_notification_types.h"
33 #include "chrome/common/chrome_paths.h" 33 #include "chrome/common/chrome_paths.h"
34 #include "chrome/common/chrome_switches.h" 34 #include "chrome/common/chrome_switches.h"
35 #include "chrome/common/pref_names.h" 35 #include "chrome/common/pref_names.h"
36 #include "chrome/test/base/in_process_browser_test.h" 36 #include "chrome/test/base/in_process_browser_test.h"
37 #include "chrome/test/base/ui_test_utils.h" 37 #include "chrome/test/base/ui_test_utils.h"
38 #include "content/public/browser/devtools_agent_host_registry.h" 38 #include "content/public/browser/devtools_agent_host_registry.h"
39 #include "content/public/browser/devtools_client_host.h" 39 #include "content/public/browser/devtools_client_host.h"
40 #include "content/public/browser/devtools_manager.h" 40 #include "content/public/browser/devtools_manager.h"
41 #include "content/public/browser/notification_service.h" 41 #include "content/public/browser/notification_service.h"
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 634
635 void RemoveLinkElementsAndNavigate() const { 635 void RemoveLinkElementsAndNavigate() const {
636 OpenDestURLWithJSImpl("RemoveLinkElementsAndNavigate()"); 636 OpenDestURLWithJSImpl("RemoveLinkElementsAndNavigate()");
637 } 637 }
638 638
639 void ClickToNextPageAfterPrerender() { 639 void ClickToNextPageAfterPrerender() {
640 ui_test_utils::WindowedNotificationObserver new_page_observer( 640 ui_test_utils::WindowedNotificationObserver new_page_observer(
641 content::NOTIFICATION_NAV_ENTRY_COMMITTED, 641 content::NOTIFICATION_NAV_ENTRY_COMMITTED,
642 content::NotificationService::AllSources()); 642 content::NotificationService::AllSources());
643 RenderViewHost* render_view_host = 643 RenderViewHost* render_view_host =
644 current_browser()->GetSelectedWebContents()->GetRenderViewHost(); 644 current_browser()->GetActiveWebContents()->GetRenderViewHost();
645 render_view_host->ExecuteJavascriptInWebFrame( 645 render_view_host->ExecuteJavascriptInWebFrame(
646 string16(), 646 string16(),
647 ASCIIToUTF16("ClickOpenLink()")); 647 ASCIIToUTF16("ClickOpenLink()"));
648 new_page_observer.Wait(); 648 new_page_observer.Wait();
649 } 649 }
650 650
651 void NavigateToNextPageAfterPrerender() const { 651 void NavigateToNextPageAfterPrerender() const {
652 ui_test_utils::NavigateToURL( 652 ui_test_utils::NavigateToURL(
653 current_browser(), 653 current_browser(),
654 test_server()->GetURL("files/prerender/prerender_page.html")); 654 test_server()->GetURL("files/prerender/prerender_page.html"));
(...skipping 11 matching lines...) Expand all
666 // Called after the prerendered page has been navigated to and then away from. 666 // Called after the prerendered page has been navigated to and then away from.
667 // Navigates back through the history to the prerendered page. 667 // Navigates back through the history to the prerendered page.
668 void GoBackToPrerender() { 668 void GoBackToPrerender() {
669 ui_test_utils::WindowedNotificationObserver back_nav_observer( 669 ui_test_utils::WindowedNotificationObserver back_nav_observer(
670 content::NOTIFICATION_NAV_ENTRY_COMMITTED, 670 content::NOTIFICATION_NAV_ENTRY_COMMITTED,
671 content::NotificationService::AllSources()); 671 content::NotificationService::AllSources());
672 current_browser()->GoBack(CURRENT_TAB); 672 current_browser()->GoBack(CURRENT_TAB);
673 back_nav_observer.Wait(); 673 back_nav_observer.Wait();
674 bool original_prerender_page = false; 674 bool original_prerender_page = false;
675 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( 675 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
676 current_browser()->GetSelectedWebContents()->GetRenderViewHost(), L"", 676 current_browser()->GetActiveWebContents()->GetRenderViewHost(), L"",
677 L"window.domAutomationController.send(IsOriginalPrerenderPage())", 677 L"window.domAutomationController.send(IsOriginalPrerenderPage())",
678 &original_prerender_page)); 678 &original_prerender_page));
679 EXPECT_TRUE(original_prerender_page); 679 EXPECT_TRUE(original_prerender_page);
680 } 680 }
681 681
682 // Goes back to the page that was active before the prerender was swapped 682 // Goes back to the page that was active before the prerender was swapped
683 // in. This must be called when the prerendered page is the current page 683 // in. This must be called when the prerendered page is the current page
684 // in the active tab. 684 // in the active tab.
685 void GoBackToPageBeforePrerender() { 685 void GoBackToPageBeforePrerender() {
686 WebContents* tab = current_browser()->GetSelectedWebContents(); 686 WebContents* tab = current_browser()->GetActiveWebContents();
687 ASSERT_TRUE(tab); 687 ASSERT_TRUE(tab);
688 EXPECT_FALSE(tab->IsLoading()); 688 EXPECT_FALSE(tab->IsLoading());
689 ui_test_utils::WindowedNotificationObserver back_nav_observer( 689 ui_test_utils::WindowedNotificationObserver back_nav_observer(
690 content::NOTIFICATION_LOAD_STOP, 690 content::NOTIFICATION_LOAD_STOP,
691 content::Source<NavigationController>(&tab->GetController())); 691 content::Source<NavigationController>(&tab->GetController()));
692 current_browser()->GoBack(CURRENT_TAB); 692 current_browser()->GoBack(CURRENT_TAB);
693 back_nav_observer.Wait(); 693 back_nav_observer.Wait();
694 bool js_result; 694 bool js_result;
695 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( 695 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
696 tab->GetRenderViewHost(), L"", 696 tab->GetRenderViewHost(), L"",
(...skipping 27 matching lines...) Expand all
724 724
725 void DisableJavascriptCalls() { 725 void DisableJavascriptCalls() {
726 call_javascript_ = false; 726 call_javascript_ = false;
727 } 727 }
728 728
729 TaskManagerModel* GetModel() const { 729 TaskManagerModel* GetModel() const {
730 return TaskManager::GetInstance()->model(); 730 return TaskManager::GetInstance()->model();
731 } 731 }
732 732
733 PrerenderManager* GetPrerenderManager() const { 733 PrerenderManager* GetPrerenderManager() const {
734 Profile* profile = 734 Profile* profile = current_browser()->GetActiveTabContents()->profile();
735 current_browser()->GetSelectedTabContentsWrapper()->profile();
736 PrerenderManager* prerender_manager = 735 PrerenderManager* prerender_manager =
737 PrerenderManagerFactory::GetForProfile(profile); 736 PrerenderManagerFactory::GetForProfile(profile);
738 return prerender_manager; 737 return prerender_manager;
739 } 738 }
740 739
741 const PrerenderLinkManager* GetPrerenderLinkManager() const { 740 const PrerenderLinkManager* GetPrerenderLinkManager() const {
742 Profile* profile = 741 Profile* profile = current_browser()->GetActiveTabContents()->profile();
743 current_browser()->GetSelectedTabContentsWrapper()->profile();
744 PrerenderLinkManager* prerender_link_manager = 742 PrerenderLinkManager* prerender_link_manager =
745 PrerenderLinkManagerFactory::GetForProfile(profile); 743 PrerenderLinkManagerFactory::GetForProfile(profile);
746 return prerender_link_manager; 744 return prerender_link_manager;
747 } 745 }
748 746
749 bool IsEmptyPrerenderLinkManager() const { 747 bool IsEmptyPrerenderLinkManager() const {
750 return GetPrerenderLinkManager()->IsEmpty(); 748 return GetPrerenderLinkManager()->IsEmpty();
751 } 749 }
752 750
753 // Returns length of |prerender_manager_|'s history, or -1 on failure. 751 // Returns length of |prerender_manager_|'s history, or -1 on failure.
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 944
947 // Opens the prerendered page using javascript functions in the 945 // Opens the prerendered page using javascript functions in the
948 // loader page. |javascript_function_name| should be a 0 argument function 946 // loader page. |javascript_function_name| should be a 0 argument function
949 // which is invoked. 947 // which is invoked.
950 void OpenDestURLWithJSImpl(const std::string& javascript_function_name) 948 void OpenDestURLWithJSImpl(const std::string& javascript_function_name)
951 const { 949 const {
952 TestPrerenderContents* prerender_contents = GetPrerenderContents(); 950 TestPrerenderContents* prerender_contents = GetPrerenderContents();
953 ASSERT_TRUE(prerender_contents != NULL); 951 ASSERT_TRUE(prerender_contents != NULL);
954 952
955 RenderViewHost* render_view_host = 953 RenderViewHost* render_view_host =
956 current_browser()->GetSelectedWebContents()->GetRenderViewHost(); 954 current_browser()->GetActiveWebContents()->GetRenderViewHost();
957 render_view_host->ExecuteJavascriptInWebFrame( 955 render_view_host->ExecuteJavascriptInWebFrame(
958 string16(), 956 string16(),
959 ASCIIToUTF16(javascript_function_name)); 957 ASCIIToUTF16(javascript_function_name));
960 958
961 // Run message loop until the prerender contents is destroyed. 959 // Run message loop until the prerender contents is destroyed.
962 ui_test_utils::RunMessageLoop(); 960 ui_test_utils::RunMessageLoop();
963 } 961 }
964 962
965 WaitForLoadPrerenderContentsFactory* prerender_contents_factory_; 963 WaitForLoadPrerenderContentsFactory* prerender_contents_factory_;
966 #if defined(ENABLE_SAFE_BROWSING) 964 #if defined(ENABLE_SAFE_BROWSING)
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
1111 NavigateToDestURL(); 1109 NavigateToDestURL();
1112 1110
1113 1111
1114 // Run this check again. When we try to load aa ppapi plugin, the 1112 // Run this check again. When we try to load aa ppapi plugin, the
1115 // "loadstart" event is asynchronously posted to a message loop. 1113 // "loadstart" event is asynchronously posted to a message loop.
1116 // It's possible that earlier call could have been run before the 1114 // It's possible that earlier call could have been run before the
1117 // the "loadstart" event was posted. 1115 // the "loadstart" event was posted.
1118 // TODO(mmenke): While this should reliably fail on regressions, the 1116 // TODO(mmenke): While this should reliably fail on regressions, the
1119 // reliability depends on the specifics of ppapi plugin 1117 // reliability depends on the specifics of ppapi plugin
1120 // loading. It would be great if we could avoid that. 1118 // loading. It would be great if we could avoid that.
1121 WebContents* web_contents = browser()->GetSelectedWebContents(); 1119 WebContents* web_contents = browser()->GetActiveWebContents();
1122 bool display_test_result = false; 1120 bool display_test_result = false;
1123 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( 1121 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
1124 web_contents->GetRenderViewHost(), L"", 1122 web_contents->GetRenderViewHost(), L"",
1125 L"window.domAutomationController.send(DidDisplayPass())", 1123 L"window.domAutomationController.send(DidDisplayPass())",
1126 &display_test_result)); 1124 &display_test_result));
1127 EXPECT_TRUE(display_test_result); 1125 EXPECT_TRUE(display_test_result);
1128 } 1126 }
1129 1127
1130 // Checks that plugins in an iframe are not loaded while a page is 1128 // Checks that plugins in an iframe are not loaded while a page is
1131 // being preloaded, but are loaded when the page is displayed. 1129 // being preloaded, but are loaded when the page is displayed.
(...skipping 890 matching lines...) Expand 10 before | Expand all | Expand 10 after
2022 #if defined(OS_WIN) 2020 #if defined(OS_WIN)
2023 #define MAYBE_PrerenderUnload FLAKY_PrerenderUnload 2021 #define MAYBE_PrerenderUnload FLAKY_PrerenderUnload
2024 #else 2022 #else
2025 #define MAYBE_PrerenderUnload PrerenderUnload 2023 #define MAYBE_PrerenderUnload PrerenderUnload
2026 #endif 2024 #endif
2027 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, MAYBE_PrerenderUnload) { 2025 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, MAYBE_PrerenderUnload) {
2028 set_loader_path("files/prerender/prerender_loader_with_unload.html"); 2026 set_loader_path("files/prerender/prerender_loader_with_unload.html");
2029 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); 2027 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1);
2030 string16 expected_title = ASCIIToUTF16("Unloaded"); 2028 string16 expected_title = ASCIIToUTF16("Unloaded");
2031 ui_test_utils::TitleWatcher title_watcher( 2029 ui_test_utils::TitleWatcher title_watcher(
2032 current_browser()->GetSelectedWebContents(), expected_title); 2030 current_browser()->GetActiveWebContents(), expected_title);
2033 NavigateToDestURL(); 2031 NavigateToDestURL();
2034 EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle()); 2032 EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle());
2035 } 2033 }
2036 2034
2037 // Checks that when the history is cleared, prerendering is cancelled and 2035 // Checks that when the history is cleared, prerendering is cancelled and
2038 // prerendering history is cleared. 2036 // prerendering history is cleared.
2039 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClearHistory) { 2037 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClearHistory) {
2040 PrerenderTestURL("files/prerender/prerender_page.html", 2038 PrerenderTestURL("files/prerender/prerender_page.html",
2041 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED, 2039 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED,
2042 1); 2040 1);
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
2149 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewBackgroundTab) { 2147 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewBackgroundTab) {
2150 PrerenderTestURL("files/prerender/prerender_page_with_link.html", 2148 PrerenderTestURL("files/prerender/prerender_page_with_link.html",
2151 FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH, 2149 FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH,
2152 1); 2150 1);
2153 OpenDestURLViaClickNewBackgroundTab(); 2151 OpenDestURLViaClickNewBackgroundTab();
2154 } 2152 }
2155 2153
2156 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, 2154 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
2157 NavigateToPrerenderedPageWhenDevToolsAttached) { 2155 NavigateToPrerenderedPageWhenDevToolsAttached) {
2158 DisableJavascriptCalls(); 2156 DisableJavascriptCalls();
2159 WebContents* web_contents = current_browser()->GetSelectedWebContents(); 2157 WebContents* web_contents = current_browser()->GetActiveWebContents();
2160 DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( 2158 DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost(
2161 web_contents->GetRenderViewHost()); 2159 web_contents->GetRenderViewHost());
2162 DevToolsManager* manager = DevToolsManager::GetInstance(); 2160 DevToolsManager* manager = DevToolsManager::GetInstance();
2163 FakeDevToolsClientHost client_host; 2161 FakeDevToolsClientHost client_host;
2164 manager->RegisterDevToolsClientHostFor(agent, &client_host); 2162 manager->RegisterDevToolsClientHostFor(agent, &client_host);
2165 const char* url = "files/prerender/prerender_page.html"; 2163 const char* url = "files/prerender/prerender_page.html";
2166 PrerenderTestURL(url, FINAL_STATUS_DEVTOOLS_ATTACHED, 1); 2164 PrerenderTestURL(url, FINAL_STATUS_DEVTOOLS_ATTACHED, 1);
2167 NavigateToURL(url); 2165 NavigateToURL(url);
2168 manager->ClientHostClosing(&client_host); 2166 manager->ClientHostClosing(&client_host);
2169 } 2167 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
2217 // Check that NaCl plugins work when enabled, with prerendering. 2215 // Check that NaCl plugins work when enabled, with prerendering.
2218 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTestWithNaCl, 2216 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTestWithNaCl,
2219 PrerenderNaClPluginEnabled) { 2217 PrerenderNaClPluginEnabled) {
2220 PrerenderTestURL("files/prerender/prerender_plugin_nacl_enabled.html", 2218 PrerenderTestURL("files/prerender/prerender_plugin_nacl_enabled.html",
2221 FINAL_STATUS_USED, 2219 FINAL_STATUS_USED,
2222 1); 2220 1);
2223 NavigateToDestURL(); 2221 NavigateToDestURL();
2224 2222
2225 // To avoid any chance of a race, we have to let the script send its response 2223 // To avoid any chance of a race, we have to let the script send its response
2226 // asynchronously. 2224 // asynchronously.
2227 WebContents* web_contents = browser()->GetSelectedWebContents(); 2225 WebContents* web_contents = browser()->GetActiveWebContents();
2228 bool display_test_result = false; 2226 bool display_test_result = false;
2229 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( 2227 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
2230 web_contents->GetRenderViewHost(), L"", 2228 web_contents->GetRenderViewHost(), L"",
2231 L"DidDisplayReallyPass()", 2229 L"DidDisplayReallyPass()",
2232 &display_test_result)); 2230 &display_test_result));
2233 ASSERT_TRUE(display_test_result); 2231 ASSERT_TRUE(display_test_result);
2234 } 2232 }
2235 2233
2236 // Checks that the referrer policy is used when prerendering. 2234 // Checks that the referrer policy is used when prerendering.
2237 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderReferrerPolicy) { 2235 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderReferrerPolicy) {
2238 set_loader_path("files/prerender/prerender_loader_with_referrer_policy.html"); 2236 set_loader_path("files/prerender/prerender_loader_with_referrer_policy.html");
2239 PrerenderTestURL("files/prerender/prerender_referrer_policy.html", 2237 PrerenderTestURL("files/prerender/prerender_referrer_policy.html",
2240 FINAL_STATUS_USED, 2238 FINAL_STATUS_USED,
2241 1); 2239 1);
2242 NavigateToDestURL(); 2240 NavigateToDestURL();
2243 } 2241 }
2244 2242
2245 // Checks that the referrer policy is used when prerendering on HTTPS. 2243 // Checks that the referrer policy is used when prerendering on HTTPS.
2246 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLReferrerPolicy) { 2244 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLReferrerPolicy) {
2247 set_use_https_src(true); 2245 set_use_https_src(true);
2248 set_loader_path("files/prerender/prerender_loader_with_referrer_policy.html"); 2246 set_loader_path("files/prerender/prerender_loader_with_referrer_policy.html");
2249 PrerenderTestURL("files/prerender/prerender_referrer_policy.html", 2247 PrerenderTestURL("files/prerender/prerender_referrer_policy.html",
2250 FINAL_STATUS_USED, 2248 FINAL_STATUS_USED,
2251 1); 2249 1);
2252 NavigateToDestURL(); 2250 NavigateToDestURL();
2253 } 2251 }
2254 2252
2255 } // namespace prerender 2253 } // namespace prerender
OLDNEW
« no previous file with comments | « chrome/browser/prerender/prefetch_browsertest.cc ('k') | chrome/browser/prerender/prerender_contents.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698