1 // Copyright 2013 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 CHROME_BROWSER_EXTENSIONS_POLICY_HANDLERS_H_
6 #define CHROME_BROWSER_EXTENSIONS_POLICY_HANDLERS_H_
8 #include "base/memory/scoped_ptr.h"
9 #include "base/values.h"
10 #include "components/policy/core/browser/configuration_policy_handler.h"
18 namespace extensions
{
20 // Implements additional checks for policies that are lists of extension IDs.
21 class ExtensionListPolicyHandler
22 : public policy::TypeCheckingPolicyHandler
{
24 ExtensionListPolicyHandler(const char* policy_name
,
25 const char* pref_path
,
26 bool allow_wildcards
);
27 ~ExtensionListPolicyHandler() override
;
29 // ConfigurationPolicyHandler methods:
30 bool CheckPolicySettings(const policy::PolicyMap
& policies
,
31 policy::PolicyErrorMap
* errors
) override
;
32 void ApplyPolicySettings(const policy::PolicyMap
& policies
,
33 PrefValueMap
* prefs
) override
;
36 const char* pref_path() const;
38 // Runs sanity checks on the policy value and returns it in |extension_ids|.
39 bool CheckAndGetList(const policy::PolicyMap
& policies
,
40 policy::PolicyErrorMap
* errors
,
41 scoped_ptr
<base::ListValue
>* extension_ids
);
44 const char* pref_path_
;
45 bool allow_wildcards_
;
47 DISALLOW_COPY_AND_ASSIGN(ExtensionListPolicyHandler
);
50 class ExtensionInstallForcelistPolicyHandler
51 : public policy::TypeCheckingPolicyHandler
{
53 ExtensionInstallForcelistPolicyHandler();
54 ~ExtensionInstallForcelistPolicyHandler() override
;
56 // ConfigurationPolicyHandler methods:
57 bool CheckPolicySettings(const policy::PolicyMap
& policies
,
58 policy::PolicyErrorMap
* errors
) override
;
59 void ApplyPolicySettings(const policy::PolicyMap
& policies
,
60 PrefValueMap
* prefs
) override
;
63 // Parses the data in |policy_value| and writes them to |extension_dict|.
64 bool ParseList(const base::Value
* policy_value
,
65 base::DictionaryValue
* extension_dict
,
66 policy::PolicyErrorMap
* errors
);
68 DISALLOW_COPY_AND_ASSIGN(ExtensionInstallForcelistPolicyHandler
);
71 // Implements additional checks for policies that are lists of extension
73 class ExtensionURLPatternListPolicyHandler
74 : public policy::TypeCheckingPolicyHandler
{
76 ExtensionURLPatternListPolicyHandler(const char* policy_name
,
77 const char* pref_path
);
78 ~ExtensionURLPatternListPolicyHandler() override
;
80 // ConfigurationPolicyHandler methods:
81 bool CheckPolicySettings(const policy::PolicyMap
& policies
,
82 policy::PolicyErrorMap
* errors
) override
;
83 void ApplyPolicySettings(const policy::PolicyMap
& policies
,
84 PrefValueMap
* prefs
) override
;
87 const char* pref_path_
;
89 DISALLOW_COPY_AND_ASSIGN(ExtensionURLPatternListPolicyHandler
);
92 class ExtensionSettingsPolicyHandler
93 : public policy::SchemaValidatingPolicyHandler
{
95 explicit ExtensionSettingsPolicyHandler(const policy::Schema
& chrome_schema
);
96 ~ExtensionSettingsPolicyHandler() override
;
98 // ConfigurationPolicyHandler methods:
99 bool CheckPolicySettings(const policy::PolicyMap
& policies
,
100 policy::PolicyErrorMap
* errors
) override
;
101 void ApplyPolicySettings(const policy::PolicyMap
& policies
,
102 PrefValueMap
* prefs
) override
;
105 DISALLOW_COPY_AND_ASSIGN(ExtensionSettingsPolicyHandler
);
108 } // namespace extensions
110 #endif // CHROME_BROWSER_EXTENSIONS_POLICY_HANDLERS_H_