§
    �
Êjµ  ã                  ó  — d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	 ddl
Z
 ej        e¦  «        Zddddd	d
dddddej                             d¦  «        ej                             d¦  «        fZddd„Z G d„ d¦  «        ZdS )zChromium process management.é    )ÚannotationsN)ÚPathÚchromiumzchromium-browserzgoogle-chromezgoogle-chrome-stablez/usr/bin/chromiumz/snap/bin/chromiumz</Applications/Google Chrome.app/Contents/MacOS/Google Chromez5C:\Program Files\Google\Chrome\Application\chrome.exez;C:\Program Files (x86)\Google\Chrome\Application\chrome.exez6C:\Program Files\Microsoft\Edge\Application\msedge.exez<C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exez3%LOCALAPPDATA%\Google\Chrome\Application\chrome.exez4%LOCALAPPDATA%\Microsoft\Edge\Application\msedge.exeÚ Ú
configuredÚstrÚreturnc                ó¶   — | r| fndt           z   D ];}|r7t          j                             |¦  «        st	          j        |¦  «        r|c S Œ<t          d¦  «        ‚)N© zCChromium/Chrome not found; install it or set MUSE2API_CHROMIUM_PATH)Ú_CANDIDATESÚosÚpathÚisfileÚshutilÚwhichÚFileNotFoundError)r   Úcs     ú=C:\Projects\Muse2API\src\muse2api\drivers\browser\chromium.pyÚfind_chromiumr   "   sl   € Ø)Ð1ˆzˆmˆm¨rµ[Ñ@ð ð ˆØð 	•"”'—.’. Ñ#Ô#ð 	¥v¤|°A¡¤ð 	ØˆHˆHˆHøÝ
ØMñô ð ó    c                  óL   — e Zd Z	 	 ddd„Zedd„¦   «         Zdd„Zdd„Zdd„ZdS )ÚChromiumProcessTr   Ú
executabler   ÚportÚintÚprofile_dirr   ÚheadlessÚboolÚproxyc                óZ   — || _         || _        || _        || _        || _        d | _        d S )N)r   r   r   r   r   Úproc)Úselfr   r   r   r   r   s         r   Ú__init__zChromiumProcess.__init__,   s1   € à$ˆŒØˆŒ	Ø&ˆÔØ ˆŒØˆŒ
Ø7;ˆŒ	ˆ	ˆ	r   r	   c                ó   — d| j         › �S )Nzhttp://127.0.0.1:)r   ©r"   s    r   Ú	http_basezChromiumProcess.http_base5   s   € à. 4¤9Ð.Ð.Ð.r   ú
str | Nonec              ƒ  óZ  K  — 	 t          j        dd¬¦  «        4 ƒd {V —†}|                     | j        › d�¦  «        ƒ d {V —†}|                     ¦   «                              d¦  «        cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S # t           j        t          f$ r Y d S w xY w)Né   F)ÚtimeoutÚ	trust_envz/json/versionÚwebSocketDebuggerUrl)ÚhttpxÚAsyncClientÚgetr&   ÚjsonÚ	HTTPErrorÚ
ValueError)r"   ÚclientÚrs      r   Úbrowser_ws_urlzChromiumProcess.browser_ws_url9   sM  è è € ð	åÔ(°¸eÐDÑDÔDð <ð <ð <ð <ð <ð <ð <ÈØ Ÿ*š*¨¬Ð%EÐ%EÐ%EÑFÔFÐFÐFÐFÐFÐFÐF�Ø—v’v‘x”x—|’|Ð$:Ñ;Ô;ð<ð <ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <øõ ”¥Ð,ð 	ð 	ð 	Ø�4�4ð	øøøs5   „B  A
A=Á*B Á=
BÂB Â
BÂB ÂB*Â)B*c              ƒ  ó  K  — |                       ¦   «         ƒ d{V —†x}r"t                               d| j        ¦  «         |S | j                             dd¬¦  «         dD ]O}t          j        t          ¦  «        5  | j        |z   	                    ¦   «          ddd¦  «         n# 1 swxY w Y   ŒP| j
        d| j        › �dd| j        › �d	d
