o
    LDil                     @   s  d dl Z 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mZmZmZmZmZ d dl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% d dl&m'Z'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? d dl@mAZAmBZBmCZCmDZDmEZEmFZF d dlGmHZHmIZImJZJ d dlKmLZL d dlMmNZN d dlOmPZP d dlQmRZR erd dlSmTZT G dd deZUdS )    N)Path)SimpleNamespace)TYPE_CHECKINGAnyCallableDictListLiteralOptionalPatternSequenceSetUnioncast)CookieGeolocationSetCookieParamStorageState)Artifact)
CDPSession)Clock)ChannelOwnerfrom_channelfrom_nullable_channel)ConsoleMessage)Dialog)ErrorTargetClosedError)EventContextManagerImpl)APIRequestContext)Frame)	HarRouter)HarContentPolicyHarModeHarRecordingMetadataRouteFromHarNotFoundPolicyRouteHandlerRouteHandlerCallbackTimeoutSettingsURLMatchWebSocketRouteHandlerCallbackasync_readfileasync_writefilelocals_to_paramsparse_errorto_impl)RequestResponseRouteWebSocketRouteWebSocketRouteHandlerserialize_headers)BindingCallPageWorker)escape_regex_flags)Tracing)Waiter)WebError)Browserc                       s&  e Zd Zeddddddddd	d
ddZdededededdf
 fddZdefddZ	de
ddfddZdeddfddZdeddfddZdeddfd d!Zd"eddfd#d$Zd"ee ddfd%d&Zd"eddfd'd(Zd"ee ddfd)d*Zedee
 fd+d,Zeded- fd.d/Zd0eeeef  d1ee d2ee d3eee e ef  d4ee! ddfd5d6Z"de
fd7d8Z#dd9eee$e f dee% fd:d;Z&d<e$e' ddfd=d>Z(			dd?eee e f d@eee e f dAeee e f ddfdBdCZ)	ddDe$e dEeddfdFdGZ*ddHdIZ+ddJe,ddfdKdLZ-dMeeef ddfdNdOZ.dPeddfdQdRZ/	ddSedAeeef ddfdTdUZ0	dd?edVe1dWeddfdXdYZ2d?edVe1ddfdZd[Z3	dd\e4d]e5d^e6ddfd_d`Z7	dd\e4d]ee5 ddfdadbZ8	ddcee9 ddee9 dee:df ddfdgdhZ;d\e4d]e<ddfdidjZ=ddkdlZ>	ddee:df ddfdmdnZ?				ddoeeef dee
 d\ee e ef dpedqe!ddfdrdsZ@					ddoeeef d\ee e ef dteAduedve:dw dxe!ddfdydzZBdd{d|ZCdd}d~ZD		ddede1d"edeEfddZFdddZGddeddfddZH	ddAeeef dedeIfddZJdee fddZK	ddede1d"edeLfddZM		dde1eNgef d"edeEeN fddZO		dde1e
gef d"edeEe
 fddZPdeQddfddZRdeSdedee dee
 ddf
ddZTdeSd	eeU dedee
 ddf
ddZVdeddfddZWdeXddfddZYdeZdee
 ddfddZ[deSdee
 ddfddZ\d	eUdee
 ddfddZ]edee
 fddZ^edeeQ fddZ_dee
