a
    ҏiW                     @   s  d dl Z 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 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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-m.Z. d dl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@mAZAmBZBmCZC d dlDmEZEmFZFmGZG d dlHmIZI d dlJmKZK d dlLmMZM erd dlNmOZO ejPdkrd dlmQZQ nd dlRmQZQ G dd deZSdS )    N)Path)SimpleNamespace)
TYPE_CHECKINGAnyCallableDictListOptionalPatternSetUnioncast)CookieGeolocationSetCookieParamStorageState)Artifact)
CDPSession)ChannelOwnerfilter_nonefrom_channelfrom_nullable_channel)ConsoleMessage)Dialog)ErrorTargetClosedError)EventContextManagerImpl)APIRequestContext)Frame)	HarRouter)HarContentPolicyHarModeHarRecordingMetadataRouteFromHarNotFoundPolicyRouteHandlerRouteHandlerCallbackTimeoutSettingsURLMatch
URLMatcherasync_readfileasync_writefilelocals_to_paramsparse_errorprepare_record_har_optionsto_impl)RequestResponseRouteserialize_headers)BindingCallPageWorker)Tracing)Waiter)WebError)Browser)      )Literalc                       s  e Zd Zeddddddddd	d
ddZeeeedd fddZedddZ	e
ddddZed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ee ddd$d%Zeee
 dd&d'Zeed( dd)d*Zeedd+d,d-Ze
dd.d/Zdeeee f ee d0d1d2Zee dd3d4d5Z ddd6d7Z!dee edd8d9d:Z"ddd;d<Z#de$dd=d>d?Z%eeef dd@dAdBZ&e'ddCdDdEZ(deeee)f ddFdGdHZ*dee+e'ddIdJdKZ,ee+ddLdMdNZ-de.e/e0ddOdPdQZ1de.ee/ ddRdSdTZ2dee)ef ee
 ee3e ef e4e5ddUdVdWZ6dee)ef ee3e ef e7e'e8dX e5ddYdZd[Z9ddd\d]Z:dee+ee;d^d_d`Z<dddadbZ=deddcdddeZ>deee)f e?dfdgdhZ@ee ddidjZAdee+eeBd^dkdlZCde+eDge'f ee;eD dmdndoZEde+e
ge'f ee;e
 dmdpdqZFe
dddrdsZGeHddtdudvZIeJeee ee
 ddwdxdyZKeJeeL eee
 ddzd{d|ZMedd}d~dZNeOddddZPeQee
 ddddZReJee
 ddddZSeLee
 ddddZTeee
 dddZUeeeH dddZVee
eWf eXdddZYeeZdddZ[eddddZ\  Z]S )BrowserContextZbackgroundpagecloseconsoledialogpageZweberrorZserviceworkerrequestresponseZrequestfailedZrequestfinished)BackgroundPageCloseConsoler   r4   r8   ServiceWorkerr/   r0   RequestFailedRequestFinishedN)parenttypeguidinitializerreturnc                    s(  t  |||| d  _|jjdkr>td| _ jj  g  _g  _	i  _
td  _d  _i  _t  _t  _ttt|d  _i  _t|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  jd fdd t  _  jj fdd d  _  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 )!Nr9   tracingZrequestContextZbindingCallc                    s     t| d S )NZbinding)_on_bindingr   paramsself Q/home/Claro/venv/lib/python3.9/site-packages/playwright/_impl/_browser_context.py<lambda>{       z)BrowserContext.__init__.<locals>.<lambda>r>   c                    s      S N)	_on_close)_rS   rU   rV   rW   }   rX   rA   c                    s     t| d S NrA   )_on_pager   rQ   rS   rU   rV   rW      rX   routec                    s   t  t| dS )Nr^   )asynciocreate_task	_on_router   getrQ   rS   rU   rV   rW      s   ZbackgroundPagec                    s     t| d S r\   )_on_background_pager   rQ   rS   rU   rV   rW      rX   ZserviceWorkerc                    s     t| d S )Nworker)_on_service_workerr   rQ   rS   rU   rV   rW      rX   r?   c                    s
     | S rY   )_on_console_message)eventrS   rU   rV   rW      rX   r@   c                    s     t| d S )Nr@   )
