Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(313)

Unified Diff: chrome/browser/prerender/prerender_browsertest.cc

Issue 6880139: Changing URL match method to support fragments. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Replace _refresh.html with CreateClientRedirect. Ensure location is correct." Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_contents.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..c3fe86bc0b7ce0563c6ec436871e51e025811cee 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
@@ -542,7 +551,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPopup) {
// Checks that renderers using excessive memory will be terminated.
-// Disabled, http://crbug.com/80324.
+// Disabled, http://crbug.com/77870.
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
DISABLED_PrerenderExcessiveMemory) {
PrerenderTestURL("files/prerender/prerender_excessive_memory.html",
@@ -551,7 +560,7 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
}
// Checks that we don't prerender in an infinite loop.
-// Disabled, http://crbug.com/77323.
+// Disabled, http://crbug.com/80324.
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, DISABLED_PrerenderInfiniteLoop) {
const char* const kHtmlFileA = "prerender_infinite_a.html";
const char* const kHtmlFileB = "prerender_infinite_b.html";
@@ -671,4 +680,54 @@ 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");
+}
+
+// Checks that we correctly use a prerendered page when the page uses meta
+// http-equiv to refresh to a fragment on the same page.
+IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
+ PrerenderClientRedirectToFragment) {
+ PrerenderTestURL(
+ CreateClientRedirect("files/prerender/prerender_fragment.html#fragment"),
+ FINAL_STATUS_USED,
+ 2);
+ NavigateToURL(
+ CreateClientRedirect("files/prerender/prerender_fragment.html"));
+}
+
+// Checks that we correctly use a prerendered page when the page uses JS to set
+// the window.location.hash to a fragment on the same page.
+IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
+ PrerenderPageChangeFragmentLocationHash) {
+ PrerenderTestURL("files/prerender/prerender_fragment_location_hash.html",
+ FINAL_STATUS_USED,
+ 1);
+ NavigateToURL("files/prerender/prerender_fragment_location_hash.html");
+}
+
} // namespace prerender
« no previous file with comments | « no previous file | chrome/browser/prerender/prerender_contents.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698