| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "components/url_formatter/elide_url.h" | 5 #include "components/url_formatter/elide_url.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/strings/string_split.h" | 10 #include "base/strings/string_split.h" |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 *url_subdomain = url_host->substr(0, domain_start_index); | 101 *url_subdomain = url_host->substr(0, domain_start_index); |
| 102 if ((*url_subdomain == kWwwPrefix || url_subdomain->empty() || | 102 if ((*url_subdomain == kWwwPrefix || url_subdomain->empty() || |
| 103 url.SchemeIsFile())) { | 103 url.SchemeIsFile())) { |
| 104 url_subdomain->clear(); | 104 url_subdomain->clear(); |
| 105 } | 105 } |
| 106 } | 106 } |
| 107 | 107 |
| 108 #endif // !defined(OS_ANDROID) | 108 #endif // !defined(OS_ANDROID) |
| 109 | 109 |
| 110 base::string16 FormatUrlForSecurityDisplayInternal(const GURL& url, | 110 base::string16 FormatUrlForSecurityDisplayInternal(const GURL& url, |
| 111 const std::string& languages, | |
| 112 bool omit_scheme) { | 111 bool omit_scheme) { |
| 113 if (!url.is_valid() || url.is_empty() || !url.IsStandard()) | 112 if (!url.is_valid() || url.is_empty() || !url.IsStandard()) |
| 114 return url_formatter::FormatUrl(url, languages); | 113 return url_formatter::FormatUrl(url); |
| 115 | 114 |
| 116 const base::string16 colon(base::ASCIIToUTF16(":")); | 115 const base::string16 colon(base::ASCIIToUTF16(":")); |
| 117 const base::string16 scheme_separator( | 116 const base::string16 scheme_separator( |
| 118 base::ASCIIToUTF16(url::kStandardSchemeSeparator)); | 117 base::ASCIIToUTF16(url::kStandardSchemeSeparator)); |
| 119 | 118 |
| 120 if (url.SchemeIsFile()) { | 119 if (url.SchemeIsFile()) { |
| 121 return base::ASCIIToUTF16(url::kFileScheme) + scheme_separator + | 120 return base::ASCIIToUTF16(url::kFileScheme) + scheme_separator + |
| 122 base::UTF8ToUTF16(url.path()); | 121 base::UTF8ToUTF16(url.path()); |
| 123 } | 122 } |
| 124 | 123 |
| 125 if (url.SchemeIsFileSystem()) { | 124 if (url.SchemeIsFileSystem()) { |
| 126 const GURL* inner_url = url.inner_url(); | 125 const GURL* inner_url = url.inner_url(); |
| 127 if (inner_url->SchemeIsFile()) { | 126 if (inner_url->SchemeIsFile()) { |
| 128 return base::ASCIIToUTF16(url::kFileSystemScheme) + colon + | 127 return base::ASCIIToUTF16(url::kFileSystemScheme) + colon + |
| 129 FormatUrlForSecurityDisplayInternal(*inner_url, languages, | 128 FormatUrlForSecurityDisplayInternal(*inner_url, false) + |
| 130 false /*omit_scheme*/) + | |
| 131 base::UTF8ToUTF16(url.path()); | 129 base::UTF8ToUTF16(url.path()); |
| 132 } | 130 } |
| 133 return base::ASCIIToUTF16(url::kFileSystemScheme) + colon + | 131 return base::ASCIIToUTF16(url::kFileSystemScheme) + colon + |
| 134 FormatUrlForSecurityDisplayInternal(*inner_url, languages, | 132 FormatUrlForSecurityDisplayInternal(*inner_url, false); |
| 135 false /*omit_scheme*/); | |
| 136 } | 133 } |
| 137 | 134 |
| 138 const GURL origin = url.GetOrigin(); | 135 const GURL origin = url.GetOrigin(); |
| 139 const std::string& scheme = origin.scheme(); | 136 const std::string& scheme = origin.scheme(); |
| 140 const std::string& host = origin.host(); | 137 const std::string& host = origin.host(); |
| 141 | 138 |
| 142 base::string16 result; | 139 base::string16 result; |
| 143 if (!omit_scheme || !url.SchemeIsHTTPOrHTTPS()) | 140 if (!omit_scheme || !url.SchemeIsHTTPOrHTTPS()) |
| 144 result = base::UTF8ToUTF16(scheme) + scheme_separator; | 141 result = base::UTF8ToUTF16(scheme) + scheme_separator; |
| 145 result += base::UTF8ToUTF16(host); | 142 result += base::UTF8ToUTF16(host); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 158 namespace url_formatter { | 155 namespace url_formatter { |
| 159 | 156 |
| 160 #if !defined(OS_ANDROID) | 157 #if !defined(OS_ANDROID) |
| 161 | 158 |
| 162 // TODO(pkasting): http://crbug.com/77883 This whole function gets | 159 // TODO(pkasting): http://crbug.com/77883 This whole function gets |
| 163 // kerning/ligatures/etc. issues potentially wrong by assuming that the width of | 160 // kerning/ligatures/etc. issues potentially wrong by assuming that the width of |
| 164 // a rendered string is always the sum of the widths of its substrings. Also I | 161 // a rendered string is always the sum of the widths of its substrings. Also I |
| 165 // suspect it could be made simpler. | 162 // suspect it could be made simpler. |
| 166 base::string16 ElideUrl(const GURL& url, | 163 base::string16 ElideUrl(const GURL& url, |
| 167 const gfx::FontList& font_list, | 164 const gfx::FontList& font_list, |
| 168 float available_pixel_width, | 165 float available_pixel_width) { |
| 169 const std::string& languages) { | |
| 170 // Get a formatted string and corresponding parsing of the url. | 166 // Get a formatted string and corresponding parsing of the url. |
| 171 url::Parsed parsed; | 167 url::Parsed parsed; |
| 172 const base::string16 url_string = url_formatter::FormatUrl( | 168 const base::string16 url_string = url_formatter::FormatUrl( |
| 173 url, languages, url_formatter::kFormatUrlOmitAll, | 169 url, url_formatter::kFormatUrlOmitAll, |
| 174 net::UnescapeRule::SPACES, &parsed, nullptr, nullptr); | 170 net::UnescapeRule::SPACES, &parsed, nullptr, nullptr); |
| 175 if (available_pixel_width <= 0) | 171 if (available_pixel_width <= 0) |
| 176 return url_string; | 172 return url_string; |
| 177 | 173 |
| 178 // If non-standard, return plain eliding. | 174 // If non-standard, return plain eliding. |
| 179 if (!url.IsStandard()) | 175 if (!url.IsStandard()) |
| 180 return gfx::ElideText(url_string, font_list, available_pixel_width, | 176 return gfx::ElideText(url_string, font_list, available_pixel_width, |
| 181 gfx::ELIDE_TAIL); | 177 gfx::ELIDE_TAIL); |
| 182 | 178 |
| 183 // Now start eliding url_string to fit within available pixel width. | 179 // Now start eliding url_string to fit within available pixel width. |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 351 float subdomain_width = available_pixel_width - pixel_width_url_domain; | 347 float subdomain_width = available_pixel_width - pixel_width_url_domain; |
| 352 if (subdomain_width <= 0) | 348 if (subdomain_width <= 0) |
| 353 return base::string16(gfx::kEllipsisUTF16) + kDot + url_domain; | 349 return base::string16(gfx::kEllipsisUTF16) + kDot + url_domain; |
| 354 | 350 |
| 355 return gfx::ElideText(url_host, font_list, available_pixel_width, | 351 return gfx::ElideText(url_host, font_list, available_pixel_width, |
| 356 gfx::ELIDE_HEAD); | 352 gfx::ELIDE_HEAD); |
| 357 } | 353 } |
| 358 | 354 |
| 359 #endif // !defined(OS_ANDROID) | 355 #endif // !defined(OS_ANDROID) |
| 360 | 356 |
| 361 base::string16 FormatUrlForSecurityDisplay(const GURL& url, | 357 base::string16 FormatUrlForSecurityDisplay(const GURL& url) { |
| 362 const std::string& languages) { | 358 return FormatUrlForSecurityDisplayInternal(url, false); |
| 363 return FormatUrlForSecurityDisplayInternal(url, languages, false); | |
| 364 } | 359 } |
| 365 | 360 |
| 366 base::string16 FormatUrlForSecurityDisplayOmitScheme( | 361 base::string16 FormatUrlForSecurityDisplayOmitScheme(const GURL& url) { |
| 367 const GURL& url, | 362 return FormatUrlForSecurityDisplayInternal(url, true); |
| 368 const std::string& languages) { | |
| 369 return FormatUrlForSecurityDisplayInternal(url, languages, true); | |
| 370 } | 363 } |
| 371 | 364 |
| 372 } // namespace url_formatter | 365 } // namespace url_formatter |
| OLD | NEW |