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 CHROMEOS_NETWORK_NETWORK_STATE_HANDLER_OBSERVER_H_
6#define CHROMEOS_NETWORK_NETWORK_STATE_HANDLER_OBSERVER_H_
7
8#include <string>
9#include <vector>
10
11#include "base/basictypes.h"
12#include "chromeos/chromeos_export.h"
13
14namespace chromeos {
15
16class DeviceState;
17class NetworkState;
18
19// Observer class for all network state changes, including changes to
20// active (connecting or connected) services.
21class CHROMEOS_EXPORT NetworkStateHandlerObserver {
22 public:
23  NetworkStateHandlerObserver();
24  virtual ~NetworkStateHandlerObserver();
25
26  // The list of networks changed.
27  virtual void NetworkListChanged();
28
29  // The list of devices changed, or a property changed (e.g. scanning).
30  virtual void DeviceListChanged();
31
32  // The default network changed (includes VPNs) or one of its properties
33  // changed. This won't be called if the WiFi signal strength property
34  // changes. If interested in those events, use NetworkPropertiesUpdated()
35  // below.
36  // |network| will be NULL if there is no longer a default network.
37  virtual void DefaultNetworkChanged(const NetworkState* network);
38
39  // The connection state of |network| changed.
40  virtual void NetworkConnectionStateChanged(const NetworkState* network);
41
42  // One or more properties of |network| have been updated. Note: this will get
43  // called in *addition* to NetworkConnectionStateChanged() when the
44  // connection state property changes. Use this to track properties like
45  // wifi strength.
46  virtual void NetworkPropertiesUpdated(const NetworkState* network);
47
48  // One or more properties of |device| have been updated.
49  virtual void DevicePropertiesUpdated(const DeviceState* device);
50
51  // Called just before NetworkStateHandler is destroyed so that observers
52  // can safely stop observing.
53  virtual void IsShuttingDown();
54
55 private:
56  DISALLOW_COPY_AND_ASSIGN(NetworkStateHandlerObserver);
57};
58
59}  // namespace chromeos
60
61#endif  // CHROMEOS_NETWORK_NETWORK_STATE_HANDLER_OBSERVER_H_
62