Index: net/dns/host_resolver_proc.cc |
diff --git a/net/dns/host_resolver_proc.cc b/net/dns/host_resolver_proc.cc |
index 4bed222a21562339d026ea440c2968ce27caca5a..f1253ad9ce9dfdd5ad3ddd142c1829d7fe3b8b49 100644 |
--- a/net/dns/host_resolver_proc.cc |
+++ b/net/dns/host_resolver_proc.cc |
@@ -7,6 +7,7 @@ |
#include "build/build_config.h" |
#include "base/logging.h" |
+#include "base/metrics/histogram_macros.h" |
#include "base/sys_byteorder.h" |
#include "net/base/address_list.h" |
#include "net/base/net_errors.h" |
@@ -125,10 +126,14 @@ int SystemHostResolverCall(const std::string& host, |
HostResolverFlags host_resolver_flags, |
AddressList* addrlist, |
int* os_error) { |
- // Make sure |host| is properly formed. |
+ // Make sure |host| is properly formed. Save the validity check result so that |
+ // we can count how often invalid names (see |net::IsValidHostLabelCharacter|) |
+ // successfully resolve, if ever. TODO(crbug.com/695474): Remove this when we |
+ // no longer need the UMA metrics. |
+ bool valid_hostname = false; |
{ |
std::string out_ignored; |
- if (!DNSDomainFromDot(host, &out_ignored)) |
+ if (!DNSDomainFromDotWithValidityCheck(host, &out_ignored, &valid_hostname)) |
return ERR_NAME_NOT_RESOLVED; |
} |
@@ -253,6 +258,8 @@ int SystemHostResolverCall(const std::string& host, |
*addrlist = AddressList::CreateFromAddrinfo(ai); |
freeaddrinfo(ai); |
+ UMA_HISTOGRAM_BOOLEAN("Net.SuccessfulResolutionWithValidDNSName", |
+ valid_hostname); |
return OK; |
} |