| Index: content/browser/frame_host/navigation_controller_impl_unittest.cc
|
| diff --git a/content/browser/frame_host/navigation_controller_impl_unittest.cc b/content/browser/frame_host/navigation_controller_impl_unittest.cc
|
| index 603fac5bcfda95240e3d7a3f3cf32d4af178d8b8..1baef8d8b7252d5e75f8f79d8bc4559b14367dd9 100644
|
| --- a/content/browser/frame_host/navigation_controller_impl_unittest.cc
|
| +++ b/content/browser/frame_host/navigation_controller_impl_unittest.cc
|
| @@ -2163,6 +2163,7 @@ TEST_F(NavigationControllerTest, InPage_Replace) {
|
| params.gesture = NavigationGestureUser;
|
| params.is_post = false;
|
| params.page_state = PageState::CreateFromURL(url2);
|
| + params.was_within_same_page = true;
|
|
|
| // This should NOT generate a new entry, nor prune the list.
|
| LoadCommittedDetails details;
|
| @@ -2214,6 +2215,7 @@ TEST_F(NavigationControllerTest, ClientRedirectAfterInPageNavigation) {
|
| params.gesture = NavigationGestureUnknown;
|
| params.is_post = false;
|
| params.page_state = PageState::CreateFromURL(url);
|
| + params.was_within_same_page = true;
|
|
|
| // This should NOT generate a new entry, nor prune the list.
|
| LoadCommittedDetails details;
|
| @@ -3064,21 +3066,28 @@ TEST_F(NavigationControllerTest, IsInPageNavigation) {
|
| main_test_rfh()->SendNavigate(0, url);
|
|
|
| // Reloading the page is not an in-page navigation.
|
| - EXPECT_FALSE(controller.IsURLInPageNavigation(url));
|
| + EXPECT_FALSE(controller.IsURLInPageNavigation(url, false,
|
| + NAVIGATION_TYPE_UNKNOWN));
|
| const GURL other_url("http://www.google.com/add.html");
|
| - EXPECT_FALSE(controller.IsURLInPageNavigation(other_url));
|
| + EXPECT_FALSE(controller.IsURLInPageNavigation(other_url, false,
|
| + NAVIGATION_TYPE_UNKNOWN));
|
| const GURL url_with_ref("http://www.google.com/home.html#my_ref");
|
| - EXPECT_TRUE(controller.IsURLInPageNavigation(url_with_ref));
|
| + EXPECT_TRUE(controller.IsURLInPageNavigation(url_with_ref, true,
|
| + NAVIGATION_TYPE_UNKNOWN));
|
|
|
| // Navigate to URL with refs.
|
| main_test_rfh()->SendNavigate(1, url_with_ref);
|
|
|
| // Reloading the page is not an in-page navigation.
|
| - EXPECT_FALSE(controller.IsURLInPageNavigation(url_with_ref));
|
| - EXPECT_FALSE(controller.IsURLInPageNavigation(url));
|
| - EXPECT_FALSE(controller.IsURLInPageNavigation(other_url));
|
| + EXPECT_FALSE(controller.IsURLInPageNavigation(url_with_ref, false,
|
| + NAVIGATION_TYPE_UNKNOWN));
|
| + EXPECT_FALSE(controller.IsURLInPageNavigation(url, false,
|
| + NAVIGATION_TYPE_UNKNOWN));
|
| + EXPECT_FALSE(controller.IsURLInPageNavigation(other_url, false,
|
| + NAVIGATION_TYPE_UNKNOWN));
|
| const GURL other_url_with_ref("http://www.google.com/home.html#my_other_ref");
|
| - EXPECT_TRUE(controller.IsURLInPageNavigation(other_url_with_ref));
|
| + EXPECT_TRUE(controller.IsURLInPageNavigation(other_url_with_ref, true,
|
| + NAVIGATION_TYPE_UNKNOWN));
|
|
|
| // Going to the same url again will be considered in-page
|
| // if the renderer says it is even if the navigation type isn't IN_PAGE.
|
| @@ -3089,6 +3098,17 @@ TEST_F(NavigationControllerTest, IsInPageNavigation) {
|
| // type is IN_PAGE.
|
| EXPECT_TRUE(controller.IsURLInPageNavigation(url, true,
|
| NAVIGATION_TYPE_IN_PAGE));
|
| +
|
| + // If the renderer says this is a same-origin in-page navigation, believe it.
|
| + // This is the pushState/replaceState case.
|
| + EXPECT_TRUE(controller.IsURLInPageNavigation(other_url, true,
|
| + NAVIGATION_TYPE_UNKNOWN));
|
| +
|
| + // Don't believe the renderer if it claims a cross-origin navigation is
|
| + // in-page.
|
| + const GURL different_origin_url("http://www.example.com");
|
| + EXPECT_FALSE(controller.IsURLInPageNavigation(different_origin_url, true,
|
| + NAVIGATION_TYPE_UNKNOWN));
|
| }
|
|
|
| // Some pages can have subframes with the same base URL (minus the reference) as
|
|
|