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