o
    ҷh                     @  sL  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G dd de	Z
G dd	 d	eZeG d
d dZeG dd dZeG dd dZeG dd dZeG 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ed eG 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                      s8   e Zd ZdZdddZedddZ fd	d
Z  ZS )PlayerIdzI
    Players will get an ID that is unique within the agent context.
    returnstrc                 C     | S N selfr   r   `/var/www/html/venv/lib/python3.10/site-packages/selenium/webdriver/common/devtools/v117/media.pyto_json      zPlayerId.to_jsonjsonc                 C     | |S r   r   clsr   r   r   r   	from_json      zPlayerId.from_jsonc                      d t  S )NzPlayerId({})formatsuper__repr__r   	__class__r   r   r         zPlayerId.__repr__)r   r	   )r   r	   r   r   )	__name__
__module____qualname____doc__r   classmethodr   r   __classcell__r   r   r   r   r      s    
r   c                      s4   e Zd Zd
ddZedddZ fdd	Z  ZS )	Timestampr   floatc                 C  r
   r   r   r   r   r   r   r      r   zTimestamp.to_jsonr   c                 C  r   r   r   r   r   r   r   r       r   zTimestamp.from_jsonc                   r   )NzTimestamp({})r   r   r   r   r   r   $   r   zTimestamp.__repr__)r   r'   )r   r'   r   r&   )r    r!   r"   r   r$   r   r   r%   r   r   r   r   r&      s
    
r&   c                   @  6   e Zd ZU dZded< ded< dd Zedd Zd	S )
PlayerMessagezU
    Have one type per entry in MediaLogRecord::Type
    Corresponds to kMessage
    r	   levelmessagec                 C     t  }| j|d< | j|d< |S )Nr*   r+   )dictr*   r+   r   r   r   r   r   r   ;      

zPlayerMessage.to_jsonc                 C     | t |d t |d dS )Nr*   r+   )r*   r+   r	   r   r   r   r   r   A      

zPlayerMessage.from_jsonNr    r!   r"   r#   __annotations__r   r$   r   r   r   r   r   r)   (   s   
 r)   c                   @  r(   )
PlayerPropertyz-
    Corresponds to kMediaPropertyChange
    r	   namevaluec                 C  r,   )Nr6   r7   )r-   r6   r7   r.   r   r   r   r   R   r/   zPlayerProperty.to_jsonc                 C  r0   )Nr6   r7   )r6   r7   r1   r   r   r   r   r   X   r2   zPlayerProperty.from_jsonNr3   r   r   r   r   r5   I      
 r5   c                   @  6   e Zd ZU dZded< ded< dd Zedd	 Zd
S )PlayerEventz-
    Corresponds to kMediaEventTriggered
    r&   	timestampr	   r7   c                 C  s"   t  }| j |d< | j|d< |S )Nr;   r7   )r-   r;   r   r7   r.   r   r   r   r   i   s   
zPlayerEvent.to_jsonc                 C  s   | t |d t|d dS )Nr;   r7   )r;   r7   )r&   r   r	   r   r   r   r   r   o   s   
zPlayerEvent.from_jsonNr3   r   r   r   r   r:   `   r8   r:   c                   @  r9   )PlayerErrorSourceLocationz
    Represents logged source line numbers reported in an error.
    NOTE: file and line are from chromium c++ implementation code, not js.
    r	   fileintlinec                 C  r,   )Nr=   r?   )r-   r=   r?   r.   r   r   r   r      r/   z!PlayerErrorSourceLocation.to_jsonc                 C  s   | t |d t|d dS )Nr=   r?   )r=   r?   )r	   r>   r   r   r   r   r      r2   z#PlayerErrorSourceLocation.from_jsonNr3   r   r   r   r   r<   w   s   
 r<   c                   @  sN   e Zd ZU dZded< ded< ded< ded	< d
ed< dd Zedd ZdS )PlayerErrorz$
    Corresponds to kMediaError
    r	   
error_typer>   codez&typing.List[PlayerErrorSourceLocation]stacktyping.List[PlayerError]causer-   datac                 C  sP   t  }| j|d< | j|d< dd | jD |d< dd | jD |d< | j|d< |S )	N	errorTyperB   c                 S     g | ]}|  qS r   r   .0ir   r   r   
<listcomp>       z'PlayerError.to_json.<locals>.<listcomp>rC   c                 S  rH   r   rI   rJ   r   r   r   rM      rN   rE   rF   )r-   rA   rB   rC   rE   rF   r.   r   r   r   r      s   


