Index: chrome/browser/prerender/prerender_browsertest.cc |
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc |
index 7239181c9037cdbaa5a1ca74ec0cd72a95a5a4f5..6e7783413d5f44d81efd4dc61952ef203e070c7d 100644 |
--- a/chrome/browser/prerender/prerender_browsertest.cc |
+++ b/chrome/browser/prerender/prerender_browsertest.cc |
@@ -54,6 +54,8 @@ |
#include "content/public/browser/devtools_agent_host.h" |
#include "content/public/browser/devtools_client_host.h" |
#include "content/public/browser/devtools_manager.h" |
+#include "content/public/browser/navigation_controller.h" |
+#include "content/public/browser/navigation_entry.h" |
#include "content/public/browser/notification_service.h" |
#include "content/public/browser/render_process_host.h" |
#include "content/public/browser/render_view_host.h" |
@@ -100,9 +102,11 @@ namespace prerender { |
namespace { |
+const char* kBlankURL = "about:blank"; |
mmenke
2013/12/12 15:52:12
Should probable just use content::kAboutBlankURL (
davidben
2013/12/12 16:58:47
Done.
|
+ |
// Constants used in the test HTML files. |
-static const char* kReadyTitle = "READY"; |
-static const char* kPassTitle = "PASS"; |
+const char* kReadyTitle = "READY"; |
+const char* kPassTitle = "PASS"; |
std::string CreateClientRedirect(const std::string& dest_url) { |
const char* const kClientRedirectBase = "client-redirect?"; |
@@ -829,7 +833,7 @@ class PrerenderBrowserTest : virtual public InProcessBrowserTest { |
void NavigateToDestURLInNewTab() const { |
// First, open a new tab. |
current_browser()->OpenURL( |
- content::OpenURLParams(GURL("chrome://blank"), Referrer(), |
+ content::OpenURLParams(GURL(kBlankURL), Referrer(), |
Charlie Reis
2013/12/12 02:46:38
This looks like an improvement to me, though it's
davidben
2013/12/12 16:58:47
It gives me ERR_INVALID_URL. But when I tried asse
Charlie Reis
2013/12/12 17:30:35
That could be FilterURL rewriting an illegal URL a
davidben
2013/12/13 01:00:39
(Turns out I'm actually confused and this function
|
NEW_FOREGROUND_TAB, |
content::PAGE_TRANSITION_TYPED, false)); |
// Next, navigate to the destination URL. The swap-in will not succeed, |
@@ -3348,4 +3352,23 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPageNewTab) { |
NavigateToDestURLInNewTab(); |
} |
+// Checks that prerenders honor |should_replace_current_entry|. |
+IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderReplaceCurrentEntry) { |
+ PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
+ |
+ content::OpenURLParams params(dest_url(), Referrer(), CURRENT_TAB, |
+ content::PAGE_TRANSITION_TYPED, false); |
+ params.should_replace_current_entry = true; |
+ NavigateToURLWithParams(params, false); |
+ |
+ WebContents* web_contents = |
+ current_browser()->tab_strip_model()->GetActiveWebContents(); |
+ const NavigationController& controller = web_contents->GetController(); |
+ // First entry is about:blank, second is prerender_page.html. |
+ EXPECT_TRUE(controller.GetPendingEntry() == NULL); |
+ EXPECT_EQ(2, controller.GetEntryCount()); |
+ EXPECT_EQ(GURL(kBlankURL), controller.GetEntryAtIndex(0)->GetURL()); |
+ EXPECT_EQ(dest_url(), controller.GetEntryAtIndex(1)->GetURL()); |
+} |
+ |
} // namespace prerender |