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