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
11namespace invalidation {
12
13// Provides configuration settings to TiclInvalidationService and notifies it
14// when the settings change.
15class 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