Home | History | Annotate | Download | only in onc
      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_MERGER_H_
      6 #define CHROMEOS_NETWORK_ONC_ONC_MERGER_H_
      7 
      8 #include "base/memory/scoped_ptr.h"
      9 #include "chromeos/chromeos_export.h"
     10 
     11 namespace base {
     12 class DictionaryValue;
     13 }
     14 
     15 namespace chromeos {
     16 namespace onc {
     17 
     18 struct OncValueSignature;
     19 
     20 // Merges the given |user_settings| and |shared_settings| settings with the
     21 // given |user_policy| and |device_policy| settings. Each can be omitted by
     22 // providing a NULL pointer. Each dictionary has to be part of a valid ONC
     23 // dictionary. They don't have to describe top-level ONC but should refer to the
     24 // same section in ONC. |user_settings| and |shared_settings| should not contain
     25 // kRecommended fields. The resulting dictionary is valid ONC but may contain
     26 // dispensable fields (e.g. in a network with type: "WiFi", the field "VPN" is
     27 // dispensable) that can be removed by the caller using the ONC normalizer. ONC
     28 // conformance of the arguments is not checked. Use ONC validator for that.
     29 CHROMEOS_EXPORT scoped_ptr<base::DictionaryValue>
     30 MergeSettingsAndPoliciesToEffective(
     31     const base::DictionaryValue* user_policy,
     32     const base::DictionaryValue* device_policy,
     33     const base::DictionaryValue* user_settings,
     34     const base::DictionaryValue* shared_settings);
     35 
     36 // Like MergeSettingsWithPoliciesToEffective but creates one dictionary in place
     37 // of each field that exists in any of the argument dictionaries. Each of these
     38 // dictionaries contains the onc::kAugmentations* fields (see onc_constants.h)
     39 // for which a value is available. The onc::kAugmentationEffectiveSetting field
     40 // contains the field name of the field containing the effective field that
     41 // overrides all other values. Credentials from policies are not written to the
     42 // result.
     43 CHROMEOS_EXPORT scoped_ptr<base::DictionaryValue>
     44 MergeSettingsAndPoliciesToAugmented(
     45     const OncValueSignature& signature,
     46     const base::DictionaryValue* user_policy,
     47     const base::DictionaryValue* device_policy,
     48     const base::DictionaryValue* user_settings,
     49     const base::DictionaryValue* shared_settings,
     50     const base::DictionaryValue* active_settings);
     51 
     52 }  // namespace onc
     53 }  // namespace chromeos
     54 
     55 #endif  // CHROMEOS_NETWORK_ONC_ONC_MERGER_H_
     56