U
    gJ                     @   sp   d dl Z d dlmZ ddlmZ ddlmZ G dd dZG dd	 d	ZeG d
d dZeG dd dZ	dS )    N)	dataclass   )session_subscribe)session_unsubscribec                   @   sH   e Zd Zdd Zdd Zdd Zdd ZeZd	d
 Zdd Z	dd Z
dS )Scriptc                 C   s   || _ d| _d S NF)connlog_entry_subscribed)selfr    r   I/tmp/pip-unpacked-wheel-3ysq0mf8/selenium/webdriver/common/bidi/script.py__init__   s    zScript.__init__c                 C   s   |    | jt| d|S )Nconsole_subscribe_to_log_entriesr   Zadd_callbackLogEntryAdded_handle_log_entryr
   handlerr   r   r   add_console_message_handler   s    z"Script.add_console_message_handlerc                 C   s   |    | jt| d|S )N
javascriptr   r   r   r   r   add_javascript_error_handler"   s    z#Script.add_javascript_error_handlerc                 C   s   | j t| |   d S N)r   Zremove_callbackr   _unsubscribe_from_log_entries)r
   idr   r   r   remove_console_message_handler&   s    z%Script.remove_console_message_handlerc                 C   s"   | j s| jttj d| _ d S )NT)r	   r   executer   r   event_classr
   r   r   r   r   ,   s    z Script._subscribe_to_log_entriesc                 C   s0   | j r,tj| jjkr,| jttj d| _ d S r   )r	   r   r   r   	callbacksr   r   r   r   r   r   r   1   s    z$Script._unsubscribe_from_log_entriesc                    s    fdd}|S )Nc                    s   | j kr |  d S r   )type_)Z	log_entryr   typer   r   r   7   s    
z3Script._handle_log_entry.<locals>._handle_log_entryr   )r
   r"   r   r   r   r!   r   r   6   s    zScript._handle_log_entryN)__name__
__module____qualname__r   r   r   r   Zremove_javascript_error_handlerr   r   r   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZedd ZdS )r   zlog.entryAddedc                 C   s0   |d dkrt |S |d dkr,t|S d S )Nr"   r   r   )ConsoleLogEntry	from_jsonJavaScriptLogEntryclsjsonr   r   r   r'   A   s    
zLogEntryAdded.from_jsonN)r#   r$   r%   r   classmethodr'   r   r   r   r   r   >   s   r   c                   @   sP   e Zd ZU eed< eed< eed< eed< eje ed< eed< edd Z	d	S )
r&   leveltext	timestampmethodargsr    c                 C   s,   | |d |d |d |d |d |d dS )Nr-   r.   r/   r0   r1   r"   )r-   r.   r/   r0   r1   r    r   r)   r   r   r   r'   R   s    zConsoleLogEntry.from_jsonN)
r#   r$   r%   str__annotations__typingListdictr,   r'   r   r   r   r   r&   I   s   
r&   c                   @   sB   e Zd ZU eed< eed< eed< eed< eed< edd ZdS )	r(   r-   r.   r/   
stacktracer    c                 C   s&   | |d |d |d |d |d dS )Nr-   r.   r/   Z
stackTracer"   )r-   r.   r/   r7   r    r   r)   r   r   r   r'   f   s    zJavaScriptLogEntry.from_jsonN)r#   r$   r%   r2   r3   r6   r,   r'   r   r   r   r   r(   ^   s   
r(   )
r4   Zdataclassesr   sessionr   r   r   r   r&   r(   r   r   r   r   <module>   s   %