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 14namespace 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. 18class 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