| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "components/favicon/core/fallback_url_util.h" |
| |
| #include "base/i18n/case_conversion.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
| #include "url/gurl.h" |
| |
| namespace { |
| const char* kFallbackIconTextForIP = "IP"; |
| } // namespace |
| |
| namespace favicon { |
| |
| base::string16 GetFallbackIconText(const GURL& url) { |
| if (url.is_empty()) |
| return base::string16(); |
| std::string domain = net::registry_controlled_domains::GetDomainAndRegistry( |
| url, net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES); |
| if (domain.empty()) { // E.g., http://localhost/ or http://192.168.0.1/ |
| if (url.HostIsIPAddress()) |
| return base::ASCIIToUTF16(kFallbackIconTextForIP); |
| domain = url.host(); |
| } |
| if (domain.empty()) |
| return base::string16(); |
| // TODO(huangs): Handle non-ASCII ("xn--") domain names. |
| return base::i18n::ToUpper(base::ASCIIToUTF16(domain.substr(0, 1))); |
| } |
| |
| } // namespace favicon |