_on_dialogr   rQ   rS   rU   rV   rW      rX   Z	pageErrorc                    s      t| d d t| d S )NerrorrA   )_on_page_errorr,   r   rQ   rS   rU   rV   rW      s   
rB   c                    s     t| d t| dS )NrB   rA   )_on_requestr   r   rb   rQ   rS   rU   rV   rW      s   
rC   c                    s     t| d t| dS )NrC   rA   )_on_responser   r   rb   rQ   rS   rU   rV   rW      s   
ZrequestFailedc              	      s,     t| d | d | dt| dS )NrB   responseEndTimingZfailureTextrA   )_on_request_failedr   rb   r   rQ   rS   rU   rV   rW      s
   
ZrequestFinishedc              	      s0     t| d t| d| d t| dS )NrB   rC   rm   rA   )_on_request_finishedr   r   rb   rQ   rS   rU   rV   rW      s
   
c                    s    j dS NT)_closed_future
set_result)contextrS   rU   rV   rW      rX   F))super__init___browser	__class____name__r   	_contextsappend_pages_routes	_bindingsr&   _timeout_settings_owner_page_optionsset_background_pages_service_workersr6   r   _tracing_har_recorders_request_channelonr_   ZFuturerq   onceEventsrE   _close_reasonZ"_set_event_to_subscription_mappingr=   rF   r   r/   r0   rI   rH   _close_was_called)rT   rJ   rK   rL   rM   rw   rS   rV   ru   e   s    


	






	
	

zBrowserContext.__init__rN   c                 C   s   d| j  dS )Nz<BrowserContext browser=>)browserrS   rU   rU   rV   __repr__   s    zBrowserContext.__repr__)rA   rN   c                 C   sB   | j | | tjj| |jr>|j s>|jtjj| d S rY   )	r{   rz   emitr=   r   r4   _openerZ	is_closedZPopuprT   rA   rU   rU   rV   r]      s    zBrowserContext._on_page)r^   rN   c                    s    |_  j }|D ]}||jjs(q|jr: j| z>||I d H }W t	 jdkrt
 j fddd n,t	 jdkrt
 j fddd 0 |r d S q|jddI d H  d S )Nr   c                      s      S rY   )_update_interception_patternsrU   rS   rU   rV   rW      rX   z*BrowserContext._on_route.<locals>.<lambda>T)Zis_internal)_contextr|   copymatchesrB   urlZwill_expireremovehandlelenr_   r`   _connectionwrap_api_callZ_internal_continue)rT   r^   Zroute_handlersZroute_handlerZhandledrU   rS   rV   ra      s0    
zBrowserContext._on_route)binding_callrN   c                 C   s2   | j |jd }|d u rd S t|| d S )Nname)r}   rb   Z_initializerr_   r`   call)rT   r   funcrU   rU   rV   rP      s    zBrowserContext._on_binding)timeoutrN   c                 C   s
   |  |S rY   )$_set_default_navigation_timeout_implrT   r   rU   rU   rV   set_default_navigation_timeout   s    z-BrowserContext.set_default_navigation_timeoutc                 C   s.   | j | | jd|d u r i nd|i d S )NZ"setDefaultNavigationTimeoutNoReplyr   )r~   r   r   send_no_replyr   rU   rU   rV   r      s
    z3BrowserContext._set_default_navigation_timeout_implc                 C   s
   |  |S rY   )_set_default_timeout_implr   rU   rU   rV   set_default_timeout  s    z"BrowserContext.set_default_timeoutc                 C   s.   | j | | jd|d u r i nd|i d S )NZsetDefaultTimeoutNoReplyr   )r~   r   r   r   r   rU   rU   rV   r     s    z(BrowserContext._set_default_timeout_implc                 C   s
   | j  S rY   )r{   r   rS   rU   rU   rV   pages
  s    zBrowserContext.pagesr9   c                 C   s   | j S rY   )rv   rS   rU   rU   rV   r     s    zBrowserContext.browser)context_optionsbrowser_optionsrN   c                 C   sJ   || _ | j dr8| j d d | j d dd| jd< |d| j_d S )NZ	recordHarpathcontentr   r    Z	tracesDir)r   rb   r   r   Z_traces_dir)rT   r   r   rU   rU   rV   _set_options  s    zBrowserContext._set_optionsc                    s$   | j rtdt| jdI d H S )Nz Please use browser.new_context()ZnewPage)r   r   r   r   sendrS   rU   rU   rV   new_page  s    zBrowserContext.new_page)urlsrN   c                    s6   |d u rg }t |ts|g}| jdt|dI d H S )Ncookies)r   )
