| 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
|
|
|