diff options
author | cbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-22 13:04:22 +0000 |
---|---|---|
committer | cbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-22 13:04:22 +0000 |
commit | 2e0a8e5d4e235bac3a687e289de5bdfb6399a1e9 (patch) | |
tree | bf26e55e1aad25ed9d6e8c56aeae954c8c85fdbd /chrome/browser/prerender/prerender_browsertest.cc | |
parent | 451c8e922efb15de32efbe6083f0e8f0bb6cf719 (diff) | |
download | chromium_src-2e0a8e5d4e235bac3a687e289de5bdfb6399a1e9.zip chromium_src-2e0a8e5d4e235bac3a687e289de5bdfb6399a1e9.tar.gz chromium_src-2e0a8e5d4e235bac3a687e289de5bdfb6399a1e9.tar.bz2 |
Prerender enabled in incognito.
This fixes the earlier attempt (http://crrev.com/127763) by increasing the memory allowed for prerendered tabs in the incognito PrerenderManager during tests as well.
BUG=108982
TEST=Open in incognito window, go to prerender-test.appspot.com and confirm that prerender works. Also, PrerenderBrowserTest.PrerenderIncognito.
Review URL: http://codereview.chromium.org/9815005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128197 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/prerender/prerender_browsertest.cc')
-rw-r--r-- | chrome/browser/prerender/prerender_browsertest.cc | 90 |
1 files changed, 62 insertions, 28 deletions
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc index 1054bd69..08b848e 100644 --- a/chrome/browser/prerender/prerender_browsertest.cc +++ b/chrome/browser/prerender/prerender_browsertest.cc @@ -443,7 +443,8 @@ class PrerenderBrowserTest : public InProcessBrowserTest { #endif use_https_src_server_(false), call_javascript_(true), - loader_path_("files/prerender/prerender_loader.html") { + loader_path_("files/prerender/prerender_loader.html"), + explicitly_set_browser_(NULL) { EnableDOMAutomation(); } @@ -470,13 +471,9 @@ class PrerenderBrowserTest : public InProcessBrowserTest { } virtual void SetUpOnMainThread() OVERRIDE { - browser()->profile()->GetPrefs()->SetBoolean(prefs::kPromptForDownload, - false); - // Increase the memory allowed in a prerendered page above normal settings. - // Debug build bots occasionally run against the default limit, and tests - // were failing because the prerender was canceled due to memory exhaustion. - // http://crbug.com/93076 - prerender_manager()->mutable_config().max_bytes = 1000 * 1024 * 1024; + current_browser()->profile()->GetPrefs()->SetBoolean( + prefs::kPromptForDownload, false); + IncreasePrerenderMemory(); ASSERT_TRUE(test_server()->Start()); } @@ -665,7 +662,8 @@ class PrerenderBrowserTest : public InProcessBrowserTest { } PrerenderManager* prerender_manager() const { - Profile* profile = browser()->GetSelectedTabContentsWrapper()->profile(); + Profile* profile = + current_browser()->GetSelectedTabContentsWrapper()->profile(); PrerenderManager* prerender_manager = PrerenderManagerFactory::GetForProfile(profile); return prerender_manager; @@ -709,6 +707,25 @@ class PrerenderBrowserTest : public InProcessBrowserTest { return GURL(url_str); } + void set_browser(Browser* browser) { + explicitly_set_browser_ = browser; + } + + Browser* current_browser() const { + if (explicitly_set_browser_) + return explicitly_set_browser_; + else + return browser(); + } + + void IncreasePrerenderMemory() { + // Increase the memory allowed in a prerendered page above normal settings. + // Debug build bots occasionally run against the default limit, and tests + // were failing because the prerender was canceled due to memory exhaustion. + // http://crbug.com/93076 + prerender_manager()->mutable_config().max_bytes = 1000 * 1024 * 1024; + } + private: void PrerenderTestURLImpl( const GURL& prerender_url, @@ -755,7 +772,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest { // Since the test needs to wait until the prerendered page has stopped // loading, rather than the page directly navigated to, need to // handle browser navigation directly. - browser()->OpenURL(OpenURLParams( + current_browser()->OpenURL(OpenURLParams( src_url, Referrer(), CURRENT_TAB, content::PAGE_TRANSITION_TYPED, false)); @@ -787,6 +804,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest { void NavigateToURLImpl(const GURL& dest_url, WindowOpenDisposition disposition) const { + ASSERT_TRUE(prerender_manager() != NULL); // Make sure in navigating we have a URL to use in the PrerenderManager. ASSERT_TRUE(GetPrerenderContents() != NULL); @@ -816,7 +834,8 @@ class PrerenderBrowserTest : public InProcessBrowserTest { // issued navigations to prerendered pages will synchronously swap in the // prerendered page. ui_test_utils::NavigateToURLWithDisposition( - browser(), dest_url, disposition, ui_test_utils::BROWSER_TEST_NONE); + current_browser(), dest_url, disposition, + ui_test_utils::BROWSER_TEST_NONE); // Make sure the PrerenderContents found earlier was used or removed. EXPECT_TRUE(GetPrerenderContents() == NULL); @@ -843,7 +862,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest { ASSERT_TRUE(prerender_contents != NULL); RenderViewHost* render_view_host = - browser()->GetSelectedWebContents()->GetRenderViewHost(); + current_browser()->GetSelectedWebContents()->GetRenderViewHost(); render_view_host->ExecuteJavascriptInWebFrame( string16(), ASCIIToUTF16(javascript_function_name)); @@ -860,6 +879,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest { bool use_https_src_server_; bool call_javascript_; std::string loader_path_; + Browser* explicitly_set_browser_; }; // Checks that a page is correctly prerendered in the case of a @@ -870,6 +890,18 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPage) { NavigateToDestURL(); } +// Checks that prerendering works in incognito mode. +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderIncognito) { + Profile* normal_profile = current_browser()->profile(); + ui_test_utils::OpenURLOffTheRecord(normal_profile, GURL("about:blank")); + set_browser(BrowserList::FindBrowserWithProfile( + normal_profile->GetOffTheRecordProfile())); + // Increase memory expectations on the incognito PrerenderManager. + IncreasePrerenderMemory(); + PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); + NavigateToDestURL(); +} + // Checks that the visibility API works. IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderVisibility) { PrerenderTestURL("files/prerender/prerender_visibility.html", @@ -921,7 +953,9 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, MAYBE_PrerenderDelayLoadPlugin) { // is enabled. IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickToPlay) { // Enable click-to-play. - browser()->profile()->GetHostContentSettingsMap()->SetDefaultContentSetting( + HostContentSettingsMap* content_settings_map = + current_browser()->profile()->GetHostContentSettingsMap(); + content_settings_map->SetDefaultContentSetting( CONTENT_SETTINGS_TYPE_PLUGINS, CONTENT_SETTING_ASK); PrerenderTestURL("files/prerender/prerender_plugin_click_to_play.html", @@ -1315,7 +1349,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderInfiniteLoopMultiple) { IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderTaskManager) { // Show the task manager. This populates the model. - browser()->window()->ShowTaskManager(); + current_browser()->window()->ShowTaskManager(); // Wait for the model of task manager to start. TaskManagerBrowserTestUtil::WaitForResourceChange(2); @@ -1848,8 +1882,8 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderUnload) { set_loader_path("files/prerender/prerender_loader_with_unload.html"); PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); string16 expected_title = ASCIIToUTF16("Unloaded"); - ui_test_utils::TitleWatcher title_watcher(browser()->GetSelectedWebContents(), - expected_title); + ui_test_utils::TitleWatcher title_watcher( + current_browser()->GetSelectedWebContents(), expected_title); NavigateToDestURL(); EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle()); } @@ -1865,7 +1899,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClearHistory) { // destroys the prerender. MessageLoop::current()->PostTask( FROM_HERE, - base::Bind(&ClearBrowsingData, browser(), + base::Bind(&ClearBrowsingData, current_browser(), BrowsingDataRemover::REMOVE_HISTORY)); ui_test_utils::RunMessageLoop(); @@ -1883,7 +1917,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClearCache) { // Post a task to clear the cache, and run the message loop until it // destroys the prerender. MessageLoop::current()->PostTask(FROM_HERE, - base::Bind(&ClearBrowsingData, browser(), + base::Bind(&ClearBrowsingData, current_browser(), BrowsingDataRemover::REMOVE_CACHE)); ui_test_utils::RunMessageLoop(); @@ -1915,8 +1949,8 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderNavigateClickGoBack) { FINAL_STATUS_USED, 1); NavigateToDestURL(); - ClickToNextPageAfterPrerender(browser()); - GoBackToPrerender(browser()); + ClickToNextPageAfterPrerender(current_browser()); + GoBackToPrerender(current_browser()); } IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, @@ -1925,8 +1959,8 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, FINAL_STATUS_USED, 1); NavigateToDestURL(); - NavigateToNextPageAfterPrerender(browser()); - GoBackToPrerender(browser()); + NavigateToNextPageAfterPrerender(current_browser()); + GoBackToPrerender(current_browser()); } IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickClickGoBack) { @@ -1934,8 +1968,8 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickClickGoBack) { FINAL_STATUS_USED, 1); OpenDestURLViaClick(); - ClickToNextPageAfterPrerender(browser()); - GoBackToPrerender(browser()); + ClickToNextPageAfterPrerender(current_browser()); + GoBackToPrerender(current_browser()); } IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNavigateGoBack) { @@ -1943,8 +1977,8 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNavigateGoBack) { FINAL_STATUS_USED, 1); OpenDestURLViaClick(); - NavigateToNextPageAfterPrerender(browser()); - GoBackToPrerender(browser()); + NavigateToNextPageAfterPrerender(current_browser()); + GoBackToPrerender(current_browser()); } IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewWindow) { @@ -1971,7 +2005,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewBackgroundTab) { IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, NavigateToPrerenderedPageWhenDevToolsAttached) { DisableJavascriptCalls(); - WebContents* web_contents = browser()->GetSelectedWebContents(); + WebContents* web_contents = current_browser()->GetSelectedWebContents(); DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( web_contents->GetRenderViewHost()); DevToolsManager* manager = DevToolsManager::GetInstance(); @@ -1991,7 +2025,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSessionStorage) { FINAL_STATUS_USED, 1); NavigateToDestURL(); - GoBackToPageBeforePrerender(browser()); + GoBackToPageBeforePrerender(current_browser()); } // Checks that the control group works. A JS alert cannot be detected in the |