158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 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) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_OPTIONS_NETWORK_PROPERTY_UI_DATA_H_ 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_OPTIONS_NETWORK_PROPERTY_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" 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "components/onc/onc_constants.h" 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace base { 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class DictionaryValue; 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class Value; 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace chromeos { 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Holds meta information for a network property: Whether the property is under 2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// policy control, if it is user-editable, and policy-provided default value, if 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// available. 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class NetworkPropertyUIData { 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public: 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Initializes with ONC_SOURCE_NONE and no default value. 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) NetworkPropertyUIData(); 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Initializes with the given |onc_source| and no default value. 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) explicit NetworkPropertyUIData(::onc::ONCSource onc_source); 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ~NetworkPropertyUIData(); 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Update the property object from dictionary, reading the key given by 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // |property_key|. 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void ParseOncProperty(::onc::ONCSource onc_source, 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::DictionaryValue* onc, 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& property_key); 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::Value* default_value() const { return default_value_.get(); } 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool IsManaged() const { 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return (onc_source_ == ::onc::ONC_SOURCE_DEVICE_POLICY || 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) onc_source_ == ::onc::ONC_SOURCE_USER_POLICY); 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool IsEditable() const { return !IsManaged(); } 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ::onc::ONCSource onc_source_; 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<base::Value> default_value_; 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(NetworkPropertyUIData); 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace chromeos 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_OPTIONS_NETWORK_PROPERTY_UI_DATA_H_ 57