Home | History | Annotate | Download | only in content_settings
      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