isinstancelistr   r   dict)rT   r   rU   rU   rV   r      s
    
zBrowserContext.cookies)r   rN   c                    s   | j dt|dI d H  d S )NZ
addCookies)r   r   r   r   )rT   r   rU   rU   rV   add_cookies'  s    zBrowserContext.add_cookiesc                    s   | j dI d H  d S )NZclearCookiesr   r   rS   rU   rU   rV   clear_cookies*  s    zBrowserContext.clear_cookies)permissionsoriginrN   c                    s   | j dtt I d H  d S )NZgrantPermissionsr   r   r+   locals)rT   r   r   rU   rU   rV   grant_permissions-  s    z BrowserContext.grant_permissionsc                    s   | j dI d H  d S )NZclearPermissionsr   rS   rU   rU   rV   clear_permissions2  s    z BrowserContext.clear_permissions)geolocationrN   c                    s   | j dtt I d H  d S )NZsetGeolocationr   )rT   r   rU   rU   rV   set_geolocation5  s    zBrowserContext.set_geolocation)headersrN   c                    s"   | j dtt|dI d H  d S )NZsetExtraHTTPHeaders)r   )r   r   r   r2   )rT   r   rU   rU   rV   set_extra_http_headers8  s    z%BrowserContext.set_extra_http_headers)offlinerN   c                    s   | j dt|dI d H  d S )NZ
setOffline)r   r   )rT   r   rU   rU   rV   set_offline=  s    zBrowserContext.set_offline)scriptr   rN   c                    sF   |rt |I d H  }t|ts(td| jdt|dI d H  d S )Nz1Either path or script parameter must be specifiedZaddInitScript)source)r)   decoder   strr   r   r   r   )rT   r   r   rU   rU   rV   add_init_script@  s
    
zBrowserContext.add_init_script)r   callbackr   rN   c                    sn   | j D ]}||jv rtd| dq|| jv r@td| d|| j|< | jdt||p\ddI d H  d S )Nz
Function "z1" has been already registered in one of the pagesz" has been already registeredZexposeBindingF)r   ZneedsHandle)r{   r}   r   r   r   r   )rT   r   r   r   rA   rU   rU   rV   expose_bindingI  s    




zBrowserContext.expose_binding)r   r   rN   c                    s   |  | fddI d H  d S )Nc                    s    | S rY   rU   )r   argsr   rU   rV   rW   Y  rX   z0BrowserContext.expose_function.<locals>.<lambda>)r   )rT   r   r   rU   r   rV   expose_functionX  s    zBrowserContext.expose_function)r   handlertimesrN   c                    sB   | j dtt| jd||| jr&dnd| |  I d H  d S )Nr   ZbaseURLTF)r|   insertr$   r(   r   rb   _dispatcher_fiberr   )rT   r   r   r   rU   rU   rV   r^   [  s    	zBrowserContext.route)r   r   rN   c                    s.   t t fdd| j| _|  I d H  d S )Nc                    s   | j jkp o| j kS rY   )Zmatchermatchr   )rr   r   rU   rV   rW   n  rX   z(BrowserContext.unroute.<locals>.<lambda>)r   filterr|   r   )rT   r   r   rU   r   rV   unroutei  s    zBrowserContext.unroute)harrA   r   update_contentupdate_moderN   c                    s\   dt ||pd|pd|di}|r,|j|d< | jd|I d H }t||pLdd| j|< d S )NoptionsattachZminimal)ZrecordHarPathZrecordHarContentZrecordHarModeZrecordHarUrlFilterrA   ZharStartr   )r-   r   r   r   r   )rT   r   rA   r   r   r   rR   har_idrU   rU   rV   _record_into_hart  s    	

