15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_H 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_H 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <set> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/chromeos/network/network_observer.h" 11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ash/system/chromeos/network/network_portal_detector_observer.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/chromeos/network/tray_network_state_observer.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/tray/system_tray_item.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/time/time.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace chromeos { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class NetworkState; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace tray { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NetworkDefaultView; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NetworkDetailedView; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NetworkTrayView; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TrayNetwork : public SystemTrayItem, 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public NetworkObserver, 30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public NetworkPortalDetectorObserver, 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public TrayNetworkStateObserver::Delegate { 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit TrayNetwork(SystemTray* system_tray); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~TrayNetwork(); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tray::NetworkDetailedView* detailed() { return detailed_; } 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // SystemTrayItem 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::View* CreateTrayView(user::LoginStatus status) OVERRIDE; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyTrayView() OVERRIDE; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyDefaultView() OVERRIDE; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyDetailedView() OVERRIDE; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateAfterShelfAlignmentChange( 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ShelfAlignment alignment) OVERRIDE; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // NetworkObserver 5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void RequestToggleWifi() OVERRIDE; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // NetworkPortalDetectorObserver 53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void OnCaptivePortalDetected( 54a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const std::string& service_path) OVERRIDE; 55a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TrayNetworkStateObserver::Delegate 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void NetworkStateChanged(bool list_changed) OVERRIDE; 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void NetworkServiceChanged( 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const chromeos::NetworkState* network) OVERRIDE; 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) private: 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tray::NetworkTrayView* tray_; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tray::NetworkDefaultView* default_; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tray::NetworkDetailedView* detailed_; 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool request_wifi_view_; 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<TrayNetworkStateObserver> network_state_observer_; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TrayNetwork); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ash 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // ASH_SYSTEM_CHROMEOS_NETWORK_TRAY_NETWORK_H 74