Index: url/gurl_unittest.cc |
diff --git a/url/gurl_unittest.cc b/url/gurl_unittest.cc |
index 24dee6c2a65aeca3edb24a69892f500d86b2b783..258ea03e0b2d7e2587fb316f6f69c7f8d14cbe2c 100644 |
--- a/url/gurl_unittest.cc |
+++ b/url/gurl_unittest.cc |
@@ -740,4 +740,77 @@ TEST(GURLTest, ContentAndPathForNonStandardURLs) { |
} |
} |
+TEST(GURLTest, IsAboutBlank) { |
+ const std::string kAboutBlankUrls[] = {"about:blank", "about:blank?foo", |
+ "about:blank/#foo", |
+ "about:blank?foo#foo"}; |
+ for (const auto& url : kAboutBlankUrls) |
+ EXPECT_TRUE(GURL(url).IsAboutBlank()) << url; |
+ |
+ const std::string kNotAboutBlankUrls[] = { |
+ "http:blank", "about:blan", "about://blank", |
+ "about:blank/foo", "about://:8000/blank", "about://foo:foo@/blank", |
+ "foo@about:blank", "foo:bar@about:blank", "about:blank:8000"}; |
+ for (const auto& url : kNotAboutBlankUrls) |
+ EXPECT_FALSE(GURL(url).IsAboutBlank()) << url; |
+} |
+ |
+TEST(GURLTest, EqualsIgnoringRef) { |
+ const struct { |
+ const char* url_a; |
+ const char* url_b; |
+ bool are_equals; |
+ } kTestCases[] = { |
+ // No ref. |
+ {"http://a.com", "http://a.com", true}, |
+ {"http://a.com", "http://b.com", false}, |
+ |
+ // Same Ref. |
+ {"http://a.com#foo", "http://a.com#foo", true}, |
+ {"http://a.com#foo", "http://b.com#foo", false}, |
+ |
+ // Different Refs. |
+ {"http://a.com#foo", "http://a.com#bar", true}, |
+ {"http://a.com#foo", "http://b.com#bar", false}, |
+ |
+ // One has a ref, the other doesn't. |
+ {"http://a.com#foo", "http://a.com", true}, |
+ {"http://a.com#foo", "http://b.com", false}, |
+ |
+ // Empty refs. |
+ {"http://a.com#", "http://a.com#", true}, |
+ {"http://a.com#", "http://a.com", true}, |
+ |
+ // URLs that differ only by their last character. |
+ {"http://aaa", "http://aab", false}, |
+ {"http://aaa#foo", "http://aab#foo", false}, |
+ |
+ // Different size of the part before the ref. |
+ {"http://123#a", "http://123456#a", false}, |
+ |
+ // Blob URLs |
+ {"blob:http://a.com#foo", "blob:http://a.com#foo", true}, |
+ {"blob:http://a.com#foo", "blob:http://a.com#bar", true}, |
+ {"blob:http://a.com#foo", "blob:http://b.com#bar", false}, |
+ |
+ // Filesystem URLs |
+ {"filesystem:http://a.com#foo", "filesystem:http://a.com#foo", true}, |
+ {"filesystem:http://a.com#foo", "filesystem:http://a.com#bar", true}, |
+ {"filesystem:http://a.com#foo", "filesystem:http://b.com#bar", false}, |
+ }; |
+ |
+ for (const auto& test_case : kTestCases) { |
+ SCOPED_TRACE(testing::Message() |
+ << std::endl |
+ << "url_a = " << test_case.url_a << std::endl |
+ << "url_b = " << test_case.url_b << std::endl); |
+ // A versus B. |
+ EXPECT_EQ(test_case.are_equals, |
+ GURL(test_case.url_a).EqualsIgnoringRef(GURL(test_case.url_b))); |
+ // B versus A. |
+ EXPECT_EQ(test_case.are_equals, |
+ GURL(test_case.url_b).EqualsIgnoringRef(GURL(test_case.url_a))); |
+ } |
+} |
+ |
} // namespace url |