dddddg}| j        r|                     dd| j        › �¦  «         | j        r	ddg|dd…<   t          t          d¦  «        r-t          j        ¦   «         dk    r|                     dd¦  «         t                               d| j
        ¦  «         t#          j        |t"          j        j        t"          j        j        dœŽƒ d{V —†| _        t-          d¦  «        D ]J}|                       ¦   «         ƒ d{V —†x}r|c S | j        j        � nt#          j        d¦  «        ƒ d{V —† ŒKt3          d¦  «        ‚)zLStart (or attach to an already running) Chromium; return the browser ws URL.Nz(attached to existing Chromium on port %sT)ÚparentsÚexist_ok)ÚSingletonLockÚSingletonSocketÚSingletonCookiez--remote-debugging-port=z--remote-allow-origins=*z--user-data-dir=z--no-first-runz--no-default-browser-checkz--disable-dev-shm-usagez--disable-background-networkingz*--autoplay-policy=no-user-gesture-requiredz--window-size=1440,2200zabout:blanké   z--proxy-server=z--headless=newz--disable-gpuÚgeteuidr   z--no-sandboxzlaunching Chromium: %s)ÚstdoutÚstderré<   g      à?z+Chromium did not expose a DevTools endpoint)r5   ÚlogÚinfor   r   ÚmkdirÚ
contextlibÚsuppressr   Úunlinkr   r   Úinsertr   Úhasattrr   r=   ÚasyncioÚcreate_subprocess_execÚ
subprocessÚDEVNULLr!   ÚrangeÚ
returncodeÚsleepÚRuntimeError)r"   ÚurlÚlockÚargsÚ_s        r   ÚstartzChromiumProcess.startB   s¨  è è € à×+Ò+Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ˆ3ð 	Ý�HŠHÐ?ÀÄÑKÔKÐKØˆJàÔ×Ò t°dÐÑ;Ô;Ð;ØKð 	3ð 	3ˆDÝÔ$Õ%6Ñ7Ô7ð 3ð 3ØÔ! DÑ(×0Ò0Ñ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3øð ŒOØ2 t¤yÐ2Ð2Ø&Ø1˜tÔ/Ð1Ð1ØØ(Ø%Ø-Ø8Ø%Øð
ˆð Œ:ð 	;Ø�KŠK˜Ð9¨T¬ZÐ9Ð9Ñ:Ô:Ð:ØŒ=ð 	<Ø)¨?Ð;ˆD��1�‰IÝ•2�yÑ!Ô!ð 	+¥b¤j¡l¤l°aÒ&7Ð&7Ø�KŠK˜˜>Ñ*Ô*Ð*å�ŠÐ)¨4¬?Ñ;Ô;Ð;Ý!Ô8Ø�'Ô,Ô4½WÔ=OÔ=Wð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆŒ	õ �r‘”ð 	%ð 	%ˆAØ ×/Ò/Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ˆsð Ø�
�
�
ØŒyÔ#Ð/Ø�Ý”- Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ÝÐHÑIÔIÐIs   Á:B#Â#B'	Â*B'	ÚNonec              ƒ  ó4  K  — | j         r‡| j         j        €{| j                              ¦   «          	 t          j        | j                              ¦   «         d¦  «        ƒ d {V —† n.# t          j        $ r | j                              ¦   «          Y nw xY wd | _         d S )Né
   )r!   rN   Ú	terminaterI   Úwait_forÚwaitÚTimeoutErrorÚkillr%   s    r   ÚstopzChromiumProcess.stopm   s¨   è è € ØŒ9ð 	!˜œÔ-Ð5ØŒI×ÒÑ!Ô!Ð!ð!ÝÔ& t¤y§~¢~Ñ'7Ô'7¸Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<øÝÔ'ð !ð !ð !Ø”	—’Ñ Ô Ð Ð Ð ð!øøøàˆŒ	ˆ	ˆ	s   °2A# Á#(BÂBN)Tr   )
r   r   r   r   r   r   r   r   r   r   )r	   r   )r	   r'   )r	   rV   )	Ú__name__Ú
__module__Ú__qualname__r#   Úpropertyr&   r5   rU   r^   r   r   r   r   r   +   s”   € € € € € ØW[Ø ð<ð <ð <ð <ð <ð ð/ð /ð /ñ „Xð/ðð ð ð ð)Jð )Jð )Jð )JðVð ð ð ð ð r   r   )r   )r   r   r	   r   )Ú__doc__Ú
__future__r   rI   rD   Úloggingr   r   Úpathlibr   r-   Ú	getLoggerr_   rA   r   Ú
expandvarsr   r   r   r   r   r   ú<module>ri      s!  ðØ "Ð "à "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ð Ð à €€€à€gÔ˜Ñ!Ô!€ð ØØØØØØBà<ØBØ=ØCØ„G×ÒÐMÑNÔNØ„G×ÒÐNÑOÔOð€ð$ð ð ð ð ðIð Ið Ið Ið Iñ Iô Ið Ið Ið Ir   