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(); |