| // Copyright (c) 2010 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/proxy_config/proxy_prefs.h" | 
 |  | 
 | #include "base/logging.h" | 
 | #include "base/macros.h" | 
 |  | 
 | namespace ProxyPrefs { | 
 |  | 
 | namespace { | 
 |  | 
 | // These names are exposed to the proxy extension API. They must be in sync | 
 | // with the constants of ProxyPrefs. | 
 | const char* kProxyModeNames[] = { kDirectProxyModeName, | 
 |                                   kAutoDetectProxyModeName, | 
 |                                   kPacScriptProxyModeName, | 
 |                                   kFixedServersProxyModeName, | 
 |                                   kSystemProxyModeName }; | 
 |  | 
 | static_assert(arraysize(kProxyModeNames) == kModeCount, | 
 |               "kProxyModeNames must have kModeCount elements"); | 
 |  | 
 | }  // namespace | 
 |  | 
 | const char kDirectProxyModeName[] = "direct"; | 
 | const char kAutoDetectProxyModeName[] = "auto_detect"; | 
 | const char kPacScriptProxyModeName[] = "pac_script"; | 
 | const char kFixedServersProxyModeName[] = "fixed_servers"; | 
 | const char kSystemProxyModeName[] = "system"; | 
 |  | 
 | bool IntToProxyMode(int in_value, ProxyMode* out_value) { | 
 |   DCHECK(out_value); | 
 |   if (in_value < 0 || in_value >= kModeCount) | 
 |     return false; | 
 |   *out_value = static_cast<ProxyMode>(in_value); | 
 |   return true; | 
 | } | 
 |  | 
 | bool StringToProxyMode(const std::string& in_value, ProxyMode* out_value) { | 
 |   DCHECK(out_value); | 
 |   for (int i = 0; i < kModeCount; i++) { | 
 |     if (in_value == kProxyModeNames[i]) | 
 |       return IntToProxyMode(i, out_value); | 
 |   } | 
 |   return false; | 
 | } | 
 |  | 
 | const char* ProxyModeToString(ProxyMode mode) { | 
 |   return kProxyModeNames[mode]; | 
 | } | 
 |  | 
 | std::string ConfigStateToDebugString(ConfigState state) { | 
 |   switch (state) { | 
 |     case CONFIG_POLICY: | 
 |       return "config_policy"; | 
 |     case CONFIG_EXTENSION: | 
 |       return "config_extension"; | 
 |     case CONFIG_OTHER_PRECEDE: | 
 |       return "config_other_precede"; | 
 |     case CONFIG_SYSTEM: | 
 |       return "config_system"; | 
 |     case CONFIG_FALLBACK: | 
 |       return "config_fallback"; | 
 |     case CONFIG_UNSET: | 
 |       return "config_unset"; | 
 |   } | 
 |   NOTREACHED(); | 
 |   return ""; | 
 | } | 
 |  | 
 | }  // namespace ProxyPrefs |