Home | History | Annotate | Download | only in messaging
      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