Home | History | Annotate | Download | only in browser
      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 EXTENSIONS_BROWSER_TEST_MANAGEMENT_POLICY_H_
      6 #define EXTENSIONS_BROWSER_TEST_MANAGEMENT_POLICY_H_
      7 
      8 #include <string>
      9 
     10 #include "base/strings/string16.h"
     11 #include "chrome/browser/extensions/extension_service.h"
     12 #include "extensions/browser/management_policy.h"
     13 
     14 namespace extensions {
     15 
     16 // This class provides a simple way to create providers with specific
     17 // restrictions and a known error message, for use in testing.
     18 class TestManagementPolicyProvider : public ManagementPolicy::Provider {
     19  public:
     20   enum AllowedActionFlag {
     21     ALLOW_ALL = 0,
     22     PROHIBIT_LOAD = 1 << 0,
     23     PROHIBIT_MODIFY_STATUS = 1 << 1,
     24     MUST_REMAIN_ENABLED = 1 << 2,
     25     MUST_REMAIN_DISABLED = 1 << 3
     26   };
     27 
     28   static std::string expected_error() {
     29     return "Action prohibited by test provider.";
     30   }
     31 
     32   TestManagementPolicyProvider();
     33   explicit TestManagementPolicyProvider(int prohibited_actions);
     34 
     35   void SetProhibitedActions(int prohibited_actions);
     36   void SetDisableReason(Extension::DisableReason reason);
     37 
     38   virtual std::string GetDebugPolicyProviderName() const OVERRIDE;
     39 
     40   virtual bool UserMayLoad(const Extension* extension,
     41                            string16* error) const OVERRIDE;
     42 
     43   virtual bool UserMayModifySettings(const Extension* extension,
     44                                      string16* error) const OVERRIDE;
     45 
     46   virtual bool MustRemainEnabled(const Extension* extension,
     47                                  string16* error) const OVERRIDE;
     48 
     49   virtual bool MustRemainDisabled(const Extension* extension,
     50                                   Extension::DisableReason* reason,
     51                                   string16* error) const OVERRIDE;
     52 
     53  private:
     54   bool may_load_;
     55   bool may_modify_status_;
     56   bool must_remain_enabled_;
     57   bool must_remain_disabled_;
     58   Extension::DisableReason disable_reason_;
     59 
     60   string16 error_message_;
     61 };
     62 
     63 }  // namespace extensions
     64 
     65 #endif  // EXTENSIONS_BROWSER_TEST_MANAGEMENT_POLICY_H_
     66