| 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
|
|
|