summaryrefslogtreecommitdiffstats
path: root/url/url_parse_unittest.cc
diff options
context:
space:
mode:
authorjoth@chromium.org <joth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-23 01:53:52 +0000
committerjoth@chromium.org <joth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-23 01:53:52 +0000
commit369e84f70d256d188a1866d8cef52edf4468cd9b (patch)
treee7e90408125f4831ce7983fd37414ad763b965b1 /url/url_parse_unittest.cc
parenta7e3691579181327dc65b02d043e7c01d4b06cb9 (diff)
downloadchromium_src-369e84f70d256d188a1866d8cef52edf4468cd9b.zip
chromium_src-369e84f70d256d188a1866d8cef52edf4468cd9b.tar.gz
chromium_src-369e84f70d256d188a1866d8cef52edf4468cd9b.tar.bz2
Support URL fragment resolution against non-hierarchical schemes
Support URL fragment resolution against non-hierarchical schemes As a result, data: about: etc now have 'query' and 'ref' components parsed; as a result a new GURL::GetContent() convenience is added to retrieve the spec with the scheme stripped off. A complication in supporting this is that we now need to allow whitespace to trailing whitespace to be preserved when transferring url_parse::Parsed structs between KURL and GURL. Without this, the URL prior to the #fragment can change (i.e. whitespace stripped) when following an anchor link which breaks the page (causes reload from source). See http://crbug.com/291747 for more details on this. R=brettw@chromium.org TBR=cbentzel@chromium.org BUG=291747 Review URL: https://codereview.chromium.org/23835019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236917 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'url/url_parse_unittest.cc')
-rw-r--r--url/url_parse_unittest.cc16
1 files changed, 8 insertions, 8 deletions
diff --git a/url/url_parse_unittest.cc b/url/url_parse_unittest.cc
index ad47616..f080fb5 100644
--- a/url/url_parse_unittest.cc
+++ b/url/url_parse_unittest.cc
@@ -343,11 +343,11 @@ static PathURLParseCase path_cases[] = {
{":", "", NULL},
{":/", "", "/"},
{"/", NULL, "/"},
-{" This is \\interesting// \t", NULL, "This is \\interesting//"},
+{" This is \\interesting// \t", NULL, "This is \\interesting// \t"},
{"about:", "about", NULL},
{"about:blank", "about", "blank"},
-{" about: blank ", "about", " blank"},
-{"javascript :alert(\"He:/l\\l#o?foo\"); ", "javascript ", "alert(\"He:/l\\l#o?foo\");"},
+{" about: blank ", "about", " blank "},
+{"javascript :alert(\"He:/l\\l#o?foo\"); ", "javascript ", "alert(\"He:/l\\l#o?foo\"); "},
};
TEST(URLParser, PathURL) {
@@ -356,18 +356,18 @@ TEST(URLParser, PathURL) {
url_parse::Parsed parsed;
for (size_t i = 0; i < arraysize(path_cases); i++) {
const char* url = path_cases[i].input;
- url_parse::ParsePathURL(url, static_cast<int>(strlen(url)), &parsed);
+ url_parse::ParsePathURL(url, static_cast<int>(strlen(url)), false, &parsed);
- EXPECT_TRUE(ComponentMatches(url, path_cases[i].scheme, parsed.scheme));
- EXPECT_TRUE(ComponentMatches(url, path_cases[i].path, parsed.path));
+ EXPECT_TRUE(ComponentMatches(url, path_cases[i].scheme, parsed.scheme))
+ << i;
+ EXPECT_TRUE(ComponentMatches(url, path_cases[i].path, parsed.GetContent()))
+ << i;
// The remaining components are never used for path urls.
ExpectInvalidComponent(parsed.username);
ExpectInvalidComponent(parsed.password);
ExpectInvalidComponent(parsed.host);
ExpectInvalidComponent(parsed.port);
- ExpectInvalidComponent(parsed.query);
- ExpectInvalidComponent(parsed.ref);
}
}