| /* Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
 |  * Use of this source code is governed by a BSD-style license that can be | 
 |  * found in the LICENSE file. | 
 |  */ | 
 |  | 
 | /** | 
 |  * This file defines the <code>PPB_NetworkList</code> interface. | 
 |  */ | 
 |  | 
 | [generate_thunk] | 
 |  | 
 | label Chrome { | 
 |   M31 = 1.0 | 
 | }; | 
 |  | 
 | /** | 
 |  * Type of a network interface. | 
 |  */ | 
 | [assert_size(4)] | 
 | enum PP_NetworkList_Type { | 
 |   /** | 
 |    * Type of the network interface is not known. | 
 |    */ | 
 |   PP_NETWORKLIST_TYPE_UNKNOWN = 0, | 
 |  | 
 |   /** | 
 |    * Wired Ethernet network. | 
 |    */ | 
 |   PP_NETWORKLIST_TYPE_ETHERNET = 1, | 
 |  | 
 |   /** | 
 |    * Wireless Wi-Fi network. | 
 |    */ | 
 |   PP_NETWORKLIST_TYPE_WIFI = 2, | 
 |  | 
 |   /** | 
 |    * Cellular network (e.g. LTE). | 
 |    */ | 
 |   PP_NETWORKLIST_TYPE_CELLULAR = 3 | 
 | }; | 
 |  | 
 | /** | 
 |  * State of a network interface. | 
 |  */ | 
 | [assert_size(4)] | 
 | enum PP_NetworkList_State  { | 
 |   /** | 
 |    * Network interface is down. | 
 |    */ | 
 |   PP_NETWORKLIST_STATE_DOWN = 0, | 
 |  | 
 |   /** | 
 |    * Network interface is up. | 
 |    */ | 
 |   PP_NETWORKLIST_STATE_UP = 1 | 
 | }; | 
 |  | 
 | /** | 
 |  * The <code>PPB_NetworkList</code> is used to represent a list of | 
 |  * network interfaces and their configuration. The content of the list | 
 |  * is immutable.  The current networks configuration can be received | 
 |  * using the <code>PPB_NetworkMonitor</code> interface. | 
 |  */ | 
 | interface PPB_NetworkList { | 
 |   /** | 
 |    * Determines if the specified <code>resource</code> is a | 
 |    * <code>NetworkList</code> object. | 
 |    * | 
 |    * @param[in] resource A <code>PP_Resource</code> resource. | 
 |    * | 
 |    * @return Returns <code>PP_TRUE</code> if <code>resource</code> is | 
 |    * a <code>PPB_NetworkList</code>, <code>PP_FALSE</code> | 
 |    * otherwise. | 
 |    */ | 
 |   PP_Bool IsNetworkList([in] PP_Resource resource); | 
 |  | 
 |   /** | 
 |    * Gets number of interfaces in the list. | 
 |    * | 
 |    * @param[in] resource A <code>PP_Resource</code> corresponding to a | 
 |    * network list. | 
 |    * | 
 |    * @return Returns number of available network interfaces or 0 if | 
 |    * the list has never been updated. | 
 |    */ | 
 |   uint32_t GetCount([in] PP_Resource resource); | 
 |  | 
 |   /** | 
 |    * Gets name of a network interface. | 
 |    * | 
 |    * @param[in] resource A <code>PP_Resource</code> corresponding to a | 
 |    * network list. | 
 |    * @param[in] index Index of the network interface. | 
 |    * | 
 |    * @return Returns name for the network interface with the specified | 
 |    * <code>index</code>. | 
 |    */ | 
 |   PP_Var GetName([in] PP_Resource resource, | 
 |                  [in] uint32_t index); | 
 |  | 
 |   /** | 
 |    * Gets type of a network interface. | 
 |    * | 
 |    * @param[in] resource A <code>PP_Resource</code> corresponding to a | 
 |    * network list. | 
 |    * @param[in] index Index of the network interface. | 
 |    * | 
 |    * @return Returns type of the network interface with the specified | 
 |    * <code>index</code>. | 
 |    */ | 
 |   [on_failure=PP_NETWORKLIST_TYPE_UNKNOWN] | 
 |   PP_NetworkList_Type GetType([in] PP_Resource resource, | 
 |                               [in] uint32_t index); | 
 |  | 
 |   /** | 
 |    * Gets state of a network interface. | 
 |    * | 
 |    * @param[in] resource A <code>PP_Resource</code> corresponding to a | 
 |    * network list. | 
 |    * @param[in] index Index of the network interface. | 
 |    * | 
 |    * @return Returns current state of the network interface with the | 
 |    * specified <code>index</code>. | 
 |    */ | 
 |   [on_failure=PP_NETWORKLIST_STATE_DOWN] | 
 |   PP_NetworkList_State GetState([in] PP_Resource resource, | 
 |                                 [in] uint32_t index); | 
 |  | 
 |   /** | 
 |    * Gets list of IP addresses for a network interface. | 
 |    * | 
 |    * @param[in] resource A <code>PP_Resource</code> corresponding to a | 
 |    * network list. | 
 |    * @param[in] index Index of the network interface. | 
 |    * @param[in] output An output array which will receive | 
 |    * <code>PPB_NetAddress</code> resources on success. Please note that the | 
 |    * ref count of those resources has already been increased by 1 for the | 
 |    * caller. | 
 |    * | 
 |    * @return An error code from <code>pp_errors.h</code>. | 
 |    */ | 
 |   int32_t GetIpAddresses([in] PP_Resource resource, | 
 |                          [in] uint32_t index, | 
 |                          [in] PP_ArrayOutput output); | 
 |  | 
 |   /** | 
 |    * Gets display name of a network interface. | 
 |    * | 
 |    * @param[in] resource A <code>PP_Resource</code> corresponding to a | 
 |    * network list. | 
 |    * @param[in] index Index of the network interface. | 
 |    * | 
 |    * @return Returns display name for the network interface with the | 
 |    * specified <code>index</code>. | 
 |    */ | 
 |   PP_Var GetDisplayName([in] PP_Resource resource, | 
 |                         [in] uint32_t index); | 
 |  | 
 |   /** | 
 |    * Gets MTU (Maximum Transmission Unit) of a network interface. | 
 |    * | 
 |    * @param[in] resource A <code>PP_Resource</code> corresponding to a | 
 |    * network list. | 
 |    * @param[in] index Index of the network interface. | 
 |    * | 
 |    * @return Returns MTU for the network interface with the specified | 
 |    * <code>index</code> or 0 if MTU is unknown. | 
 |    */ | 
 |   uint32_t GetMTU([in] PP_Resource resource, | 
 |                   [in] uint32_t index); | 
 |  | 
 | }; |