network_ui_data.h revision 116680a4aac90f2aa7413d9095a592090648e557
15821806d5e7f356e8fa4b058a389a808ea183019Torne (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) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROMEOS_NETWORK_NETWORK_UI_DATA_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROMEOS_NETWORK_NETWORK_UI_DATA_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 8bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch#include <string> 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/basictypes.h" 11868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chromeos/chromeos_export.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/onc/onc_constants.h" 141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)namespace base { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DictionaryValue; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace chromeos { 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Helper for accessing and setting values in the network's UI data dictionary. 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Accessing values is done via static members that take the network as an 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// argument. In order to fill a UI data dictionary, construct an instance, set 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// up your data members, and call FillDictionary(). For example, if you have a 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// |network|: 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// NetworkUIData ui_data; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ui_data.FillDictionary(network->ui_data()); 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class CHROMEOS_EXPORT NetworkUIData { 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NetworkUIData(); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NetworkUIData(const NetworkUIData& other); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NetworkUIData& operator=(const NetworkUIData& other); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit NetworkUIData(const base::DictionaryValue& dict); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~NetworkUIData(); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ::onc::ONCSource onc_source() const { return onc_source_; } 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::DictionaryValue* user_settings() const { 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return user_settings_.get(); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void set_user_settings(scoped_ptr<base::DictionaryValue> dict); 43bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Returns |onc_source_| as a string, one of kONCSource*. 45c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch std::string GetONCSourceAsString() const; 467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Fills in |dict| with the currently configured values. This will write the 481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) // keys appropriate for Network::ui_data() as defined below (kKeyXXX). 494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void FillDictionary(base::DictionaryValue* dict) const; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Creates a NetworkUIData object from |onc_source|. This function is used to 5223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // create the "UIData" property of the Shill configuration. 53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static scoped_ptr<NetworkUIData> CreateFromONC(::onc::ONCSource onc_source); 5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Key for storing source of the ONC network. 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kKeyONCSource[]; 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Key for storing the user settings. 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kKeyUserSettings[]; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Values for kKeyONCSource 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static const char kONCSourceUserImport[]; 63d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) static const char kONCSourceDevicePolicy[]; 64d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) static const char kONCSourceUserPolicy[]; 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ::onc::ONCSource onc_source_; 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<base::DictionaryValue> user_settings_; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 70effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 71effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} // namespace chromeos 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROMEOS_NETWORK_NETWORK_UI_DATA_H_ 74010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)