U
    g                     @  sB  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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   P/tmp/pip-unpacked-wheel-3ysq0mf8/selenium/webdriver/common/devtools/v85/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 )
PlayerErrorz$
    Corresponds to kMediaError
    r   type_
error_codec                 C  s   t  }| j|d< | j|d< |S )Ntype	errorCode)r'   r2   r3   r(   r   r   r   r      s    

zPlayerError.to_jsonc                 C  s   | t |d t |d dS )Nr4   r5   )r2   r3   r)   r   r   r   r   r      s    

zPlayerError.from_jsonNr*   r   r   r   r   r1   w   s   
r1   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     r8   c                  c  s   ddi} | V }dS )z$
    Disables the Media domain.
    r6   zMedia.disableNr   r7   r   r   r   disable   s     r9   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   .0ir   r   r   
<listcomp>   s     z5PlayerPropertiesChanged.from_json.<locals>.<listcomp>r<   )r;   r<   r   r   r   r   r   r   r      s    z!PlayerPropertiesChanged.from_jsonNr   r   r   r   r+   r    r   r   r   r   r   r:      s
   
r:   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   r;   ztyping.List[PlayerEvent]eventsr   r   c                 C  s$   | t |d dd |d D dS )Nr=   c                 S  s   g | ]}t |qS r   )r/   r   r>   r   r   r   rA      s     z/PlayerEventsAdded.from_json.<locals>.<listcomp>rE   )r;   rE   rB   r   r   r   r   r      s    zPlayerEventsAdded.from_jsonNrC   r   r   r   r   rD      s
   
rD   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   r;   ztyping.List[PlayerMessage]messagesr   r   c                 C  s$   | t |d dd |d D dS )Nr=   c                 S  s   g | ]}t |qS r   )r$   r   r>   r   r   r   rA      s     z2PlayerMessagesLogged.from_json.<locals>.<listcomp>rG   )r;   rG   rB   r   r   r   r   r      s    zPlayerMessagesLogged.from_jsonNrC   r   r   r   r   rF      s
   
rF   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   r;   ztyping.List[PlayerError]errorsr   r   c                 C  s$   | t |d dd |d D dS )Nr=   c                 S  s   g | ]}t |qS r   )r1   r   r>   r   r   r   rA      s     z0PlayerErrorsRaised.from_json.<locals>.<listcomp>rI   )r;   rI   rB   r   r   r   r   r      s    zPlayerErrorsRaised.from_jsonNrC   r   r   r   r   rH      s
   
rH   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 recieves
    a list of active players. If an agent is restored, it will recieve 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   rB   r>   r   r   r   rA      s     z,PlayersCreated.from_json.<locals>.<listcomp>rK   )rK   r   r   r   r   r   r      s    zPlayersCreated.from_jsonNrC   r   r   r   r   rJ      s   
rJ   )
__future__r   utilr   r   Zdataclassesr   enumtypingr   r   r#   r"   r$   r,   r/   r1   r8   r9   r:   rD   rF   rH   rJ   r   r   r   r   <module>   s>    

