o
    ҷh                     @  s   d dl mZ ddlmZmZ d dlmZ d dlZd dlZeG dd dZ		ddddZ
d ddZd!ddZd!ddZd!ddZedeG dd dZedeG dd dZdS )"    )annotations   )event_classT_JSON_DICT)	dataclassNc                   @  s>   e Zd ZU ded< ded< dZded< dd Zed	d
 ZdS )Sinkstrnameid_Ntyping.Optional[str]sessionc                 C  s2   t  }| j|d< | j|d< | jd ur| j|d< |S )Nr	   idr   )dictr	   r
   r   )selfjson r   ^/var/www/html/venv/lib/python3.10/site-packages/selenium/webdriver/common/devtools/v85/cast.pyto_json   s   



zSink.to_jsonc                 C  s6   | t |d t |d d|v rt |d dS d dS )Nr	   r   r   )r	   r
   r   r   clsr   r   r   r   	from_json   s   

zSink.from_json)__name__
__module____qualname____annotations__r   r   classmethodr   r   r   r   r   r      s   
 r   presentation_urlr   return0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]c                 c  s,    t  }| dur| |d< d|d}|V }dS )al  
    Starts observing for sinks that can be used for tab mirroring, and if set,
    sinks compatible with ``presentationUrl`` as well. When sinks are found, a
    ``sinksUpdated`` event is fired.
    Also starts observing for issue messages. When an issue is added or removed,
    an ``issueUpdated`` event is fired.

    :param presentation_url: *(Optional)*
    NpresentationUrlzCast.enablemethodparamsr   )r   r#   cmd_dictr   r   r   r   enable(   s   
r&   c                  c  s    ddi} | V }dS )z/
    Stops observing for sinks and issues.
    r"   zCast.disableNr   )r%   r   r   r   r   disable>   s   
r'   	sink_namer   c                 c  $    t  }| |d< d|d}|V }dS )z
    Sets a sink to be used when the web page requests the browser to choose a
    sink via Presentation API, Remote Playback API, or Cast SDK.

    :param sink_name:
    sinkNamezCast.setSinkToUser!   Nr$   r(   r#   r%   r   r   r   r   set_sink_to_useH   s   	
r,   c                 c  r)   )zF
    Starts mirroring the tab to the sink.

    :param sink_name:
    r*   zCast.startTabMirroringr!   Nr$   r+   r   r   r   start_tab_mirroringZ      
r-   c                 c  r)   )zK
    Stops the active Cast session on the sink.

    :param sink_name:
    r*   zCast.stopCastingr!   Nr$   r+   r   r   r   stop_castingk   r.   r/   zCast.sinksUpdatedc                   @  (   e Zd ZU dZded< ed
ddZd	S )SinksUpdatedz
    This is fired whenever the list of available sinks changes. A sink is a
    device or a software surface that you can cast to.
    ztyping.List[Sink]sinksr   r   r   c                 C  s   | dd |d D dS )Nc                 S  s   g | ]}t |qS r   )r   r   ).0ir   r   r   
<listcomp>   s    z*SinksUpdated.from_json.<locals>.<listcomp>r2   )r2   r   r   r   r   r   r      s   zSinksUpdated.from_jsonN)r   r   r   r1   r   r   r   __doc__r   r   r   r   r   r   r   r1   |   
   
 r1   zCast.issueUpdatedc                   @  r0   )IssueUpdatedz
    This is fired whenever the outstanding issue/error message changes.
    ``issueMessage`` is empty if there is no issue.
    r   issue_messager   r   r   c                 C  s   | t |d dS )NissueMessage)r:   r   r   r   r   r   r      s   
zIssueUpdated.from_jsonN)r   r   r   r9   r6   r   r   r   r   r9      r8   r9   )N)r   r   r   r   )r   r   )r(   r   r   r   )
__future__r   utilr   r   dataclassesr   enumtypingr   r&   r'   r,   r-   r/   r1   r9   r   r   r   r   <module>   s&   




