1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#ifndef CHROMEOS_NETWORK_NETWORK_UI_DATA_H_ 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define CHROMEOS_NETWORK_NETWORK_UI_DATA_H_ 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <string> 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/basictypes.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/chromeos_export.h" 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/network/certificate_pattern.h" 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chromeos/network/onc/onc_constants.h" 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace base { 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class DictionaryValue; 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace chromeos { 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)enum ClientCertType { 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CLIENT_CERT_TYPE_NONE = 0, 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CLIENT_CERT_TYPE_REF = 1, 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CLIENT_CERT_TYPE_PATTERN = 2 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Helper for accessing and setting values in the network's UI data dictionary. 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Accessing values is done via static members that take the network as an 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// argument. In order to fill a UI data dictionary, construct an instance, set 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// up your data members, and call FillDictionary(). For example, if you have a 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// |network|: 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// NetworkUIData ui_data; 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// ui_data.set_onc_source(onc::ONC_SOURCE_USER_IMPORT); 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// ui_data.FillDictionary(network->ui_data()); 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class CHROMEOS_EXPORT NetworkUIData { 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NetworkUIData(); 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NetworkUIData(const NetworkUIData& other); 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NetworkUIData& operator=(const NetworkUIData& other); 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) explicit NetworkUIData(const base::DictionaryValue& dict); 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ~NetworkUIData(); 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void set_onc_source(onc::ONCSource onc_source) { onc_source_ = onc_source; } 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) onc::ONCSource onc_source() const { return onc_source_; } 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void set_certificate_pattern(const CertificatePattern& pattern) { 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) certificate_pattern_ = pattern; 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const CertificatePattern& certificate_pattern() const { 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return certificate_pattern_; 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void set_certificate_type(ClientCertType type) { 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) certificate_type_ = type; 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ClientCertType certificate_type() const { 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return certificate_type_; 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool is_managed() const { 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return onc_source_ == onc::ONC_SOURCE_DEVICE_POLICY || 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) onc_source_ == onc::ONC_SOURCE_USER_POLICY; 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::DictionaryValue* user_settings() const { 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return user_settings_.get(); 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void set_user_settings(scoped_ptr<base::DictionaryValue> dict) { 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_settings_ = dict.Pass(); 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& policy_guid() const { 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return policy_guid_; 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void set_policy_guid(const std::string& guid) { 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) policy_guid_ = guid; 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Fills in |dict| with the currently configured values. This will write the 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // keys appropriate for Network::ui_data() as defined below (kKeyXXX). 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void FillDictionary(base::DictionaryValue* dict) const; 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 81a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // Creates a NetworkUIData object from |onc_network|, which has to be a valid 82a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // ONC NetworkConfiguration dictionary. 83a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // This function is used to create the "UIData" field of the Shill 84a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) // configuration. 85a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) static scoped_ptr<NetworkUIData> CreateFromONC( 86a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) onc::ONCSource onc_source, 87a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) const base::DictionaryValue& onc_network); 88a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Key for storing source of the ONC network. 90c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static const char kKeyONCSource[]; 91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Key for storing the certificate pattern. 93c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static const char kKeyCertificatePattern[]; 94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Key for storing the certificate type. 96c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static const char kKeyCertificateType[]; 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Key for storing the user settings. 99c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static const char kKeyUserSettings[]; 100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CertificatePattern certificate_pattern_; 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) onc::ONCSource onc_source_; 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ClientCertType certificate_type_; 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<base::DictionaryValue> user_settings_; 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string policy_guid_; 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace chromeos 110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 111c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#endif // CHROMEOS_NETWORK_NETWORK_UI_DATA_H_ 112