
    &th                         d Z ddlZddl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mZ ddlmZ  G d d	          Zd
dddddZdS )zNavigator Watcher module.    N)Any	AwaitableDictListUnion)helper)TimeoutError)FrameManagerFrame)
merge_dictc                       e Zd ZdZ	 ddedededededdfd	Z	deddfd
Z
ded         fdZdefdZddeddfdZddeddfdZdedee         defdZddZddZdS )NavigatorWatcherzNavigatorWatcher class.NframeManagerframetimeoutoptionskwargsreturnc                     t          ||          }                     |           | _        | _        |j         _        | _        d _        t          j	         j        t          j        j         j                  t          j	         j        t          j        j         j                  t          j	         j        t          j        j         j                  g _         j        j        j         _         j                                         _         j                            t/          j         j                                         gt4          j        j                             _         j                             fd           dS )zMake new navigator watcher.F)return_whenc                 ,                                     S N_cleanup)futselfs    o/var/www/html/mycamper/aliexpress-site/backend/venv/lib/python3.11/site-packages/pyppeteer/navigator_watcher.py<lambda>z+NavigatorWatcher.__init__.<locals>.<lambda>6   s         N)r   _validate_options_frameManager_frame	_loaderId_initialLoaderId_timeout_hasSameDocumentNavigationr   addEventListenerr
   EventsLifecycleEvent_checkLifecycleCompleteFrameNavigatedWithinDocument_navigatedWithinDocumentFrameDetached_eventListeners_client_loopcreate_future_lifecycleCompletePromisecreate_taskasynciowait_createTimeoutPromise
concurrentfuturesFIRST_COMPLETED_navigationPromiseadd_done_callback)r   r   r   r   r   r   s   `     r   __init__zNavigatorWatcher.__init__   s{    Wf--w''') %*/'#"#2, 
 #"#@- 
 #"#1,  
" '/5
)-)A)A)C)C&"&*"8"8*&&((G
 ")9:; :; :; #< #< 	11''''	) 	) 	) 	) 	)r   c                    d|v rt          d          d|v rt          d          |                    d          dk    rt          d          |                    d          dk    r1d	d l}|                    t                                        d
           |                    dd          }t          |t                    r|}n8t          |t                    r|g}nt          dt          |                     g | _        |D ]J}t                              |          }|t          d|           | j                            |           Kd S )NnetworkIdleTimeoutz3`networkIdleTimeout` option is no longer supported.networkIdleInflightz4`networkIdleInflight` option is no longer supported.	waitUntilnetworkidlezH`networkidle` option is no logner supported. Use `networkidle2` instead.documentloadedr   zO`documentloaded` option is no longer supported. Use `domcontentloaded` instead.loadz>`waitUntil` option should be str or list of str, but got type z%Unknown value for options.waitUntil: )
ValueErrorgetlogging	getLogger__name__warning
isinstanceliststr	TypeErrortype_expectedLifecyclepyppeteerToProtocolLifecycleappend)r   r   rF   
_waitUntilr@   valueprotocolEvents          r   r    z"NavigatorWatcher._validate_options8   s   7**EG G G G++FH H H;;{##}44./ / / ;;{##'777NNNh''//23 3 3 [[f55
j$'' 	"II
C(( 	#II3 $Z 0 03 3   .0 	: 	:E8<<UCCM$ CECCE E E#**=9999	: 	:r   c                      j                                          _         j        r:d j         dd fd} j                              |                       _        n j                                          _         j        S )NzNavigation Timeout Exceeded: z ms exceeded.r   c                     K   t          j        j        dz             d {V  j                            t                                d S )Ni  )r4   sleepr%   _maximumTimerset_exceptionr	   )errorMessager   s   r   _timeout_funcz=NavigatorWatcher._createTimeoutPromise.<locals>._timeout_func_   sU      mDMD$8999999999"00l1K1KLLLLLr   r   N)r0   r1   rX   r%   r3   _timeout_timer)r   r[   rZ   s   ` @r   r6   z&NavigatorWatcher._createTimeoutPromiseZ   s    !Z5577= 		=W4=WWWLM M M M M M M HLzG]G]^k^k^m^mGnGnD"&*":":"<"<D!!r   c                     | j         S )zReturn navigation promise.)r:   r   s    r   navigationPromisez"NavigatorWatcher.navigationPromiseh   s    &&r   c                 V    || j         k    rd S d| _        |                                  d S )NT)r"   r&   r*   r   r   s     r   r,   z)NavigatorWatcher._navigatedWithinDocumentl   s4    DKF*.'$$&&&&&r   c                     | j         j        | j        k    r	| j        sd S |                     | j         | j                  sd S | j                                        s| j                            d            d S d S r   )	r"   r#   r$   r&   _checkLifecyclerO   r2   done
set_resultrb   s     r   r*   z(NavigatorWatcher._checkLifecycleCompleter   s    K!T%:::3 ;F##DK1HII 	F-2244 	<*55d;;;;;	< 	<r   expectedLifecyclec                 n    |D ]}||j         vr dS |j        D ]}|                     ||          s dS dS )NFT)_lifecycleEventschildFramesrd   )r   r   rg   eventchilds        r   rd   z NavigatorWatcher._checkLifecycle|   sg    & 	 	EE222uu 3& 	 	E''/@AA uutr   c                 .    |                                   dS )zCancel navigation.Nr   r_   s    r   cancelzNavigatorWatcher.cancel   s    r   c                     t          j        | j                   | j                                         | j                                         | j                                         d S r   )r   removeEventListenersr.   r2   rn   rX   r]   r_   s    r   r   zNavigatorWatcher._cleanup   s[    #D$8999&--///!!###""$$$$$r   r   r\   )rH   
__module____qualname____doc__r
   r   intr   r   r<   r    r   r6   r`   r,   r*   r   rL   boolrd   rn   r    r   r   r   r      sg       !! "&#) #)\ #)% #)# #)#)14#)9=#) #) #) #)J :  :$  :  :  :  :D"y " " " "'3 ' ' ' '' 'e 't ' ' ' '< <U <d < < < <U tCy !      % % % % % %r   r   rC   DOMContentLoadednetworkIdlenetworkAlmostIdle)rC   domcontentloadedrB   networkidle0networkidle2)rs   r4   concurrent.futuresr7   typingr   r   r   r   r   	pyppeteerr   pyppeteer.errorsr	   pyppeteer.frame_managerr
   r   pyppeteer.utilr   r   rP   rv   r   r   <module>r      s            4 4 4 4 4 4 4 4 4 4 4 4 4 4       ) ) ) ) ) ) 7 7 7 7 7 7 7 7 % % % % % %~% ~% ~% ~% ~% ~% ~% ~%D *(!'      r   