e`f deafddZbedecfddZdedddZeedeffddZg  ZhS )BrowserContextbackgroundpagecloseconsoledialogpageweberrorserviceworkerrequestresponserequestfailedrequestfinished)BackgroundPageCloseConsoler   r7   r<   ServiceWorkerr0   r1   RequestFailedRequestFinishedparenttypeguidinitializerreturnNc                    sH  t  |||| d  _|jjdkrtd| _g  _g  _g  _i  _	t
d  _d  _|d  _t  _ jd _ jd _ttt|d  _i  _t|d  _t  _ jd fdd	  jd
 fdd	  jd fdd	  jd fdd	  jd fdd	  jd fdd	  jd fdd	  jd fdd	  jd fdd	  jd fdd	  jd fdd	  jd fdd	  jd  fd!d	 t  _  j j! fd"d	 d  _"g  _# $t%j j&dt%j j'dt%j j(dt%j j)dt%j j*d t%j j+di d# _,d S )$Nr=   optionsbaseURLrecordVideotracingrequestContextbindingCallc                         t| d S )Nbinding)_on_bindingr   paramsself m/var/www/www-root/data/www/77.83.87.30/venv/lib/python3.10/site-packages/playwright/_impl/_browser_context.py<lambda>       z)BrowserContext.__init__.<locals>.<lambda>r@   c                          S N)	_on_close)_r`   rb   rc   rd          rC   c                    r[   )NrC   )_on_pager   r^   r`   rb   rc   rd      re   routec                    s    j  t| dS )Nrl   )_loopcreate_task	_on_router   getr^   r`   rb   rc   rd      s
    webSocketRoutec                    s    j  t| d S )Nrq   )rm   rn   _on_web_socket_router   r^   r`   rb   rc   rd      s
    
serviceWorkerc                    r[   )Nworker)_on_service_workerr   r^   r`   rb   rc   rd      re   rA   c                    s
     | S rg   )_on_console_message)eventr`   rb   rc   rd         
 rB   c                    r[   )NrB   )
_on_dialogr   r^   r`   rb   rc   rd      re   	pageErrorc                    s      t| d d t| d S )NerrorrC   )_on_page_errorr.   r   r^   r`   rb   rc   rd      s    
rF   c                         t| d t| dS )NrF   rC   )_on_requestr   r   rp   r^   r`   rb   rc   rd          
rG   c                    r}   )NrG   rC   )_on_responser   r   rp   r^   r`   rb   rc   rd      r   requestFailedc              	      s,     t| d | d | dt| dS )NrF   responseEndTimingfailureTextrC   )_on_request_failedr   rp   r   r^   r`   rb   rc   rd      s    
requestFinishedc              	      s0     t| d t| d| d t| dS )NrF   rG   r   rC   )_on_request_finishedr   r   rp   r^   r`   rb   rc   rd      s    
c                    s    j dS NT)_closed_future
set_result)contextr`   rb   rc   rd      s    F)-super__init___browser	__class____name__r   _pages_routes_web_socket_routes	_bindingsr(   _timeout_settings_owner_page_optionsset_service_workersrp   	_base_url_videos_dirr:   r   _tracing_har_recorders_requestr   _clock_channelonasyncioFuturer   onceEventsrK   _close_reason_har_routers"_set_event_to_subscription_mappingr>   rL   r   r0   r1   rO   rN   _closing_or_closed)ra   rP   rQ   rR   rS   r   r`   rc   r   i   s   





	





	

	

zBrowserContext.__init__c                 C   s   d| j  dS )Nz<BrowserContext browser=>)browserr`   rb   rb   rc   __repr__   s   zBrowserContext.__repr__c                 C   sJ   | j | | tjj| |jr!|j s#|jtjj| d S d S d S rg   )	r   appendemitr>   r   r7   _opener	is_closedPopup)ra   rC   rb   rb   rc   rk      s
   zBrowserContext._on_pagerl   c                    s   |_ |j } j }|D ]`}|r|js jr d S ||jjs%q| jvr+q|j	r4 j
| z||I d H }W t jdkrSt j fddd nt jdkrjt j fddd w w |rp d S qz|dI d H  W d S  ty   Y d S w )Nr   c                      rf   rg   )_update_interception_patternsrb   r`   rb   rc   rd      rj   z*BrowserContext._on_route.<locals>.<lambda>T)_contextrF   
_safe_pager   copy_close_was_calledr   matchesurlwill_expireremovehandlelenr   rn   _connectionwrap_api_call_inner_continue	Exception)ra   rl   rC   route_handlersroute_handlerhandledrb   r`   rc   ro      sJ   


