a
    ҏil$                     @   s   d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	m
Z
mZmZ d dl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 d d	lmZmZmZ d d
lmZ d dlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+ d dl,m-Z- erd dl.m/Z/ G dd deZ0eddddZ1dS )    N)Path)SimpleNamespace)TYPE_CHECKINGDictListOptionalPatternUnioncast)GeolocationHttpCredentialsProxySettingsStorageStateViewportSize)Artifact)BrowserContext)
CDPSession)ChannelOwnerfilter_nonefrom_channel)is_target_closed_error)
ColorSchemeForcedColorsHarContentPolicyHarModeReducedMotionServiceWorkersPolicyasync_readfilelocals_to_paramsmake_dirs_for_fileprepare_record_har_options)serialize_headers)Page)BrowserTypec                %       s  e Zd ZeddZdeeedd fddZedd	d
ZddddZ	e
ee dddZe
ddddZedddZd%eeeeeeeeeeee eeef eeeeeeeeeeeeeef eeeef eeeeef eeeeee ef eeed#ddZ d&eeeeeeeeeeee eeef eeeeeeeeeeeeeef eeeef eeeeef eeeeee ef eee!d#ddZ"d'eddddZ#e
edddZ$e%dddZ&d(e!eeef eee dd d!d"Z'e(dd#d$Z)  Z*S ))BrowserZdisconnected)Disconnectedr#   N)parenttypeguidinitializerreturnc                    sP   t  |||| | _d _d _d  _g  _ jd fdd d  _	d S )NTFclosec                    s      S N)	_on_close)_self I/home/Claro/venv/lib/python3.9/site-packages/playwright/_impl/_browser.py<lambda>B       z"Browser.__init__.<locals>.<lambda>)
super__init___browser_type_is_connected!_should_close_connection_on_close_cr_tracing_path	_contexts_channelon_close_reason)r0   r&   r'   r(   r)   	__class__r/   r2   r6   8   s    zBrowser.__init__r*   c                 C   s   d| j  d| j dS )Nz<Browser type=z	 version=>)r7   versionr/   r1   r1   r2   __repr__E   s    zBrowser.__repr__c                 C   s   d| _ | tjj|  d S )NF)r8   emitr$   Eventsr%   r/   r1   r1   r2   r-   H   s    zBrowser._on_closec                 C   s
   | j  S r,   )r;   copyr/   r1   r1   r2   contextsL   s    zBrowser.contextsc                 C   s   | j S r,   )r7   r/   r1   r1   r2   browser_typeP   s    zBrowser.browser_typec                 C   s   | j S r,   )r8   r/   r1   r1   r2   is_connectedT   s    zBrowser.is_connected)#viewportscreen
noViewportignoreHTTPSErrorsjavaScriptEnabled	bypassCSP	userAgentlocale
timezoneIdgeolocationpermissionsextraHTTPHeadersofflinehttpCredentialsdeviceScaleFactorisMobilehasTouchcolorSchemereducedMotionforcedColorsacceptDownloadsdefaultBrowserTypeproxyrecordHarPathrecordHarOmitContentrecordVideoDirrecordVideoSizestorageStatebaseURLstrictSelectorsserviceWorkersrecordHarUrlFilterrecordHarModerecordHarContentr*   c#           &         sN   t t }#t|#I d H  | jd|#I d H }$ttt|$}%| j	|%|#i  |%S )NZ
newContext)
r   localsprepare_browser_context_paramsr<   sendr
   r   r   r7   Z_did_create_context)&r0   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   paramsZchannelcontextr1   r1   r2   new_contextW   s    %
zBrowser.new_context)#rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r^   r]   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   r*   c#           $         s0   t t  td fdd}#j|#I d H S )NrA   c                     s4   j f i  I d H } |  I d H }| |_|| _|S r,   )rr   new_pageZ_owned_contextZ_owner_page)rq   pagerp   r0   r1   r2   inner   s
    zBrowser.new_page.<locals>.inner)r   rm   r"   _connectionZwrap_api_call)$r0   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r^   r]   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rv   r1   ru   r2   rs      s    %
zBrowser.new_page)reasonr*   c              
      st   || _ z8| jr | j I d H  n| jdtd|iI d H  W n0 tyn } zt|sZ|W Y d }~n
d }~0 0 d S )Nr+   rx   )	r>   r9   rw   Z
stop_asyncr<   ro   r   	Exceptionr   )r0   rx   er1   r1   r2   r+      s     zBrowser.closec                 C   s
   | j d S )NrC   )Z_initializerr/   r1   r1   r2   rC      s    zBrowser.versionc                    s   t | jdI d H S )NZnewBrowserCDPSession)r   r<   ro   r/   r1   r1   r2   new_browser_cdp_session   s    zBrowser.new_browser_cdp_session)rt   pathscreenshots
categoriesr*   c                    sJ   t t }|r|j|d< |r2t|| _t||d< | jd|I d H  d S )Nrt   r|   ZstartTracing)r   rm   r<   strr:   ro   )r0   rt   r|   r}   r~   rp   r1   r1   r2   start_tracing   s    


zBrowser.start_tracingc                    s   t tt| jdI d H }| I d H }| I d H  | jrt| j t	| jd}|
| W d    n1 st0    Y  d | _|S )NZstopTracingwb)r
   r   r   r<   ro   Zread_info_bufferdeleter:   r   openwrite)r0   Zartifactbufferfr1   r1   r2   stop_tracing   s    
(zBrowser.stop_tracing)"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN)"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN)N)NNNN)+__name__
__module____qualname__r   rF   r   r   r6   rD   r-   propertyr   r   rH   rI   boolrJ   r   r   r   floatr   r   r   r   r	   r   r   r   r   r   r   rr   r"   rs   r+   rC   r   r{   r   bytesr   __classcell__r1   r1   r?   r2   r$   3   sV                                    


/                                  


0    
r$   )rp   r*   c                    sB  |  dr| d= d| d< d| v r&| d= d| v r>t| d | d< d| v rXt| | d< | d= d| v rd	t| d  i| d
< d| v r| d | d
 d< | d= | d= d| v r| d }t|tstt	|I d H 
 | d< |  dd dkrd| d< |  dd dkrd| d< |  dd dkrd| d< d| v r>| d r6dnd| d< d S )NrM   TZnoDefaultViewportr`   rV   rb   Z	recordHarrd   dirZrecordVideore   sizerf   r\   nullzno-overrider]   r^   r_   acceptZdeny)getr!   r    r   absolute
isinstancedictjsonloadsr   decode)rp   rf   r1   r1   r2   rn      s<    


rn   )2r   pathlibr   typesr   typingr   r   r   r   r   r	   r
   Z playwright._impl._api_structuresr   r   r   r   r   Zplaywright._impl._artifactr   Z!playwright._impl._browser_contextr   Zplaywright._impl._cdp_sessionr   Zplaywright._impl._connectionr   r   r   Zplaywright._impl._errorsr   Zplaywright._impl._helperr   r   r   r   r   r   r   r   r   r    Zplaywright._impl._networkr!   Zplaywright._impl._pager"   Zplaywright._impl._browser_typer#   r$   rn   r1   r1   r1   r2   <module>   s"   $0 /