zBrowserContext._record_into_har)r   embed)r   r   	not_foundupdater   r   rN   c                    sZ   |r"| j |d |||dI d H  d S tj| jjt||p8d|dI d H }|| I d H  d S )N)r   rA   r   r   r   abort)local_utilsfileZnot_found_actionZurl_matcher)r   r   creater   r   r   Zadd_context_route)rT   r   r   r   r   r   r   ZrouterrU   rU   rV   route_from_har  s     	zBrowserContext.route_from_harc                    s(   t | j}| jdd|iI d H  d S )NZsetNetworkInterceptionPatternspatterns)r$   Zprepare_interception_patternsr|   r   r   )rT   r   rU   rU   rV   r     s    z,BrowserContext._update_interception_patterns)rg   	predicater   rN   c                 C   sz   |d u r| j  }t| d| d}||d| d| d |tjjkr`|| 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 rY   )r   rU   rU   rU   rV   rW     rX   z-BrowserContext.expect_event.<locals>.<lambda>)r~   r   r7   Zreject_on_timeoutr=   r   rE   Zreject_on_eventwait_for_eventr   result)rT   rg   r   r   waiterrU   rU   rV   expect_event  s    
zBrowserContext.expect_eventc                 C   s(   | j r| j j|  | tjj|  d S rY   )rv   ry   r   r   r=   r   rE   rS   rU   rU   rV   rZ     s    zBrowserContext._on_close)reasonrN   c                    sj    j r
d S | _d _ d d fdd} jj|dI d H   jdtd|iI d H   jI d H  d S )NTr   c               	      s    j  D ]\} }ttt jdd| iI d H }|ddkpN|d d}|d d}|r|s|d d }|	|I d H   j
jj||d dI d H  n|	|d I d H  | I d H  q
d S )	NZ	harExportZharIdr   r   r   z.zipz.tmp)ZzipFileZharFile)r   itemsr   r   r   r   r   rb   endswithZsave_asr   r   Z	har_unzipdelete)r   rR   r   Zis_compressedZneed_compressedZtmp_pathrS   rU   rV   _inner_close  s*    z*BrowserContext.close.<locals>._inner_closer>   r   )r   r   r   r   r   r   r   rq   )rT   r   r   rU   rS   rV   r>     s    zBrowserContext.close)r   rN   c                    s0   | j dI d H }|r,t|t|I d H  |S )NZstorageState)r   Zsend_return_as_dictr*   jsondumps)rT   r   r   rU   rU   rV   storage_state  s    zBrowserContext.storage_statec                 C   s   | j r| j S | jr| jj S d S rY   )r   rv   rS   rU   rU   rV   _effective_close_reason  s
    z&BrowserContext._effective_close_reasonc              	      sL   |  |||4 I d H }W d   I d H  qB1 I d H s80    Y  |I d H S rY   )r   )rT   rg   r   r   Z
event_inforU   rU   rV   r     s    *zBrowserContext.wait_for_event)r   r   rN   c                 C   s   |  tjj||S rY   )r   r4   r   rF   rT   r   r   rU   rU   rV   expect_console_message  s    z%BrowserContext.expect_console_messagec                 C   s   |  tjj||S rY   )r   r=   r   r4   r   rU   rU   rV   expect_page  s    zBrowserContext.expect_pagec                 C   s    | j | | tjj| d S rY   )r   addr   r=   r   rD   r   rU   rU   rV   rc   
  s    z"BrowserContext._on_background_page)rd   rN   c                 C   s&   | |_ | j| | tjj| d S rY   )r   r   r   r   r=   r   rG   )rT   rd   rU   rU   rV   re     s    z!BrowserContext._on_service_worker)rB   response_end_timingfailure_textrA   rN   c                 C   s8   ||_ || | tjj| |r4|tjj| d S rY   )Z_failure_text_set_response_end_timingr   r=   r   rH   r4   )rT   rB   r   r  rA   rU   rU   rV   rn     s
    
