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