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 CHROME_BROWSER_CONTENT_SETTINGS_CONTENT_SETTINGS_OBSERVABLE_PROVIDER_H_ 6 #define CHROME_BROWSER_CONTENT_SETTINGS_CONTENT_SETTINGS_OBSERVABLE_PROVIDER_H_ 7 8 #include <string> 9 10 #include "base/observer_list.h" 11 #include "chrome/browser/content_settings/content_settings_provider.h" 12 #include "chrome/browser/content_settings/content_settings_observer.h" 13 #include "chrome/common/content_settings_pattern.h" 14 15 namespace content_settings { 16 17 class 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 // CHROME_BROWSER_CONTENT_SETTINGS_CONTENT_SETTINGS_OBSERVABLE_PROVIDER_H_ 39