OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/cros/network_ui_data.h" | 5 #include "chrome/browser/chromeos/cros/network_property_ui_data.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/values.h" |
8 #include "chrome/browser/chromeos/cros/network_library.h" | 8 #include "chromeos/network/network_ui_data.h" |
9 | 9 |
10 namespace chromeos { | 10 namespace chromeos { |
11 | 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. | 12 // Property names for the per-property dictionary. |
34 const char NetworkPropertyUIData::kKeyController[] = "controller"; | 13 const char NetworkPropertyUIData::kKeyController[] = "controller"; |
35 const char NetworkPropertyUIData::kKeyDefaultValue[] = "default_value"; | 14 const char NetworkPropertyUIData::kKeyDefaultValue[] = "default_value"; |
36 | 15 |
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() | 16 NetworkPropertyUIData::NetworkPropertyUIData() |
106 : controller_(CONTROLLER_USER) { | 17 : controller_(CONTROLLER_USER) { |
107 } | 18 } |
108 | 19 |
109 NetworkPropertyUIData::~NetworkPropertyUIData() { | 20 NetworkPropertyUIData::~NetworkPropertyUIData() { |
110 } | 21 } |
111 | 22 |
112 NetworkPropertyUIData::NetworkPropertyUIData( | 23 NetworkPropertyUIData::NetworkPropertyUIData( |
113 const NetworkUIData& ui_data) { | 24 const NetworkUIData& ui_data) { |
114 Reset(ui_data); | 25 Reset(ui_data); |
(...skipping 27 matching lines...) Expand all Loading... |
142 if (recommended_keys->Find(basename_value) != recommended_keys->end()) { | 53 if (recommended_keys->Find(basename_value) != recommended_keys->end()) { |
143 controller_ = CONTROLLER_USER; | 54 controller_ = CONTROLLER_USER; |
144 const base::Value* default_value = NULL; | 55 const base::Value* default_value = NULL; |
145 if (onc->Get(property_key, &default_value)) | 56 if (onc->Get(property_key, &default_value)) |
146 default_value_.reset(default_value->DeepCopy()); | 57 default_value_.reset(default_value->DeepCopy()); |
147 } | 58 } |
148 } | 59 } |
149 } | 60 } |
150 | 61 |
151 } // namespace chromeos | 62 } // namespace chromeos |
OLD | NEW |