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
8#include <vector>
9
10#include "base/basictypes.h"
11#include "components/content_settings/core/browser/content_settings_observable_provider.h"
12#include "components/content_settings/core/browser/content_settings_origin_identifier_value_map.h"
13#include "components/content_settings/core/common/content_settings_pattern.h"
14#include "components/content_settings/core/common/content_settings_types.h"
15
16namespace content_settings {
17
18// The class MockProvider is a mock for a non default content settings provider.
19class MockProvider : public ObservableProvider {
20 public:
21  MockProvider();
22  explicit MockProvider(bool read_only);
23  virtual ~MockProvider();
24
25  virtual RuleIterator* GetRuleIterator(
26      ContentSettingsType content_type,
27      const ResourceIdentifier& resource_identifier,
28      bool incognito) const OVERRIDE;
29
30  // The MockProvider is only able to store one content setting. So every time
31  // this method is called the previously set content settings is overwritten.
32  virtual bool SetWebsiteSetting(
33      const ContentSettingsPattern& requesting_url_pattern,
34      const ContentSettingsPattern& embedding_url_pattern,
35      ContentSettingsType content_type,
36      const ResourceIdentifier& resource_identifier,
37      base::Value* value) OVERRIDE;
38
39  virtual void ClearAllContentSettingsRules(
40      ContentSettingsType content_type) OVERRIDE {}
41
42  virtual void ShutdownOnUIThread() OVERRIDE;
43
44  void set_read_only(bool read_only) {
45    read_only_ = read_only;
46  }
47
48  bool read_only() const {
49    return read_only_;
50  }
51
52 private:
53  OriginIdentifierValueMap value_map_;
54  bool read_only_;
55
56  DISALLOW_COPY_AND_ASSIGN(MockProvider);
57};
58
59}  // namespace content_settings
60
61#endif  // CHROME_BROWSER_CONTENT_SETTINGS_CONTENT_SETTINGS_MOCK_PROVIDER_H_
62