1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/command_line.h" 6 #include "base/logging.h" 7 #include "base/metrics/field_trial.h" 8 #include "chrome/common/chrome_switches.h" 9 #include "chrome/common/net/net_error_info.h" 10 11 namespace chrome_common_net { 12 13 const char kDnsProbeErrorDomain[] = "dnsprobe"; 14 15 const char* DnsProbeStatusToString(int status) { 16 switch (status) { 17 case DNS_PROBE_POSSIBLE: 18 return "DNS_PROBE_POSSIBLE"; 19 case DNS_PROBE_NOT_RUN: 20 return "DNS_PROBE_NOT_RUN"; 21 case DNS_PROBE_STARTED: 22 return "DNS_PROBE_STARTED"; 23 case DNS_PROBE_FINISHED_INCONCLUSIVE: 24 return "DNS_PROBE_FINISHED_INCONCLUSIVE"; 25 case DNS_PROBE_FINISHED_NO_INTERNET: 26 return "DNS_PROBE_FINISHED_NO_INTERNET"; 27 case DNS_PROBE_FINISHED_BAD_CONFIG: 28 return "DNS_PROBE_FINISHED_BAD_CONFIG"; 29 case DNS_PROBE_FINISHED_NXDOMAIN: 30 return "DNS_PROBE_FINISHED_NXDOMAIN"; 31 default: 32 NOTREACHED(); 33 return ""; 34 } 35 } 36 37 bool DnsProbeStatusIsFinished(DnsProbeStatus status) { 38 return status >= DNS_PROBE_FINISHED_INCONCLUSIVE && 39 status < DNS_PROBE_MAX; 40 } 41 42 bool DnsProbesEnabled() { 43 #if defined(OS_ANDROID) 44 return false; 45 #else 46 CommandLine* command_line = CommandLine::ForCurrentProcess(); 47 48 if (command_line->HasSwitch(switches::kDisableDnsProbes)) 49 return false; 50 else if (command_line->HasSwitch(switches::kEnableDnsProbes)) 51 return true; 52 53 const char kDnsProbeFieldTrialName[] = "DnsProbe-Enable"; 54 const char kDnsProbeFieldTrialEnableGroupName[] = "enable"; 55 56 return base::FieldTrialList::FindFullName(kDnsProbeFieldTrialName) == 57 kDnsProbeFieldTrialEnableGroupName; 58 #endif // OS_ANDROID 59 } 60 61 } // namespace chrome_common_net 62