Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(691)

Unified Diff: chrome/browser/chromeos/proxy_cros_settings_provider.cc

Issue 8467012: Refactor proxy handling for ChromeOS to not go through the CrosSettings interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Centralized the proxy change notification. Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/proxy_cros_settings_provider.cc
diff --git a/chrome/browser/chromeos/proxy_cros_settings_provider.cc b/chrome/browser/chromeos/proxy_cros_settings_provider.cc
deleted file mode 100644
index 85a89a12b7e6d561cd2b936f7217808dbd35dfa4..0000000000000000000000000000000000000000
--- a/chrome/browser/chromeos/proxy_cros_settings_provider.cc
+++ /dev/null
@@ -1,389 +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/chromeos/proxy_cros_settings_provider.h"
-
-#include "base/string_util.h"
-#include "chrome/browser/browser_process.h"
-#include "chrome/browser/chromeos/cros_settings.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/ui/browser_list.h"
-
-namespace chromeos {
-
-static const char kProxyPacUrl[] = "cros.session.proxy.pacurl";
-static const char kProxySingleHttp[] = "cros.session.proxy.singlehttp";
-static const char kProxySingleHttpPort[] = "cros.session.proxy.singlehttpport";
-static const char kProxyHttpUrl[] = "cros.session.proxy.httpurl";
-static const char kProxyHttpPort[] = "cros.session.proxy.httpport";
-static const char kProxyHttpsUrl[] = "cros.session.proxy.httpsurl";
-static const char kProxyHttpsPort[] = "cros.session.proxy.httpsport";
-static const char kProxyType[] = "cros.session.proxy.type";
-static const char kProxySingle[] = "cros.session.proxy.single";
-static const char kProxyFtpUrl[] = "cros.session.proxy.ftpurl";
-static const char kProxyFtpPort[] = "cros.session.proxy.ftpport";
-static const char kProxySocks[] = "cros.session.proxy.socks";
-static const char kProxySocksPort[] = "cros.session.proxy.socksport";
-static const char kProxyIgnoreList[] = "cros.session.proxy.ignorelist";
-
-static const char* const kProxySettings[] = {
- kProxyPacUrl,
- kProxySingleHttp,
- kProxySingleHttpPort,
- kProxyHttpUrl,
- kProxyHttpPort,
- kProxyHttpsUrl,
- kProxyHttpsPort,
- kProxyType,
- kProxySingle,
- kProxyFtpUrl,
- kProxyFtpPort,
- kProxySocks,
- kProxySocksPort,
- kProxyIgnoreList,
-};
-
-//------------------ ProxyCrosSettingsProvider: public methods -----------------
-
-ProxyCrosSettingsProvider::ProxyCrosSettingsProvider(Profile* profile)
- : profile_(profile) {
-}
-
-void ProxyCrosSettingsProvider::SetCurrentNetwork(const std::string& network) {
- GetConfigService()->UISetCurrentNetwork(network);
- for (size_t i = 0; i < arraysize(kProxySettings); ++i)
- CrosSettings::Get()->FireObservers(kProxySettings[i]);
-}
-
-void ProxyCrosSettingsProvider::MakeActiveNetworkCurrent() {
- GetConfigService()->UIMakeActiveNetworkCurrent();
- for (size_t i = 0; i < arraysize(kProxySettings); ++i)
- CrosSettings::Get()->FireObservers(kProxySettings[i]);
-}
-
-void ProxyCrosSettingsProvider::DoSet(const std::string& path,
- Value* in_value) {
- if (!in_value) {
- return;
- }
-
- chromeos::ProxyConfigServiceImpl* config_service = GetConfigService();
- // Retrieve proxy config.
- chromeos::ProxyConfigServiceImpl::ProxyConfig config;
- config_service->UIGetProxyConfig(&config);
-
- if (path == kProxyPacUrl) {
- std::string val;
- if (in_value->GetAsString(&val)) {
- GURL url(val);
- if (url.is_valid())
- config_service->UISetProxyConfigToPACScript(url);
- else
- config_service->UISetProxyConfigToAutoDetect();
- }
- } else if (path == kProxySingleHttp) {
- std::string val;
- if (in_value->GetAsString(&val)) {
- config_service->UISetProxyConfigToSingleProxy(CreateProxyServerFromHost(
- val, config.single_proxy, net::ProxyServer::SCHEME_HTTP));
- }
- } else if (path == kProxySingleHttpPort) {
- int val;
- if (in_value->GetAsInteger(&val)) {
- config_service->UISetProxyConfigToSingleProxy(CreateProxyServerFromPort(
- val, config.single_proxy, net::ProxyServer::SCHEME_HTTP));
- }
- } else if (path == kProxyHttpUrl) {
- std::string val;
- if (in_value->GetAsString(&val)) {
- config_service->UISetProxyConfigToProxyPerScheme("http",
- CreateProxyServerFromHost(
- val, config.http_proxy, net::ProxyServer::SCHEME_HTTP));
- }
- } else if (path == kProxyHttpPort) {
- int val;
- if (in_value->GetAsInteger(&val)) {
- config_service->UISetProxyConfigToProxyPerScheme("http",
- CreateProxyServerFromPort(
- val, config.http_proxy, net::ProxyServer::SCHEME_HTTP));
- }
- } else if (path == kProxyHttpsUrl) {
- std::string val;
- if (in_value->GetAsString(&val)) {
- config_service->UISetProxyConfigToProxyPerScheme("https",
- CreateProxyServerFromHost(
- val, config.https_proxy, net::ProxyServer::SCHEME_HTTP));
- }
- } else if (path == kProxyHttpsPort) {
- int val;
- if (in_value->GetAsInteger(&val)) {
- config_service->UISetProxyConfigToProxyPerScheme("https",
- CreateProxyServerFromPort(
- val, config.https_proxy, net::ProxyServer::SCHEME_HTTP));
- }
- } else if (path == kProxyType) {
- int val;
- if (in_value->GetAsInteger(&val)) {
- if (val == 3) {
- if (config.automatic_proxy.pac_url.is_valid())
- config_service->UISetProxyConfigToPACScript(
- config.automatic_proxy.pac_url);
- else
- config_service->UISetProxyConfigToAutoDetect();
- } else if (val == 2) {
- if (config.single_proxy.server.is_valid()) {
- config_service->UISetProxyConfigToSingleProxy(
- config.single_proxy.server);
- } else {
- bool set_config = false;
- if (config.http_proxy.server.is_valid()) {
- config_service->UISetProxyConfigToProxyPerScheme("http",
- config.http_proxy.server);
- set_config = true;
- }
- if (config.https_proxy.server.is_valid()) {
- config_service->UISetProxyConfigToProxyPerScheme("https",
- config.https_proxy.server);
- set_config = true;
- }
- if (config.ftp_proxy.server.is_valid()) {
- config_service->UISetProxyConfigToProxyPerScheme("ftp",
- config.ftp_proxy.server);
- set_config = true;
- }
- if (config.socks_proxy.server.is_valid()) {
- config_service->UISetProxyConfigToProxyPerScheme("socks",
- config.socks_proxy.server);
- set_config = true;
- }
- if (!set_config) {
- config_service->UISetProxyConfigToProxyPerScheme("http",
- net::ProxyServer());
- }
- }
- } else {
- config_service->UISetProxyConfigToDirect();
- }
- }
- } else if (path == kProxySingle) {
- bool val;
- if (in_value->GetAsBoolean(&val)) {
- if (val)
- config_service->UISetProxyConfigToSingleProxy(
- config.single_proxy.server);
- else
- config_service->UISetProxyConfigToProxyPerScheme("http",
- config.http_proxy.server);
- }
- } else if (path == kProxyFtpUrl) {
- std::string val;
- if (in_value->GetAsString(&val)) {
- config_service->UISetProxyConfigToProxyPerScheme("ftp",
- CreateProxyServerFromHost(
- val, config.ftp_proxy, net::ProxyServer::SCHEME_HTTP));
- }
- } else if (path == kProxyFtpPort) {
- int val;
- if (in_value->GetAsInteger(&val)) {
- config_service->UISetProxyConfigToProxyPerScheme("ftp",
- CreateProxyServerFromPort(
- val, config.ftp_proxy, net::ProxyServer::SCHEME_HTTP));
- }
- } else if (path == kProxySocks) {
- std::string val;
- if (in_value->GetAsString(&val)) {
- config_service->UISetProxyConfigToProxyPerScheme("socks",
- CreateProxyServerFromHost(val, config.socks_proxy,
- StartsWithASCII(val, "socks5://", false) ?
- net::ProxyServer::SCHEME_SOCKS5 :
- net::ProxyServer::SCHEME_SOCKS4));
- }
- } else if (path == kProxySocksPort) {
- int val;
- if (in_value->GetAsInteger(&val)) {
- std::string host = config.socks_proxy.server.host_port_pair().host();
- config_service->UISetProxyConfigToProxyPerScheme("socks",
- CreateProxyServerFromPort(val, config.socks_proxy,
- StartsWithASCII(host, "socks5://", false) ?
- net::ProxyServer::SCHEME_SOCKS5 :
- net::ProxyServer::SCHEME_SOCKS4));
- }
- } else if (path == kProxyIgnoreList) {
- net::ProxyBypassRules bypass_rules;
- if (in_value->GetType() == Value::TYPE_LIST) {
- const ListValue* list_value = static_cast<const ListValue*>(in_value);
- for (size_t x = 0; x < list_value->GetSize(); x++) {
- std::string val;
- if (list_value->GetString(x, &val)) {
- bypass_rules.AddRuleFromString(val);
- }
- }
- config_service->UISetProxyConfigBypassRules(bypass_rules);
- }
- }
-}
-
-bool ProxyCrosSettingsProvider::Get(const std::string& path,
- Value** out_value) const {
- bool found = false;
- bool managed = false;
- std::string controlled_by;
- Value* data = NULL;
- chromeos::ProxyConfigServiceImpl* config_service = GetConfigService();
- chromeos::ProxyConfigServiceImpl::ProxyConfig config;
- config_service->UIGetProxyConfig(&config);
-
- if (path == kProxyPacUrl) {
- // Only show pacurl for pac-script mode.
- if (config.mode ==
- chromeos::ProxyConfigServiceImpl::ProxyConfig::MODE_PAC_SCRIPT &&
- config.automatic_proxy.pac_url.is_valid()) {
- data = Value::CreateStringValue(config.automatic_proxy.pac_url.spec());
- }
- found = true;
- } else if (path == kProxySingleHttp) {
- data = CreateServerHostValue(config.single_proxy);
- found = true;
- } else if (path == kProxySingleHttpPort) {
- data = CreateServerPortValue(config.single_proxy);
- found = true;
- } else if (path == kProxyHttpUrl) {
- data = CreateServerHostValue(config.http_proxy);
- found = true;
- } else if (path == kProxyHttpsUrl) {
- data = CreateServerHostValue(config.https_proxy);
- found = true;
- } else if (path == kProxyType) {
- if (config.mode ==
- chromeos::ProxyConfigServiceImpl::ProxyConfig::MODE_AUTO_DETECT ||
- config.mode ==
- chromeos::ProxyConfigServiceImpl::ProxyConfig::MODE_PAC_SCRIPT) {
- data = Value::CreateIntegerValue(3);
- } else if (config.mode ==
- chromeos::ProxyConfigServiceImpl::ProxyConfig::MODE_SINGLE_PROXY ||
- config.mode ==
- chromeos::ProxyConfigServiceImpl::ProxyConfig::MODE_PROXY_PER_SCHEME) {
- data = Value::CreateIntegerValue(2);
- } else {
- data = Value::CreateIntegerValue(1);
- }
- switch (config.state) {
- case ProxyPrefs::CONFIG_POLICY:
- controlled_by = "policyManagedPrefsBannerText";
- break;
- case ProxyPrefs::CONFIG_EXTENSION:
- controlled_by = "extensionManagedPrefsBannerText";
- break;
- case ProxyPrefs::CONFIG_OTHER_PRECEDE:
- controlled_by = "unmodifiablePrefsBannerText";
- break;
- default:
- if (!config.user_modifiable)
- controlled_by = "enableSharedProxiesBannerText";
- break;
- }
- found = true;
- } else if (path == kProxySingle) {
- data = Value::CreateBooleanValue(config.mode ==
- chromeos::ProxyConfigServiceImpl::ProxyConfig::MODE_SINGLE_PROXY);
- found = true;
- } else if (path == kProxyFtpUrl) {
- data = CreateServerHostValue(config.ftp_proxy);
- found = true;
- } else if (path == kProxySocks) {
- data = CreateServerHostValue(config.socks_proxy);
- found = true;
- } else if (path == kProxyHttpPort) {
- data = CreateServerPortValue(config.http_proxy);
- found = true;
- } else if (path == kProxyHttpsPort) {
- data = CreateServerPortValue(config.https_proxy);
- found = true;
- } else if (path == kProxyFtpPort) {
- data = CreateServerPortValue(config.ftp_proxy);
- found = true;
- } else if (path == kProxySocksPort) {
- data = CreateServerPortValue(config.socks_proxy);
- found = true;
- } else if (path == kProxyIgnoreList) {
- ListValue* list = new ListValue();
- net::ProxyBypassRules::RuleList bypass_rules = config.bypass_rules.rules();
- for (size_t x = 0; x < bypass_rules.size(); x++) {
- list->Append(Value::CreateStringValue(bypass_rules[x]->ToString()));
- }
- *out_value = list;
- return true;
- }
- if (found) {
- DictionaryValue* dict = new DictionaryValue;
- if (!data)
- data = Value::CreateStringValue("");
- dict->Set("value", data);
- dict->SetBoolean("managed", managed);
- if (path == kProxyType) {
- dict->SetString("controlledBy", controlled_by);
- dict->SetBoolean("disabled", !config.user_modifiable);
- }
- *out_value = dict;
- return true;
- } else {
- *out_value = NULL;
- return false;
- }
-}
-
-bool ProxyCrosSettingsProvider::HandlesSetting(const std::string& path) const {
- return ::StartsWithASCII(path, "cros.session.proxy", true);
-}
-
-//----------------- ProxyCrosSettingsProvider: private methods -----------------
-
-chromeos::ProxyConfigServiceImpl*
- ProxyCrosSettingsProvider::GetConfigService() const {
- return profile_->GetProxyConfigTracker();
-}
-
-net::ProxyServer ProxyCrosSettingsProvider::CreateProxyServerFromHost(
- const std::string& host,
- const ProxyConfigServiceImpl::ProxyConfig::ManualProxy& proxy,
- net::ProxyServer::Scheme scheme) const {
- uint16 port = 0;
- if (proxy.server.is_valid())
- port = proxy.server.host_port_pair().port();
- if (host.length() == 0 && port == 0)
- return net::ProxyServer();
- if (port == 0)
- port = net::ProxyServer::GetDefaultPortForScheme(scheme);
- net::HostPortPair host_port_pair(host, port);
- return net::ProxyServer(scheme, host_port_pair);
-}
-
-net::ProxyServer ProxyCrosSettingsProvider::CreateProxyServerFromPort(
- uint16 port,
- const ProxyConfigServiceImpl::ProxyConfig::ManualProxy& proxy,
- net::ProxyServer::Scheme scheme) const {
- std::string host;
- if (proxy.server.is_valid())
- host = proxy.server.host_port_pair().host();
- if (host.length() == 0 && port == 0)
- return net::ProxyServer();
- net::HostPortPair host_port_pair(host, port);
- return net::ProxyServer(scheme, host_port_pair);
-}
-
-Value* ProxyCrosSettingsProvider::CreateServerHostValue(
- const ProxyConfigServiceImpl::ProxyConfig::ManualProxy& proxy) const {
- return proxy.server.is_valid() ?
- Value::CreateStringValue(proxy.server.host_port_pair().host()) :
- NULL;
-}
-
-Value* ProxyCrosSettingsProvider::CreateServerPortValue(
- const ProxyConfigServiceImpl::ProxyConfig::ManualProxy& proxy) const {
- return proxy.server.is_valid() ?
- Value::CreateIntegerValue(proxy.server.host_port_pair().port()) :
- NULL;
-}
-
-} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698