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)#include "chrome/browser/chromeos/options/network_property_ui_data.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/values.h" 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace chromeos { 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)NetworkPropertyUIData::NetworkPropertyUIData() 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) : onc_source_(onc::ONC_SOURCE_NONE) { 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)NetworkPropertyUIData::NetworkPropertyUIData(onc::ONCSource onc_source) 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) : onc_source_(onc_source) { 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)NetworkPropertyUIData::~NetworkPropertyUIData() { 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void NetworkPropertyUIData::ParseOncProperty(onc::ONCSource onc_source, 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const base::DictionaryValue* onc, 2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const std::string& property_key) { 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) default_value_.reset(); 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) onc_source_ = onc_source; 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) if (!onc || !IsManaged()) 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return; 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) size_t pos = property_key.find_last_of('.'); 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string recommended_property_key; 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string property_basename(property_key); 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (pos != std::string::npos) { 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) recommended_property_key = property_key.substr(0, pos + 1); 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) property_basename = property_key.substr(pos + 1); 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) recommended_property_key += "Recommended"; 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::ListValue* recommended_keys = NULL; 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (onc->GetList(recommended_property_key, &recommended_keys)) { 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::StringValue basename_value(property_basename); 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (recommended_keys->Find(basename_value) != recommended_keys->end()) { 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) onc_source_ = onc::ONC_SOURCE_NONE; 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::Value* default_value = NULL; 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (onc->Get(property_key, &default_value)) 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) default_value_.reset(default_value->DeepCopy()); 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace chromeos 53