U
    g                     @  sT  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dZd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                      sB   e Zd ZdZddddZedd dddZ fd	d
Z  ZS )PlayerIdzI
    Players will get an ID that is unique within the agent context.
    strreturnc                 C  s   | S N selfr   r   Q/tmp/pip-unpacked-wheel-3ysq0mf8/selenium/webdriver/common/devtools/v129/media.pyto_json   s    zPlayerId.to_jsonjsonr
   c                 C  s   | |S r   r   clsr   r   r   r   	from_json   s    zPlayerId.from_jsonc                   s   d t  S )NzPlayerId({})formatsuper__repr__r   	__class__r   r   r      s    zPlayerId.__repr__)	__name__
__module____qualname____doc__r   classmethodr   r   __classcell__r   r   r   r   r      s
   r   c                      s>   e Zd ZddddZedd dddZ fdd	Z  ZS )
	Timestampfloatr	   c                 C  s   | S r   r   r   r   r   r   r      s    zTimestamp.to_jsonr   c                 C  s   | |S r   r   r   r   r   r   r       s    zTimestamp.from_jsonc                   s   d t  S )NzTimestamp({})r   r   r   r   r   r   $   s    zTimestamp.__repr__)r   r   r   r   r    r   r   r!   r   r   r   r   r"      s   r"   c                   @  s6   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  s   t  }| j|d< | j|d< |S )Nr%   r&   )dictr%   r&   r   r   r   r   r   r   ;   s    

zPlayerMessage.to_jsonc                 C  s   | t |d t |d dS )Nr%   r&   )r%   r&   r   r   r   r   r   r   A   s    

zPlayerMessage.from_jsonNr   r   r   r   __annotations__r   r    r   r   r   r   r   r$   (   s   
r$   c                   @  s6   e Zd ZU dZded< ded< dd Zedd Zd	S )
PlayerPropertyz-
    Corresponds to kMediaPropertyChange
    r   namevaluec                 C  s   t  }| j|d< | j|d< |S )Nr-   r.   )r'   r-   r.   r(   r   r   r   r   R   s    

zPlayerProperty.to_jsonc                 C  s   | t |d t |d dS )Nr-   r.   )r-   r.   r)   r   r   r   r   r   X   s    

zPlayerProperty.from_jsonNr*   r   r   r   r   r,   I   s   
r,   c                   @  s6   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   r.   c                 C  s"   t  }| j |d< | j|d< |S )Nr0   r.   )r'   r0   r   r.   r(   r   r   r   r   i   s    
zPlayerEvent.to_jsonc                 C  s   | t |d t|d dS )Nr0   r.   )r0   r.   )r"   r   r   r   r   r   r   r   o   s    
zPlayerEvent.from_jsonNr*   r   r   r   r   r/   `   s   
r/   c                   @  s6   e Zd ZU dZded< ded< dd Zedd	 Zd
S )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  s   t  }| j|d< | j|d< |S )Nr2   r4   )r'   r2   r4   r(   r   r   r   r      s    

z!PlayerErrorSourceLocation.to_jsonc                 C  s   | t |d t|d dS )Nr2   r4   )r2   r4   )r   r3   r   r   r   r   r      s    

z#PlayerErrorSourceLocation.from_jsonNr*   r   r   r   r   r1   w   s   
r1   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_typer3   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	errorTyper7   c                 S  s   g | ]}|  qS r   r   .0ir   r   r   
<listcomp>   s     z'PlayerError.to_json.<locals>.<listcomp>r8   c                 S  s   g | ]}|  qS r   r=   r>   r   r   r   rA      s     r:   r;   )r'   r6   r7   r8   r:   r;   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 )
Nr<   r7   c                 S  s   g | ]}t |qS r   )r1   r   r>   r   r   r   rA      s     z)PlayerError.from_json.<locals>.<listcomp>r8   c                 S  s   g | ]}t |qS r   r5   r   r>   r   r   r   rA      s     r:   r;   )r6   r7   r8   r:   r;   )r   r3   r'   r   r   r   r   r      s    


zPlayerError.from_jsonNr*   r   r   r   r   r5      s   
	r5   z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]r	   c                  c  s   ddi} | V }dS )z"
    Enables the Media domain
    methodzMedia.enableNr   Zcmd_dictr   r   r   r   enable   s     rE   c                  c  s   ddi} | V }dS )z$
    Disables the Media domain.
    rC   zMedia.disableNr   rD   r   r   r   disable   s     rF   zMedia.playerPropertiesChangedc                   @  s6   e Zd ZU dZded< ded< edd 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   c                 C  s$   | t |d dd |d D dS )NplayerIdc                 S  s   g | ]}t |qS r   )r,   r   r>   r   r   r   rA      s     z5PlayerPropertiesChanged.from_json.<locals>.<listcomp>rI   )rH   rI   r   r   r   r   r   r   r      s    z!PlayerPropertiesChanged.from_jsonNr   r   r   r   r+   r    r   r   r   r   r   rG      s
   
rG   zMedia.playerEventsAddedc                   @  s6   e Zd ZU dZded< ded< edd ddd	Zd
S )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   rH   ztyping.List[PlayerEvent]eventsr   r   c                 C  s$   | t |d dd |d D dS )NrJ   c                 S  s   g | ]}t |qS r   )r/   r   r>   r   r   r   rA      s     z/PlayerEventsAdded.from_json.<locals>.<listcomp>rN   )rH   rN   rK   r   r   r   r   r      s    zPlayerEventsAdded.from_jsonNrL   r   r   r   r   rM      s
   
rM   zMedia.playerMessagesLoggedc                   @  s6   e Zd ZU dZded< ded< edd ddd	Zd
S )PlayerMessagesLoggedz@
    Send a list of any messages that need to be delivered.
    r   rH   ztyping.List[PlayerMessage]messagesr   r   c                 C  s$   | t |d dd |d D dS )NrJ   c                 S  s   g | ]}t |qS r   )r$   r   r>   r   r   r   rA      s     z2PlayerMessagesLogged.from_json.<locals>.<listcomp>rP   )rH   rP   rK   r   r   r   r   r      s    zPlayerMessagesLogged.from_jsonNrL   r   r   r   r   rO      s
   
rO   zMedia.playerErrorsRaisedc                   @  s6   e Zd ZU dZded< ded< edd ddd	Zd
S )PlayerErrorsRaisedz>
    Send a list of any errors that need to be delivered.
    r   rH   r9   errorsr   r   c                 C  s$   | t |d dd |d D dS )NrJ   c                 S  s   g | ]}t |qS r   rB   r>   r   r   r   rA     s     z0PlayerErrorsRaised.from_json.<locals>.<listcomp>rR   )rH   rR   rK   r   r   r   r   r   
  s    zPlayerErrorsRaised.from_jsonNrL   r   r   r   r   rQ     s
   
rQ   zMedia.playersCreatedc                   @  s.   e Zd ZU dZded< edd 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   c                 C  s   | dd |d D dS )Nc                 S  s   g | ]}t |qS r   rK   r>   r   r   r   rA     s     z,PlayersCreated.from_json.<locals>.<listcomp>rT   )rT   r   r   r   r   r   r     s    zPlayersCreated.from_jsonNrL   r   r   r   r   rS     s   
rS   )
__future__r   utilr   r   Zdataclassesr   enumtypingr   r   r#   r"   r$   r,   r/   r1   r5   rE   rF   rG   rM   rO   rQ   rS   r   r   r   r   <module>   sB    (