zBrowserContext._on_routeweb_socket_routec                    s@   t  fdd| jD d }|r| I d H  d S    d S )Nc                 3   s     | ]}|  jr|V  qd S rg   )r   r   ).0r   r   rb   rc   	<genexpr>	  s    

z6BrowserContext._on_web_socket_route.<locals>.<genexpr>)nextr   r   connect_to_server)ra   r   r   rb   r   rc   rr     s   
z#BrowserContext._on_web_socket_routebinding_callc                 C   s2   | j |jd }|d u rd S t|| d S )Nname)r   rp   _initializerr   rn   call)ra   r   funcrb   rb   rc   r]     s   zBrowserContext._on_bindingtimeoutc                 C   
   |  |S rg   )$_set_default_navigation_timeout_implra   r   rb   rb   rc   set_default_navigation_timeout     
z-BrowserContext.set_default_navigation_timeoutc                 C      | j | d S rg   )r   r   r   rb   rb   rc   r        z3BrowserContext._set_default_navigation_timeout_implc                 C   r   rg   )_set_default_timeout_implr   rb   rb   rc   set_default_timeout!  r   z"BrowserContext.set_default_timeoutc                 C   r   rg   )r   r   r   rb   rb   rc   r   $  r   z(BrowserContext._set_default_timeout_implc                 C   s
   | j  S rg   )r   r   r`   rb   rb   rc   pages'     
zBrowserContext.pagesr=   c                 C      | j S rg   )r   r`   rb   rb   rc   r   +     zBrowserContext.browserrecord_har_pathrecord_har_contentrecord_har_omit_contentrecord_har_url_filterrecord_har_modec                    sZ   |sd S t |}|drdnd}|p|du rdn|}| j|d |||p%ddI d H  d S )N.zipattachembedTomitfullharrC   r   update_contentupdate_mode)strendswith_record_into_har)ra   r   r   r   r   r   default_policycontent_policyrb   rb   rc   _initialize_har_from_options/  s    z+BrowserContext._initialize_har_from_optionsc                    s(   | j rtdt| jdd I d H S )Nz Please use browser.new_context()newPage)r   r   r   r   sendr`   rb   rb   rc   new_pageH  s   zBrowserContext.new_pageurlsc                    s:   |d u rg }t |tr|g}| jdd t|dI d H S )Ncookies)r   )
isinstancer   r   r   dict)ra   r   rb   rb   rc   r   M  s   
zBrowserContext.cookiesr   c                    "   | j dd t|dI d H  d S )N
addCookies)r   r   r   r   )ra   r   rb   rb   rc   add_cookiesT      zBrowserContext.add_cookiesr   domainpathc                    s   | j dd t|tr|nd t|tr|jnd t|tr t|nd t|tr(|nd t|tr1|jnd t|tr;t|nd t|trC|nd t|trL|jnd t|trVt|nd d	I d H  d S )NclearCookies)	r   nameRegexSourcenameRegexFlagsr   domainRegexSourcedomainRegexFlagsr   pathRegexSourcepathRegexFlags)r   r   r   r   r   patternr9   )ra   r   r   r   rb   rb   rc   clear_cookiesW  s   zBrowserContext.clear_cookiespermissionsoriginc                    "   | j dd tt I d H  d S )NgrantPermissionsr   r   r-   locals)ra   r  r	  rb   rb   rc   grant_permissionsu  s    z BrowserContext.grant_permissionsc                    s   | j dd I d H  d S )NclearPermissions)r   r   r`   rb   rb   rc   clear_permissionsz  s   z BrowserContext.clear_permissionsgeolocationc                    r
  )NsetGeolocationr  )ra   r  rb   rb   rc   set_geolocation}  r   zBrowserContext.set_geolocationheadersc                    s&   | j dd tt|dI d H  d S )NsetExtraHTTPHeaders)r  )r   r   r   r5   )ra   r  rb   rb   rc   set_extra_http_headers  s   z%BrowserContext.set_extra_http_headersofflinec                    r   )N