z!BrowserContext._on_request_failed)rB   rC   r   rA   rN   c                 C   sB   | | | tjj| |r.|tjj| |r>|jd d S rp   )r  r   r=   r   rI   r4   Z_finished_futurerr   )rT   rB   rC   r   rA   rU   rU   rV   ro      s    
z#BrowserContext._on_request_finished)rg   rN   c                 C   s>   t || j| j}| tjj| |j}|r:|tjj| d S rY   )	r   _loopr   r   r=   r   rF   rA   r4   )rT   rg   messagerA   rU   rU   rV   rf   .  s
    z"BrowserContext._on_console_message)r@   rN   c                 C   s^   |  tjj|}|j}|r.| tjj|p,|}|sZ|jdkrLt|	  nt|
  d S )NZbeforeunload)r   r=   r   r   rA   r4   rK   r_   r`   acceptZdismiss)rT   r@   Zhas_listenersrA   rU   rU   rV   rh   5  s    
zBrowserContext._on_dialog)ri   rA   rN   c                 C   s2   |  tjjt| j|| |r.| tjj| d S rY   )r   r=   r   r8   r  r4   Z	PageError)rT   ri   rA   rU   rU   rV   rj   D  s    zBrowserContext._on_page_error)rB   rA   rN   c                 C   s(   |  tjj| |r$| tjj| d S rY   )r   r=   r   r/   r4   )rT   rB   rA   rU   rU   rV   rk   I  s    zBrowserContext._on_request)rC   rA   rN   c                 C   s(   |  tjj| |r$| tjj| d S rY   )r   r=   r   r0   r4   )rT   rC   rA   rU   rU   rV   rl   N  s    zBrowserContext._on_responsec                 C   s
   t | jS rY   )r   r   rS   rU   rU   rV   background_pagesS  s    zBrowserContext.background_pagesc                 C   s
   t | jS rY   )r   r   rS   rU   rU   rV   service_workersW  s    zBrowserContext.service_workersc                    sX   t |}i }t|tr"|j|d< nt|tr8|j|d< ntdt| jd|I d H S )NrA   framezpage: expected Page or FrameZnewCDPSession)r.   r   r4   r   r   r   r   r   )rT   rA   rR   rU   rU   rV   new_cdp_session[  s    

zBrowserContext.new_cdp_sessionc                 C   s   | j S rY   )r   rS   rU   rU   rV   rO   f  s    zBrowserContext.tracingr   c                 C   s   | j S rY   )r   rS   rU   rU   rV   rB   j  s    zBrowserContext.request)N)N)N)NN)N)N)N)NNNN)NNNNN)NN)N)N)NN)NN)NN)^rx   
__module____qualname__r   r   r   r   r   ru   r   r4   r]   r1   ra   r3   rP   floatr   r	   r   r   r   propertyr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   boolr   r   r   r   r   r   r'   r%   intr^   r   r
   r    r!   r   r#   r<   r   r   r   r   rZ   r>   r   r   r   r   r   r   r   r   rc   r5   re   r/   rn   r0   ro   rf   r   rh   r   rj   rk   rl   r  r  r   r   r	  r6   rO   rB   __classcell__rU   rU   r   rV   r=   V   s*  n	"  
       
     
	  ! 	  	  r=   )Tr_   r   syspathlibr   typesr   typingr   r   r   r   r   r	   r
   r   r   r   Z playwright._impl._api_structuresr   r   r   r   Zplaywright._impl._artifactr   Zplaywright._impl._cdp_sessionr   Zplaywright._impl._connectionr   r   r   r   Z!playwright._impl._console_messager   Zplaywright._impl._dialogr   Zplaywright._impl._errorsr   r   Z'playwright._impl._event_context_managerr   Zplaywright._impl._fetchr   Zplaywright._impl._framer   Zplaywright._impl._har_routerr   Zplaywright._impl._helperr    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   Zplaywright._impl._networkr/   r0   r1   r2   Zplaywright._impl._pager3   r4   r5   Zplaywright._impl._tracingr6   Zplaywright._impl._waiterr7   Zplaywright._impl._web_errorr8   Zplaywright._impl._browserr9   version_infor<   Ztyping_extensionsr=   rU   rU   rU   rV   <module>   s8   0D