Home | History | Annotate | Download | only in invalidation
      1 // Copyright 2014 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_INVALIDATION_TICL_SETTINGS_PROVIDER_H_
      6 #define COMPONENTS_INVALIDATION_TICL_SETTINGS_PROVIDER_H_
      7 
      8 #include "base/macros.h"
      9 #include "base/observer_list.h"
     10 
     11 namespace invalidation {
     12 
     13 // Provides configuration settings to TiclInvalidationService and notifies it
     14 // when the settings change.
     15 class TiclSettingsProvider {
     16  public:
     17   class Observer {
     18    public:
     19     virtual void OnUseGCMChannelChanged() = 0;
     20 
     21    protected:
     22     virtual ~Observer();
     23   };
     24 
     25   TiclSettingsProvider();
     26   virtual ~TiclSettingsProvider();
     27 
     28   virtual bool UseGCMChannel() const = 0;
     29 
     30   void AddObserver(Observer* observer);
     31   void RemoveObserver(Observer* observer);
     32 
     33  protected:
     34   void FireOnUseGCMChannelChanged();
     35 
     36  private:
     37   ObserverList<Observer, true> observers_;
     38 
     39   DISALLOW_COPY_AND_ASSIGN(TiclSettingsProvider);
     40 };
     41 
     42 }  // namespace invalidation
     43 
     44 #endif  // COMPONENTS_INVALIDATION_TICL_SETTINGS_PROVIDER_H_
     45