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