1// Copyright (c) 2011 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_CONTENT_SETTINGS_CONTENT_SETTINGS_MOCK_PROVIDER_H_
6#define CHROME_BROWSER_CONTENT_SETTINGS_CONTENT_SETTINGS_MOCK_PROVIDER_H_
7#pragma once
8
9#include "base/basictypes.h"
10#include "chrome/browser/content_settings/content_settings_provider.h"
11
12namespace content_settings {
13
14// The class MockDefaultProvider is a mock for a default content settings
15// provider.
16class MockDefaultProvider : public DefaultProviderInterface {
17 public:
18  // Create a content settings provider that provides a given setting for a
19  // given type.
20  MockDefaultProvider(ContentSettingsType content_type,
21                              ContentSetting setting,
22                              bool is_managed,
23                              bool can_override);
24  virtual ~MockDefaultProvider();
25
26  // DefaultProviderInterface implementation.
27  virtual ContentSetting ProvideDefaultSetting(
28      ContentSettingsType content_type) const;
29  virtual void UpdateDefaultSetting(ContentSettingsType content_type,
30                                    ContentSetting setting);
31  virtual void ResetToDefaults();
32  virtual bool DefaultSettingIsManaged(ContentSettingsType content_type) const;
33
34 private:
35  ContentSettingsType content_type_;
36  ContentSetting setting_;
37  bool is_managed_;
38  bool can_override_;
39
40  DISALLOW_COPY_AND_ASSIGN(MockDefaultProvider);
41};
42
43// The class MockProvider is a mock for a non default content settings provider.
44class MockProvider : public ProviderInterface {
45 public:
46  MockProvider();
47  MockProvider(ContentSettingsPattern requesting_url_pattern,
48               ContentSettingsPattern embedding_url_pattern,
49               ContentSettingsType content_type,
50               ResourceIdentifier resource_identifier,
51               ContentSetting setting,
52               bool read_only,
53               bool is_managed);
54  virtual ~MockProvider();
55
56  virtual bool ContentSettingsTypeIsManaged(ContentSettingsType type);
57
58  // ProviderInterface implementation
59  virtual ContentSetting GetContentSetting(
60      const GURL& requesting_url,
61      const GURL& embedding_url,
62      ContentSettingsType content_type,
63      const ResourceIdentifier& resource_identifier) const;
64
65  // The MockProvider is only able to store one content setting. So every time
66  // this method is called the previously set content settings is overwritten.
67  virtual void SetContentSetting(
68      const ContentSettingsPattern& requesting_url_pattern,
69      const ContentSettingsPattern& embedding_url_pattern,
70      ContentSettingsType content_type,
71      const ResourceIdentifier& resource_identifier,
72      ContentSetting content_setting);
73
74  virtual void GetAllContentSettingsRules(
75      ContentSettingsType content_type,
76      const ResourceIdentifier& resource_identifier,
77      Rules* content_setting_rules) const {}
78
79  virtual void ClearAllContentSettingsRules(
80      ContentSettingsType content_type) {}
81
82  virtual void ResetToDefaults() {}
83
84  // Accessors
85  void set_requesting_url_pattern(ContentSettingsPattern pattern) {
86    requesting_url_pattern_ = pattern;
87  }
88
89  ContentSettingsPattern requesting_url_pattern() const {
90    return requesting_url_pattern_;
91  }
92
93  void set_embedding_url_pattern(ContentSettingsPattern pattern) {
94    embedding_url_pattern_ = pattern;
95  }
96
97  ContentSettingsPattern embedding_url_pattern() const {
98    return embedding_url_pattern_;
99  }
100
101  void set_content_type(ContentSettingsType content_type) {
102    content_type_ = content_type;
103  }
104
105  ContentSettingsType content_type() const {
106    return content_type_;
107  }
108
109  void set_resource_identifier(ResourceIdentifier resource_identifier) {
110    resource_identifier_ = resource_identifier;
111  }
112
113  ResourceIdentifier resource_identifier() const {
114    return resource_identifier_;
115  }
116
117  void set_setting(ContentSetting setting) {
118    setting_ = setting;
119  }
120
121  ContentSetting setting() const {
122    return setting_;
123  }
124
125  void set_read_only(bool read_only) {
126    read_only_ = read_only;
127  }
128
129  bool read_only() const {
130    return read_only_;
131  }
132
133  void set_is_managed(bool is_managed) {
134    is_managed_ = is_managed;
135  }
136
137  bool is_managed() const {
138    return is_managed_;
139  }
140
141 private:
142  ContentSettingsPattern requesting_url_pattern_;
143  ContentSettingsPattern embedding_url_pattern_;
144  ContentSettingsType content_type_;
145  ResourceIdentifier resource_identifier_;
146  ContentSetting setting_;
147  bool read_only_;
148  bool is_managed_;
149
150  DISALLOW_COPY_AND_ASSIGN(MockProvider);
151};
152
153}  // namespace content_settings
154
155#endif  // CHROME_BROWSER_CONTENT_SETTINGS_CONTENT_SETTINGS_MOCK_PROVIDER_H_
156