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.
5 #ifndef CHROMEOS_NETWORK_NETWORK_UI_DATA_H_
6 #define CHROMEOS_NETWORK_NETWORK_UI_DATA_H_
10 #include "base/basictypes.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "chromeos/chromeos_export.h"
13 #include "chromeos/network/certificate_pattern.h"
14 #include "chromeos/network/onc/onc_constants.h"
17 class DictionaryValue
;
23 CLIENT_CERT_TYPE_NONE
= 0,
24 CLIENT_CERT_TYPE_REF
= 1,
25 CLIENT_CERT_TYPE_PATTERN
= 2
28 // Helper for accessing and setting values in the network's UI data dictionary.
29 // Accessing values is done via static members that take the network as an
30 // argument. In order to fill a UI data dictionary, construct an instance, set
31 // up your data members, and call FillDictionary(). For example, if you have a
34 // NetworkUIData ui_data;
35 // ui_data.set_onc_source(onc::ONC_SOURCE_USER_IMPORT);
36 // ui_data.FillDictionary(network->ui_data());
37 class CHROMEOS_EXPORT NetworkUIData
{
40 NetworkUIData(const NetworkUIData
& other
);
41 NetworkUIData
& operator=(const NetworkUIData
& other
);
42 explicit NetworkUIData(const base::DictionaryValue
& dict
);
45 void set_onc_source(onc::ONCSource onc_source
) { onc_source_
= onc_source
; }
46 onc::ONCSource
onc_source() const { return onc_source_
; }
48 void set_certificate_pattern(const CertificatePattern
& pattern
) {
49 certificate_pattern_
= pattern
;
51 const CertificatePattern
& certificate_pattern() const {
52 return certificate_pattern_
;
54 void set_certificate_type(ClientCertType type
) {
55 certificate_type_
= type
;
57 ClientCertType
certificate_type() const {
58 return certificate_type_
;
60 bool is_managed() const {
61 return onc_source_
== onc::ONC_SOURCE_DEVICE_POLICY
||
62 onc_source_
== onc::ONC_SOURCE_USER_POLICY
;
64 const base::DictionaryValue
* user_settings() const {
65 return user_settings_
.get();
67 void set_user_settings(scoped_ptr
<base::DictionaryValue
> dict
) {
68 user_settings_
= dict
.Pass();
70 const std::string
& policy_guid() const {
73 void set_policy_guid(const std::string
& guid
) {
77 // Fills in |dict| with the currently configured values. This will write the
78 // keys appropriate for Network::ui_data() as defined below (kKeyXXX).
79 void FillDictionary(base::DictionaryValue
* dict
) const;
81 // Key for storing source of the ONC network.
82 static const char kKeyONCSource
[];
84 // Key for storing the certificate pattern.
85 static const char kKeyCertificatePattern
[];
87 // Key for storing the certificate type.
88 static const char kKeyCertificateType
[];
90 // Key for storing the user settings.
91 static const char kKeyUserSettings
[];
94 CertificatePattern certificate_pattern_
;
95 onc::ONCSource onc_source_
;
96 ClientCertType certificate_type_
;
97 scoped_ptr
<base::DictionaryValue
> user_settings_
;
98 std::string policy_guid_
;
101 // Creates a NetworkUIData object from |onc_network|, which has to be a valid
102 // ONC NetworkConfiguration dictionary.
104 // This function is used to create the "UIData" field of the Shill
106 CHROMEOS_EXPORT scoped_ptr
<NetworkUIData
> CreateUIDataFromONC(
107 onc::ONCSource onc_source
,
108 const base::DictionaryValue
& onc_network
);
110 } // namespace chromeos
112 #endif // CHROMEOS_NETWORK_NETWORK_UI_DATA_H_