root/chrome/browser/chromeos/options/network_property_ui_data.cc

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. ParseOncProperty

// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/chromeos/options/network_property_ui_data.h"

#include "base/values.h"

namespace chromeos {

NetworkPropertyUIData::NetworkPropertyUIData()
    : onc_source_(onc::ONC_SOURCE_NONE) {
}

NetworkPropertyUIData::NetworkPropertyUIData(onc::ONCSource onc_source)
    : onc_source_(onc_source) {
}

NetworkPropertyUIData::~NetworkPropertyUIData() {
}

void NetworkPropertyUIData::ParseOncProperty(onc::ONCSource onc_source,
                                             const base::DictionaryValue* onc,
                                             const std::string& property_key) {
  default_value_.reset();
  onc_source_ = 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());
    }
  }
}

}  // namespace chromeos

/* [<][>][^][v][top][bottom][index][help] */