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