158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/chromeos/options/network_property_ui_data.h"
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/values.h"
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace chromeos {
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)NetworkPropertyUIData::NetworkPropertyUIData()
1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    : onc_source_(onc::ONC_SOURCE_NONE) {
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)NetworkPropertyUIData::NetworkPropertyUIData(onc::ONCSource onc_source)
1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    : onc_source_(onc_source) {
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)NetworkPropertyUIData::~NetworkPropertyUIData() {
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void NetworkPropertyUIData::ParseOncProperty(onc::ONCSource onc_source,
2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                                             const base::DictionaryValue* onc,
2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                                             const std::string& property_key) {
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  default_value_.reset();
2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  onc_source_ = onc_source;
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  if (!onc || !IsManaged())
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    return;
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  size_t pos = property_key.find_last_of('.');
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  std::string recommended_property_key;
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  std::string property_basename(property_key);
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (pos != std::string::npos) {
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    recommended_property_key = property_key.substr(0, pos + 1);
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    property_basename = property_key.substr(pos + 1);
37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  recommended_property_key += "Recommended";
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  const base::ListValue* recommended_keys = NULL;
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  if (onc->GetList(recommended_property_key, &recommended_keys)) {
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    base::StringValue basename_value(property_basename);
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    if (recommended_keys->Find(basename_value) != recommended_keys->end()) {
4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      onc_source_ = onc::ONC_SOURCE_NONE;
45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      const base::Value* default_value = NULL;
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      if (onc->Get(property_key, &default_value))
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        default_value_.reset(default_value->DeepCopy());
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    }
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}  // namespace chromeos
53