o
    Pj\(                     @   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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rxd dl-m.Z. G dd deZ/dS )    )Path)SimpleNamespace)	TYPE_CHECKINGDictListOptionalPatternSequenceSetUnioncast)BrowserBindResult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       s  e Zd ZedddZdddededed	d
f
 fddZd	efddZ	
d^d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d_ddZed	ee fddZed`ddZd	efddZ	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
dad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'	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
dad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)d^dGed	d
fdHdIZ*ed	efdJdKZ+d	e,fdLdMZ-	
	
	
dbdNedOedPedQe.d	e/f
dRdSZ0d_dTdUZ1	
	
	
	
dcdVe(dWeee f dXedYee d	d
f
dZd[Z2d	e3fd\d]Z4  Z5S )dBrowsercontextdisconnected)Context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 )NTFr&   c                    s     ttt| d S )Nr&   )_did_create_contextr   r   r   )paramsself N/home/thesage/.local/lib/python3.10/site-packages/playwright/_impl/_browser.py<lambda>O   s    z"Browser.__init__.<locals>.<lambda>closec                    s      S N)	_on_close)_r1   r3   r4   r5   S   s    )super__init___browser_type_is_connected!_should_close_connection_on_close_cr_tracing_pathset	_contexts_traces_dir_channelon_close_reason)r2   r*   r+   r,   r-   	__class__r1   r4   r;   B   s   

zBrowser.__init__c                 C   s   d| j  d| j dS )Nz<Browser type=z	 version=>)r<   versionr1   r3   r3   r4   __repr__V   s   zBrowser.__repr__browser_type
traces_dirc                 C   s&   || _ || _| jD ]}| | q	d S r7   )r<   rB   rA   _setup_browser_context)r2   rK   rL   r&   r3   r3   r4   _connect_to_browser_typeY   s
   
z Browser._connect_to_browser_typec                 C   s6   | |_ | j| | jr| | | tjj| d S r7   )	_browserrA   addr<   rM   emitr%   Eventsr(   r2   r&   r3   r3   r4   r/   e   s
   
zBrowser._did_create_contextc                 C   s.   | j |j_ | jd usJ | jjjj| d S r7   )rB   _tracingr<   _playwright	selectors_contexts_for_selectorsrP   rS   r3   r3   r4   rM   n   s   
zBrowser._setup_browser_contextc                 C   s   d| _ | tjj|  d S )NF)r=   rQ   r%   rR   r)   r1   r3   r3   r4   r8   s   s   zBrowser._on_closec                 C   s
   t | jS r7   )listrA   r1   r3   r3   r4   contextsw      
zBrowser.contextsc                 C   s   | j d usJ | j S r7   )r<   r1   r3   r3   r4   rK   {   s   zBrowser.browser_typec                 C   s   | j S r7   )r=   r1   r3   r3   r4   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_paramsrC   sendr   r   r   _initialize_har_from_options)(r2   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~   r   r0   channelr&   r3   r3   r4   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 )Nr3   )r   new_page_owned_context_owner_page)r&   pager0   r2   r3   r4   inner   s   zBrowser.new_page.<locals>.innerzCreate page)title)r!   r   r#   _connectionwrap_api_call)&r2   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   ro   rp   rn   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r3   r   r4   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 )Nr6   r   )rE   r>   r   
stop_asyncrC   r   	Exceptionr   )r2   r   er3   r3   r4   r6      s    zBrowser.closec                 C   s
   | j d S )NrI   )_initializerr1   r3   r3   r4   rI      rZ   zBrowser.versionc                    s   t | jdd I d H S )NnewBrowserCDPSession)r   rC   r   r1   r3   r3   r4   new_browser_cdp_session      zBrowser.new_browser_cdp_sessionr   workspaceDirhostportc                    s   | j dd tt I d H S )NstartServer)rC   send_return_as_dictr!   r   )r2   r   r   r   r   r3   r3   r4   bind   s   
zBrowser.bindc                    s   | j dd I d H  d S )N
stopServer)rC   r   r1   r3   r3   r4   unbind  r   zBrowser.unbindr   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   rC   strr?   r   )r2   r   r   r   r   r0   r3   r3   r4   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   rC   r   read_info_bufferdeleter?   r"   openwrite)r2   artifactbufferfr3   r3   r4   stop_tracing  s   
zBrowser.stop_tracingr7   )r.   N)r.   r$   )$NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN)NNN)NNNN)6__name__
__module____qualname__r   rR   r   r   r;   rJ   r   rN   r   r/   rM   r8   propertyr   rY   rK   boolr[   r   r   r	   r   floatr   r   r   r   r   r   r   r   r    r   r   r   r   r   r#   r   r6   rI   r   r   intr   r   r   r   bytesr   __classcell__r3   r3   rF   r4   r%   <   sD   
	
	



 !"#$%&
8	



 !"#$%&
2



r%   N)0pathlibr   typesr   typingr   r   r   r   r   r	   r
   r   r    playwright._impl._api_structuresr   r   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%   r3   r3   r3   r4   <module>   s   ,$	,