Home | History | Annotate | Download | only in network
      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_NETWORK_OBSERVER_H
      6 #define ASH_SYSTEM_CHROMEOS_NETWORK_NETWORK_OBSERVER_H
      7 
      8 #include <vector>
      9 
     10 #include "base/strings/string16.h"
     11 
     12 namespace chromeos {
     13 class NetworkState;
     14 }
     15 
     16 namespace ash {
     17 
     18 struct NetworkIconInfo;
     19 class NetworkTrayDelegate;
     20 
     21 class NetworkObserver {
     22  public:
     23   enum MessageType {
     24     // Priority order, highest to lowest.
     25     ERROR_CONNECT_FAILED,
     26     ERROR_OUT_OF_CREDITS,
     27     MESSAGE_DATA_PROMO,
     28   };
     29 
     30   enum NetworkType {
     31     // ash relevant subset of network_constants.h connection type.
     32     NETWORK_ETHERNET,
     33     NETWORK_CELLULAR,
     34     NETWORK_CELLULAR_LTE,
     35     NETWORK_WIFI,
     36     NETWORK_BLUETOOTH,
     37     NETWORK_UNKNOWN,
     38   };
     39 
     40   virtual ~NetworkObserver() {}
     41 
     42   // Sets a network message notification.
     43   // |message_type| identifies the type of message.
     44   // |network_type| identifies the type of network involved.
     45   // |delegate|->NotificationLinkClicked() will be called if any of the
     46   // |links| are clicked (if supplied, |links| may be empty).
     47   virtual void SetNetworkMessage(NetworkTrayDelegate* delegate,
     48                                  MessageType message_type,
     49                                  NetworkType network_type,
     50                                  const base::string16& title,
     51                                  const base::string16& message,
     52                                  const std::vector<base::string16>& links) = 0;
     53 
     54   // Clears the message notification for |message_type|.
     55   virtual void ClearNetworkMessage(MessageType message_type) = 0;
     56 
     57   // Called to request toggling Wi-Fi enable/disable, e.g. from an accelerator.
     58   // NOTE: Toggling is asynchronous and subsequent calls to query the current
     59   // state may return the old value.
     60   virtual void RequestToggleWifi() = 0;
     61 
     62   // Helper function to get the network type from NetworkState.
     63   static NetworkType GetNetworkTypeForNetworkState(
     64       const chromeos::NetworkState* network);
     65 };
     66 
     67 }  // namespace ash
     68 
     69 #endif  // ASH_SYSTEM_CHROMEOS_NETWORK_NETWORK_OBSERVER_H
     70