onc_translator.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
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 CHROMEOS_NETWORK_ONC_ONC_TRANSLATOR_H_ 6#define CHROMEOS_NETWORK_ONC_ONC_TRANSLATOR_H_ 7 8#include "base/memory/scoped_ptr.h" 9#include "chromeos/chromeos_export.h" 10#include "components/onc/onc_constants.h" 11 12namespace base { 13class DictionaryValue; 14} 15 16namespace chromeos { 17namespace onc { 18 19struct OncValueSignature; 20 21// Translates a hierarchical ONC dictionary |onc_object| to a flat Shill 22// dictionary. The |signature| declares the type of |onc_object| and must point 23// to one of the signature objects in "onc_signature.h". The resulting Shill 24// dictionary is returned. 25// 26// This function is used to translate network settings from ONC to Shill's 27// format before sending them to Shill. 28CHROMEOS_EXPORT 29scoped_ptr<base::DictionaryValue> TranslateONCObjectToShill( 30 const OncValueSignature* signature, 31 const base::DictionaryValue& onc_object); 32 33// Translates a |shill_dictionary| to an ONC object according to the given 34// |onc_signature|. |onc_signature| must point to a signature object in 35// "onc_signature.h". The resulting ONC object is returned. 36// 37// This function is used to translate network settings coming from Shill to ONC 38// before sending them to the UI. The result doesn't have to be valid ONC, but 39// only a subset of it and includes only the values that are actually required 40// by the UI. If |onc_source| != ONC_SOURCE_UNKNOWN then the 'Source' property 41// of the ONC dictionary will be set accordingly. Note: ONC_SOURCE_USER_IMPORT 42// is treated the same as ONC_SOURCE_NONE. 43CHROMEOS_EXPORT 44scoped_ptr<base::DictionaryValue> TranslateShillServiceToONCPart( 45 const base::DictionaryValue& shill_dictionary, 46 ::onc::ONCSource onc_source, 47 const OncValueSignature* onc_signature); 48 49} // namespace onc 50} // namespace chromeos 51 52#endif // CHROMEOS_NETWORK_ONC_ONC_TRANSLATOR_H_ 53