setOffline)r  r   )ra   r  rb   rb   rc   set_offline  r   zBrowserContext.set_offlinescriptc                    sJ   |rt |I d H  }t|tstd| jdd t|dI d H  d S )Nz1Either path or script parameter must be specifiedaddInitScript)source)r+   decoder   r   r   r   r   r   )ra   r  r   rb   rb   rc   add_init_script  s   
 zBrowserContext.add_init_scriptcallbackr   c                    sr   | j D ]}||jv rtd| dq|| jv r!td| d|| j|< | jdd t||p0ddI d H  d S )Nz
Function "z1" has been already registered in one of the pagesz" has been already registeredexposeBindingF)r   needsHandle)r   r   r   r   r   r   )ra   r   r  r   rC   rb   rb   rc   expose_binding  s   




zBrowserContext.expose_bindingc                    s    |  | fddI d H  d S )Nc                    s    | S rg   rb   )r  argsr  rb   rc   rd     rj   z0BrowserContext.expose_function.<locals>.<lambda>)r"  )ra   r   r  rb   r$  rc   expose_function  s   zBrowserContext.expose_functionr   handlertimesc              	      s:   | j dt| j||| jrdnd| |  I d H  d S )Nr   TF)r   insertr&   r   _dispatcher_fiberr   )ra   r   r&  r'  rb   rb   rc   rl     s   
zBrowserContext.routec                    s\   g }g }| j D ]}|j|ks|r|j|kr|| q|| q| ||dI d H  d S )Ndefault)r   r   r&  r   _unroute_internal)ra   r   r&  removed	remainingrl   rb   rb   rc   unroute  s   
zBrowserContext.unrouter,  r-  behavior)r*  ignoreErrorswaitc                    sH   || _  d ur dkrtjt fdd| I d H  |  I d H  d S )Nr*  c                    s
   |   S rg   )stop)routerr/  rb   rc   rd     rx   z2BrowserContext._unroute_internal.<locals>.<lambda>)r   r   gathermapr   )ra   r,  r-  r/  rb   r4  rc   r+    s
   z BrowserContext._unroute_internalc                    s,   | j dt| j|| |  I d H  d S )Nr   )r   r(  r4   r   (_update_web_socket_interception_patterns)ra   r   r&  rb   rb   rc   route_web_socket  s   zBrowserContext.route_web_socketc                 C   s   | j D ]}|  qg | _ d S rg   )r   dispose)ra   r3  rb   rb   rc   _dispose_har_routers  s   


z#BrowserContext._dispose_har_routersc                    s$   |  | jg |I d H  |   d S rg   )r+  r   r:  )ra   r/  rb   rb   rc   unroute_all  s   zBrowserContext.unroute_allr   r   r   c                    s   |pd}dt |d|t|t r|nd t|tr|jnd t|tr't|nd |p+ddi}|r6|j|d< | jdd |I d H }t ||d| j|< d S )	Nr   rU   r   minimal)zipcontenturlGloburlRegexSourceurlRegexFlagsmoderC   harStart)r   r>  )	r   r   r   r   r  r9   r   r   r   )ra   r   rC   r   r   r   r_   har_idrb   rb   rc   r     s"   
zBrowserContext._record_into_harnotFoundupdateupdateContent)r   r   
updateModec                    sh   |r| j |d |||dI d H  d S tj| jjt||pd|dI d H }| j| || I d H  d S )Nr   abort)local_utilsfilenot_found_actionurl_matcher)	r   r!   creater   rJ  r   r   r   add_context_route)ra   r   r   rE  rF  rG  rH  r3  rb   rb   rc   route_from_har  s$   	zBrowserContext.route_from_harc                    ,   t | j}| jdd d|iI d H  d S )NsetNetworkInterceptionPatternspatterns)r&   prepare_interception_patternsr   r   r   ra   rS  rb   rb   rc   r     s
   
