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)