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

Unified Diff: src/gurl_unittest.cc

Issue 564011: Remove the rule that "://" means a standard URL. This fixes a number of bugs... (Closed) Base URL: http://google-url.googlecode.com/svn/trunk/
Patch Set: '' Created 10 years, 10 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
« no previous file with comments | « src/gurl.cc ('k') | src/url_canon_stdurl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gurl_unittest.cc
===================================================================
--- src/gurl_unittest.cc (revision 122)
+++ src/gurl_unittest.cc (working copy)
@@ -31,35 +31,36 @@
}
}
+// Returns the canonicalized string for the given URL string for the
+// GURLTest.Types test.
+std::string TypesTestCase(const char* src) {
+ GURL gurl(src);
+ return gurl.possibly_invalid_spec();
+}
+
} // namespace
// Different types of URLs should be handled differently by url_util, and
// handed off to different canonicalizers.
TEST(GURLTest, Types) {
- struct TypeTest {
- const char* src;
- const char* expected;
- } type_cases[] = {
- // URLs with "://" should be treated as standard and have a hostname, even
- // when the scheme is unknown.
- {"something:///HOSTNAME.com/", "something://hostname.com/"},
- // In the reverse, lacking a "://" means a path URL so no canonicalization
- // should happen.
- {"something:HOSTNAME.com/", "something:HOSTNAME.com/"},
- {"something:/HOSTNAME.com/", "something:/HOSTNAME.com/"},
+ // URLs with unknown schemes should be treated as path URLs, even when they
+ // have things like "://".
+ EXPECT_EQ("something:///HOSTNAME.com/",
+ TypesTestCase("something:///HOSTNAME.com/"));
+
+ // In the reverse, known schemes should always trigger standard URL handling.
+ EXPECT_EQ("http://hostname.com/", TypesTestCase("http:HOSTNAME.com"));
+ EXPECT_EQ("http://hostname.com/", TypesTestCase("http:/HOSTNAME.com"));
+ EXPECT_EQ("http://hostname.com/", TypesTestCase("http://HOSTNAME.com"));
+ EXPECT_EQ("http://hostname.com/", TypesTestCase("http:///HOSTNAME.com"));
+
#ifdef WIN32
- // URLs that look like absolute Windows drive specs.
- {"c:\\foo.txt", "file:///C:/foo.txt"},
- {"Z|foo.txt", "file:///Z:/foo.txt"},
- {"\\\\server\\foo.txt", "file://server/foo.txt"},
- {"//server/foo.txt", "file://server/foo.txt"},
+ // URLs that look like absolute Windows drive specs.
+ EXPECT_EQ("file:///C:/foo.txt", TypesTestCase("c:\\foo.txt"));
+ EXPECT_EQ("file:///Z:/foo.txt", TypesTestCase("Z|foo.txt"));
+ EXPECT_EQ("file://server/foo.txt", TypesTestCase("\\\\server\\foo.txt"));
+ EXPECT_EQ("file://server/foo.txt", TypesTestCase("//server/foo.txt"));
#endif
- };
-
- for (size_t i = 0; i < ARRAYSIZE(type_cases); i++) {
- GURL gurl(type_cases[i].src);
- EXPECT_STREQ(type_cases[i].expected, gurl.spec().c_str());
- }
}
// Test the basic creation and querying of components in a GURL. We assume
@@ -166,9 +167,7 @@
{"http://www.google.com/blah/bloo?c#d", "../../../hello/./world.html?a#b", true, "http://www.google.com/hello/world.html?a#b"},
{"http://www.google.com/foo#bar", "#com", true, "http://www.google.com/foo#com"},
{"http://www.google.com/", "Https:images.google.com", true, "https://images.google.com/"},
- // Unknown schemes with a "://" should be treated as standard.
- {"somescheme://foo/", "bar", true, "somescheme://foo/bar"},
- // Unknown schemes with no "://" are not standard.
+ // Unknown schemes are not standard.
{"data:blahblah", "http://google.com/", true, "http://google.com/"},
{"data:blahblah", "http:google.com", true, "http://google.com/"},
{"data:/blahblah", "file.html", false, ""},
@@ -178,15 +177,15 @@
// 8-bit code path.
GURL input(resolve_cases[i].base);
GURL output = input.Resolve(resolve_cases[i].relative);
- EXPECT_EQ(resolve_cases[i].expected_valid, output.is_valid());
- EXPECT_EQ(resolve_cases[i].expected, output.spec());
+ EXPECT_EQ(resolve_cases[i].expected_valid, output.is_valid()) << i;
+ EXPECT_EQ(resolve_cases[i].expected, output.spec()) << i;
// Wide code path.
GURL inputw(ConvertUTF8ToUTF16(resolve_cases[i].base));
GURL outputw =
input.Resolve(ConvertUTF8ToUTF16(resolve_cases[i].relative));
- EXPECT_EQ(resolve_cases[i].expected_valid, outputw.is_valid());
- EXPECT_EQ(resolve_cases[i].expected, outputw.spec());
+ EXPECT_EQ(resolve_cases[i].expected_valid, outputw.is_valid()) << i;
+ EXPECT_EQ(resolve_cases[i].expected, outputw.spec()) << i;
}
}
@@ -429,5 +428,5 @@
EXPECT_FALSE(b.IsStandard());
GURL c("foo://bar/baz");
- EXPECT_TRUE(c.IsStandard());
+ EXPECT_FALSE(c.IsStandard());
}
« no previous file with comments | « src/gurl.cc ('k') | src/url_canon_stdurl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698