summaryrefslogtreecommitdiffstats
path: root/content/browser/frame_host/navigation_controller_impl_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser/frame_host/navigation_controller_impl_unittest.cc')
-rw-r--r--content/browser/frame_host/navigation_controller_impl_unittest.cc34
1 files changed, 27 insertions, 7 deletions
diff --git a/content/browser/frame_host/navigation_controller_impl_unittest.cc b/content/browser/frame_host/navigation_controller_impl_unittest.cc
index 9bde501..6bb3d0e 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;
@@ -3077,21 +3079,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.
@@ -3102,6 +3111,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