• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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