Index: chrome/browser/chromeos/options/network_property_ui_data.cc |
diff --git a/chrome/browser/chromeos/options/network_property_ui_data.cc b/chrome/browser/chromeos/options/network_property_ui_data.cc |
index e93369cd078a650750a0bd4473c895142d408fa9..1371eace38d490be7c80c243aa144fb1ed1ab3e5 100644 |
--- a/chrome/browser/chromeos/options/network_property_ui_data.cc |
+++ b/chrome/browser/chromeos/options/network_property_ui_data.cc |
@@ -4,22 +4,24 @@ |
#include "chrome/browser/chromeos/options/network_property_ui_data.h" |
+#include "base/logging.h" |
#include "base/values.h" |
+#include "chromeos/network/onc/onc_utils.h" |
namespace chromeos { |
NetworkPropertyUIData::NetworkPropertyUIData() |
- : onc_source_(onc::ONC_SOURCE_NONE) { |
+ : onc_source_(::onc::ONC_SOURCE_NONE) { |
} |
-NetworkPropertyUIData::NetworkPropertyUIData(onc::ONCSource onc_source) |
+NetworkPropertyUIData::NetworkPropertyUIData(::onc::ONCSource onc_source) |
: onc_source_(onc_source) { |
} |
NetworkPropertyUIData::~NetworkPropertyUIData() { |
} |
-void NetworkPropertyUIData::ParseOncProperty(onc::ONCSource onc_source, |
+void NetworkPropertyUIData::ParseOncProperty(::onc::ONCSource onc_source, |
const base::DictionaryValue* onc, |
const std::string& property_key) { |
default_value_.reset(); |
@@ -28,25 +30,22 @@ void NetworkPropertyUIData::ParseOncProperty(onc::ONCSource onc_source, |
if (!onc || !IsManaged()) |
return; |
- size_t pos = property_key.find_last_of('.'); |
- std::string recommended_property_key; |
- std::string property_basename(property_key); |
- if (pos != std::string::npos) { |
- recommended_property_key = property_key.substr(0, pos + 1); |
- property_basename = property_key.substr(pos + 1); |
- } |
- recommended_property_key += "Recommended"; |
- |
- const base::ListValue* recommended_keys = NULL; |
- if (onc->GetList(recommended_property_key, &recommended_keys)) { |
- base::StringValue basename_value(property_basename); |
- if (recommended_keys->Find(basename_value) != recommended_keys->end()) { |
- onc_source_ = onc::ONC_SOURCE_NONE; |
- const base::Value* default_value = NULL; |
- if (onc->Get(property_key, &default_value)) |
- default_value_.reset(default_value->DeepCopy()); |
- } |
+ if (!onc::IsRecommendedValue(onc, property_key)) |
+ return; |
+ |
+ // Set onc_source_ to NONE to indicate that the value is not enforced. |
+ onc_source_ = ::onc::ONC_SOURCE_NONE; |
+ |
+ const base::Value* default_value = NULL; |
+ if (!onc->Get(property_key, &default_value)) { |
+ // No default entry indicates that the property can be modified by the user, |
+ // but has no default value, e.g. Username or Passphrase. (The default |
+ // behavior for a property with no entry is non user modifiable). |
+ return; |
} |
+ |
+ // Set the recommended (default) value. |
+ default_value_.reset(default_value->DeepCopy()); |
} |
} // namespace chromeos |