[Session restore] Rename group name Enabled to Restore.
[chromium-blink-merge.git] / chromeos / network / onc / onc_merger.h
blob35e97fd2af0a1d2db3c61b1bf0738c7bd3820166
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"
11 namespace base {
12 class DictionaryValue;
15 namespace chromeos {
16 namespace onc {
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
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);
52 } // namespace onc
53 } // namespace chromeos
55 #endif // CHROMEOS_NETWORK_ONC_ONC_MERGER_H_