1// Copyright (c) 2010 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 "chrome/browser/prefs/proxy_prefs.h"
6
7#include "base/basictypes.h"
8#include "base/logging.h"
9
10namespace ProxyPrefs {
11
12namespace {
13
14// These names are exposed to the proxy extension API. They must be in sync
15// with the constants of ProxyPrefs.
16const char* kProxyModeNames[] = { kDirectProxyModeName,
17                                  kAutoDetectProxyModeName,
18                                  kPacScriptProxyModeName,
19                                  kFixedServersProxyModeName,
20                                  kSystemProxyModeName };
21
22COMPILE_ASSERT(arraysize(kProxyModeNames) == kModeCount,
23               kProxyModeNames_must_have_size_of_NUM_MODES);
24
25}  // namespace
26
27const char kDirectProxyModeName[] = "direct";
28const char kAutoDetectProxyModeName[] = "auto_detect";
29const char kPacScriptProxyModeName[] = "pac_script";
30const char kFixedServersProxyModeName[] = "fixed_servers";
31const char kSystemProxyModeName[] = "system";
32
33bool IntToProxyMode(int in_value, ProxyMode* out_value) {
34  DCHECK(out_value);
35  if (in_value < 0 || in_value >= kModeCount)
36    return false;
37  *out_value = static_cast<ProxyMode>(in_value);
38  return true;
39}
40
41bool StringToProxyMode(const std::string& in_value, ProxyMode* out_value) {
42  DCHECK(out_value);
43  for (int i = 0; i < kModeCount; i++) {
44    if (in_value == kProxyModeNames[i])
45      return IntToProxyMode(i, out_value);
46  }
47  return false;
48}
49
50const char* ProxyModeToString(ProxyMode mode) {
51  return kProxyModeNames[mode];
52}
53
54std::string ConfigStateToDebugString(ConfigState state) {
55  switch (state) {
56    case CONFIG_POLICY:
57      return "config_policy";
58    case CONFIG_EXTENSION:
59      return "config_extension";
60    case CONFIG_OTHER_PRECEDE:
61      return "config_other_precede";
62    case CONFIG_SYSTEM:
63      return "config_system";
64    case CONFIG_FALLBACK:
65      return "config_fallback";
66    case CONFIG_UNSET:
67      return "config_unset";
68  }
69  NOTREACHED();
70  return "";
71}
72
73}  // namespace ProxyPrefs
74