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 expected_error()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