| Index: trunk/src/chromeos/network/network_state.cc
|
| ===================================================================
|
| --- trunk/src/chromeos/network/network_state.cc (revision 202496)
|
| +++ trunk/src/chromeos/network/network_state.cc (working copy)
|
| @@ -10,8 +10,8 @@
|
| #include "base/stringprintf.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/strings/utf_string_conversion_utils.h"
|
| -#include "base/values.h"
|
| #include "chromeos/network/network_event_log.h"
|
| +#include "chromeos/network/onc/onc_utils.h"
|
| #include "third_party/cros_system_api/dbus/service_constants.h"
|
|
|
| namespace {
|
| @@ -88,9 +88,9 @@
|
| } else if (key == IPConfigProperty(flimflam::kNameServersProperty)) {
|
| dns_servers_.clear();
|
| const base::ListValue* dns_servers;
|
| - if (value.GetAsList(&dns_servers) &&
|
| - ConvertListValueToStringVector(*dns_servers, &dns_servers_))
|
| - return true;
|
| + if (value.GetAsList(&dns_servers))
|
| + ConvertListValueToStringVector(*dns_servers, &dns_servers_);
|
| + return true;
|
| } else if (key == flimflam::kActivationStateProperty) {
|
| return GetStringValue(key, value, &activation_state_);
|
| } else if (key == flimflam::kRoamingStateProperty) {
|
| @@ -103,6 +103,29 @@
|
| return GetBooleanValue(key, value, &favorite_);
|
| } else if (key == flimflam::kPriorityProperty) {
|
| return GetIntegerValue(key, value, &priority_);
|
| + } else if (key == flimflam::kProxyConfigProperty) {
|
| + std::string proxy_config_str;
|
| + if (!value.GetAsString(&proxy_config_str)) {
|
| + LOG(WARNING) << "Failed to parse string value for:" << key;
|
| + return false;
|
| + }
|
| +
|
| + proxy_config_.Clear();
|
| + if (proxy_config_str.empty())
|
| + return true;
|
| +
|
| + scoped_ptr<base::DictionaryValue> proxy_config_dict(
|
| + onc::ReadDictionaryFromJson(proxy_config_str));
|
| + if (proxy_config_dict) {
|
| + // Warning: The DictionaryValue return from
|
| + // ReadDictionaryFromJson/JSONParser is an optimized derived class that
|
| + // doesn't allow releasing ownership of nested values. A Swap in the wrong
|
| + // order leads to memory access errors.
|
| + proxy_config_.MergeDictionary(proxy_config_dict.get());
|
| + } else {
|
| + LOG(WARNING) << "Failed to parse dictionary value for: " << key;
|
| + }
|
| + return true;
|
| } else if (key == flimflam::kNetworkTechnologyProperty) {
|
| return GetStringValue(key, value, &technology_);
|
| } else if (key == flimflam::kDeviceProperty) {
|
| @@ -111,8 +134,6 @@
|
| return GetStringValue(key, value, &guid_);
|
| } else if (key == flimflam::kProfileProperty) {
|
| return GetStringValue(key, value, &profile_path_);
|
| - } else if (key == flimflam::kProxyConfigProperty) {
|
| - return GetStringValue(key, value, &proxy_config_);
|
| } else if (key == shill::kActivateOverNonCellularNetworkProperty) {
|
| return GetBooleanValue(key, value, &activate_over_non_cellular_networks_);
|
| } else if (key == shill::kOutOfCreditsProperty) {
|
| @@ -171,6 +192,11 @@
|
| favorite_);
|
| dictionary->SetIntegerWithoutPathExpansion(flimflam::kPriorityProperty,
|
| priority_);
|
| + // Proxy config is intentionally omitted: This property is
|
| + // placed in NetworkState to transition proxy configuration from
|
| + // NetworkLibrary to the new network stack. The networking extension API
|
| + // shouldn't depend on this member. Once ManagedNetworkConfigurationHandler
|
| + // is used instead of NetworkLibrary, we can remove them again.
|
| dictionary->SetStringWithoutPathExpansion(
|
| flimflam::kNetworkTechnologyProperty,
|
| technology_);
|
| @@ -179,8 +205,6 @@
|
| dictionary->SetStringWithoutPathExpansion(flimflam::kGuidProperty, guid_);
|
| dictionary->SetStringWithoutPathExpansion(flimflam::kProfileProperty,
|
| profile_path_);
|
| - dictionary->SetStringWithoutPathExpansion(flimflam::kProxyConfigProperty,
|
| - proxy_config_);
|
| dictionary->SetBooleanWithoutPathExpansion(
|
| shill::kActivateOverNonCellularNetworkProperty,
|
| activate_over_non_cellular_networks_);
|
|
|