a
    >Šxd&  ã                   @   sx   d Z ddlZddlmZmZmZmZmZmZ ddlm	Z	 ddl
mZ ddlmZ e	rdddlmZmZ G dd	„ d	eƒZdS )
zTarget module.é    N)ÚAnyÚCallableÚ	CoroutineÚDictÚListÚOptional)ÚTYPE_CHECKING)Ú
CDPSession)ÚPage)ÚBrowserÚBrowserContextc                	   @   sì   e Zd ZdZedeg eeeef f e	e	e
ejddœdd„Ze	ddœdd	„Zdd
œdd„Zed
œdd„Zee d
œdd„Zeed
œdd„ƒZeed
œdd„ƒZedd
œdd„ƒZedd
œdd„ƒZeed  d
œdd„ƒZeddœdd„ZdS )ÚTargetzBrowser's target class.r   N)Ú
targetInfoÚbrowserContextÚsessionFactoryÚignoreHTTPSErrorsÚsetDefaultViewportÚscreenshotTaskQueueÚloopÚreturnc                 C   sˆ   || _ || _| dd¡| _|| _|| _|| _|| _|| _d | _	| j 
¡ | _| j 
¡ | _| j d dkpp| j d dk| _| jr„|  d¡ d S )NZtargetIdÚ ÚtypeÚpageÚurlT)Ú_targetInfoÚ_browserContextÚgetZ	_targetIdÚ_sessionFactoryÚ_ignoreHTTPSErrorsÚ_setDefaultViewportÚ_screenshotTaskQueueÚ_loopÚ_pageÚcreate_futureÚ_initializedPromiseÚ_isClosedPromiseÚ_isInitializedÚ_initializedCallback)Úselfr   r   r   r   r   r   r   © r)   úH/var/www/html/Ranjet/env/lib/python3.9/site-packages/pyppeteer/target.pyÚ__init__   s     ÿzTarget.__init__)Úblr   c                 C   s&   | j  ¡ r| j ¡ | _ | j  |¡ d S ©N)r$   Údoner!   r#   Ú
set_result)r(   r,   r)   r)   r*   r'   *   s    
zTarget._initializedCallback)r   c                 C   s   | j  d ¡ d S r-   )r%   r/   ©r(   r)   r)   r*   Ú_closedCallback0   s    zTarget._closedCallbackc                 Ã   s   |   ¡ I dH S )zACreate a Chrome Devtools Protocol session attached to the target.N)r   r0   r)   r)   r*   ÚcreateCDPSession3   s    zTarget.createCDPSessionc                 Ã   sT   | j d dv rN| jdu rN|  ¡ I dH }t || | j| j| j¡I dH }|| _|S | jS )z}Get page of this target.

        If the target is not of type "page" or "background_page", return
        ``None``.
        r   )r   Úbackground_pageN)r   r"   r   r
   Úcreater   r   r    )r(   ÚclientZnew_pager)   r)   r*   r   7   s    ÿü
zTarget.pagec                 C   s
   | j d S )zGet url of this target.r   ©r   r0   r)   r)   r*   r   J   s    z
Target.urlc                 C   s   | j d }|dv r|S dS )z–Get type of this target.

        Type can be ``'page'``, ``'background_page'``, ``'service_worker'``,
        ``'browser'``, or ``'other'``.
        r   )r   r3   Zservice_workerÚbrowserÚotherr6   )r(   Ú_typer)   r)   r*   r   O   s    
zTarget.typer   c                 C   s   | j jS )z&Get the browser the target belongs to.)r   r7   r0   r)   r)   r*   r7   [   s    zTarget.browserc                 C   s   | j S )z1Return the browser context the target belongs to.)r   r0   r)   r)   r*   r   `   s    zTarget.browserContextc                 C   s&   | j  d¡}|du rdS | jj |¡S )z\Get the target that opened this target.

        Top-level targets return ``None``.
        ÚopenerIdN)r   r   r7   Z_targets)r(   r:   r)   r)   r*   Úopenere   s    zTarget.opener)r   r   c                 C   s@   || _ | js<| j d dks(| j d dkr<d| _|  d¡ d S d S )Nr   r   r   r   T)r   r&   r'   )r(   r   r)   r)   r*   Ú_targetInfoChangedp   s    ÿ
zTarget._targetInfoChanged)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r	   Úboolr   ÚasyncioÚAbstractEventLoopr+   r'   r1   r2   r   r
   r   ÚpropertyÚstrr   r   r7   r   r;   r<   r)   r)   r)   r*   r      s,   ü
r   )r@   rB   Útypingr   r   r   r   r   r   r   Zpyppeteer.connectionr	   Zpyppeteer.pager
   Zpyppeteer.browserr   r   Úobjectr   r)   r)   r)   r*   Ú<module>   s    