// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_POLICY_CORE_COMMON_POLICY_MERGER_H_ #define COMPONENTS_POLICY_CORE_COMMON_POLICY_MERGER_H_ #include <stddef.h> #include <memory> #include <string> #include "base/containers/flat_set.h" #include "components/policy/core/common/policy_map.h" #include "components/policy/policy_export.h" namespace policy { // Abstract class that provides an interface to apply custom merging logic on a // set of policies. class POLICY_EXPORT PolicyMerger { … }; // PolicyListMerger allows the merging of policy lists that have multiple // sources. Each policy that has to be merged will have the values from its // multiple sources concatenated without duplicates. class POLICY_EXPORT PolicyListMerger : public PolicyMerger { … }; // PolicyDictionaryMerger allows the merging of policy dictionaries that have // multiple sources. Each policy that has to be merged will have its first level // keys merged into one dictionary, each conflict will be resolved by // using the key coming from the highest priority source. class POLICY_EXPORT PolicyDictionaryMerger : public PolicyMerger { … }; // PolicyGroupMerger enforces atomic policy groups. It disables the policies // from a group that do not share the highest priority from that group. class POLICY_EXPORT PolicyGroupMerger : public PolicyMerger { … }; } // namespace policy #endif // COMPONENTS_POLICY_CORE_COMMON_POLICY_MERGER_H_