| Index: chrome/browser/prerender/prerender_browsertest.cc
|
| diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc
|
| index 9f7d78723166d2f20ab5fb6f2f1446413d16d250..e708dc3988a5424f0db08f11f948a12a140631b1 100644
|
| --- a/chrome/browser/prerender/prerender_browsertest.cc
|
| +++ b/chrome/browser/prerender/prerender_browsertest.cc
|
| @@ -168,18 +168,13 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
|
| }
|
|
|
| void NavigateToDestURL() const {
|
| - ui_test_utils::NavigateToURL(browser(), dest_url_);
|
| -
|
| - // Make sure the PrerenderContents found earlier was used or removed
|
| - EXPECT_TRUE(prerender_manager()->FindEntry(dest_url_) == NULL);
|
| + NavigateToURLImpl(dest_url_);
|
| + }
|
|
|
| - // Check if page behaved as expected when actually displayed.
|
| - bool display_test_result = false;
|
| - ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
|
| - browser()->GetSelectedTabContents()->render_view_host(), L"",
|
| - L"window.domAutomationController.send(DidDisplayPass())",
|
| - &display_test_result));
|
| - EXPECT_TRUE(display_test_result);
|
| + // Should be const but test_server()->GetURL(...) is not const.
|
| + void NavigateToURL(const std::string& dest_html_file) {
|
| + GURL dest_url = test_server()->GetURL(dest_html_file);
|
| + NavigateToURLImpl(dest_url);
|
| }
|
|
|
| bool UrlIsInPrerenderManager(const std::string& html_file) {
|
| @@ -204,8 +199,6 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
|
| return TaskManager::GetInstance()->model();
|
| }
|
|
|
| - void set_dest_url(const GURL& dest_url) { dest_url_ = dest_url; }
|
| -
|
| private:
|
| void PrerenderTestURLImpl(
|
| const std::string& html_file,
|
| @@ -279,6 +272,24 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
|
| }
|
| }
|
|
|
| + void NavigateToURLImpl(const GURL& dest_url) const {
|
| + // Make sure in navigating we have a URL to use in the PrerenderManager.
|
| + EXPECT_TRUE(prerender_manager()->FindEntry(dest_url_) != NULL);
|
| +
|
| + ui_test_utils::NavigateToURL(browser(), dest_url);
|
| +
|
| + // Make sure the PrerenderContents found earlier was used or removed.
|
| + EXPECT_TRUE(prerender_manager()->FindEntry(dest_url_) == NULL);
|
| +
|
| + // Check if page behaved as expected when actually displayed.
|
| + bool display_test_result = false;
|
| + ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
|
| + browser()->GetSelectedTabContents()->render_view_host(), L"",
|
| + L"window.domAutomationController.send(DidDisplayPass())",
|
| + &display_test_result));
|
| + EXPECT_TRUE(display_test_result);
|
| + }
|
| +
|
| PrerenderManager* prerender_manager() const {
|
| Profile* profile = browser()->GetSelectedTabContents()->profile();
|
| PrerenderManager* prerender_manager = profile->GetPrerenderManager();
|
| @@ -362,8 +373,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| CreateClientRedirect("files/prerender/prerender_page.html"),
|
| FINAL_STATUS_USED,
|
| 2);
|
| - set_dest_url(test_server()->GetURL("files/prerender/prerender_page.html"));
|
| - NavigateToDestURL();
|
| + NavigateToURL("files/prerender/prerender_page.html");
|
| }
|
|
|
| // Checks that client-issued redirects to an https page will cancel prerenders.
|
| @@ -441,8 +451,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| CreateServerRedirect("files/prerender/prerender_page.html"),
|
| FINAL_STATUS_USED,
|
| 1);
|
| - set_dest_url(test_server()->GetURL("files/prerender/prerender_page.html"));
|
| - NavigateToDestURL();
|
| + NavigateToURL("files/prerender/prerender_page.html");
|
| }
|
|
|
| // TODO(cbentzel): Add server-redirect-to-https test. http://crbug.com/79182
|
| @@ -671,4 +680,31 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderWindowSize) {
|
| NavigateToDestURL();
|
| }
|
|
|
| +// Checks that we correctly use a prerendered page when navigating to a
|
| +// fragment.
|
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPageNavigateFragment) {
|
| + PrerenderTestURL("files/prerender/prerender_fragment.html",
|
| + FINAL_STATUS_USED,
|
| + 1);
|
| + NavigateToURL("files/prerender/prerender_fragment.html#fragment");
|
| +}
|
| +
|
| +// Checks that we correctly use a prerendered page when we prerender a fragment
|
| +// but navigate to the main page.
|
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderFragmentNavigatePage) {
|
| + PrerenderTestURL("files/prerender/prerender_page.html#fragment",
|
| + FINAL_STATUS_USED,
|
| + 1);
|
| + NavigateToURL("files/prerender/prerender_page.html");
|
| +}
|
| +
|
| +// Checks that we correctly use a prerendered page when we prerender a fragment
|
| +// but navigate to a different fragment on the same page.
|
| +IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
|
| + PrerenderFragmentNavigateFragment) {
|
| + PrerenderTestURL("files/prerender/prerender_fragment.html#other_fragment",
|
| + FINAL_STATUS_USED,
|
| + 1);
|
| + NavigateToURL("files/prerender/prerender_fragment.html#fragment");
|
| +}
|
| } // namespace prerender
|
|
|