Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / options / network_property_ui_data.cc
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/chromeos/options/network_property_ui_data.h"
6
7 #include "base/logging.h"
8 #include "base/values.h"
9 #include "chromeos/network/onc/onc_utils.h"
10
11 namespace chromeos {
12
13 NetworkPropertyUIData::NetworkPropertyUIData()
14     : onc_source_(::onc::ONC_SOURCE_NONE) {
15 }
16
17 NetworkPropertyUIData::NetworkPropertyUIData(::onc::ONCSource onc_source)
18     : onc_source_(onc_source) {
19 }
20
21 NetworkPropertyUIData::~NetworkPropertyUIData() {
22 }
23
24 void NetworkPropertyUIData::ParseOncProperty(::onc::ONCSource onc_source,
25                                              const base::DictionaryValue* onc,
26                                              const std::string& property_key) {
27   default_value_.reset();
28   onc_source_ = onc_source;
29
30   if (!onc || !IsManaged())
31     return;
32
33   if (!onc::IsRecommendedValue(onc, property_key))
34     return;
35
36   // Set onc_source_ to NONE to indicate that the value is not enforced.
37   onc_source_ = ::onc::ONC_SOURCE_NONE;
38
39   const base::Value* default_value = NULL;
40   if (!onc->Get(property_key, &default_value)) {
41     // No default entry indicates that the property can be modified by the user,
42     // but has no default value, e.g. Username or Passphrase. (The default
43     // behavior for a property with no entry is non user modifiable).
44     return;
45   }
46
47   // Set the recommended (default) value.
48   default_value_.reset(default_value->DeepCopy());
49 }
50
51 }  // namespace chromeos