blob: db0e0e2e84f15c081c0166e912d4f6b356ba394f [file] [log] [blame]
[email protected]01253d272013-10-21 17:07:501// 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.
4
5#ifndef CHROME_BROWSER_EXTENSIONS_POLICY_HANDLERS_H_
6#define CHROME_BROWSER_EXTENSIONS_POLICY_HANDLERS_H_
7
dchengc963c7142016-04-08 03:55:228#include <memory>
9
avia2f4804a2015-12-24 23:11:1310#include "base/macros.h"
[email protected]01253d272013-10-21 17:07:5011#include "base/values.h"
[email protected]76b4b152013-12-08 21:10:0412#include "components/policy/core/browser/configuration_policy_handler.h"
[email protected]01253d272013-10-21 17:07:5013
14namespace policy {
15class PolicyMap;
16class PolicyErrorMap;
binjin1e1cc33a2014-10-09 18:08:1617class Schema;
[email protected]01253d272013-10-21 17:07:5018} // namespace policy
19
20namespace extensions {
21
22// Implements additional checks for policies that are lists of extension IDs.
Lutz Justene45e3fe2017-08-18 07:11:3923class ExtensionListPolicyHandler : public policy::ListPolicyHandler {
[email protected]01253d272013-10-21 17:07:5024 public:
25 ExtensionListPolicyHandler(const char* policy_name,
26 const char* pref_path,
27 bool allow_wildcards);
dchengae36a4a2014-10-21 12:36:3628 ~ExtensionListPolicyHandler() override;
[email protected]01253d272013-10-21 17:07:5029
[email protected]01253d272013-10-21 17:07:5030 protected:
Lutz Justene45e3fe2017-08-18 07:11:3931 // ListPolicyHandler methods:
[email protected]01253d272013-10-21 17:07:5032
Lutz Justene45e3fe2017-08-18 07:11:3933 // Checks whether |value| contains a valid extension id (or a wildcard).
34 bool CheckListEntry(const base::Value& value) override;
35
36 // Sets |prefs| at pref_path() to |filtered_list|.
37 void ApplyList(std::unique_ptr<base::ListValue> filtered_list,
38 PrefValueMap* prefs) override;
[email protected]01253d272013-10-21 17:07:5039
40 private:
41 const char* pref_path_;
42 bool allow_wildcards_;
43
44 DISALLOW_COPY_AND_ASSIGN(ExtensionListPolicyHandler);
45};
46
achuith4607f072017-03-08 11:49:1347// Base class for parsing the list of extensions to force install.
48class ExtensionInstallListPolicyHandler
[email protected]01253d272013-10-21 17:07:5049 : public policy::TypeCheckingPolicyHandler {
50 public:
[email protected]01253d272013-10-21 17:07:5051 // ConfigurationPolicyHandler methods:
dchengae36a4a2014-10-21 12:36:3652 bool CheckPolicySettings(const policy::PolicyMap& policies,
53 policy::PolicyErrorMap* errors) override;
54 void ApplyPolicySettings(const policy::PolicyMap& policies,
55 PrefValueMap* prefs) override;
[email protected]01253d272013-10-21 17:07:5056
achuith4607f072017-03-08 11:49:1357 protected:
58 ExtensionInstallListPolicyHandler(const char* policy_name,
59 const char* pref_name);
60
61 ~ExtensionInstallListPolicyHandler() override = default;
62
[email protected]01253d272013-10-21 17:07:5063 private:
64 // Parses the data in |policy_value| and writes them to |extension_dict|.
65 bool ParseList(const base::Value* policy_value,
66 base::DictionaryValue* extension_dict,
67 policy::PolicyErrorMap* errors);
68
achuith4607f072017-03-08 11:49:1369 const char* const pref_name_ = nullptr;
70
71 DISALLOW_COPY_AND_ASSIGN(ExtensionInstallListPolicyHandler);
72};
73
74// Parses the extension force install list for user sessions.
75class ExtensionInstallForcelistPolicyHandler
76 : public ExtensionInstallListPolicyHandler {
77 public:
78 ExtensionInstallForcelistPolicyHandler();
79 ~ExtensionInstallForcelistPolicyHandler() override = default;
80
81 private:
[email protected]01253d272013-10-21 17:07:5082 DISALLOW_COPY_AND_ASSIGN(ExtensionInstallForcelistPolicyHandler);
83};
84
achuith4607f072017-03-08 11:49:1385// Parses the extension force install list for the login profile.
Alexander Hendrichb07fd55b2019-04-01 09:24:3786class ExtensionInstallLoginScreenExtensionsPolicyHandler
achuith4607f072017-03-08 11:49:1387 : public ExtensionInstallListPolicyHandler {
88 public:
Alexander Hendrichb07fd55b2019-04-01 09:24:3789 ExtensionInstallLoginScreenExtensionsPolicyHandler();
90 ~ExtensionInstallLoginScreenExtensionsPolicyHandler() override = default;
achuith4607f072017-03-08 11:49:1391
92 private:
Alexander Hendrichb07fd55b2019-04-01 09:24:3793 DISALLOW_COPY_AND_ASSIGN(ExtensionInstallLoginScreenExtensionsPolicyHandler);
achuith4607f072017-03-08 11:49:1394};
95
[email protected]01253d272013-10-21 17:07:5096// Implements additional checks for policies that are lists of extension
97// URLPatterns.
98class ExtensionURLPatternListPolicyHandler
99 : public policy::TypeCheckingPolicyHandler {
100 public:
101 ExtensionURLPatternListPolicyHandler(const char* policy_name,
102 const char* pref_path);
dchengae36a4a2014-10-21 12:36:36103 ~ExtensionURLPatternListPolicyHandler() override;
[email protected]01253d272013-10-21 17:07:50104
105 // ConfigurationPolicyHandler methods:
dchengae36a4a2014-10-21 12:36:36106 bool CheckPolicySettings(const policy::PolicyMap& policies,
107 policy::PolicyErrorMap* errors) override;
108 void ApplyPolicySettings(const policy::PolicyMap& policies,
109 PrefValueMap* prefs) override;
[email protected]01253d272013-10-21 17:07:50110
111 private:
112 const char* pref_path_;
113
114 DISALLOW_COPY_AND_ASSIGN(ExtensionURLPatternListPolicyHandler);
115};
116
binjin1e1cc33a2014-10-09 18:08:16117class ExtensionSettingsPolicyHandler
118 : public policy::SchemaValidatingPolicyHandler {
119 public:
120 explicit ExtensionSettingsPolicyHandler(const policy::Schema& chrome_schema);
dchengae36a4a2014-10-21 12:36:36121 ~ExtensionSettingsPolicyHandler() override;
binjin1e1cc33a2014-10-09 18:08:16122
123 // ConfigurationPolicyHandler methods:
dchengae36a4a2014-10-21 12:36:36124 bool CheckPolicySettings(const policy::PolicyMap& policies,
125 policy::PolicyErrorMap* errors) override;
126 void ApplyPolicySettings(const policy::PolicyMap& policies,
127 PrefValueMap* prefs) override;
binjin1e1cc33a2014-10-09 18:08:16128
129 private:
130 DISALLOW_COPY_AND_ASSIGN(ExtensionSettingsPolicyHandler);
131};
132
[email protected]01253d272013-10-21 17:07:50133} // namespace extensions
134
135#endif // CHROME_BROWSER_EXTENSIONS_POLICY_HANDLERS_H_