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 399965d0f7421a6a7da0145cd7826b81977b2520..2aa0291c7da58e972b46248545661e9e61016dae 100644 |
--- a/chrome/browser/chromeos/proxy_config_service_impl.cc |
+++ b/chrome/browser/chromeos/proxy_config_service_impl.cc |
@@ -656,16 +656,23 @@ net::ProxyConfigService::ConfigAvailability |
void ProxyConfigServiceImpl::OnSettingsOpCompleted( |
SignedSettings::ReturnCode code, |
- std::string value) { |
+ const base::Value* value) { |
+ // We assume ownership here to make sure this gets deleted no matter where |
+ // this function ends. |
+ scoped_ptr<const base::Value> own_value(value); |
+ |
retrieve_property_op_ = NULL; |
if (code != SignedSettings::SUCCESS) { |
LOG(WARNING) << "Error retrieving proxy setting from device"; |
device_config_.clear(); |
return; |
} |
- VLOG(1) << "Retrieved proxy setting from device, value=[" << value << "]"; |
+ 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(value) || |
+ 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(); |