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