
    ^jA                         d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ  G d	 d
      Z G d d      Z G d de	ee      Zy)    )UnknownMethodException)Self)extract_const_attributes)logger)CanExecuteCommands)CanExecuteScripts)CanRememberExtensionPresence)MobileCommandc                   0    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zy
)NetSpeedgsmscsdgprsedgeumtshsdpalteevdofullN)__name__
__module____qualname__GSMSCSDGPRSEDGEUMTSHSDPALTEEVDOFULL     _/home/ubuntu/.local/lib/python3.12/site-packages/appium/webdriver/extensions/android/network.pyr   r      s/    
CDDDDE
CDDr#   r   c                       e Zd ZdZdZdZy)NetworkMask         N)r   r   r   WIFIDATAAIRPLANE_MODEr"   r#   r$   r&   r&   &   s    DDMr#   r&   c                   V    e Zd Zedefd       ZdedefdZdefdZde	defdZ
d
d	Zy)Networkreturnc                 \   d}	 | j                  |      j                  |      }|d   rt        j                  nd|d   rt        j                  ndz  |d   rt        j
                  z  S dz  S # t        $ r5 | j                  |      j                  t        j                  i       d   cY S w xY w)a0  Returns an integer bitmask specifying the network connection type.

        Android only.
        Possible values are available through the enumeration `appium.webdriver.ConnectionType`

        This API only works reliably on emulators (any version) and real devices
        since API level 31.
        zmobile: getConnectivitywifir   dataairplaneModevalue)assert_extension_existsexecute_scriptr&   r*   r+   r,   r   mark_extension_absenceexecuteCommandGET_NETWORK_CONNECTION)selfext_name
result_maps      r$   network_connectionzNetwork.network_connection-   s     -		n55h?NNxXJ%/%7!!Q'1&'9;##qB0:>0J;,,S QRS
 & 	n..x8@@A_A_acdelmm	ns   A$A- )A- -;B+*B+connection_typec           	      x   d}	 | j                  |      j                  |t        |t        j                  z        t        |t        j
                  z        t        |t        j                  z        d      S # t        $ r9 | j                  |      j                  t        j                  dd|ii      d   cY S w xY w)a  Sets the network connection type. Android only.

        Possible values:

            +--------------------+------+------+---------------+
            | Value (Alias)      | Data | Wifi | Airplane Mode |
            +====================+======+======+===============+
            | 0 (None)           | 0    | 0    | 0             |
            +--------------------+------+------+---------------+
            | 1 (Airplane Mode)  | 0    | 0    | 1             |
            +--------------------+------+------+---------------+
            | 2 (Wifi only)      | 0    | 1    | 0             |
            +--------------------+------+------+---------------+
            | 4 (Data only)      | 1    | 0    | 0             |
            +--------------------+------+------+---------------+
            | 6 (All network on) | 1    | 1    | 0             |
            +--------------------+------+------+---------------+

        These are available through the enumeration `appium.webdriver.ConnectionType`

        This API only works reliably on emulators (any version) and real devices
        since API level 31.

        Args:
            connection_type: a member of the enum `appium.webdriver.ConnectionType`

        Return:
            int: Set network connection type
        mobile: setConnectivity)r1   r2   r3   
parameterstyper4   )r5   r6   boolr&   r*   r+   r,   r   r7   r8   r9   SET_NETWORK_CONNECTION)r;   r?   r<   s      r$   set_network_connectionzNetwork.set_network_connectionC   s    < -	//9HH ;3C3C!CD ;3C3C!CD$(;;T;T)T$U  & 	..x8@@..?X0Y 	s   A2A7 7?B98B9c                    d}	 | j                  |      j                  |d| j                  t        j                  z   i       | S # t
        $ r3 | j                  |      j                  t        j                  i        Y | S w xY w)zToggle the wifi on the device, Android only.
        This API only works reliably on emulators (any version) and real devices
        since API level 31.

        Returns:
            Union['WebDriver', 'Network']: Self instance
        rA   r1   )
r5   r6   r>   r&   r*   r   r7   r8   r9   TOGGLE_WIFI)r;   r<   s     r$   toggle_wifizNetwork.toggle_wifiq   s     -	S((2AA6(?(?+BRBR(R#ST
  & 	S''199':M:MrR	Ss   ?A 8B B
speed_typec                    t        t              }||j                         vrCt        j                  | dt        |j                                dt        j                   d       d}	 | j                  |      j                  |d|i       | S # t        $ r5 | j                  |      j                  t        j                  d|i       Y | S w xY w)aw  Set the network speed emulation.

        Android Emulator only.

        Args:
            speed_type: The network speed type.
                A member of the const appium.webdriver.extensions.android.network.NetSpeed.

        Usage:
            self.driver.set_network_speed(NetSpeed.LTE)

        Returns:
            Union['WebDriver', 'Network']: Self instance
        z# is unknown. Consider using one of z constants. (e.g. z.LTE)zmobile: networkSpeedspeednetspeed)r   r   valuesr   warninglistkeysr   r5   r6   r   r7   r8   r9   SET_NETWORK_SPEED)r;   rJ   	constantsr<   s       r$   set_network_speedzNetwork.set_network_speed   s     -X6	Y--//NN,A$y~~GWBXAY Z!**+52 *	o((2AA(WV`Lab  & 	o''199':S:SV`blUmn	os   (#B :C
CNc                 \   | j                   j                  t        j                  dd       | j                   j                  t        j                  dd       | j                   j                  t        j
                  dd       | j                   j                  t        j                  dd       y )NPOSTz-/session/$sessionId/appium/device/toggle_wifiGETz&/session/$sessionId/network_connectionz//session/$sessionId/appium/device/network_speed)command_executoradd_commandr9   rH   r:   rE   rR   )r;   s    r$   _add_commandszNetwork._add_commands   s    ))'*=*=vGvw))**4	

 	))**4	

 	))%%=	
r#   )r/   N)r   r   r   propertyintr>   rF   r   rI   strrT   rZ   r"   r#   r$   r.   r.   ,   sV    nC n n*,c ,c ,\T "C D :
r#   r.   N)selenium.common.exceptionsr   typing_extensionsr   appium.common.helperr   appium.common.loggerr   /appium.protocols.webdriver.can_execute_commandsr   .appium.protocols.webdriver.can_execute_scriptsr   :appium.protocols.webdriver.can_remember_extension_presencer	   appium.webdriver.mobilecommandr
   r9   r   r&   r.   r"   r#   r$   <module>rf      sH    > " 9 ' N L c C	 	 C
 "35Q C
r#   