o
    %hv&                     @   s   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mZm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 d dl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) d dl*m+Z+ ervd dl,m-Z- G dd deZ.dS )    )Path)SimpleNamespace)	TYPE_CHECKINGDictListOptionalPatternSequenceSetUnioncast)ClientCertificateGeolocationHttpCredentialsProxySettingsStorageStateViewportSize)Artifact)BrowserContext)
CDPSession)ChannelOwnerfrom_channel)is_target_closed_error)	ColorSchemeContrastForcedColorsHarContentPolicyHarModeReducedMotionServiceWorkersPolicylocals_to_paramsmake_dirs_for_file)Page)BrowserTypec                K       sz  e Zd ZeddZdddedededd	f
 fd
dZdefddZ		dVddde	e dd	fddZ
dedd	fddZdedd	fddZdWddZedee fddZedXddZdefddZ																																																																								dYded ed!ed"ed#ed$ed%ed&ed'ed(ed)ee d*eeef d+ed,ed-ed.ed/ed0ed1ed2ed3ed4ed5ed6ed7ee ef d8ed9ee ef d:ed;ee!ee f d<ed=ed>e"d?ee#e ef d@e$dAe%dBee& defJdCdDZ'																																																																								dYded ed!ed"ed#ed$ed%ed&ed'ed(ed)ee d*eeef d+ed,ed-ed.ed/ed0ed2ed3ed1ed4ed5ed6ed7ee ef d8ed9ee ef d:ed;ee!ee f d<ed=ed>e"d?ee#e ef d@e$dAe%dBee& de(fJdEdFZ)dVdGedd	fdHdIZ*edefdJdKZ+de,fdLdMZ-								dZdNe(dOeee f dPedQee dd	f
dRdSZ.de/fdTdUZ0  Z1S )[Browserdisconnected)Disconnectedparentr#   typeguidinitializerreturnNc                    sn   t  |||| d  _d _d _d  _t  _d  _ j	
d fdd  j	
d fdd d  _d S )NTFcontextc                    s     ttt| d S )Nr,   )_did_create_contextr   r   r   )paramsself M/var/www/html/myenv/lib/python3.10/site-packages/playwright/_impl/_browser.py<lambda>M   s    z"Browser.__init__.<locals>.<lambda>closec                    s      S N)	_on_close)_r/   r1   r2   r3   Q   s    )super__init___browser_type_is_connected!_should_close_connection_on_close_cr_tracing_pathset	_contexts_traces_dir_channelon_close_reason)r0   r'   r(   r)   r*   	__class__r/   r2   r9   @   s   

zBrowser.__init__c                 C   s   d| j  d| j dS )Nz<Browser type=z	 version=>)r:   versionr/   r1   r1   r2   __repr__T   s   zBrowser.__repr__browser_type
traces_dirc                 C   s&   || _ || _| jD ]}| | q	d S r5   )r:   r@   r?   _setup_browser_context)r0   rI   rJ   r,   r1   r1   r2   _connect_to_browser_typeW   s
   
z Browser._connect_to_browser_typer,   c                 C   s*   | |_ | j| | jr| | d S d S r5   )_browserr?   addr:   rK   r0   r,   r1   r1   r2   r-   c   s
   zBrowser._did_create_contextc                 C   s.   | j |j_ | jd usJ | jjjj| d S r5   )r@   _tracingr:   _playwright	selectors_contexts_for_selectorsrN   rO   r1   r1   r2   rK   k   s   
zBrowser._setup_browser_contextc                 C   s   d| _ | tjj|  d S )NF)r;   emitr$   Eventsr&   r/   r1   r1   r2   r6   p   s   zBrowser._on_closec                 C   s
   t | jS r5   )listr?   r/   r1   r1   r2   contextst      
zBrowser.contextsc                 C   s   | j d usJ | j S r5   )r:   r/   r1   r1   r2   rI   x   s   zBrowser.browser_typec                 C   s   | j S r5   )r;   r/   r1   r1   r2   is_connected}   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contrastacceptDownloadsdefaultBrowserTypeproxyrecordHarPathrecordHarOmitContentrecordVideoDirrecordVideoSizestorageStatebaseURLstrictSelectorsserviceWorkersrecordHarUrlFilterrecordHarModerecordHarContentclientCertificatesc%           (         sn   t t }%| jd usJ | j|%I d H  | jdd |%I d H }&ttt|&}'|'j	|#|"|||!dI d H  |'S )N
newContext)record_har_contentrecord_har_moderecord_har_omit_contentrecord_har_pathrecord_har_url_filter)
r    localsr:   _prepare_browser_context_paramsrA   sendr   r   r   _initialize_har_from_options)(r0   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r.   channelr,   r1   r1   r2   new_context   s   
'zBrowser.new_contextc%           &         s6   t t  dtf fdd}%jj|%ddI d H S )Nr+   c                     s6   j di  I d H } |  I d H }| |_|| _|S )Nr1   )r   new_page_owned_context_owner_page)r,   pager.   r0   r1   r2   inner   s   zBrowser.new_page.<locals>.innerzCreate page)title)r    r   r"   _connectionwrap_api_call)&r0   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rm   rn   rl   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r   r1   r   r2   r      s   
'zBrowser.new_pagereasonc              
      sx   || _ z| jr| j I d H  W d S | jdd d|iI d H  W d S  ty; } zt|s0|W Y d }~d S d }~ww )Nr4   r   )rC   r<   r   
stop_asyncrA   r   	Exceptionr   )r0   r   er1   r1   r2   r4      s    zBrowser.closec                 C   s
   | j d S )NrG   )_initializerr/   r1   r1   r2   rG      rX   zBrowser.versionc                    s   t | jdd I d H S )NnewBrowserCDPSession)r   rA   r   r/   r1   r1   r2   new_browser_cdp_session   s   zBrowser.new_browser_cdp_sessionr   pathscreenshots
categoriesc                    sN   t t }|r|j|d< |rt|| _t||d< | jdd |I d H  d S )Nr   r   startTracing)r    r   rA   strr=   r   )r0   r   r   r   r   r.   r1   r1   r2   start_tracing   s   


zBrowser.start_tracingc                    s   t tt| jdd I d H }| I d H }| I d H  | jrDt| j t	| jd}|
| W d    n1 s<w   Y  d | _|S )NstopTracingwb)r   r   r   rA   r   read_info_bufferdeleter=   r!   openwrite)r0   artifactbufferfr1   r1   r2   stop_tracing	  s   
zBrowser.stop_tracingr5   )r+   N)r+   r#   )$NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN)NNNN)2__name__
__module____qualname__r   rU   r   r   r9   rH   r   rL   r   r-   rK   r6   propertyr   rW   rI   boolrY   r   r   r	   r   floatr   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r   r4   rG   r   r   r   bytesr   __classcell__r1   r1   rD   r2   r$   ;   s$   

	



 !"#$%&
8	



 !"#$%&
2

r$   N)/pathlibr   typesr   typingr   r   r   r   r   r	   r
   r   r    playwright._impl._api_structuresr   r   r   r   r   r   playwright._impl._artifactr   !playwright._impl._browser_contextr   playwright._impl._cdp_sessionr   playwright._impl._connectionr   r   playwright._impl._errorsr   playwright._impl._helperr   r   r   r   r   r   r   r    r!   playwright._impl._pager"   playwright._impl._browser_typer#   r$   r1   r1   r1   r2   <module>   s   , ,