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 ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_STATE_OBSERVER_H
6#define ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_STATE_OBSERVER_H
7
8#include <string>
9
10#include "base/compiler_specific.h"
11#include "chromeos/network/network_state_handler_observer.h"
12
13namespace ash {
14
15class TrayNetworkStateObserver : public chromeos::NetworkStateHandlerObserver {
16 public:
17  class Delegate {
18   public:
19    // Called when the network state may have changed. If |list_changed| is
20    // true then the list of networks may have changed.
21    virtual void NetworkStateChanged(bool list_changed) = 0;
22
23    // Called when the properties for |network| may have been updated.
24    virtual void NetworkServiceChanged(
25        const chromeos::NetworkState* network) = 0;
26
27   protected:
28    virtual ~Delegate() {}
29  };
30
31  explicit TrayNetworkStateObserver(Delegate* delegate);
32
33  virtual ~TrayNetworkStateObserver();
34
35  // NetworkStateHandlerObserver overrides.
36  virtual void NetworkListChanged() OVERRIDE;
37  virtual void DeviceListChanged() OVERRIDE;
38  virtual void DefaultNetworkChanged(
39      const chromeos::NetworkState* network) OVERRIDE;
40  virtual void NetworkConnectionStateChanged(
41      const chromeos::NetworkState* network) OVERRIDE;
42  virtual void NetworkPropertiesUpdated(
43      const chromeos::NetworkState* network) OVERRIDE;
44
45 private:
46  Delegate* delegate_;
47
48  DISALLOW_COPY_AND_ASSIGN(TrayNetworkStateObserver);
49};
50
51}  // namespace ash
52
53#endif  // ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_STATE_OBSERVER_H
54