• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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_API_MESSAGING_NATIVE_MESSAGING_POLICY_HANDLER_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_MESSAGING_NATIVE_MESSAGING_POLICY_HANDLER_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 Native Messaging
20 // Hosts.
21 class NativeMessagingHostListPolicyHandler
22     : public policy::TypeCheckingPolicyHandler {
23  public:
24   NativeMessagingHostListPolicyHandler(const char* policy_name,
25                                        const char* pref_path,
26                                        bool allow_wildcards);
27   virtual ~NativeMessagingHostListPolicyHandler();
28 
29   // ConfigurationPolicyHandler methods:
30   virtual bool CheckPolicySettings(const policy::PolicyMap& policies,
31                                    policy::PolicyErrorMap* errors) OVERRIDE;
32   virtual void ApplyPolicySettings(const policy::PolicyMap& policies,
33                                    PrefValueMap* prefs) OVERRIDE;
34 
35  protected:
36   const char* pref_path() const;
37 
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);
42 
43  private:
44   const char* pref_path_;
45   bool allow_wildcards_;
46 
47   DISALLOW_COPY_AND_ASSIGN(NativeMessagingHostListPolicyHandler);
48 };
49 
50 }  // namespace extensions
51 
52 #endif  // CHROME_BROWSER_EXTENSIONS_API_MESSAGING_NATIVE_MESSAGING_POLICY_HANDLER_H_
53