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

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

Issue 2032903007: Allow about:blank to be considered in-page if origin matches. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix unit tests and add test Created 4 years, 6 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/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 8dbe69da9e2539a86b053121a173f48171c6f9fd..5dfa8cfb1d9b91160ea414ad7389e0926a3de9e2 100644
--- a/content/browser/frame_host/navigation_controller_impl_unittest.cc
+++ b/content/browser/frame_host/navigation_controller_impl_unittest.cc
@@ -3771,59 +3771,65 @@ TEST_F(NavigationControllerTest, IsInPageNavigation) {
// TODO(japhet): We should only trust the renderer if the about:blank
// was the first document in the given frame, but we don't have enough
// information to identify that case currently.
+ // TODO(creis): Update this to verify that the origin of the about:blank page
+ // matches if the URL doesn't look same-origin.
const GURL blank_url(url::kAboutBlankURL);
+ const url::Origin blank_origin;
main_test_rfh()->NavigateAndCommitRendererInitiated(0, true, blank_url);
- EXPECT_TRUE(controller.IsURLInPageNavigation(url, true,
- main_test_rfh()));
+ EXPECT_TRUE(controller.IsURLInPageNavigation(url, url::Origin(url), true,
Charlie Reis 2016/06/06 19:30:54 These unit test changes are just mechanical: passi
Avi (use Gerrit) 2016/06/06 19:46:41 Acknowledged.
+ main_test_rfh()));
// Navigate to URL with no refs.
main_test_rfh()->NavigateAndCommitRendererInitiated(0, false, url);
// Reloading the page is not an in-page navigation.
- EXPECT_FALSE(controller.IsURLInPageNavigation(url, false, main_test_rfh()));
+ EXPECT_FALSE(controller.IsURLInPageNavigation(url, url::Origin(url), false,
+ main_test_rfh()));
const GURL other_url("http://www.google.com/add.html");
- EXPECT_FALSE(controller.IsURLInPageNavigation(other_url, false,
- main_test_rfh()));
+ EXPECT_FALSE(controller.IsURLInPageNavigation(
+ other_url, url::Origin(other_url), false, main_test_rfh()));
const GURL url_with_ref("http://www.google.com/home.html#my_ref");
- EXPECT_TRUE(controller.IsURLInPageNavigation(url_with_ref, true,
- main_test_rfh()));
+ EXPECT_TRUE(controller.IsURLInPageNavigation(
+ url_with_ref, url::Origin(url_with_ref), true, main_test_rfh()));
// Navigate to URL with refs.
main_test_rfh()->NavigateAndCommitRendererInitiated(1, true, url_with_ref);
// Reloading the page is not an in-page navigation.
- EXPECT_FALSE(controller.IsURLInPageNavigation(url_with_ref, false,
- main_test_rfh()));
- EXPECT_FALSE(controller.IsURLInPageNavigation(url, false,
- main_test_rfh()));
- EXPECT_FALSE(controller.IsURLInPageNavigation(other_url, false,
- main_test_rfh()));
+ EXPECT_FALSE(controller.IsURLInPageNavigation(
+ url_with_ref, url::Origin(url_with_ref), false, main_test_rfh()));
+ EXPECT_FALSE(controller.IsURLInPageNavigation(url, url::Origin(url), false,
+ main_test_rfh()));
+ EXPECT_FALSE(controller.IsURLInPageNavigation(
+ other_url, url::Origin(other_url), false, main_test_rfh()));
const GURL other_url_with_ref("http://www.google.com/home.html#my_other_ref");
- EXPECT_TRUE(controller.IsURLInPageNavigation(other_url_with_ref, true,
- main_test_rfh()));
+ EXPECT_TRUE(controller.IsURLInPageNavigation(other_url_with_ref,
+ url::Origin(other_url_with_ref),
+ true, main_test_rfh()));
// 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.
- EXPECT_TRUE(controller.IsURLInPageNavigation(url_with_ref, true,
- main_test_rfh()));
+ EXPECT_TRUE(controller.IsURLInPageNavigation(
+ url_with_ref, url::Origin(url_with_ref), true, main_test_rfh()));
// Going back to the non ref url will be considered in-page if the navigation
// type is IN_PAGE.
- EXPECT_TRUE(controller.IsURLInPageNavigation(url, true,
- main_test_rfh()));
+ EXPECT_TRUE(controller.IsURLInPageNavigation(url, url::Origin(url), true,
+ main_test_rfh()));
// 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,
- main_test_rfh()));
+ EXPECT_TRUE(controller.IsURLInPageNavigation(
+ other_url, url::Origin(other_url), true, main_test_rfh()));
// Don't believe the renderer if it claims a cross-origin navigation is
// in-page.
const GURL different_origin_url("http://www.example.com");
MockRenderProcessHost* rph = main_test_rfh()->GetProcess();
EXPECT_EQ(0, rph->bad_msg_count());
- EXPECT_FALSE(controller.IsURLInPageNavigation(different_origin_url, true,
- main_test_rfh()));
+ EXPECT_FALSE(controller.IsURLInPageNavigation(
+ different_origin_url, url::Origin(different_origin_url), true,
+ main_test_rfh()));
EXPECT_EQ(1, rph->bad_msg_count());
}
@@ -3848,7 +3854,8 @@ TEST_F(NavigationControllerTest, IsInPageNavigationWithUniversalFileAccess) {
EXPECT_TRUE(file_origin.IsSameOriginWith(
main_test_rfh()->frame_tree_node()->current_origin()));
EXPECT_EQ(0, rph->bad_msg_count());
- EXPECT_TRUE(controller.IsURLInPageNavigation(different_origin_url, true,
+ EXPECT_TRUE(controller.IsURLInPageNavigation(
+ different_origin_url, url::Origin(different_origin_url), true,
main_test_rfh()));
EXPECT_EQ(0, rph->bad_msg_count());
@@ -3874,15 +3881,16 @@ TEST_F(NavigationControllerTest, IsInPageNavigationWithUniversalFileAccess) {
// so that a file URL would still be in-page. See https://crbug.com/553418.
EXPECT_TRUE(file_origin.IsSameOriginWith(
main_test_rfh()->frame_tree_node()->current_origin()));
- EXPECT_TRUE(
- controller.IsURLInPageNavigation(file_url, true, main_test_rfh()));
+ EXPECT_TRUE(controller.IsURLInPageNavigation(file_url, url::Origin(file_url),
+ true, main_test_rfh()));
EXPECT_EQ(0, rph->bad_msg_count());
// Don't honor allow_universal_access_from_file_urls if actual URL is
// not file scheme.
const GURL url("http://www.google.com/home.html");
main_test_rfh()->NavigateAndCommitRendererInitiated(2, true, url);
- EXPECT_FALSE(controller.IsURLInPageNavigation(different_origin_url, true,
+ EXPECT_FALSE(controller.IsURLInPageNavigation(
+ different_origin_url, url::Origin(different_origin_url), true,
main_test_rfh()));
EXPECT_EQ(1, rph->bad_msg_count());
}

Powered by Google App Engine
This is Rietveld 408576698