Chromium Code Reviews| Index: content/browser/web_contents/navigation_controller_impl_unittest.cc | 
| diff --git a/content/browser/web_contents/navigation_controller_impl_unittest.cc b/content/browser/web_contents/navigation_controller_impl_unittest.cc | 
| index f3b95609a6dad83ddb53b37a6995c470b20833d1..e73ef8eed6355c47c418e733aac20b138ecedbca 100644 | 
| --- a/content/browser/web_contents/navigation_controller_impl_unittest.cc | 
| +++ b/content/browser/web_contents/navigation_controller_impl_unittest.cc | 
| @@ -628,6 +628,58 @@ TEST_F(NavigationControllerTest, Reload_GeneratesNewPage) { | 
| EXPECT_FALSE(controller.CanGoForward()); | 
| } | 
| +TEST_F(NavigationControllerTest, ReloadOriginalRequestURL) { | 
| + NavigationControllerImpl& controller = controller_impl(); | 
| + TestNotificationTracker notifications; | 
| + RegisterForAllNavNotifications(¬ifications, &controller); | 
| + | 
| + const GURL original_url("http://foo1"); | 
| + const GURL final_url("http://foo2"); | 
| + | 
| + // Load up the original URL, but get redirected. The NavigationEntry should | 
| + // save both the original URL and the final redirected URL. | 
| 
 
Charlie Reis
2012/07/03 17:22:26
Can you check this using GetURL() and GetOriginalR
 
gone
2012/07/03 18:24:39
Done.
 
 | 
| + controller.LoadURL(original_url, content::Referrer(), | 
| + content::PAGE_TRANSITION_TYPED, std::string()); | 
| + EXPECT_EQ(0U, notifications.size()); | 
| + test_rvh()->SendNavigateWithOriginalRequestURL(0, final_url, original_url); | 
| + EXPECT_TRUE(notifications.Check1AndReset( | 
| + content::NOTIFICATION_NAV_ENTRY_COMMITTED)); | 
| + | 
| + // Reload using the original URL. | 
| + controller.GetActiveEntry()->SetTitle(ASCIIToUTF16("Title")); | 
| + controller.ReloadOriginalRequestURL(false); | 
| + EXPECT_EQ(0U, notifications.size()); | 
| + | 
| + // The reload is pending. The request should point to the original URL. | 
| + EXPECT_EQ(original_url, test_rvh()->last_params()->url); | 
| + EXPECT_EQ(controller.GetEntryCount(), 1); | 
| + EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); | 
| + EXPECT_EQ(controller.GetPendingEntryIndex(), 0); | 
| + EXPECT_TRUE(controller.GetLastCommittedEntry()); | 
| + EXPECT_TRUE(controller.GetPendingEntry()); | 
| 
 
Charlie Reis
2012/07/03 17:22:26
Why not check that the pending entry's URL is the
 
gone
2012/07/03 18:24:39
We need to know where the NavigationController is
 
 | 
| + EXPECT_FALSE(controller.CanGoBack()); | 
| + EXPECT_FALSE(controller.CanGoForward()); | 
| + | 
| + // Make sure the title has been cleared (will be redrawn just after reload). | 
| + // Avoids a stale cached title when the new page being reloaded has no title. | 
| + // See http://crbug.com/96041. | 
| + EXPECT_TRUE(controller.GetActiveEntry()->GetTitle().empty()); | 
| + | 
| + // Send that the navigation has proceeded; say it got redirected again. | 
| + test_rvh()->SendNavigate(0, final_url); | 
| + EXPECT_TRUE(notifications.Check1AndReset( | 
| + content::NOTIFICATION_NAV_ENTRY_COMMITTED)); | 
| + | 
| + // Now the reload is committed. | 
| + EXPECT_EQ(controller.GetEntryCount(), 1); | 
| + EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); | 
| + EXPECT_EQ(controller.GetPendingEntryIndex(), -1); | 
| + EXPECT_TRUE(controller.GetLastCommittedEntry()); | 
| + EXPECT_FALSE(controller.GetPendingEntry()); | 
| + EXPECT_FALSE(controller.CanGoBack()); | 
| + EXPECT_FALSE(controller.CanGoForward()); | 
| +} | 
| + | 
| // Tests what happens when we navigate back successfully | 
| TEST_F(NavigationControllerTest, Back) { | 
| NavigationControllerImpl& controller = controller_impl(); |