Index: chrome/browser/prerender/prerender_browsertest.cc |
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc |
index 1054bd690bf0407525f1d7e6bfa82b7ba0d1b1f6..08b848ec2bca2fd2afb3430ef2dec5f5c3e0f407 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 |