zPlayerError.to_jsonc                 C  sF   | t |d t|d dd |d D dd |d D t|d d	S )
NrG   rB   c                 S     g | ]}t |qS r   )r<   r   rJ   r   r   r   rM          z)PlayerError.from_json.<locals>.<listcomp>rC   c                 S  rO   r   r@   r   rJ   r   r   r   rM      rP   rE   rF   )rA   rB   rC   rE   rF   )r	   r>   r-   r   r   r   r   r      s   


zPlayerError.from_jsonNr3   r   r   r   r   r@      s   
 	r@   r   0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]c                  c      ddi} | V }dS )z"
    Enables the Media domain
    methodzMedia.enableNr   cmd_dictr   r   r   r   enable      
rW   c                  c  rS   )z$
    Disables the Media domain.
    rT   zMedia.disableNr   rU   r   r   r   disable   rX   rY   zMedia.playerPropertiesChangedc                   @  0   e Zd ZU dZded< ded< edd	d
ZdS )PlayerPropertiesChangedz
    This can be called multiple times, and can be used to set / override /
    remove player properties. A null propValue indicates removal.
    r   	player_idztyping.List[PlayerProperty]
propertiesr   r   r   c                 C  $   | t |d dd |d D dS )NplayerIdc                 S  rO   r   )r5   r   rJ   r   r   r   rM      rP   z5PlayerPropertiesChanged.from_json.<locals>.<listcomp>r]   )r\   r]   r   r   r   r   r   r   r         z!PlayerPropertiesChanged.from_jsonN)r   r   r   r[   r    r!   r"   r#   r4   r$   r   r   r   r   r   r[         
 r[   zMedia.playerEventsAddedc                   @  rZ   )PlayerEventsAddedz
    Send events as a list, allowing them to be batched on the browser for less
    congestion. If batched, events must ALWAYS be in chronological order.
    r   r\   ztyping.List[PlayerEvent]eventsr   r   r   c                 C  r^   )Nr_   c                 S  rO   r   )r:   r   rJ   r   r   r   rM      rP   z/PlayerEventsAdded.from_json.<locals>.<listcomp>re   )r\   re   r`   r   r   r   r   r      ra   zPlayerEventsAdded.from_jsonN)r   r   r   rd   rb   r   r   r   r   rd      rc   rd   zMedia.playerMessagesLoggedc                   @  rZ   )PlayerMessagesLoggedz@
    Send a list of any messages that need to be delivered.
    r   r\   ztyping.List[PlayerMessage]messagesr   r   r   c                 C  r^   )Nr_   c                 S  rO   r   )r)   r   rJ   r   r   r   rM      rP   z2PlayerMessagesLogged.from_json.<locals>.<listcomp>rg   )r\   rg   r`   r   r   r   r   r      ra   zPlayerMessagesLogged.from_jsonN)r   r   r   rf   rb   r   r   r   r   rf         
 rf   zMedia.playerErrorsRaisedc                   @  rZ   )PlayerErrorsRaisedz>
    Send a list of any errors that need to be delivered.
    r   r\   rD   errorsr   r   r   c                 C  r^   )Nr_   c                 S  rO   r   rQ   rJ   r   r   r   rM     rP   z0PlayerErrorsRaised.from_json.<locals>.<listcomp>rj   )r\   rj   r`   r   r   r   r   r   
  ra   zPlayerErrorsRaised.from_jsonN)r   r   r   ri   rb   r   r   r   r   ri     rh   ri   zMedia.playersCreatedc                   @  s(   e Zd ZU dZded< ed
ddZd	S )PlayersCreatedz
    Called whenever a player is created, or when a new agent joins and receives
    a list of active players. If an agent is restored, it will receive the full
    list of player ids and all events again.
    ztyping.List[PlayerId]playersr   r   r   c                 C  s   | dd |d D dS )Nc                 S  rO   r   r`   rJ   r   r   r   rM     rP   z,PlayersCreated.from_json.<locals>.<listcomp>rl   )rl   r   r   r   r   r   r     s   zPlayersCreated.from_jsonN)r   r   r   rk   rb   r   r   r   r   rk     s
   
 rk   )r   rR   )
__future__r   utilr   r   dataclassesr   enumtypingr	   r   r'   r&   r)   r5   r:   r<   r@   rW   rY   r[   rd   rf   ri   rk   r   r   r   r   <module>   sD    
(


