Index: net/base/registry_controlled_domains/registry_controlled_domain.cc |
diff --git a/net/base/registry_controlled_domains/registry_controlled_domain.cc b/net/base/registry_controlled_domains/registry_controlled_domain.cc |
index 8d379ba91b7f486df8d6593bf76ff13de8b5f885..ca367f7214297509d21ea2f3e0bb8284e2ef855a 100644 |
--- a/net/base/registry_controlled_domains/registry_controlled_domain.cc |
+++ b/net/base/registry_controlled_domains/registry_controlled_domain.cc |
@@ -148,22 +148,23 @@ size_t GetRegistryLengthImpl(base::StringPiece host, |
(host.length() - curr_start) : 0; |
} |
-std::string GetDomainAndRegistryImpl(base::StringPiece host, |
- PrivateRegistryFilter private_filter) { |
+base::StringPiece GetDomainAndRegistryImpl( |
+ base::StringPiece host, |
+ PrivateRegistryFilter private_filter) { |
DCHECK(!host.empty()); |
// Find the length of the registry for this host. |
const size_t registry_length = |
GetRegistryLengthImpl(host, INCLUDE_UNKNOWN_REGISTRIES, private_filter); |
if ((registry_length == std::string::npos) || (registry_length == 0)) |
- return std::string(); // No registry. |
+ return base::StringPiece(); // No registry. |
// The "2" in this next line is 1 for the dot, plus a 1-char minimum preceding |
// subcomponent length. |
DCHECK(host.length() >= 2); |
if (registry_length > (host.length() - 2)) { |
NOTREACHED() << |
"Host does not have at least one subcomponent before registry!"; |
- return std::string(); |
+ return base::StringPiece(); |
} |
// Move past the dot preceding the registry, and search for the next previous |
@@ -171,8 +172,8 @@ std::string GetDomainAndRegistryImpl(base::StringPiece host, |
// no dot. |
const size_t dot = host.rfind('.', host.length() - registry_length - 2); |
if (dot == std::string::npos) |
- return host.as_string(); |
- return host.substr(dot + 1).as_string(); |
+ return host; |
+ return host.substr(dot + 1); |
} |
} // namespace |
@@ -180,9 +181,15 @@ std::string GetDomainAndRegistryImpl(base::StringPiece host, |
std::string GetDomainAndRegistry( |
const GURL& gurl, |
PrivateRegistryFilter filter) { |
+ return GetDomainAndRegistryAsStringPiece(gurl, filter).as_string(); |
+} |
+ |
+base::StringPiece GetDomainAndRegistryAsStringPiece( |
Peter Kasting
2016/10/06 06:21:35
For now, I would move this function into the anony
pkalinnikov
2016/10/06 10:51:36
Done.
|
+ const GURL& gurl, |
+ PrivateRegistryFilter filter) { |
base::StringPiece host = gurl.host_piece(); |
if (host.empty() || gurl.HostIsIPAddress()) |
- return std::string(); |
+ return base::StringPiece(); |
return GetDomainAndRegistryImpl(host, filter); |
} |
@@ -192,7 +199,7 @@ std::string GetDomainAndRegistry(base::StringPiece host, |
const std::string canon_host(CanonicalizeHost(host, &host_info)); |
if (canon_host.empty() || host_info.IsIPAddress()) |
return std::string(); |
- return GetDomainAndRegistryImpl(canon_host, filter); |
+ return GetDomainAndRegistryImpl(canon_host, filter).as_string(); |
} |
bool SameDomainOrHost( |
@@ -201,8 +208,10 @@ bool SameDomainOrHost( |
PrivateRegistryFilter filter) { |
// See if both URLs have a known domain + registry, and those values are the |
// same. |
- const std::string domain1(GetDomainAndRegistry(gurl1, filter)); |
- const std::string domain2(GetDomainAndRegistry(gurl2, filter)); |
+ const base::StringPiece domain1 = |
+ GetDomainAndRegistryAsStringPiece(gurl1, filter); |
+ const base::StringPiece domain2 = |
+ GetDomainAndRegistryAsStringPiece(gurl2, filter); |
if (!domain1.empty() || !domain2.empty()) |
return domain1 == domain2; |