z,BrowserContext._update_interception_patternsc                    rQ  )N setWebSocketInterceptionPatternsrS  )r4   rT  r   r   r   rU  rb   rb   rc   r7    s   
z7BrowserContext._update_web_socket_interception_patternsrw   	predicatec                 C   sz   |d u r	| j  }t| d| d}||d| d| d |tjjkr0|| tjjdd  || || t	|
 S )Nzbrowser_context.expect_event()zTimeout z%ms exceeded while waiting for event ""c                   S   s   t  S rg   )r   rb   rb   rb   rc   rd   1  s    z-BrowserContext.expect_event.<locals>.<lambda>)r   r   r;   reject_on_timeoutr>   r   rK   reject_on_eventwait_for_eventr   result)ra   rw   rW  r   waiterrb   rb   rc   expect_event#  s   
zBrowserContext.expect_eventc                 C   s   d| _ | jr.| | jjv r| jj|  | jjd usJ | | jjjjjv r.| jjjjj|  |   | j	
  | tjj|  d S r   )r   r   	_contextsr   _browser_type_playwright	selectors_contexts_for_selectorsr:  r   _reset_stack_counterr   r>   r   rK   r`   rb   rb   rc   rh   6  s   
zBrowserContext._on_closereasonc                    sz    j rd S | _d _  jj|dI d H  d fdd} jj|dI d H   jdd d|iI d H   jI d H  d S )	NT)rf  rT   c               
      s    j  D ]]\} }ttt jdd d| iI d H }|ddkp)|d d}|d d}|rR|sR|d d }|	|I d H   j
jj||d dI d H  n
|	|d I d H  | I d H  qd S )	N	harExportharIdr>  r   r   r   z.tmp)zipFileharFile)r   itemsr   r   r   r   r   rp   r   save_asr   rJ  	har_unzipdelete)rD  r_   r   is_compressedneed_compressedtmp_pathr`   rb   rc   _inner_closeP  s.   z*BrowserContext.close.<locals>._inner_closer@   rf  rT   N)	r   r   rF   r9  r   r   r   r   r   )ra   rf  rr  rb   r`   rc   r@   H  s   zBrowserContext.close	indexedDBc                    s:   | j dd d|iI d H }|rt|t|I d H  |S )NstorageStatert  )r   send_return_as_dictr,   jsondumps)ra   r   rt  r]  rb   rb   rc   storage_statek  s   

zBrowserContext.storage_statec                 C   s   | j r| j S | jr| jj S d S rg   )r   r   r`   rb   rb   rc   _effective_close_reasonu  s
   z&BrowserContext._effective_close_reasonc              	      sN   |  |||4 I d H }W d   I d H  n1 I d H sw   Y  |I d H S rg   )r_  )ra   rw   rW  r   
event_inforb   rb   rc   r\  |  s
   (
zBrowserContext.wait_for_eventc                 C      |  tjj||S rg   )r_  r7   r   rL   ra   rW  r   rb   rb   rc   expect_console_message     z%BrowserContext.expect_console_messagec                 C   r|  rg   )r_  r>   r   r7   r}  rb   rb   rc   expect_page  r  zBrowserContext.expect_pagert   c                 C   s&   | |_ | j| | tjj| d S rg   )r   r   addr   r>   r   rM   )ra   rt   rb   rb   rc   ru     s   z!BrowserContext._on_service_workerresponse_end_timingfailure_textc                 C   s<   ||_ || | tjj| |r|tjj| d S d S rg   )_failure_text_set_response_end_timingr   r>   r   rN   r7   )ra   rF   r  r  rC   rb   rb   rc   r     s   
z!BrowserContext._on_request_failedc                 C   sF   | | | tjj| |r|tjj| |r!|jd d S d S r   )r  r   r>   r   rO   r7   _finished_futurer   )ra   rF   rG   r  rC   rb   rb   rc   r     s   
z#BrowserContext._on_request_finishedc                 C   sX   t || j| j}|j}|r|tjj| |j}|r"|t	jj| | t
jj| d S rg   )r   rm   r)  rt   r   r8   r   rL   rC   r7   r>   )ra   rw   messagert   rC   rb   rb   rc   rv     s   z"BrowserContext._on_console_messagec                 C   sd   |  tjj|}|j}|r| tjj|p|}|s0|jdkr't|	  d S t|
  d S d S )Nbeforeunload)r   r>   r   r   rC   r7   rQ   r   rn   acceptdismiss)ra   rB   has_listenersrC   rb   rb   rc   ry     s   
