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

Side by Side Diff: components/url_formatter/url_formatter.h

Issue 1258813002: Implement a new IDN display policy (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: typo fix Created 5 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // url_formatter contains routines for formatting URLs in a way that can be 5 // url_formatter contains routines for formatting URLs in a way that can be
6 // safely and securely displayed to users. For example, it is responsible 6 // safely and securely displayed to users. For example, it is responsible
7 // for determining when to convert an IDN A-Label (e.g. "xn--[something]") 7 // for determining when to convert an IDN A-Label (e.g. "xn--[something]")
8 // into the IDN U-Label. 8 // into the IDN U-Label.
9 // 9 //
10 // Note that this formatting is only intended for display purposes; it would 10 // Note that this formatting is only intended for display purposes; it would
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 // If the scheme is 'http://', it's removed. 45 // If the scheme is 'http://', it's removed.
46 extern const FormatUrlType kFormatUrlOmitHTTP; 46 extern const FormatUrlType kFormatUrlOmitHTTP;
47 47
48 // Omits the path if it is just a slash and there is no query or ref. This is 48 // Omits the path if it is just a slash and there is no query or ref. This is
49 // meaningful for non-file "standard" URLs. 49 // meaningful for non-file "standard" URLs.
50 extern const FormatUrlType kFormatUrlOmitTrailingSlashOnBareHostname; 50 extern const FormatUrlType kFormatUrlOmitTrailingSlashOnBareHostname;
51 51
52 // Convenience for omitting all unecessary types. 52 // Convenience for omitting all unecessary types.
53 extern const FormatUrlType kFormatUrlOmitAll; 53 extern const FormatUrlType kFormatUrlOmitAll;
54 54
55 // Creates a string representation of |url|. The IDN host name may be in Unicode 55 // Creates a string representation of |url|. The IDN host name is turned to
56 // if |languages| accepts the Unicode representation. |format_type| is a bitmask 56 // Unicode if the Unicode representation is deemed safe. |languages| is not
57 // used any more and will be removed. |format_type| is a bitmask
57 // of FormatUrlTypes, see it for details. |unescape_rules| defines how to clean 58 // of FormatUrlTypes, see it for details. |unescape_rules| defines how to clean
58 // the URL for human readability. You will generally want |UnescapeRule::SPACES| 59 // the URL for human readability. You will generally want |UnescapeRule::SPACES|
59 // for display to the user if you can handle spaces, or |UnescapeRule::NORMAL| 60 // for display to the user if you can handle spaces, or |UnescapeRule::NORMAL|
60 // if not. If the path part and the query part seem to be encoded in %-encoded 61 // if not. If the path part and the query part seem to be encoded in %-encoded
61 // UTF-8, decodes %-encoding and UTF-8. 62 // UTF-8, decodes %-encoding and UTF-8.
62 // 63 //
63 // The last three parameters may be NULL. 64 // The last three parameters may be NULL.
64 // 65 //
65 // |new_parsed| will be set to the parsing parameters of the resultant URL. 66 // |new_parsed| will be set to the parsing parameters of the resultant URL.
66 // 67 //
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 inline base::string16 FormatUrl(const GURL& url, const std::string& languages) { 121 inline base::string16 FormatUrl(const GURL& url, const std::string& languages) {
121 return FormatUrl(url, languages, kFormatUrlOmitAll, net::UnescapeRule::SPACES, 122 return FormatUrl(url, languages, kFormatUrlOmitAll, net::UnescapeRule::SPACES,
122 nullptr, nullptr, nullptr); 123 nullptr, nullptr, nullptr);
123 } 124 }
124 125
125 // Returns whether FormatUrl() would strip a trailing slash from |url|, given a 126 // Returns whether FormatUrl() would strip a trailing slash from |url|, given a
126 // format flag including kFormatUrlOmitTrailingSlashOnBareHostname. 127 // format flag including kFormatUrlOmitTrailingSlashOnBareHostname.
127 bool CanStripTrailingSlash(const GURL& url); 128 bool CanStripTrailingSlash(const GURL& url);
128 129
129 // Formats the host in |url| and appends it to |output|. The host formatter 130 // Formats the host in |url| and appends it to |output|. The host formatter
130 // takes the same accept languages component as ElideURL(). 131 // takes the same accept languages component as ElideURL(), but it does not
132 // affect the result. It'll be removed.
131 void AppendFormattedHost(const GURL& url, 133 void AppendFormattedHost(const GURL& url,
132 const std::string& languages, 134 const std::string& languages,
133 base::string16* output); 135 base::string16* output);
134 136
135 // Converts the given host name to unicode characters. This can be called for 137 // Converts the given host name to unicode characters. This can be called for
136 // any host name, if the input is not IDN or is invalid in some way, we'll just 138 // any host name, if the input is not IDN or is invalid in some way, we'll just
137 // return the ASCII source so it is still usable. 139 // return the ASCII source so it is still usable.
138 // 140 //
139 // The input should be the canonicalized ASCII host name from GURL. This 141 // The input should be the canonicalized ASCII host name from GURL. This
140 // function does NOT accept UTF-8! 142 // function does NOT accept UTF-8!
141 // 143 // |languages| is not used any more and will be removed.
142 // |languages| is a comma separated list of ISO 639 language codes. It
143 // is used to determine whether a hostname is 'comprehensible' to a user
144 // who understands languages listed. |host| will be converted to a
145 // human-readable form (Unicode) ONLY when each component of |host| is
146 // regarded as 'comprehensible'. Scipt-mixing is not allowed except that
147 // Latin letters in the ASCII range can be mixed with a limited set of
148 // script-language pairs (currently Han, Kana and Hangul for zh,ja and ko).
149 // When |languages| is empty, even that mixing is not allowed.
150 base::string16 IDNToUnicode(const std::string& host, 144 base::string16 IDNToUnicode(const std::string& host,
151 const std::string& languages); 145 const std::string& languages);
152 146
153 } // url_formatter 147 } // url_formatter
154 148
155 #endif // COMPONENTS_URL_FORMATTER_URL_FORMATTER_H_ 149 #endif // COMPONENTS_URL_FORMATTER_URL_FORMATTER_H_
OLDNEW
« no previous file with comments | « no previous file | components/url_formatter/url_formatter.cc » ('j') | components/url_formatter/url_formatter.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698