
    ]j                        d 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	e G d d	             Z
 G d
 d      Z G d d      Zy)z
WebDriver BiDi permissions module.

Provides control over browser permission grants during automated tests,
as specified by the W3C Permissions specification.

Typical usage::

    driver.permissions.set_permission('geolocation', 'granted', origin)
    )annotations)	dataclass)Any)command_builderc                      e Zd ZdZdZdZdZy)PermissionStateu  
    Permission state constants.

    GRANTED: The permission is granted — the browser will not prompt the user.
    DENIED:  The permission is denied — the browser will block the request.
    PROMPT:  The browser will show a permission prompt (default browser behaviour).
    granteddeniedpromptN)__name__
__module____qualname____doc__GRANTEDDENIEDPROMPT     ^/home/ubuntu/.local/lib/python3.12/site-packages/selenium/webdriver/common/bidi/permissions.pyr   r      s     GFFr   r   c                  X    e Zd ZU dZdZded<   dZded<   dZded<   dZded<   dZ	ded	<   y)
SetPermissionParameterszSetPermissionParameters.Nz
Any | None
descriptorstate
str | Noneoriginembedded_originuser_context)
r   r   r   r   r   __annotations__r   r   r   r   r   r   r   r   r   '   s7    "!J
!E:FJ"&OZ&#L*#r   r   c                       e Zd ZdZddZddZy)PermissionDescriptorzDescriptor identifying a permission by name.

    Args:
        name: The permission name (e.g. 'geolocation', 'microphone', 'camera').
    c                    || _         y Nname)selfr$   s     r   __init__zPermissionDescriptor.__init__9   s	    	r   c                "    d| j                   dS )NzPermissionDescriptor(name=)r#   )r%   s    r   __repr__zPermissionDescriptor.__repr__<   s    +DII=::r   N)r$   strreturnNone)r+   r*   )r   r   r   r   r&   r)   r   r   r   r    r    2   s    ;r   r    c                  B    e Zd ZdZddZ	 	 ddd	 	 	 	 	 	 	 	 	 	 	 ddZy)	Permissionsze
    BiDi interface for controlling browser permissions.

    Access via ``driver.permissions``.
    c                    || _         y r"   )_conn)r%   conns     r   r&   zPermissions.__init__F   s	    
r   N)r   c               J   t        |t              r|j                  n|}h d}||vrt        d|dt	        |             t        |t
              rd|ind|j                  i}||d}	|||	d<   |||	d<   |||	d	<   t        d
|	      }
| j                  j                  |
       y)aA  Set a browser permission.

        Args:
            descriptor: The permission descriptor or permission name as a string.
            state: The desired permission state (granted, denied, or prompt).
            origin: The origin to scope the permission to.
            user_context: Optional user context ID to scope the permission.
            embedded_origin: Keyword-only. Embedded origin for cross-origin
                iframes; scopes the permission to that iframe's origin.

        Raises:
            ValueError: If *state* is not a valid permission state.
        >   r
   r   r	   zInvalid permission state: z. Must be one of r$   )r   r   Nr   embeddedOriginuserContextzpermissions.setPermission)

isinstancer   value
ValueErrorsortedr*   r$   r   r0   execute)r%   r   r   r   r   r   state_valuevalid_statesdescriptor_dictparamscmds              r   set_permissionzPermissions.set_permissionI   s    , &0%GekkU6l*,[O <""("6!79 
 3=Z2M6:.TZ\f\k\kSl * 
 %F8&'6F#$#$0F=!96B

3r   )r+   r,   )NN)r   z'PermissionDescriptor | str'r   z'PermissionState | str'r   r   r   r   r   r   r+   r,   )r   r   r   r   r&   r?   r   r   r   r.   r.   ?   s]     "#',  '+, 0,  ',  	, 
 !,  $,  
, r   r.   N)r   
__future__r   dataclassesr   typingr   %selenium.webdriver.common.bidi.commonr   r   r   r    r.   r   r   r   <module>rD      sO   	 # !  A  $ $ $; ;6  6 r   