Chromium Code Reviews| Index: chrome/browser/chromeos/proxy_config_service_impl.cc |
| diff --git a/chrome/browser/chromeos/proxy_config_service_impl.cc b/chrome/browser/chromeos/proxy_config_service_impl.cc |
| index 38aca01f2dd3fa0833e1f652cf0929fd4643dec2..468503776f5e6f5cbc8da0e8747ab54fc37cb7b0 100644 |
| --- a/chrome/browser/chromeos/proxy_config_service_impl.cc |
| +++ b/chrome/browser/chromeos/proxy_config_service_impl.cc |
| @@ -6,10 +6,12 @@ |
| #include <ostream> |
| +#include "base/bind.h" |
| #include "base/json/json_value_serializer.h" |
| #include "base/logging.h" |
| #include "base/string_util.h" |
| #include "chrome/browser/chromeos/cros/cros_library.h" |
| +#include "chrome/browser/chromeos/cros_settings.h" |
| #include "chrome/browser/chromeos/cros_settings_names.h" |
| #include "chrome/browser/chromeos/login/user_manager.h" |
| #include "chrome/browser/policy/proto/chrome_device_policy.pb.h" |
| @@ -352,7 +354,8 @@ void ProxyConfigServiceImpl::ProxyConfig::EncodeAndAppendProxyServer( |
| ProxyConfigServiceImpl::ProxyConfigServiceImpl(PrefService* pref_service) |
| : PrefProxyConfigTrackerImpl(pref_service), |
| - active_config_state_(ProxyPrefs::CONFIG_UNSET) { |
| + active_config_state_(ProxyPrefs::CONFIG_UNSET), |
| + pointer_factory_(this) { |
| // Register for notification when user logs in, so that we can activate the |
| // new proxy config. |
| @@ -363,16 +366,11 @@ ProxyConfigServiceImpl::ProxyConfigServiceImpl(PrefService* pref_service) |
| if (pref_service->FindPreference(prefs::kUseSharedProxies)) |
| use_shared_proxies_.Init(prefs::kUseSharedProxies, pref_service, this); |
| - // Start async fetch of proxy config from settings persisted on device. |
| - if (CrosLibrary::Get()->libcros_loaded()) { |
| - retrieve_property_op_ = SignedSettings::CreateRetrievePropertyOp( |
| - kSettingProxyEverywhere, this); |
| - if (retrieve_property_op_) { |
| - retrieve_property_op_->Execute(); |
| - VLOG(1) << this << ": Start retrieving proxy setting from device"; |
| - } else { |
| - VLOG(1) << this << ": Fail to retrieve proxy setting from device"; |
| - } |
| + if (CrosSettings::Get()->GetTrusted( |
| + kSettingProxyEverywhere, |
| + base::Bind(&ProxyConfigServiceImpl::FetchProxyPolicy, |
| + pointer_factory_.GetWeakPtr()))) { |
| + FetchProxyPolicy(); |
| } |
| // Register for flimflam network notifications. |
| @@ -524,32 +522,6 @@ void ProxyConfigServiceImpl::OnProxyConfigChanged( |
| DetermineEffectiveConfig(network, true); |
| } |
| -void ProxyConfigServiceImpl::OnSettingsOpCompleted( |
| - SignedSettings::ReturnCode code, |
| - const base::Value* value) { |
| - retrieve_property_op_ = NULL; |
| - if (code != SignedSettings::SUCCESS) { |
| - LOG(WARNING) << this << ": Error retrieving proxy setting from device"; |
| - device_config_.clear(); |
| - return; |
| - } |
| - std::string policy_value; |
| - value->GetAsString(&policy_value); |
| - VLOG(1) << "Retrieved proxy setting from device, value=[" |
| - << policy_value << "]"; |
| - ProxyConfig device_config; |
| - if (!device_config.DeserializeForDevice(policy_value) || |
| - !device_config.SerializeForNetwork(&device_config_)) { |
| - LOG(WARNING) << "Can't deserialize device setting or serialize for network"; |
| - device_config_.clear(); |
| - return; |
| - } |
| - if (!active_network_.empty()) { |
| - VLOG(1) << this << ": try migrating device config to " << active_network_; |
| - SetProxyConfigForNetwork(active_network_, device_config_, true); |
| - } |
| -} |
| - |
| void ProxyConfigServiceImpl::OnNetworkManagerChanged( |
| NetworkLibrary* network_lib) { |
| VLOG(1) << this << " OnNetworkManagerChanged: use-shared-proxies=" |
| @@ -819,4 +791,30 @@ void ProxyConfigServiceImpl::ResetUICache() { |
| current_ui_config_ = ProxyConfig(); |
| } |
| +void ProxyConfigServiceImpl::FetchProxyPolicy() { |
| + // We assume ownership here to make sure this gets deleted no matter where |
| + // this function ends. |
|
Mattias Nissler (ping if slow)
2011/11/30 12:25:50
?
pastarmovj
2011/11/30 17:21:16
Dead comment :)
|
| + std::string policy_value = ""; |
| + if (!CrosSettings::Get()->GetString(kSettingProxyEverywhere, |
| + &policy_value)) { |
| + LOG(WARNING) << this << ": Error retrieving proxy setting from device"; |
| + device_config_.clear(); |
| + return; |
| + } |
| + |
| + VLOG(1) << "Retrieved proxy setting from device, value=[" |
| + << policy_value << "]"; |
| + ProxyConfig device_config; |
| + if (!device_config.DeserializeForDevice(policy_value) || |
| + !device_config.SerializeForNetwork(&device_config_)) { |
| + LOG(WARNING) << "Can't deserialize device setting or serialize for network"; |
| + device_config_.clear(); |
| + return; |
| + } |
| + if (!active_network_.empty()) { |
| + VLOG(1) << this << ": try migrating device config to " << active_network_; |
| + SetProxyConfigForNetwork(active_network_, device_config_, true); |
| + } |
| +} |
| + |
| } // namespace chromeos |