diff options
author | joth@chromium.org <joth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-23 01:53:52 +0000 |
---|---|---|
committer | joth@chromium.org <joth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-23 01:53:52 +0000 |
commit | 369e84f70d256d188a1866d8cef52edf4468cd9b (patch) | |
tree | e7e90408125f4831ce7983fd37414ad763b965b1 /url/url_parse_unittest.cc | |
parent | a7e3691579181327dc65b02d043e7c01d4b06cb9 (diff) | |
download | chromium_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.cc | 16 |
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); } } |