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. 4 5 #ifndef CHROME_BROWSER_CHROMEOS_CROS_NETWORK_PROPERTY_UI_DATA_H_ 6 #define CHROME_BROWSER_CHROMEOS_CROS_NETWORK_PROPERTY_UI_DATA_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/memory/scoped_ptr.h" 12 #include "chromeos/network/onc/onc_constants.h" 13 14 namespace base { 15 class DictionaryValue; 16 class Value; 17 } 18 19 namespace chromeos { 20 21 // Holds meta information for a network property: Whether the property is under 22 // policy control, if it is user-editable, and policy-provided default value, if 23 // available. 24 class NetworkPropertyUIData { 25 public: 26 // Initializes with ONC_SOURCE_NONE and no default value. 27 NetworkPropertyUIData(); 28 29 // Initializes with the given |onc_source| and no default value. 30 explicit NetworkPropertyUIData(onc::ONCSource onc_source); 31 32 ~NetworkPropertyUIData(); 33 34 // Update the property object from dictionary, reading the key given by 35 // |property_key|. 36 void ParseOncProperty(onc::ONCSource onc_source, 37 const base::DictionaryValue* onc, 38 const std::string& property_key); 39 40 const base::Value* default_value() const { return default_value_.get(); } 41 bool IsManaged() const { 42 return (onc_source_ == onc::ONC_SOURCE_DEVICE_POLICY || 43 onc_source_ == onc::ONC_SOURCE_USER_POLICY); 44 } 45 bool IsEditable() const { return !IsManaged(); } 46 47 private: 48 onc::ONCSource onc_source_; 49 scoped_ptr<base::Value> default_value_; 50 51 DISALLOW_COPY_AND_ASSIGN(NetworkPropertyUIData); 52 }; 53 54 } // namespace chromeos 55 56 #endif // CHROME_BROWSER_CHROMEOS_CROS_NETWORK_PROPERTY_UI_DATA_H_ 57