| 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; | 
| } | 
|  | 
|  |