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

Unified Diff: content/browser/web_contents/navigation_controller_impl_unittest.cc

Issue 10870073: Change how NavigationController reloads transient entries (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Remove outdated comment Created 8 years, 4 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
Index: content/browser/web_contents/navigation_controller_impl_unittest.cc
===================================================================
--- content/browser/web_contents/navigation_controller_impl_unittest.cc (revision 153076)
+++ content/browser/web_contents/navigation_controller_impl_unittest.cc (working copy)
@@ -2064,7 +2064,7 @@
test_rvh()->SendNavigate(3, url3);
EXPECT_EQ(url3, controller.GetVisibleEntry()->GetURL());
- // Ensure the URLS are correct.
+ // Ensure the URLs are correct.
EXPECT_EQ(controller.GetEntryCount(), 5);
EXPECT_EQ(controller.GetEntryAtIndex(0)->GetURL(), url0);
EXPECT_EQ(controller.GetEntryAtIndex(1)->GetURL(), url1);
@@ -2073,6 +2073,44 @@
EXPECT_EQ(controller.GetEntryAtIndex(4)->GetURL(), url4);
}
+// Test that Reload initiates a new navigation to a transient entry's URL.
+TEST_F(NavigationControllerTest, ReloadTransient) {
+ NavigationControllerImpl& controller = controller_impl();
+ const GURL url0("http://foo/0");
+ const GURL url1("http://foo/1");
+ const GURL transient_url("http://foo/transient");
+
+ // Load |url0|, and start a pending navigation to |url1|.
+ controller.LoadURL(
+ url0, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
+ test_rvh()->SendNavigate(0, url0);
+ controller.LoadURL(
+ url1, content::Referrer(), content::PAGE_TRANSITION_TYPED, std::string());
+
+ // A transient entry is added, interrupting the navigation.
+ NavigationEntryImpl* transient_entry = new NavigationEntryImpl;
+ transient_entry->SetURL(transient_url);
+ controller.AddTransientEntry(transient_entry);
+ EXPECT_TRUE(controller.GetTransientEntry());
+ EXPECT_EQ(transient_url, controller.GetActiveEntry()->GetURL());
+
+ // The page is reloaded, which should remove the pending entry for |url1| and
+ // the transient entry for |transient_url|, and start a navigation to
+ // |transient_url|.
+ controller.Reload(true);
+ EXPECT_FALSE(controller.GetTransientEntry());
+ EXPECT_TRUE(controller.GetPendingEntry());
+ EXPECT_EQ(transient_url, controller.GetActiveEntry()->GetURL());
+ ASSERT_EQ(controller.GetEntryCount(), 1);
+ EXPECT_EQ(controller.GetEntryAtIndex(0)->GetURL(), url0);
+
+ // Load of |transient_url| completes.
+ test_rvh()->SendNavigate(1, transient_url);
+ ASSERT_EQ(controller.GetEntryCount(), 2);
+ EXPECT_EQ(controller.GetEntryAtIndex(0)->GetURL(), url0);
+ EXPECT_EQ(controller.GetEntryAtIndex(1)->GetURL(), transient_url);
+}
+
// Tests that the URLs for renderer-initiated navigations are not displayed to
// the user until the navigation commits, to prevent URL spoof attacks.
// See http://crbug.com/99016.

Powered by Google App Engine
This is Rietveld 408576698