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_H 6 #define ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_H 7 8 #include <set> 9 10 #include "ash/system/chromeos/network/network_observer.h" 11 #include "ash/system/chromeos/network/network_portal_detector_observer.h" 12 #include "ash/system/chromeos/network/tray_network_state_observer.h" 13 #include "ash/system/tray/system_tray_item.h" 14 #include "base/memory/scoped_ptr.h" 15 #include "base/time/time.h" 16 17 namespace chromeos { 18 class NetworkState; 19 } 20 21 namespace ash { 22 namespace tray { 23 class NetworkDefaultView; 24 class NetworkDetailedView; 25 class NetworkTrayView; 26 } 27 28 class TrayNetwork : public SystemTrayItem, 29 public NetworkObserver, 30 public NetworkPortalDetectorObserver, 31 public TrayNetworkStateObserver::Delegate { 32 public: 33 explicit TrayNetwork(SystemTray* system_tray); 34 virtual ~TrayNetwork(); 35 36 tray::NetworkDetailedView* detailed() { return detailed_; } 37 38 // SystemTrayItem 39 virtual views::View* CreateTrayView(user::LoginStatus status) OVERRIDE; 40 virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE; 41 virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE; 42 virtual void DestroyTrayView() OVERRIDE; 43 virtual void DestroyDefaultView() OVERRIDE; 44 virtual void DestroyDetailedView() OVERRIDE; 45 virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE; 46 virtual void UpdateAfterShelfAlignmentChange( 47 ShelfAlignment alignment) OVERRIDE; 48 49 // NetworkObserver 50 virtual void RequestToggleWifi() OVERRIDE; 51 52 // NetworkPortalDetectorObserver 53 virtual void OnCaptivePortalDetected( 54 const std::string& service_path) OVERRIDE; 55 56 // TrayNetworkStateObserver::Delegate 57 virtual void NetworkStateChanged(bool list_changed) OVERRIDE; 58 virtual void NetworkServiceChanged( 59 const chromeos::NetworkState* network) OVERRIDE; 60 61 private: 62 tray::NetworkTrayView* tray_; 63 tray::NetworkDefaultView* default_; 64 tray::NetworkDetailedView* detailed_; 65 bool request_wifi_view_; 66 scoped_ptr<TrayNetworkStateObserver> network_state_observer_; 67 68 DISALLOW_COPY_AND_ASSIGN(TrayNetwork); 69 }; 70 71 } // namespace ash 72 73 #endif // ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_H 74