Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(656)

Side by Side Diff: chrome/browser/chromeos/cros/network_ui_data.cc

Issue 13454006: Moving ManagedNetworkConfigurationHandler to chromeos/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleaned up parsing of NetworkUIData. Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 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/cros/network_ui_data.h"
6
7 #include "base/logging.h"
8 #include "chrome/browser/chromeos/cros/network_library.h"
9
10 namespace chromeos {
11
12 // Top-level UI data dictionary keys.
13 const char NetworkUIData::kKeyONCSource[] = "onc_source";
14 const char NetworkUIData::kKeyCertificatePattern[] = "certificate_pattern";
15 const char NetworkUIData::kKeyCertificateType[] = "certificate_type";
16
17 // Property names for per-property data stored under |kKeyProperties|.
18 const EnumMapper<onc::ONCSource>::Pair
19 NetworkUIData::kONCSourceTable[] = {
20 { "user_import", onc::ONC_SOURCE_USER_IMPORT },
21 { "device_policy", onc::ONC_SOURCE_DEVICE_POLICY },
22 { "user_policy", onc::ONC_SOURCE_USER_POLICY },
23 };
24
25 // Property names for per-property data stored under |kKeyProperties|.
26 const EnumMapper<ClientCertType>::Pair
27 NetworkUIData::kClientCertTable[] = {
28 { "none", CLIENT_CERT_TYPE_NONE },
29 { "pattern", CLIENT_CERT_TYPE_PATTERN },
30 { "ref", CLIENT_CERT_TYPE_REF },
31 };
32
33 // Property names for the per-property dictionary.
34 const char NetworkPropertyUIData::kKeyController[] = "controller";
35 const char NetworkPropertyUIData::kKeyDefaultValue[] = "default_value";
36
37 NetworkUIData::NetworkUIData()
38 : onc_source_(onc::ONC_SOURCE_NONE),
39 certificate_type_(CLIENT_CERT_TYPE_NONE) {
40 }
41
42 NetworkUIData::NetworkUIData(const DictionaryValue& dict) {
43 std::string source;
44 if (dict.GetString(kKeyONCSource, &source)) {
45 onc_source_ = GetONCSourceMapper().Get(source);
46 } else {
47 onc_source_ = onc::ONC_SOURCE_NONE;
48 }
49 const DictionaryValue* cert_dict = NULL;
50 if (dict.GetDictionary(kKeyCertificatePattern, &cert_dict) && cert_dict)
51 certificate_pattern_.CopyFromDictionary(*cert_dict);
52 std::string type_string;
53 if (dict.GetString(kKeyCertificateType, &type_string)) {
54 certificate_type_ = GetClientCertMapper().Get(type_string);
55 } else {
56 certificate_type_ = CLIENT_CERT_TYPE_NONE;
57 }
58 DCHECK(certificate_type_ != CLIENT_CERT_TYPE_PATTERN ||
59 (certificate_type_ == CLIENT_CERT_TYPE_PATTERN &&
60 !certificate_pattern_.Empty()));
61 }
62
63 NetworkUIData::~NetworkUIData() {
64 }
65
66 void NetworkUIData::FillDictionary(base::DictionaryValue* dict) const {
67 dict->Clear();
68
69 std::string source_string(GetONCSourceMapper().GetKey(onc_source_));
70 if (!source_string.empty())
71 dict->SetString(kKeyONCSource, source_string);
72 std::string type_string(GetClientCertMapper().GetKey(certificate_type_));
73 switch (certificate_type_) {
74 case CLIENT_CERT_TYPE_REF:
75 dict->SetString(kKeyCertificateType, "ref");
76 break;
77 case CLIENT_CERT_TYPE_PATTERN:
78 dict->SetString(kKeyCertificateType, "pattern");
79 if (!certificate_pattern_.Empty()) {
80 dict->Set(kKeyCertificatePattern,
81 certificate_pattern_.CreateAsDictionary());
82 }
83 case CLIENT_CERT_TYPE_NONE:
84 default:
85 break;
86 }
87 }
88
89 // static
90 EnumMapper<onc::ONCSource>& NetworkUIData::GetONCSourceMapper() {
91 CR_DEFINE_STATIC_LOCAL(EnumMapper<onc::ONCSource>, mapper,
92 (kONCSourceTable, arraysize(kONCSourceTable),
93 onc::ONC_SOURCE_NONE));
94 return mapper;
95 }
96
97 // static
98 EnumMapper<ClientCertType>& NetworkUIData::GetClientCertMapper() {
99 CR_DEFINE_STATIC_LOCAL(EnumMapper<ClientCertType>, mapper,
100 (kClientCertTable, arraysize(kClientCertTable),
101 CLIENT_CERT_TYPE_NONE));
102 return mapper;
103 }
104
105 NetworkPropertyUIData::NetworkPropertyUIData()
106 : controller_(CONTROLLER_USER) {
107 }
108
109 NetworkPropertyUIData::~NetworkPropertyUIData() {
110 }
111
112 NetworkPropertyUIData::NetworkPropertyUIData(
113 const NetworkUIData& ui_data) {
114 Reset(ui_data);
115 }
116
117 void NetworkPropertyUIData::Reset(const NetworkUIData& ui_data) {
118 default_value_.reset();
119 controller_ = ui_data.is_managed() ? CONTROLLER_POLICY : CONTROLLER_USER;
120 }
121
122 void NetworkPropertyUIData::ParseOncProperty(
123 const NetworkUIData& ui_data,
124 const base::DictionaryValue* onc,
125 const std::string& property_key) {
126 Reset(ui_data);
127 if (!onc || controller_ == CONTROLLER_USER)
128 return;
129
130 size_t pos = property_key.find_last_of('.');
131 std::string recommended_property_key;
132 std::string property_basename(property_key);
133 if (pos != std::string::npos) {
134 recommended_property_key = property_key.substr(0, pos + 1);
135 property_basename = property_key.substr(pos + 1);
136 }
137 recommended_property_key += "Recommended";
138
139 const base::ListValue* recommended_keys = NULL;
140 if (onc->GetList(recommended_property_key, &recommended_keys)) {
141 base::StringValue basename_value(property_basename);
142 if (recommended_keys->Find(basename_value) != recommended_keys->end()) {
143 controller_ = CONTROLLER_USER;
144 const base::Value* default_value = NULL;
145 if (onc->Get(property_key, &default_value))
146 default_value_.reset(default_value->DeepCopy());
147 }
148 }
149 }
150
151 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/cros/network_ui_data.h ('k') | chrome/browser/chromeos/cros/network_ui_data_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698