summaryrefslogtreecommitdiffstats
path: root/chrome/browser/prerender/prerender_browsertest.cc
diff options
context:
space:
mode:
authorcbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-22 13:04:22 +0000
committercbentzel@chromium.org <cbentzel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-22 13:04:22 +0000
commit2e0a8e5d4e235bac3a687e289de5bdfb6399a1e9 (patch)
treebf26e55e1aad25ed9d6e8c56aeae954c8c85fdbd /chrome/browser/prerender/prerender_browsertest.cc
parent451c8e922efb15de32efbe6083f0e8f0bb6cf719 (diff)
downloadchromium_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.cc90
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