Add proxy_config component

This CL moves proxy_config_dictionary and proxy_prefs to
src/components/proxy_config so that they can be used in
src/chromeos/network/onc for ONC translation.

BUG=470445
TBR=various for moving include files

Review URL: https://codereview.chromium.org/1221033002

Cr-Commit-Position: refs/heads/master@{#337257}
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index f82b78a..68d319b8 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -129,6 +129,7 @@
     "//components/password_manager/core/browser",
     "//components/password_manager/core/common",
     "//components/policy:policy_component",
+    "//components/proxy_config",
     "//components/query_parser",
     "//components/rappor",
     "//components/renderer_context_menu",
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS
index 28feeb1..5f16e0c 100644
--- a/chrome/browser/DEPS
+++ b/chrome/browser/DEPS
@@ -68,6 +68,7 @@
   "+components/pref_registry",
   "+components/printing/common",
   "+components/proximity_auth",
+  "+components/proxy_config",
   "+components/query_parser",
   "+components/rappor",
   "+components/renderer_context_menu",
diff --git a/chrome/browser/chromeos/net/onc_utils.cc b/chrome/browser/chromeos/net/onc_utils.cc
index 2e4194eb..4d9d7db 100644
--- a/chrome/browser/chromeos/net/onc_utils.cc
+++ b/chrome/browser/chromeos/net/onc_utils.cc
@@ -10,7 +10,6 @@
 #include "base/prefs/pref_service.h"
 #include "base/values.h"
 #include "chrome/browser/chromeos/ui_proxy_config.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
 #include "chrome/common/pref_names.h"
 #include "chromeos/network/managed_network_configuration_handler.h"
 #include "chromeos/network/network_configuration_handler.h"
@@ -24,6 +23,7 @@
 #include "chromeos/network/onc/onc_signature.h"
 #include "chromeos/network/onc/onc_translator.h"
 #include "chromeos/network/onc/onc_utils.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
 #include "components/user_manager/user.h"
 #include "components/user_manager/user_manager.h"
 #include "net/base/host_port_pair.h"
diff --git a/chrome/browser/chromeos/net/onc_utils.h b/chrome/browser/chromeos/net/onc_utils.h
index 3f6cae4..8c663ff 100644
--- a/chrome/browser/chromeos/net/onc_utils.h
+++ b/chrome/browser/chromeos/net/onc_utils.h
@@ -29,7 +29,7 @@
 
 // Translates |onc_proxy_settings|, which has to be a valid ONC ProxySettings
 // dictionary, to a ProxyConfig dictionary (see
-// chrome/browser/prefs/proxy_config_dictionary.h).
+// components/proxy_config/proxy_config_dictionary.h).
 //
 // This function is used to translate ONC ProxySettings to the "ProxyConfig"
 // field of the Shill configuration.
diff --git a/chrome/browser/chromeos/net/proxy_config_handler.cc b/chrome/browser/chromeos/net/proxy_config_handler.cc
index 0351f34..37ef935 100644
--- a/chrome/browser/chromeos/net/proxy_config_handler.cc
+++ b/chrome/browser/chromeos/net/proxy_config_handler.cc
@@ -10,7 +10,6 @@
 #include "base/prefs/pref_registry_simple.h"
 #include "base/values.h"
 #include "chrome/browser/chromeos/net/onc_utils.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
 #include "chrome/common/pref_names.h"
 #include "chromeos/dbus/dbus_thread_manager.h"
 #include "chromeos/dbus/shill_service_client.h"
@@ -20,6 +19,7 @@
 #include "chromeos/network/network_state.h"
 #include "chromeos/network/network_state_handler.h"
 #include "components/pref_registry/pref_registry_syncable.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
 #include "dbus/object_path.h"
 #include "third_party/cros_system_api/dbus/service_constants.h"
 
diff --git a/chrome/browser/chromeos/proxy_config_service_impl.cc b/chrome/browser/chromeos/proxy_config_service_impl.cc
index 8b59c5d..598244af 100644
--- a/chrome/browser/chromeos/proxy_config_service_impl.cc
+++ b/chrome/browser/chromeos/proxy_config_service_impl.cc
@@ -14,8 +14,6 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/chromeos/net/proxy_config_handler.h"
 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
-#include "chrome/browser/prefs/proxy_prefs.h"
 #include "chrome/common/pref_names.h"
 #include "chromeos/network/network_profile.h"
 #include "chromeos/network/network_profile_handler.h"
@@ -23,6 +21,8 @@
 #include "chromeos/network/network_state_handler.h"
 #include "chromeos/network/onc/onc_utils.h"
 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
+#include "components/proxy_config/proxy_prefs.h"
 #include "components/user_manager/user_manager.h"
 
 namespace chromeos {
diff --git a/chrome/browser/chromeos/ui_proxy_config.cc b/chrome/browser/chromeos/ui_proxy_config.cc
index 2dd3517..9b246c6 100644
--- a/chrome/browser/chromeos/ui_proxy_config.cc
+++ b/chrome/browser/chromeos/ui_proxy_config.cc
@@ -6,8 +6,7 @@
 
 #include "base/logging.h"
 #include "base/values.h"
-#include "chrome/browser/chromeos/policy/proto/chrome_device_policy.pb.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
 #include "net/proxy/proxy_config.h"
 
 namespace chromeos {
diff --git a/chrome/browser/chromeos/ui_proxy_config.h b/chrome/browser/chromeos/ui_proxy_config.h
index 08fa47fb..3e85c0a 100644
--- a/chrome/browser/chromeos/ui_proxy_config.h
+++ b/chrome/browser/chromeos/ui_proxy_config.h
@@ -7,7 +7,7 @@
 
 #include <string>
 
-#include "chrome/browser/prefs/proxy_prefs.h"
+#include "components/proxy_config/proxy_prefs.h"
 #include "net/proxy/proxy_bypass_rules.h"
 #include "net/proxy/proxy_server.h"
 #include "url/gurl.h"
diff --git a/chrome/browser/extensions/api/proxy/proxy_api.cc b/chrome/browser/extensions/api/proxy/proxy_api.cc
index c61d6ed..bbc2248 100644
--- a/chrome/browser/extensions/api/proxy/proxy_api.cc
+++ b/chrome/browser/extensions/api/proxy/proxy_api.cc
@@ -14,7 +14,7 @@
 #include "chrome/browser/extensions/api/proxy/proxy_api_helpers.h"
 #include "chrome/browser/extensions/event_router_forwarder.h"
 #include "chrome/browser/extensions/extension_service.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
 #include "net/base/net_errors.h"
 
 namespace extensions {
diff --git a/chrome/browser/extensions/api/proxy/proxy_api.h b/chrome/browser/extensions/api/proxy/proxy_api.h
index 62cbe73..8cb06d5 100644
--- a/chrome/browser/extensions/api/proxy/proxy_api.h
+++ b/chrome/browser/extensions/api/proxy/proxy_api.h
@@ -13,7 +13,7 @@
 #include "base/memory/singleton.h"
 #include "base/strings/string16.h"
 #include "chrome/browser/extensions/api/preference/preference_api.h"
-#include "chrome/browser/prefs/proxy_prefs.h"
+#include "components/proxy_config/proxy_prefs.h"
 
 namespace base {
 class Value;
diff --git a/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc b/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc
index 54f9357..69198770 100644
--- a/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc
+++ b/chrome/browser/extensions/api/proxy/proxy_api_helpers.cc
@@ -20,7 +20,7 @@
 #include "base/strings/utf_string_conversions.h"
 #include "base/values.h"
 #include "chrome/browser/extensions/api/proxy/proxy_api_constants.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
 #include "extensions/common/error_utils.h"
 #include "net/base/data_url.h"
 #include "net/proxy/proxy_config.h"
diff --git a/chrome/browser/extensions/api/proxy/proxy_api_helpers.h b/chrome/browser/extensions/api/proxy/proxy_api_helpers.h
index 064b5c25..26b9a9c 100644
--- a/chrome/browser/extensions/api/proxy/proxy_api_helpers.h
+++ b/chrome/browser/extensions/api/proxy/proxy_api_helpers.h
@@ -9,7 +9,7 @@
 
 #include <string>
 
-#include "chrome/browser/prefs/proxy_prefs.h"
+#include "components/proxy_config/proxy_prefs.h"
 #include "net/proxy/proxy_config.h"
 
 class ProxyConfigDictionary;
diff --git a/chrome/browser/extensions/api/proxy/proxy_api_helpers_unittest.cc b/chrome/browser/extensions/api/proxy/proxy_api_helpers_unittest.cc
index b32256b..98864bd44 100644
--- a/chrome/browser/extensions/api/proxy/proxy_api_helpers_unittest.cc
+++ b/chrome/browser/extensions/api/proxy/proxy_api_helpers_unittest.cc
@@ -8,8 +8,8 @@
 #include "base/values.h"
 #include "chrome/browser/extensions/api/proxy/proxy_api_constants.h"
 #include "chrome/browser/extensions/api/proxy/proxy_api_helpers.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
-#include "chrome/browser/prefs/proxy_prefs.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
+#include "components/proxy_config/proxy_prefs.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace extensions {
diff --git a/chrome/browser/extensions/api/proxy/proxy_apitest.cc b/chrome/browser/extensions/api/proxy/proxy_apitest.cc
index f88f6bb..bd80412 100644
--- a/chrome/browser/extensions/api/proxy/proxy_apitest.cc
+++ b/chrome/browser/extensions/api/proxy/proxy_apitest.cc
@@ -5,11 +5,11 @@
 #include "base/prefs/pref_service.h"
 #include "chrome/browser/extensions/extension_apitest.h"
 #include "chrome/browser/extensions/extension_util.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/pref_names.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
 #include "extensions/common/extension.h"
 #include "extensions/test/result_catcher.h"
 
diff --git a/chrome/browser/net/pref_proxy_config_tracker_impl.cc b/chrome/browser/net/pref_proxy_config_tracker_impl.cc
index a4ec56c..02469ddf 100644
--- a/chrome/browser/net/pref_proxy_config_tracker_impl.cc
+++ b/chrome/browser/net/pref_proxy_config_tracker_impl.cc
@@ -11,9 +11,9 @@
 #include "base/strings/string_util.h"
 #include "base/values.h"
 #include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
 #include "chrome/common/pref_names.h"
 #include "components/pref_registry/pref_registry_syncable.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/notification_details.h"
 #include "content/public/browser/notification_source.h"
diff --git a/chrome/browser/net/pref_proxy_config_tracker_impl.h b/chrome/browser/net/pref_proxy_config_tracker_impl.h
index 8055c265..1e35389 100644
--- a/chrome/browser/net/pref_proxy_config_tracker_impl.h
+++ b/chrome/browser/net/pref_proxy_config_tracker_impl.h
@@ -11,7 +11,7 @@
 #include "base/observer_list.h"
 #include "base/prefs/pref_change_registrar.h"
 #include "chrome/browser/net/pref_proxy_config_tracker.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
 #include "net/proxy/proxy_config.h"
 #include "net/proxy/proxy_config_service.h"
 
diff --git a/chrome/browser/net/pref_proxy_config_tracker_impl_unittest.cc b/chrome/browser/net/pref_proxy_config_tracker_impl_unittest.cc
index d780b95..2f55053 100644
--- a/chrome/browser/net/pref_proxy_config_tracker_impl_unittest.cc
+++ b/chrome/browser/net/pref_proxy_config_tracker_impl_unittest.cc
@@ -13,9 +13,9 @@
 #include "base/prefs/testing_pref_service.h"
 #include "base/test/histogram_tester.h"
 #include "chrome/browser/prefs/pref_service_mock_factory.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/pref_names.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
 #include "content/public/test/test_browser_thread.h"
 #include "net/proxy/proxy_config_service_common_unittest.h"
 #include "net/proxy/proxy_info.h"
diff --git a/chrome/browser/net/proxy_policy_handler.cc b/chrome/browser/net/proxy_policy_handler.cc
index 2cbab221..6e1024a 100644
--- a/chrome/browser/net/proxy_policy_handler.cc
+++ b/chrome/browser/net/proxy_policy_handler.cc
@@ -8,12 +8,12 @@
 #include "base/prefs/pref_value_map.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/values.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
-#include "chrome/browser/prefs/proxy_prefs.h"
 #include "chrome/common/pref_names.h"
 #include "components/policy/core/browser/configuration_policy_handler.h"
 #include "components/policy/core/browser/policy_error_map.h"
 #include "components/policy/core/common/policy_map.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
+#include "components/proxy_config/proxy_prefs.h"
 #include "grit/components_strings.h"
 #include "policy/policy_constants.h"
 
diff --git a/chrome/browser/net/proxy_policy_handler_unittest.cc b/chrome/browser/net/proxy_policy_handler_unittest.cc
index a1818a1..8e2737f 100644
--- a/chrome/browser/net/proxy_policy_handler_unittest.cc
+++ b/chrome/browser/net/proxy_policy_handler_unittest.cc
@@ -7,12 +7,12 @@
 #include "base/memory/scoped_ptr.h"
 #include "base/values.h"
 #include "chrome/browser/net/proxy_policy_handler.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
-#include "chrome/browser/prefs/proxy_prefs.h"
 #include "chrome/common/pref_names.h"
 #include "components/policy/core/browser/configuration_policy_pref_store.h"
 #include "components/policy/core/browser/configuration_policy_pref_store_test.h"
 #include "components/policy/core/common/policy_service_impl.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
+#include "components/proxy_config/proxy_prefs.h"
 #include "policy/policy_constants.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
diff --git a/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.cc b/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.cc
index 1ceb296..a45f5834 100644
--- a/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.cc
+++ b/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.cc
@@ -15,7 +15,6 @@
 #include "base/time/time.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
-#include "chrome/browser/prefs/proxy_prefs.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/common/pref_names.h"
@@ -25,6 +24,7 @@
 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_service.h"
 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h"
 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_params.h"
+#include "components/proxy_config/proxy_prefs.h"
 #include "net/base/host_port_pair.h"
 #include "net/proxy/proxy_config.h"
 #include "net/proxy/proxy_list.h"
diff --git a/chrome/browser/net/spdyproxy/data_reduction_proxy_settings_unittest_android.cc b/chrome/browser/net/spdyproxy/data_reduction_proxy_settings_unittest_android.cc
index c2f319b..d742331a 100644
--- a/chrome/browser/net/spdyproxy/data_reduction_proxy_settings_unittest_android.cc
+++ b/chrome/browser/net/spdyproxy/data_reduction_proxy_settings_unittest_android.cc
@@ -14,7 +14,6 @@
 #include "base/test/test_simple_task_runner.h"
 #include "base/time/time.h"
 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.h"
-#include "chrome/browser/prefs/proxy_prefs.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/pref_names.h"
 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_config_test_utils.h"
@@ -22,6 +21,7 @@
 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_test_utils.h"
 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_params.h"
 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_params_test_utils.h"
+#include "components/proxy_config/proxy_prefs.h"
 #include "net/proxy/proxy_server.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/browser/prefs/command_line_pref_store.cc b/chrome/browser/prefs/command_line_pref_store.cc
index 53c6dbd..4d504c41 100644
--- a/chrome/browser/prefs/command_line_pref_store.cc
+++ b/chrome/browser/prefs/command_line_pref_store.cc
@@ -12,9 +12,9 @@
 #include "base/strings/string_number_conversions.h"
 #include "base/strings/string_split.h"
 #include "base/values.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/pref_names.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
 #include "ui/base/ui_base_switches.h"
 
 #if defined(OS_CHROMEOS)
diff --git a/chrome/browser/prefs/command_line_pref_store_unittest.cc b/chrome/browser/prefs/command_line_pref_store_unittest.cc
index 53c3e67b..d515a1c 100644
--- a/chrome/browser/prefs/command_line_pref_store_unittest.cc
+++ b/chrome/browser/prefs/command_line_pref_store_unittest.cc
@@ -9,9 +9,9 @@
 #include "base/strings/string_util.h"
 #include "base/values.h"
 #include "chrome/browser/prefs/command_line_pref_store.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/pref_names.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
 #include "ui/base/ui_base_switches.h"
 
 namespace {
diff --git a/chrome/browser/prefs/proxy_config_dictionary.cc b/chrome/browser/prefs/proxy_config_dictionary.cc
deleted file mode 100644
index 85852ea9..0000000
--- a/chrome/browser/prefs/proxy_config_dictionary.cc
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright (c) 2011 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 "chrome/browser/prefs/proxy_config_dictionary.h"
-
-#include "base/basictypes.h"
-#include "base/logging.h"
-#include "base/values.h"
-
-namespace {
-
-// Integer to specify the type of proxy settings.
-// See ProxyPrefs for possible values and interactions with the other proxy
-// preferences.
-const char kProxyMode[] = "mode";
-// String specifying the proxy server. For a specification of the expected
-// syntax see net::ProxyConfig::ProxyRules::ParseFromString().
-const char kProxyServer[] = "server";
-// URL to the proxy .pac file.
-const char kProxyPacUrl[] = "pac_url";
-// Optional boolean flag indicating whether a valid PAC script is mandatory.
-// If true, network traffic does not fall back to direct connections in case the
-// PAC script is not available.
-const char kProxyPacMandatory[] = "pac_mandatory";
-// String containing proxy bypass rules. For a specification of the
-// expected syntax see net::ProxyBypassRules::ParseFromString().
-const char kProxyBypassList[] = "bypass_list";
-
-}  // namespace
-
-ProxyConfigDictionary::ProxyConfigDictionary(const base::DictionaryValue* dict)
-    : dict_(dict->DeepCopy()) {
-}
-
-ProxyConfigDictionary::~ProxyConfigDictionary() {}
-
-bool ProxyConfigDictionary::GetMode(ProxyPrefs::ProxyMode* out) const {
-  std::string mode_str;
-  return dict_->GetString(kProxyMode, &mode_str)
-      && StringToProxyMode(mode_str, out);
-}
-
-bool ProxyConfigDictionary::GetPacUrl(std::string* out) const {
-  return dict_->GetString(kProxyPacUrl, out);
-}
-
-bool ProxyConfigDictionary::GetPacMandatory(bool* out) const {
-  if (!dict_->HasKey(kProxyPacMandatory)) {
-    *out = false;
-    return true;
-  }
-  return dict_->GetBoolean(kProxyPacMandatory, out);
-}
-
-bool ProxyConfigDictionary::GetProxyServer(std::string* out) const {
-  return dict_->GetString(kProxyServer, out);
-}
-
-bool ProxyConfigDictionary::GetBypassList(std::string* out) const {
-  return dict_->GetString(kProxyBypassList, out);
-}
-
-bool ProxyConfigDictionary::HasBypassList() const {
-  return dict_->HasKey(kProxyBypassList);
-}
-
-const base::DictionaryValue& ProxyConfigDictionary::GetDictionary() const {
-  return *dict_;
-}
-
-// static
-base::DictionaryValue* ProxyConfigDictionary::CreateDirect() {
-  return CreateDictionary(ProxyPrefs::MODE_DIRECT,
-                          std::string(),
-                          false,
-                          std::string(),
-                          std::string());
-}
-
-// static
-base::DictionaryValue* ProxyConfigDictionary::CreateAutoDetect() {
-  return CreateDictionary(ProxyPrefs::MODE_AUTO_DETECT,
-                          std::string(),
-                          false,
-                          std::string(),
-                          std::string());
-}
-
-// static
-base::DictionaryValue* ProxyConfigDictionary::CreatePacScript(
-    const std::string& pac_url,
-    bool pac_mandatory) {
-  return CreateDictionary(ProxyPrefs::MODE_PAC_SCRIPT,
-                          pac_url,
-                          pac_mandatory,
-                          std::string(),
-                          std::string());
-}
-
-// static
-base::DictionaryValue* ProxyConfigDictionary::CreateFixedServers(
-    const std::string& proxy_server,
-    const std::string& bypass_list) {
-  if (!proxy_server.empty()) {
-    return CreateDictionary(ProxyPrefs::MODE_FIXED_SERVERS,
-                            std::string(),
-                            false,
-                            proxy_server,
-                            bypass_list);
-  } else {
-    return CreateDirect();
-  }
-}
-
-// static
-base::DictionaryValue* ProxyConfigDictionary::CreateSystem() {
-  return CreateDictionary(ProxyPrefs::MODE_SYSTEM,
-                          std::string(),
-                          false,
-                          std::string(),
-                          std::string());
-}
-
-// static
-base::DictionaryValue* ProxyConfigDictionary::CreateDictionary(
-    ProxyPrefs::ProxyMode mode,
-    const std::string& pac_url,
-    bool pac_mandatory,
-    const std::string& proxy_server,
-    const std::string& bypass_list) {
-  base::DictionaryValue* dict = new base::DictionaryValue();
-  dict->SetString(kProxyMode, ProxyModeToString(mode));
-  if (!pac_url.empty()) {
-    dict->SetString(kProxyPacUrl, pac_url);
-    dict->SetBoolean(kProxyPacMandatory, pac_mandatory);
-  }
-  if (!proxy_server.empty())
-    dict->SetString(kProxyServer, proxy_server);
-  if (!bypass_list.empty())
-    dict->SetString(kProxyBypassList, bypass_list);
-  return dict;
-}
diff --git a/chrome/browser/prefs/proxy_config_dictionary.h b/chrome/browser/prefs/proxy_config_dictionary.h
deleted file mode 100644
index 1593768..0000000
--- a/chrome/browser/prefs/proxy_config_dictionary.h
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2011 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.
-
-#ifndef CHROME_BROWSER_PREFS_PROXY_CONFIG_DICTIONARY_H_
-#define CHROME_BROWSER_PREFS_PROXY_CONFIG_DICTIONARY_H_
-
-#include <string>
-
-#include "base/basictypes.h"
-#include "base/memory/scoped_ptr.h"
-#include "chrome/browser/prefs/proxy_prefs.h"
-
-namespace base {
-class DictionaryValue;
-}
-
-// Factory and wrapper for proxy config dictionaries that are stored
-// in the user preferences. The dictionary has the following structure:
-// {
-//   mode: string,
-//   server: string,
-//   pac_url: string,
-//   bypass_list: string
-// }
-// See proxy_config_dictionary.cc for the structure of the respective strings.
-class ProxyConfigDictionary {
- public:
-  // Creates a deep copy of |dict| and leaves ownership to caller.
-  explicit ProxyConfigDictionary(const base::DictionaryValue* dict);
-  ~ProxyConfigDictionary();
-
-  bool GetMode(ProxyPrefs::ProxyMode* out) const;
-  bool GetPacUrl(std::string* out) const;
-  bool GetPacMandatory(bool* out) const;
-  bool GetProxyServer(std::string* out) const;
-  bool GetBypassList(std::string* out) const;
-  bool HasBypassList() const;
-
-  const base::DictionaryValue& GetDictionary() const;
-
-  static base::DictionaryValue* CreateDirect();
-  static base::DictionaryValue* CreateAutoDetect();
-  static base::DictionaryValue* CreatePacScript(const std::string& pac_url,
-                                          bool pac_mandatory);
-  static base::DictionaryValue* CreateFixedServers(
-      const std::string& proxy_server,
-      const std::string& bypass_list);
-  static base::DictionaryValue* CreateSystem();
- private:
-  static base::DictionaryValue* CreateDictionary(
-      ProxyPrefs::ProxyMode mode,
-      const std::string& pac_url,
-      bool pac_mandatory,
-      const std::string& proxy_server,
-      const std::string& bypass_list);
-
-  scoped_ptr<base::DictionaryValue> dict_;
-
-  DISALLOW_COPY_AND_ASSIGN(ProxyConfigDictionary);
-};
-
-#endif  // CHROME_BROWSER_PREFS_PROXY_CONFIG_DICTIONARY_H_
diff --git a/chrome/browser/prefs/proxy_config_dictionary_unittest.cc b/chrome/browser/prefs/proxy_config_dictionary_unittest.cc
deleted file mode 100644
index 171c34b1..0000000
--- a/chrome/browser/prefs/proxy_config_dictionary_unittest.cc
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright (c) 2011 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 <string>
-
-#include "base/memory/scoped_ptr.h"
-#include "base/values.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-struct ProxyConfigHolder {
-  ProxyPrefs::ProxyMode mode;
-  std::string pac_url;
-  std::string proxy_server;
-  std::string bypass_list;
-};
-
-TEST(ProxyConfigDictionaryTest, CreateDirect) {
-  scoped_ptr<base::DictionaryValue> dict_value(
-      ProxyConfigDictionary::CreateDirect());
-  ProxyConfigDictionary dict(dict_value.get());
-  ProxyConfigHolder h;
-
-  ASSERT_TRUE(dict.GetMode(&h.mode));
-  EXPECT_EQ(ProxyPrefs::MODE_DIRECT, h.mode);
-  ASSERT_FALSE(dict.GetPacUrl(&h.bypass_list));
-  ASSERT_FALSE(dict.GetProxyServer(&h.proxy_server));
-  ASSERT_FALSE(dict.GetBypassList(&h.bypass_list));
-}
-
-TEST(ProxyConfigDictionaryTest, CreateAutoDetect) {
-  scoped_ptr<base::DictionaryValue> dict_value(
-      ProxyConfigDictionary::CreateAutoDetect());
-  ProxyConfigDictionary dict(dict_value.get());
-  ProxyConfigHolder h;
-
-  ASSERT_TRUE(dict.GetMode(&h.mode));
-  EXPECT_EQ(ProxyPrefs::MODE_AUTO_DETECT, h.mode);
-  ASSERT_FALSE(dict.GetPacUrl(&h.bypass_list));
-  ASSERT_FALSE(dict.GetProxyServer(&h.proxy_server));
-  ASSERT_FALSE(dict.GetBypassList(&h.bypass_list));
-}
-
-TEST(ProxyConfigDictionaryTest, CreatePacScript) {
-  scoped_ptr<base::DictionaryValue> dict_value(
-      ProxyConfigDictionary::CreatePacScript("pac", false));
-  ProxyConfigDictionary dict(dict_value.get());
-  ProxyConfigHolder h;
-
-  ASSERT_TRUE(dict.GetMode(&h.mode));
-  EXPECT_EQ(ProxyPrefs::MODE_PAC_SCRIPT, h.mode);
-  ASSERT_TRUE(dict.GetPacUrl(&h.bypass_list));
-  EXPECT_EQ("pac", h.bypass_list);
-  ASSERT_FALSE(dict.GetProxyServer(&h.proxy_server));
-  ASSERT_FALSE(dict.GetBypassList(&h.bypass_list));
-}
-
-TEST(ProxyConfigDictionaryTest, CreateFixedServers) {
-  scoped_ptr<base::DictionaryValue> dict_value(
-      ProxyConfigDictionary::CreateFixedServers("http://1.2.3.4",
-                                                "http://foo"));
-  ProxyConfigDictionary dict(dict_value.get());
-  ProxyConfigHolder h;
-
-  ASSERT_TRUE(dict.GetMode(&h.mode));
-  EXPECT_EQ(ProxyPrefs::MODE_FIXED_SERVERS, h.mode);
-  ASSERT_FALSE(dict.GetPacUrl(&h.bypass_list));
-  ASSERT_TRUE(dict.GetProxyServer(&h.proxy_server));
-  EXPECT_EQ("http://1.2.3.4", h.proxy_server);
-  ASSERT_TRUE(dict.GetBypassList(&h.bypass_list));
-  EXPECT_EQ("http://foo", h.bypass_list);
-}
-
-TEST(ProxyConfigDictionaryTest, CreateSystem) {
-  scoped_ptr<base::DictionaryValue> dict_value(
-      ProxyConfigDictionary::CreateSystem());
-  ProxyConfigDictionary dict(dict_value.get());
-  ProxyConfigHolder h;
-
-  ASSERT_TRUE(dict.GetMode(&h.mode));
-  EXPECT_EQ(ProxyPrefs::MODE_SYSTEM, h.mode);
-  ASSERT_FALSE(dict.GetPacUrl(&h.bypass_list));
-  ASSERT_FALSE(dict.GetProxyServer(&h.proxy_server));
-  ASSERT_FALSE(dict.GetBypassList(&h.bypass_list));
-}
diff --git a/chrome/browser/prefs/proxy_policy_unittest.cc b/chrome/browser/prefs/proxy_policy_unittest.cc
index 80a0874..3daee07 100644
--- a/chrome/browser/prefs/proxy_policy_unittest.cc
+++ b/chrome/browser/prefs/proxy_policy_unittest.cc
@@ -10,8 +10,6 @@
 #include "chrome/browser/prefs/browser_prefs.h"
 #include "chrome/browser/prefs/pref_service_mock_factory.h"
 #include "chrome/browser/prefs/pref_service_syncable.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
-#include "chrome/browser/prefs/proxy_prefs.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/pref_names.h"
 #include "components/policy/core/common/external_data_fetcher.h"
@@ -19,6 +17,8 @@
 #include "components/policy/core/common/policy_map.h"
 #include "components/policy/core/common/policy_service_impl.h"
 #include "components/pref_registry/pref_registry_syncable.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
+#include "components/proxy_config/proxy_prefs.h"
 #include "content/public/test/test_browser_thread_bundle.h"
 #include "policy/policy_constants.h"
 #include "testing/gtest/include/gtest/gtest.h"
diff --git a/chrome/browser/prefs/proxy_prefs.cc b/chrome/browser/prefs/proxy_prefs.cc
deleted file mode 100644
index 04785ec2..0000000
--- a/chrome/browser/prefs/proxy_prefs.cc
+++ /dev/null
@@ -1,73 +0,0 @@
-// 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 "chrome/browser/prefs/proxy_prefs.h"
-
-#include "base/basictypes.h"
-#include "base/logging.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
diff --git a/chrome/browser/prefs/proxy_prefs.h b/chrome/browser/prefs/proxy_prefs.h
deleted file mode 100644
index ea151f7..0000000
--- a/chrome/browser/prefs/proxy_prefs.h
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (c) 2011 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.
-
-#ifndef CHROME_BROWSER_PREFS_PROXY_PREFS_H_
-#define CHROME_BROWSER_PREFS_PROXY_PREFS_H_
-
-#include <string>
-
-namespace ProxyPrefs {
-
-// Possible types of specifying proxy settings. Do not change the order of
-// the constants, because numeric values are exposed to users.
-// If you add an enum constant, you should also add a string to
-// kProxyModeNames in the .cc file.
-enum ProxyMode {
-  // Direct connection to the network, other proxy preferences are ignored.
-  MODE_DIRECT = 0,
-
-  // Try to retrieve a PAC script from http://wpad/wpad.dat or fall back to
-  // direct connection.
-  MODE_AUTO_DETECT = 1,
-
-  // Try to retrieve a PAC script from kProxyPacURL or fall back to direct
-  // connection.
-  MODE_PAC_SCRIPT = 2,
-
-  // Use the settings specified in kProxyServer and kProxyBypassList.
-  MODE_FIXED_SERVERS = 3,
-
-  // The system's proxy settings are used, other proxy preferences are
-  // ignored.
-  MODE_SYSTEM = 4,
-
-  kModeCount
-};
-
-// State of proxy configuration.
-enum ConfigState {
-  // Configuration is from policy.
-  CONFIG_POLICY,
-  // Configuration is from extension.
-  CONFIG_EXTENSION,
-  // Configuration is not from policy or extension but still precedes others.
-  CONFIG_OTHER_PRECEDE,
-  // Configuration is from system.
-  CONFIG_SYSTEM,
-  // Configuration is recommended i.e there's a fallback configuration.
-  CONFIG_FALLBACK,
-  // Configuration is known to be not set.
-  CONFIG_UNSET,
-};
-
-// Constants for string values used to specify the proxy mode through externally
-// visible APIs, e.g. through policy or the proxy extension API.
-extern const char kDirectProxyModeName[];
-extern const char kAutoDetectProxyModeName[];
-extern const char kPacScriptProxyModeName[];
-extern const char kFixedServersProxyModeName[];
-extern const char kSystemProxyModeName[];
-
-bool IntToProxyMode(int in_value, ProxyMode* out_value);
-bool StringToProxyMode(const std::string& in_value, ProxyMode* out_value);
-// Ownership of the return value is NOT passed to the caller.
-const char* ProxyModeToString(ProxyMode mode);
-std::string ConfigStateToDebugString(ConfigState state);
-
-}  // namespace ProxyPrefs
-
-#endif  // CHROME_BROWSER_PREFS_PROXY_PREFS_H_
diff --git a/chrome/browser/prefs/proxy_prefs_unittest.cc b/chrome/browser/prefs/proxy_prefs_unittest.cc
deleted file mode 100644
index 63b8ea3..0000000
--- a/chrome/browser/prefs/proxy_prefs_unittest.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2011 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 <string>
-
-#include "base/values.h"
-#include "chrome/browser/prefs/proxy_prefs.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-TEST(ProxyPrefsTest, StringToProxyMode) {
-  ProxyPrefs::ProxyMode mode;
-  EXPECT_TRUE(ProxyPrefs::StringToProxyMode("direct", &mode));
-  EXPECT_EQ(ProxyPrefs::MODE_DIRECT, mode);
-  EXPECT_TRUE(ProxyPrefs::StringToProxyMode("auto_detect", &mode));
-  EXPECT_EQ(ProxyPrefs::MODE_AUTO_DETECT, mode);
-  EXPECT_TRUE(ProxyPrefs::StringToProxyMode("pac_script", &mode));
-  EXPECT_EQ(ProxyPrefs::MODE_PAC_SCRIPT, mode);
-  EXPECT_TRUE(ProxyPrefs::StringToProxyMode("system", &mode));
-  EXPECT_EQ(ProxyPrefs::MODE_SYSTEM, mode);
-  EXPECT_TRUE(ProxyPrefs::StringToProxyMode("fixed_servers", &mode));
-  EXPECT_EQ(ProxyPrefs::MODE_FIXED_SERVERS, mode);
-
-  EXPECT_FALSE(ProxyPrefs::StringToProxyMode("monkey", &mode));
-}
-
-TEST(ProxyPrefsTest, IntToProxyMode) {
-  ASSERT_EQ(ProxyPrefs::MODE_DIRECT, 0);
-  ASSERT_EQ(ProxyPrefs::MODE_AUTO_DETECT, 1);
-  ASSERT_EQ(ProxyPrefs::MODE_PAC_SCRIPT, 2);
-  ASSERT_EQ(ProxyPrefs::MODE_FIXED_SERVERS, 3);
-  ASSERT_EQ(ProxyPrefs::MODE_SYSTEM, 4);
-  // Update the following as necessary, don't change the previous ones.
-  ASSERT_EQ(ProxyPrefs::kModeCount, 5);
-
-  ProxyPrefs::ProxyMode mode;
-  EXPECT_TRUE(ProxyPrefs::IntToProxyMode(0, &mode));
-  EXPECT_EQ(ProxyPrefs::MODE_DIRECT, mode);
-  EXPECT_TRUE(ProxyPrefs::IntToProxyMode(1, &mode));
-  EXPECT_EQ(ProxyPrefs::MODE_AUTO_DETECT, mode);
-  EXPECT_TRUE(ProxyPrefs::IntToProxyMode(2, &mode));
-  EXPECT_EQ(ProxyPrefs::MODE_PAC_SCRIPT, mode);
-  EXPECT_TRUE(ProxyPrefs::IntToProxyMode(3, &mode));
-  EXPECT_EQ(ProxyPrefs::MODE_FIXED_SERVERS, mode);
-  EXPECT_TRUE(ProxyPrefs::IntToProxyMode(4, &mode));
-  EXPECT_EQ(ProxyPrefs::MODE_SYSTEM, mode);
-
-  EXPECT_FALSE(ProxyPrefs::IntToProxyMode(-1, &mode));
-  EXPECT_FALSE(ProxyPrefs::IntToProxyMode(ProxyPrefs::kModeCount, &mode));
-}
diff --git a/chrome/browser/profiles/off_the_record_profile_impl.cc b/chrome/browser/profiles/off_the_record_profile_impl.cc
index 02ece36c..871769e 100644
--- a/chrome/browser/profiles/off_the_record_profile_impl.cc
+++ b/chrome/browser/profiles/off_the_record_profile_impl.cc
@@ -61,7 +61,7 @@
 
 #if defined(OS_ANDROID) || defined(OS_IOS)
 #include "base/prefs/scoped_user_pref_update.h"
-#include "chrome/browser/prefs/proxy_prefs.h"
+#include "components/proxy_config/proxy_prefs.h"
 #endif  // defined(OS_ANDROID) || defined(OS_IOS)
 
 #if defined(OS_CHROMEOS)
diff --git a/chrome/browser/ui/webui/chromeos/login/network_state_informer.cc b/chrome/browser/ui/webui/chromeos/login/network_state_informer.cc
index 00af251..8023002 100644
--- a/chrome/browser/ui/webui/chromeos/login/network_state_informer.cc
+++ b/chrome/browser/ui/webui/chromeos/login/network_state_informer.cc
@@ -11,10 +11,10 @@
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/chromeos/login/screens/network_error.h"
 #include "chrome/browser/chromeos/net/proxy_config_handler.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
-#include "chrome/browser/prefs/proxy_prefs.h"
 #include "chromeos/network/network_state.h"
 #include "chromeos/network/network_state_handler.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
+#include "components/proxy_config/proxy_prefs.h"
 #include "net/proxy/proxy_config.h"
 #include "third_party/cros_system_api/dbus/service_constants.h"
 
diff --git a/chrome/browser/ui/webui/options/preferences_browsertest.cc b/chrome/browser/ui/webui/options/preferences_browsertest.cc
index b5a89c9..2482e34 100644
--- a/chrome/browser/ui/webui/options/preferences_browsertest.cc
+++ b/chrome/browser/ui/webui/options/preferences_browsertest.cc
@@ -41,13 +41,13 @@
 #include "chrome/browser/chromeos/policy/stub_enterprise_install_attributes.h"
 #include "chrome/browser/chromeos/proxy_cros_settings_parser.h"
 #include "chrome/browser/chromeos/settings/cros_settings.h"
-#include "chrome/browser/prefs/proxy_config_dictionary.h"
 #include "chromeos/dbus/dbus_thread_manager.h"
 #include "chromeos/dbus/shill_profile_client.h"
 #include "chromeos/dbus/shill_service_client.h"
 #include "chromeos/network/network_state.h"
 #include "chromeos/network/network_state_handler.h"
 #include "chromeos/settings/cros_settings_names.h"
+#include "components/proxy_config/proxy_config_dictionary.h"
 #include "content/public/test/test_utils.h"
 #include "third_party/cros_system_api/dbus/service_constants.h"
 #endif