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

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

Issue 8728030: Infrastructure for accessing and manipulating network UI data. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Make clang happy. Created 9 years 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) 2011 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::kKeyProperties[] = "properties";
15
16 // Property names for per-property data stored under |kKeyProperties|.
17 const char NetworkUIData::kPropertyAutoConnect[] = "auto_connect";
18 const char NetworkUIData::kPropertyPreferred[] = "preferred";
19 const char NetworkUIData::kPropertyPassphrase[] = "passphrase";
20 const char NetworkUIData::kPropertySaveCredentials[] = "save_credentials";
21
22 const char NetworkUIData::kPropertyVPNCaCertNss[] = "VPN.ca_cert_nss";
23 const char NetworkUIData::kPropertyVPNPskPassphrase[] = "VPN.psk_passphrase";
24 const char NetworkUIData::kPropertyVPNClientCertId[] = "VPN.client_cert_id";
25 const char NetworkUIData::kPropertyVPNUsername[] = "VPN.username";
26 const char NetworkUIData::kPropertyVPNUserPassphrase[] = "VPN.user_passphrase";
27 const char NetworkUIData::kPropertyVPNGroupName[] = "VPN.group_name";
28
29 const char NetworkUIData::kPropertyEAPMethod[] = "EAP.method";
30 const char NetworkUIData::kPropertyEAPPhase2Auth[] = "EAP.phase_2_auth";
31 const char NetworkUIData::kPropertyEAPServerCaCertNssNickname[] =
32 "EAP.server_ca_cert_nss_nickname";
33 const char NetworkUIData::kPropertyEAPClientCertPkcs11Id[] =
34 "EAP.client_cert_pkcs11_id";
35 const char NetworkUIData::kPropertyEAPUseSystemCAs[] = "EAP.use_system_cas";
36 const char NetworkUIData::kPropertyEAPIdentity[] = "EAP.identity";
37 const char NetworkUIData::kPropertyEAPAnonymousIdentity[] =
38 "EAP.anonymous_identity";
39 const char NetworkUIData::kPropertyEAPPassphrase[] = "EAP.passphrase";
40
41 const EnumMapper<NetworkUIData::ONCSource>::Pair
42 NetworkUIData::kONCSourceTable[] = {
43 { "user_import", NetworkUIData::ONC_SOURCE_USER_IMPORT },
44 { "device_policy", NetworkUIData::ONC_SOURCE_DEVICE_POLICY },
45 { "user_policy", NetworkUIData::ONC_SOURCE_USER_POLICY },
46 };
47
48 // Property names for the per-property dictionary.
49 const char NetworkPropertyUIData::kKeyController[] = "controller";
50 const char NetworkPropertyUIData::kKeyDefaultValue[] = "default_value";
51
52 const EnumMapper<NetworkPropertyUIData::Controller>::Pair
53 NetworkPropertyUIData::kControllerTable[] = {
54 { "user", NetworkPropertyUIData::CONTROLLER_USER },
55 { "policy", NetworkPropertyUIData::CONTROLLER_POLICY },
56 };
57
58 NetworkUIData::NetworkUIData()
59 : onc_source_(ONC_SOURCE_NONE) {
60 }
61
62 NetworkUIData::~NetworkUIData() {
63 }
64
65 void NetworkUIData::SetProperty(const char* property_key,
66 const NetworkPropertyUIData& ui_data) {
67 properties_.Set(property_key, ui_data.BuildDictionary());
68 }
69
70 void NetworkUIData::FillDictionary(base::DictionaryValue* dict) const {
71 std::string source_string(GetONCSourceMapper().GetKey(onc_source_));
72 if (!source_string.empty())
73 dict->SetString(kKeyONCSource, source_string);
74 dict->Set(kKeyProperties, properties_.DeepCopy());
75 }
76
77 // static
78 NetworkUIData::ONCSource NetworkUIData::GetONCSource(const Network* network) {
79 std::string source;
80 if (network->ui_data()->GetString(kKeyONCSource, &source))
81 return GetONCSourceMapper().Get(source);
82 return ONC_SOURCE_NONE;
83 }
84
85 // static
86 bool NetworkUIData::IsManaged(const Network* network) {
87 ONCSource source = GetONCSource(network);
88 return source == ONC_SOURCE_DEVICE_POLICY || source == ONC_SOURCE_USER_POLICY;
89 }
90
91 // static
92 EnumMapper<NetworkUIData::ONCSource>& NetworkUIData::GetONCSourceMapper() {
93 CR_DEFINE_STATIC_LOCAL(EnumMapper<ONCSource>, mapper,
94 (kONCSourceTable, arraysize(kONCSourceTable),
95 ONC_SOURCE_NONE));
96 return mapper;
97 }
98
99 NetworkPropertyUIData::NetworkPropertyUIData()
100 : controller_(CONTROLLER_USER) {
101 }
102
103 NetworkPropertyUIData::~NetworkPropertyUIData() {
104 }
105
106 NetworkPropertyUIData::NetworkPropertyUIData(Controller controller,
107 base::Value* default_value)
108 : controller_(controller),
109 default_value_(default_value) {
110 }
111
112 NetworkPropertyUIData::NetworkPropertyUIData(const Network* network,
113 const char* property_key) {
114 UpdateFromNetwork(network, property_key);
115 }
116
117 void NetworkPropertyUIData::UpdateFromNetwork(const Network* network,
118 const char* property_key) {
119 // If there is no per-property information available, the property inherits
120 // the controlled state of the network.
121 controller_ =
122 NetworkUIData::IsManaged(network) ? CONTROLLER_POLICY : CONTROLLER_USER;
123 default_value_.reset();
124
125 if (!property_key)
126 return;
127
128 const base::DictionaryValue* ui_data = network->ui_data();
129 if (!ui_data)
130 return;
131
132 base::DictionaryValue* property_map = NULL;
133 if (!ui_data->GetDictionary(NetworkUIData::kKeyProperties, &property_map))
134 return;
135
136 base::DictionaryValue* property = NULL;
137 if (!property_map->GetDictionary(property_key, &property))
138 return;
139
140 std::string controller;
141 if (property->GetString(kKeyController, &controller))
142 controller_ = GetControllerMapper().Get(controller);
143
144 base::Value* default_value = NULL;
145 if (property->Get(kKeyDefaultValue, &default_value) && default_value)
146 default_value_.reset(default_value->DeepCopy());
147 }
148
149 base::DictionaryValue* NetworkPropertyUIData::BuildDictionary() const {
150 base::DictionaryValue* dict = new base::DictionaryValue();
151 std::string controller_string(GetControllerMapper().GetKey(controller_));
152 if (!controller_string.empty())
153 dict->SetString(kKeyController, controller_string);
154 if (default_value_.get())
155 dict->Set(kKeyDefaultValue, default_value_->DeepCopy());
156 return dict;
157 }
158
159 // static
160 EnumMapper<NetworkPropertyUIData::Controller>&
161 NetworkPropertyUIData::GetControllerMapper() {
162 CR_DEFINE_STATIC_LOCAL(EnumMapper<Controller>, mapper,
163 (kControllerTable, arraysize(kControllerTable),
164 CONTROLLER_USER));
165 return mapper;
166 }
167
168 } // 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