| Index: components/url_formatter/elide_url.cc
|
| diff --git a/components/secure_display/elide_url.cc b/components/url_formatter/elide_url.cc
|
| similarity index 77%
|
| rename from components/secure_display/elide_url.cc
|
| rename to components/url_formatter/elide_url.cc
|
| index ec4d65a38069b48dc2e9f1a165d7c6441ccc715f..f9535b47c0799511d67b25e96e626c1982c9116c 100644
|
| --- a/components/secure_display/elide_url.cc
|
| +++ b/components/url_formatter/elide_url.cc
|
| @@ -2,24 +2,21 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "components/secure_display/elide_url.h"
|
| +#include "components/url_formatter/elide_url.h"
|
|
|
| #include "base/logging.h"
|
| #include "base/strings/string_split.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| +#include "components/url_formatter/url_formatter.h"
|
| #include "net/base/escape.h"
|
| -#include "net/base/net_util.h"
|
| #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
|
| -#include "ui/gfx/text_elider.h"
|
| -#include "ui/gfx/text_utils.h"
|
| #include "url/gurl.h"
|
| #include "url/url_constants.h"
|
|
|
| -using base::UTF8ToUTF16;
|
| -using gfx::ElideText;
|
| -using gfx::GetStringWidthF;
|
| -using gfx::kEllipsisUTF16;
|
| -using gfx::kForwardSlash;
|
| +#if !defined(OS_ANDROID)
|
| +#include "ui/gfx/text_elider.h" // nogncheck
|
| +#include "ui/gfx/text_utils.h" // nogncheck
|
| +#endif
|
|
|
| namespace {
|
|
|
| @@ -38,11 +35,11 @@ base::string16 BuildPathFromComponents(
|
|
|
| // Build path from first |num_components| elements.
|
| for (size_t j = 0; j < num_components; ++j)
|
| - path += path_elements[j] + kForwardSlash;
|
| + path += path_elements[j] + gfx::kForwardSlash;
|
|
|
| // Add |filename|, ellipsis if necessary.
|
| if (num_components != (path_elements.size() - 1))
|
| - path += base::string16(kEllipsisUTF16) + kForwardSlash;
|
| + path += base::string16(gfx::kEllipsisUTF16) + gfx::kForwardSlash;
|
| path += filename;
|
|
|
| return path;
|
| @@ -64,8 +61,8 @@ base::string16 ElideComponentizedPath(
|
| for (size_t i = url_path_number_of_elements - 1; i > 0; --i) {
|
| base::string16 elided_path = BuildPathFromComponents(
|
| url_path_prefix, url_path_elements, url_filename, i);
|
| - if (available_pixel_width >= GetStringWidthF(elided_path, font_list))
|
| - return ElideText(elided_path + url_query, font_list,
|
| + if (available_pixel_width >= gfx::GetStringWidthF(elided_path, font_list))
|
| + return gfx::ElideText(elided_path + url_query, font_list,
|
| available_pixel_width, gfx::ELIDE_TAIL);
|
| }
|
|
|
| @@ -79,24 +76,24 @@ void SplitHost(const GURL& url,
|
| base::string16* url_domain,
|
| base::string16* url_subdomain) {
|
| // Get Host.
|
| - *url_host = UTF8ToUTF16(url.host());
|
| + *url_host = base::UTF8ToUTF16(url.host());
|
|
|
| // Get domain and registry information from the URL.
|
| *url_domain =
|
| - UTF8ToUTF16(net::registry_controlled_domains::GetDomainAndRegistry(
|
| + base::UTF8ToUTF16(net::registry_controlled_domains::GetDomainAndRegistry(
|
| url, net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES));
|
| if (url_domain->empty())
|
| *url_domain = *url_host;
|
|
|
| // Add port if required.
|
| if (!url.port().empty()) {
|
| - *url_host += UTF8ToUTF16(":" + url.port());
|
| - *url_domain += UTF8ToUTF16(":" + url.port());
|
| + *url_host += base::UTF8ToUTF16(":" + url.port());
|
| + *url_domain += base::UTF8ToUTF16(":" + url.port());
|
| }
|
|
|
| // Get sub domain.
|
| const size_t domain_start_index = url_host->find(*url_domain);
|
| - base::string16 kWwwPrefix = UTF8ToUTF16("www.");
|
| + base::string16 kWwwPrefix = base::UTF8ToUTF16("www.");
|
| if (domain_start_index != base::string16::npos)
|
| *url_subdomain = url_host->substr(0, domain_start_index);
|
| if ((*url_subdomain == kWwwPrefix || url_subdomain->empty() ||
|
| @@ -108,7 +105,7 @@ void SplitHost(const GURL& url,
|
| #endif // !defined(OS_ANDROID)
|
| } // namespace
|
|
|
| -namespace secure_display {
|
| +namespace url_formatter {
|
|
|
| #if !defined(OS_ANDROID)
|
|
|
| @@ -122,20 +119,21 @@ base::string16 ElideUrl(const GURL& url,
|
| const std::string& languages) {
|
| // Get a formatted string and corresponding parsing of the url.
|
| url::Parsed parsed;
|
| - const base::string16 url_string =
|
| - net::FormatUrl(url, languages, net::kFormatUrlOmitAll,
|
| - net::UnescapeRule::SPACES, &parsed, NULL, NULL);
|
| + const base::string16 url_string = url_formatter::FormatUrl(
|
| + url, languages, url_formatter::kFormatUrlOmitAll,
|
| + net::UnescapeRule::SPACES, &parsed, nullptr, nullptr);
|
| if (available_pixel_width <= 0)
|
| return url_string;
|
|
|
| // If non-standard, return plain eliding.
|
| if (!url.IsStandard())
|
| - return ElideText(url_string, font_list, available_pixel_width,
|
| - gfx::ELIDE_TAIL);
|
| + return gfx::ElideText(url_string, font_list, available_pixel_width,
|
| + gfx::ELIDE_TAIL);
|
|
|
| // Now start eliding url_string to fit within available pixel width.
|
| // Fist pass - check to see whether entire url_string fits.
|
| - const float pixel_width_url_string = GetStringWidthF(url_string, font_list);
|
| + const float pixel_width_url_string =
|
| + gfx::GetStringWidthF(url_string, font_list);
|
| if (available_pixel_width >= pixel_width_url_string)
|
| return url_string;
|
|
|
| @@ -148,9 +146,9 @@ base::string16 ElideUrl(const GURL& url,
|
| // Return general elided text if url minus the query fits.
|
| const base::string16 url_minus_query =
|
| url_string.substr(0, path_start_index + path_len);
|
| - if (available_pixel_width >= GetStringWidthF(url_minus_query, font_list))
|
| - return ElideText(url_string, font_list, available_pixel_width,
|
| - gfx::ELIDE_TAIL);
|
| + if (available_pixel_width >= gfx::GetStringWidthF(url_minus_query, font_list))
|
| + return gfx::ElideText(url_string, font_list, available_pixel_width,
|
| + gfx::ELIDE_TAIL);
|
|
|
| base::string16 url_host;
|
| base::string16 url_domain;
|
| @@ -176,16 +174,17 @@ base::string16 ElideUrl(const GURL& url,
|
| }
|
|
|
| // Second Pass - remove scheme - the rest fits.
|
| - const float pixel_width_url_host = GetStringWidthF(url_host, font_list);
|
| + const float pixel_width_url_host = gfx::GetStringWidthF(url_host, font_list);
|
| const float pixel_width_url_path =
|
| - GetStringWidthF(url_path_query_etc, font_list);
|
| + gfx::GetStringWidthF(url_path_query_etc, font_list);
|
| if (available_pixel_width >= pixel_width_url_host + pixel_width_url_path)
|
| return url_host + url_path_query_etc;
|
|
|
| // Third Pass: Subdomain, domain and entire path fits.
|
| - const float pixel_width_url_domain = GetStringWidthF(url_domain, font_list);
|
| + const float pixel_width_url_domain =
|
| + gfx::GetStringWidthF(url_domain, font_list);
|
| const float pixel_width_url_subdomain =
|
| - GetStringWidthF(url_subdomain, font_list);
|
| + gfx::GetStringWidthF(url_subdomain, font_list);
|
| if (available_pixel_width >=
|
| pixel_width_url_subdomain + pixel_width_url_domain + pixel_width_url_path)
|
| return url_subdomain + url_domain + url_path_query_etc;
|
| @@ -193,20 +192,20 @@ base::string16 ElideUrl(const GURL& url,
|
| // Query element.
|
| base::string16 url_query;
|
| const float kPixelWidthDotsTrailer =
|
| - GetStringWidthF(base::string16(kEllipsisUTF16), font_list);
|
| + gfx::GetStringWidthF(base::string16(gfx::kEllipsisUTF16), font_list);
|
| if (parsed.query.is_nonempty()) {
|
| - url_query = UTF8ToUTF16("?") + url_string.substr(parsed.query.begin);
|
| + url_query = base::UTF8ToUTF16("?") + url_string.substr(parsed.query.begin);
|
| if (available_pixel_width >=
|
| (pixel_width_url_subdomain + pixel_width_url_domain +
|
| - pixel_width_url_path - GetStringWidthF(url_query, font_list))) {
|
| - return ElideText(url_subdomain + url_domain + url_path_query_etc,
|
| - font_list, available_pixel_width, gfx::ELIDE_TAIL);
|
| + pixel_width_url_path - gfx::GetStringWidthF(url_query, font_list))) {
|
| + return gfx::ElideText(url_subdomain + url_domain + url_path_query_etc,
|
| + font_list, available_pixel_width, gfx::ELIDE_TAIL);
|
| }
|
| }
|
|
|
| // Parse url_path using '/'.
|
| std::vector<base::string16> url_path_elements =
|
| - base::SplitString(url_path, base::string16(1, kForwardSlash),
|
| + base::SplitString(url_path, base::string16(1, gfx::kForwardSlash),
|
| base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
|
|
| // Get filename - note that for a path ending with /
|
| @@ -218,7 +217,7 @@ base::string16 ElideUrl(const GURL& url,
|
| // Path ends with a '/'.
|
| --url_path_number_of_elements;
|
| url_filename =
|
| - url_path_elements[url_path_number_of_elements - 1] + kForwardSlash;
|
| + url_path_elements[url_path_number_of_elements - 1] + gfx::kForwardSlash;
|
| }
|
|
|
| const size_t kMaxNumberOfUrlPathElementsAllowed = 1024;
|
| @@ -226,15 +225,15 @@ base::string16 ElideUrl(const GURL& url,
|
| url_path_number_of_elements > kMaxNumberOfUrlPathElementsAllowed) {
|
| // No path to elide, or too long of a path (could overflow in loop below)
|
| // Just elide this as a text string.
|
| - return ElideText(url_subdomain + url_domain + url_path_query_etc, font_list,
|
| - available_pixel_width, gfx::ELIDE_TAIL);
|
| + return gfx::ElideText(url_subdomain + url_domain + url_path_query_etc,
|
| + font_list, available_pixel_width, gfx::ELIDE_TAIL);
|
| }
|
|
|
| // Start eliding the path and replacing elements by ".../".
|
| const base::string16 kEllipsisAndSlash =
|
| - base::string16(kEllipsisUTF16) + kForwardSlash;
|
| + base::string16(gfx::kEllipsisUTF16) + gfx::kForwardSlash;
|
| const float pixel_width_ellipsis_slash =
|
| - GetStringWidthF(kEllipsisAndSlash, font_list);
|
| + gfx::GetStringWidthF(kEllipsisAndSlash, font_list);
|
|
|
| // Check with both subdomain and domain.
|
| base::string16 elided_path = ElideComponentizedPath(
|
| @@ -266,20 +265,20 @@ base::string16 ElideUrl(const GURL& url,
|
| // Return elided domain/.../filename anyway.
|
| base::string16 final_elided_url_string(url_elided_domain);
|
| const float url_elided_domain_width =
|
| - GetStringWidthF(url_elided_domain, font_list);
|
| + gfx::GetStringWidthF(url_elided_domain, font_list);
|
|
|
| // A hack to prevent trailing ".../...".
|
| if ((available_pixel_width - url_elided_domain_width) >
|
| pixel_width_ellipsis_slash + kPixelWidthDotsTrailer +
|
| - GetStringWidthF(base::ASCIIToUTF16("UV"), font_list)) {
|
| + gfx::GetStringWidthF(base::ASCIIToUTF16("UV"), font_list)) {
|
| final_elided_url_string += BuildPathFromComponents(
|
| base::string16(), url_path_elements, url_filename, 1);
|
| } else {
|
| final_elided_url_string += url_path;
|
| }
|
|
|
| - return ElideText(final_elided_url_string, font_list, available_pixel_width,
|
| - gfx::ELIDE_TAIL);
|
| + return gfx::ElideText(final_elided_url_string, font_list,
|
| + available_pixel_width, gfx::ELIDE_TAIL);
|
| }
|
|
|
| base::string16 ElideHost(const GURL& url,
|
| @@ -290,20 +289,21 @@ base::string16 ElideHost(const GURL& url,
|
| base::string16 url_subdomain;
|
| SplitHost(url, &url_host, &url_domain, &url_subdomain);
|
|
|
| - const float pixel_width_url_host = GetStringWidthF(url_host, font_list);
|
| + const float pixel_width_url_host = gfx::GetStringWidthF(url_host, font_list);
|
| if (available_pixel_width >= pixel_width_url_host)
|
| return url_host;
|
|
|
| if (url_subdomain.empty())
|
| return url_domain;
|
|
|
| - const float pixel_width_url_domain = GetStringWidthF(url_domain, font_list);
|
| + const float pixel_width_url_domain =
|
| + gfx::GetStringWidthF(url_domain, font_list);
|
| float subdomain_width = available_pixel_width - pixel_width_url_domain;
|
| if (subdomain_width <= 0)
|
| - return base::string16(kEllipsisUTF16) + kDot + url_domain;
|
| + return base::string16(gfx::kEllipsisUTF16) + kDot + url_domain;
|
|
|
| - const base::string16 elided_subdomain =
|
| - ElideText(url_subdomain, font_list, subdomain_width, gfx::ELIDE_HEAD);
|
| + const base::string16 elided_subdomain = gfx::ElideText(
|
| + url_subdomain, font_list, subdomain_width, gfx::ELIDE_HEAD);
|
| return elided_subdomain + url_domain;
|
| }
|
|
|
| @@ -312,7 +312,7 @@ base::string16 ElideHost(const GURL& url,
|
| base::string16 FormatUrlForSecurityDisplay(const GURL& url,
|
| const std::string& languages) {
|
| if (!url.is_valid() || url.is_empty() || !url.IsStandard())
|
| - return net::FormatUrl(url, languages);
|
| + return url_formatter::FormatUrl(url, languages);
|
|
|
| const base::string16 colon(base::ASCIIToUTF16(":"));
|
| const base::string16 scheme_separator(
|
| @@ -350,4 +350,4 @@ base::string16 FormatUrlForSecurityDisplay(const GURL& url,
|
|
|
| return result;
|
| }
|
| -} // namespace secure_display
|
| +} // namespace url_formatter
|
|
|