network_ui_data.h revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef CHROMEOS_NETWORK_NETWORK_UI_DATA_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROMEOS_NETWORK_NETWORK_UI_DATA_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/basictypes.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/scoped_ptr.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/chromeos_export.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/network/certificate_pattern.h" 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chromeos/network/onc/onc_constants.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DictionaryValue; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 19 20namespace chromeos { 21 22enum ClientCertType { 23 CLIENT_CERT_TYPE_NONE = 0, 24 CLIENT_CERT_TYPE_REF = 1, 25 CLIENT_CERT_TYPE_PATTERN = 2 26}; 27 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 32// |network|: 33// 34// NetworkUIData ui_data; 35// ui_data.set_onc_source(onc::ONC_SOURCE_USER_IMPORT); 36// ui_data.FillDictionary(network->ui_data()); 37class CHROMEOS_EXPORT NetworkUIData { 38 public: 39 NetworkUIData(); 40 NetworkUIData(const NetworkUIData& other); 41 NetworkUIData& operator=(const NetworkUIData& other); 42 explicit NetworkUIData(const base::DictionaryValue& dict); 43 ~NetworkUIData(); 44 45 void set_onc_source(onc::ONCSource onc_source) { onc_source_ = onc_source; } 46 onc::ONCSource onc_source() const { return onc_source_; } 47 48 void set_certificate_pattern(const CertificatePattern& pattern) { 49 certificate_pattern_ = pattern; 50 } 51 const CertificatePattern& certificate_pattern() const { 52 return certificate_pattern_; 53 } 54 void set_certificate_type(ClientCertType type) { 55 certificate_type_ = type; 56 } 57 ClientCertType certificate_type() const { 58 return certificate_type_; 59 } 60 bool is_managed() const { 61 return onc_source_ == onc::ONC_SOURCE_DEVICE_POLICY || 62 onc_source_ == onc::ONC_SOURCE_USER_POLICY; 63 } 64 const base::DictionaryValue* user_settings() const { 65 return user_settings_.get(); 66 } 67 void set_user_settings(scoped_ptr<base::DictionaryValue> dict) { 68 user_settings_ = dict.Pass(); 69 } 70 const std::string& policy_guid() const { 71 return policy_guid_; 72 } 73 void set_policy_guid(const std::string& guid) { 74 policy_guid_ = guid; 75 } 76 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; 80 81 // Key for storing source of the ONC network. 82 static const char kKeyONCSource[]; 83 84 // Key for storing the certificate pattern. 85 static const char kKeyCertificatePattern[]; 86 87 // Key for storing the certificate type. 88 static const char kKeyCertificateType[]; 89 90 // Key for storing the user settings. 91 static const char kKeyUserSettings[]; 92 93 private: 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_; 99}; 100 101// Creates a NetworkUIData object from |onc_network|, which has to be a valid 102// ONC NetworkConfiguration dictionary. 103// 104// This function is used to create the "UIData" field of the Shill 105// configuration. 106CHROMEOS_EXPORT scoped_ptr<NetworkUIData> CreateUIDataFromONC( 107 onc::ONCSource onc_source, 108 const base::DictionaryValue& onc_network); 109 110} // namespace chromeos 111 112#endif // CHROMEOS_NETWORK_NETWORK_UI_DATA_H_ 113