Home | History | Annotate | Download | only in common
      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 COMPONENTS_POLICY_CORE_COMMON_PROXY_POLICY_PROVIDER_H_
      6 #define COMPONENTS_POLICY_CORE_COMMON_PROXY_POLICY_PROVIDER_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "components/policy/core/common/configuration_policy_provider.h"
     10 #include "components/policy/policy_export.h"
     11 
     12 namespace policy {
     13 
     14 // A policy provider implementation that acts as a proxy for another policy
     15 // provider, swappable at any point.
     16 class POLICY_EXPORT ProxyPolicyProvider
     17     : public ConfigurationPolicyProvider,
     18       public ConfigurationPolicyProvider::Observer {
     19  public:
     20   ProxyPolicyProvider();
     21   virtual ~ProxyPolicyProvider();
     22 
     23   // Updates the provider this proxy delegates to.
     24   void SetDelegate(ConfigurationPolicyProvider* delegate);
     25 
     26   // ConfigurationPolicyProvider:
     27   virtual void Shutdown() OVERRIDE;
     28   virtual void RefreshPolicies() OVERRIDE;
     29 
     30   // ConfigurationPolicyProvider::Observer:
     31   virtual void OnUpdatePolicy(ConfigurationPolicyProvider* provider) OVERRIDE;
     32 
     33  private:
     34   ConfigurationPolicyProvider* delegate_;
     35 
     36   DISALLOW_COPY_AND_ASSIGN(ProxyPolicyProvider);
     37 };
     38 
     39 }  // namespace policy
     40 
     41 #endif  // COMPONENTS_POLICY_CORE_COMMON_PROXY_POLICY_PROVIDER_H_
     42