summaryrefslogtreecommitdiffstats
path: root/url/gurl.h
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/gurl.h
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/gurl.h')
-rw-r--r--url/gurl.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/url/gurl.h b/url/gurl.h
index d145ab6..dc88fec25 100644
--- a/url/gurl.h
+++ b/url/gurl.h
@@ -358,6 +358,17 @@ class URL_EXPORT GURL {
}
private:
+ // Variant of the string parsing constructor that allows the caller to elect
+ // retain trailing whitespace, if any, on the passed URL spec but only if the
+ // scheme is one that allows trailing whitespace. The primary use-case is
+ // for data: URLs. In most cases, you want to use the single parameter
+ // constructor above.
+ enum RetainWhiteSpaceSelector { RETAIN_TRAILING_PATH_WHITEPACE };
+ GURL(const std::string& url_string, RetainWhiteSpaceSelector);
+
+ template<typename STR>
+ void InitCanonical(const STR& input_spec, bool trim_path_end);
+
void InitializeFromCanonicalSpec();
// Returns the substring of the input identified by the given component.