zBrowserContext._on_dialogr{   c                 C   s:   |  tjjt| j| j|| |r| tjj| d S d S rg   )r   r>   r   r<   rm   r)  r7   	PageError)ra   r{   rC   rb   rb   rc   r|     s   zBrowserContext._on_page_errorc                 C   ,   |  tjj| |r| tjj| d S d S rg   )r   r>   r   r0   r7   )ra   rF   rC   rb   rb   rc   r~        zBrowserContext._on_requestc                 C   r  rg   )r   r>   r   r1   r7   )ra   rG   rC   rb   rb   rc   r     r  zBrowserContext._on_responsec                 C   s   g S rg   rb   r`   rb   rb   rc   background_pages  s   zBrowserContext.background_pagesc                 C   s
   t | jS rg   )listr   r`   rb   rb   rc   service_workers  r   zBrowserContext.service_workersc                    s\   t |}i }t|tr|j|d< nt|tr|j|d< ntdt| jdd |I d H S )NrC   framezpage: expected Page or FramenewCDPSession)r/   r   r7   r   r    r   r   r   )ra   rC   r_   rb   rb   rc   new_cdp_session  s   

zBrowserContext.new_cdp_sessionc                 C   r   rg   )r   r`   rb   rb   rc   rX     r   zBrowserContext.tracingr   c                 C   r   rg   )r   r`   rb   rb   rc   rF     r   zBrowserContext.requestc                 C   r   rg   )r   r`   rb   rb   rc   clock  r   zBrowserContext.clockrg   )NNNrs  )NN)NNNN)NNNNN)rT   r   )ir   
__module____qualname__r   r   r   r   r   r   r   r7   rk   r2   ro   r3   rr   r6   r]   floatr   r
   r   r   r   propertyr   r   r   r   r   r"   boolr   r#   r   r   r   r   r   r   r   r  r  r  r   r  r  r  r  r   r"  r%  r)   r'   intrl   r.  r&   r	   r+  r*   r8  r:  r;  r   r%   rP  r   r7  r   r_  rh   r@   r   ry  rz  r   r\  r   r~  r  r8   ru   r0   r   r1   r   rv   r   ry   r   r|   r~   r   r  r  r    r   r  r:   rX   rF   r   r  __classcell__rb   rb   r   rc   r>   Y   s   u 
$











	
	

 





$



	
	



r>   )Vr   rw  pathlibr   typesr   typingr   r   r   r   r   r	   r
   r   r   r   r   r    playwright._impl._api_structuresr   r   r   r   playwright._impl._artifactr   playwright._impl._cdp_sessionr   playwright._impl._clockr   playwright._impl._connectionr   r   r   !playwright._impl._console_messager   playwright._impl._dialogr   playwright._impl._errorsr   r   'playwright._impl._event_context_managerr   playwright._impl._fetchr   playwright._impl._framer    playwright._impl._har_routerr!   playwright._impl._helperr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   playwright._impl._networkr0   r1   r2   r3   r4   r5   playwright._impl._pager6   r7   r8   playwright._impl._str_utilsr9   playwright._impl._tracingr:   playwright._impl._waiterr;   playwright._impl._web_errorr<   playwright._impl._browserr=   r>   rb   rb   rb   rc   <module>   s6   8@ 