• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #ifndef CHROME_BROWSER_EXTENSIONS_POLICY_HANDLERS_H_
6 #define CHROME_BROWSER_EXTENSIONS_POLICY_HANDLERS_H_
7 
8 #include "base/memory/scoped_ptr.h"
9 #include "base/values.h"
10 #include "components/policy/core/browser/configuration_policy_handler.h"
11 
12 namespace policy {
13 class PolicyMap;
14 class PolicyErrorMap;
15 }  // namespace policy
16 
17 namespace extensions {
18 
19 // Implements additional checks for policies that are lists of extension IDs.
20 class ExtensionListPolicyHandler
21     : public policy::TypeCheckingPolicyHandler {
22  public:
23   ExtensionListPolicyHandler(const char* policy_name,
24                              const char* pref_path,
25                              bool allow_wildcards);
26   virtual ~ExtensionListPolicyHandler();
27 
28   // ConfigurationPolicyHandler methods:
29   virtual bool CheckPolicySettings(const policy::PolicyMap& policies,
30                                    policy::PolicyErrorMap* errors) OVERRIDE;
31   virtual void ApplyPolicySettings(const policy::PolicyMap& policies,
32                                    PrefValueMap* prefs) OVERRIDE;
33 
34  protected:
35   const char* pref_path() const;
36 
37   // Runs sanity checks on the policy value and returns it in |extension_ids|.
38   bool CheckAndGetList(const policy::PolicyMap& policies,
39                        policy::PolicyErrorMap* errors,
40                        scoped_ptr<base::ListValue>* extension_ids);
41 
42  private:
43   const char* pref_path_;
44   bool allow_wildcards_;
45 
46   DISALLOW_COPY_AND_ASSIGN(ExtensionListPolicyHandler);
47 };
48 
49 class ExtensionInstallForcelistPolicyHandler
50     : public policy::TypeCheckingPolicyHandler {
51  public:
52   ExtensionInstallForcelistPolicyHandler();
53   virtual ~ExtensionInstallForcelistPolicyHandler();
54 
55   // ConfigurationPolicyHandler methods:
56   virtual bool CheckPolicySettings(const policy::PolicyMap& policies,
57                                    policy::PolicyErrorMap* errors) OVERRIDE;
58   virtual void ApplyPolicySettings(const policy::PolicyMap& policies,
59                                    PrefValueMap* prefs) OVERRIDE;
60 
61  private:
62   // Parses the data in |policy_value| and writes them to |extension_dict|.
63   bool ParseList(const base::Value* policy_value,
64                  base::DictionaryValue* extension_dict,
65                  policy::PolicyErrorMap* errors);
66 
67   DISALLOW_COPY_AND_ASSIGN(ExtensionInstallForcelistPolicyHandler);
68 };
69 
70 // Implements additional checks for policies that are lists of extension
71 // URLPatterns.
72 class ExtensionURLPatternListPolicyHandler
73     : public policy::TypeCheckingPolicyHandler {
74  public:
75   ExtensionURLPatternListPolicyHandler(const char* policy_name,
76                                        const char* pref_path);
77   virtual ~ExtensionURLPatternListPolicyHandler();
78 
79   // ConfigurationPolicyHandler methods:
80   virtual bool CheckPolicySettings(const policy::PolicyMap& policies,
81                                    policy::PolicyErrorMap* errors) OVERRIDE;
82   virtual void ApplyPolicySettings(const policy::PolicyMap& policies,
83                                    PrefValueMap* prefs) OVERRIDE;
84 
85  private:
86   const char* pref_path_;
87 
88   DISALLOW_COPY_AND_ASSIGN(ExtensionURLPatternListPolicyHandler);
89 };
90 
91 }  // namespace extensions
92 
93 #endif  // CHROME_BROWSER_EXTENSIONS_POLICY_HANDLERS_H_
94