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.
5 #ifndef CHROMEOS_NETWORK_ONC_ONC_MERGER_H_
6 #define CHROMEOS_NETWORK_ONC_ONC_MERGER_H_
8 #include "base/memory/scoped_ptr.h"
9 #include "chromeos/chromeos_export.h"
12 class DictionaryValue
;
18 struct OncValueSignature
;
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
);
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
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
);
53 } // namespace chromeos
55 #endif // CHROMEOS_NETWORK_ONC_ONC_MERGER_H_