12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_STATE_OBSERVER_H
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_STATE_OBSERVER_H
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string>
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/compiler_specific.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chromeos/network/network_state_handler_observer.h"
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace ash {
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class TrayNetworkStateObserver : public chromeos::NetworkStateHandlerObserver {
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  class Delegate {
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   public:
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // Called when the network state may have changed. If |list_changed| is
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // true then the list of networks may have changed.
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    virtual void NetworkStateChanged(bool list_changed) = 0;
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // Called when the properties for |network| may have been updated.
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    virtual void NetworkServiceChanged(
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        const chromeos::NetworkState* network) = 0;
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)   protected:
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    virtual ~Delegate() {}
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  };
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  explicit TrayNetworkStateObserver(Delegate* delegate);
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual ~TrayNetworkStateObserver();
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // NetworkStateHandlerObserver overrides.
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void NetworkListChanged() OVERRIDE;
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void DeviceListChanged() OVERRIDE;
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void DefaultNetworkChanged(
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const chromeos::NetworkState* network) OVERRIDE;
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual void NetworkConnectionStateChanged(
41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      const chromeos::NetworkState* network) OVERRIDE;
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void NetworkPropertiesUpdated(
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const chromeos::NetworkState* network) OVERRIDE;
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private:
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  Delegate* delegate_;
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(TrayNetworkStateObserver);
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace ash
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_STATE_OBSERVER_H
54