Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / components / invalidation / ticl_settings_provider.h
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_