- add sources.
[platform/framework/web/crosswalk.git] / src / chromeos / network / onc / onc_merger.h
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_