1// Copyright (c) 2012 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 COMPONENTS_CONTENT_SETTINGS_CORE_BROWSER_CONTENT_SETTINGS_OBSERVABLE_PROVIDER_H_
6#define COMPONENTS_CONTENT_SETTINGS_CORE_BROWSER_CONTENT_SETTINGS_OBSERVABLE_PROVIDER_H_
7
8#include <string>
9
10#include "base/observer_list.h"
11#include "components/content_settings/core/browser/content_settings_observer.h"
12#include "components/content_settings/core/browser/content_settings_provider.h"
13#include "components/content_settings/core/common/content_settings_pattern.h"
14
15namespace content_settings {
16
17class ObservableProvider : public ProviderInterface {
18 public:
19  ObservableProvider();
20  virtual ~ObservableProvider();
21
22  void AddObserver(Observer* observer);
23  void RemoveObserver(Observer* observer);
24
25 protected:
26  void NotifyObservers(const ContentSettingsPattern& primary_pattern,
27                       const ContentSettingsPattern& secondary_pattern,
28                       ContentSettingsType content_type,
29                       const std::string& resource_identifier);
30  void RemoveAllObservers();
31
32 private:
33  ObserverList<Observer, true> observer_list_;
34};
35
36}  // namespace content_settings
37
38#endif  // COMPONENTS_CONTENT_SETTINGS_CORE_BROWSER_CONTENT_SETTINGS_OBSERVABLE_PROVIDER_H_
39