
    $)fC                    x   d dl mZ ddlmZmZ d dlmZ d dlZd dlZddl	m
Z
  G d de      Z G d	 d
e      Z G d dej                        Ze G d d             Z G d dej                        Z G d dej                        Ze G d d             Ze G d d             Ze G d d             Z	 	 d(	 	 	 	 	 	 	 	 	 d)dZ	 	 d(	 	 	 	 	 	 	 d*dZ	 d+	 	 	 d,dZ	 	 d(	 	 	 	 	 	 	 d-dZd.dZd.dZd.dZd/d Zd0d!Z	 	 d(	 	 	 	 	 d1d"Z 	 d+	 	 	 	 	 d2d#Z!	 	 	 	 d3d$Z"	 d+	 	 	 d4d%Z#	 	 	 	 	 	 d5d&Z$	 	 d(	 	 	 	 	 d6d'Z%y)7    )annotations   )event_classT_JSON_DICT)	dataclassN)targetc                  8     e Zd ZddZedd       Z fdZ xZS )BrowserContextIDc                    | S N selfs    k/var/www/html/flask-app/venv/lib/python3.12/site-packages/selenium/webdriver/common/devtools/v85/browser.pyto_jsonzBrowserContextID.to_json           c                     | |      S r   r   clsjsons     r   	from_jsonzBrowserContextID.from_json       4yr   c                >    dj                  t        | 	               S )NzBrowserContextID({})formatsuper__repr__r   	__class__s    r   r   zBrowserContextID.__repr__   s    %,,UW-=-?@@r   )returnstr)r   r"   r!   r
   __name__
__module____qualname__r   classmethodr   r   __classcell__r    s   @r   r
   r
      s(      A Ar   r
   c                  8     e Zd ZddZedd       Z fdZ xZS )WindowIDc                    | S r   r   r   s    r   r   zWindowID.to_json   r   r   c                     | |      S r   r   r   s     r   r   zWindowID.from_json   r   r   c                >    dj                  t        | 	               S )NzWindowID({})r   r   s    r   r   zWindowID.__repr__#   s    $$UW%5%788r   )r!   int)r   r/   r!   r+   r#   r)   s   @r   r+   r+      s&      9 9r   r+   c                  6    e Zd ZdZdZdZdZdZd Ze	d        Z
y)	WindowStatez*
    The state of the browser window.
    normal	minimized	maximized
fullscreenc                    | j                   S r   valuer   s    r   r   zWindowState.to_json0       zzr   c                     | |      S r   r   r   s     r   r   zWindowState.from_json3   r   r   N)r$   r%   r&   __doc__NORMAL	MINIMIZED	MAXIMIZED
FULLSCREENr   r'   r   r   r   r   r1   r1   '   s6     FIIJ  r   r1   c                  n    e Zd ZU dZdZded<   dZded<   dZded<   dZded<   dZ	ded	<   d
 Z
ed        Zy)Boundsz+
    Browser window bounds information
    Nztyping.Optional[int]lefttopwidthheightztyping.Optional[WindowState]window_statec                D   t               }| j                  | j                  |d<   | j                  | j                  |d<   | j                  | j                  |d<   | j                  | j                  |d<   | j
                  | j
                  j                         |d<   |S )NrB   rC   rD   rE   windowState)dictrB   rC   rD   rE   rF   r   r   r   s     r   r   zBounds.to_jsonL   s    v99 99DL88((DK::! JJDM;;"![[DN("&"3"3";";"=Dr   c           
          | d|v rt        |d         nd d|v rt        |d         nd d|v rt        |d         nd d|v rt        |d         nd d|v rt        j                  |d               S d       S )NrB   rC   rD   rE   rH   )rB   rC   rD   rE   rF   )r/   r1   r   r   s     r   r   zBounds.from_jsonZ   s    &,nT&\"$$)TMDK t(/4#d7m$T*2d*:3tH~&GTX\G\..tM/BC
 	

 cg
 	
r   )r$   r%   r&   r;   rB   __annotations__rC   rD   rE   rF   r   r'   r   r   r   r   rA   rA   8   sa     "&D
% !%C	$ #'E& $(F ' 26L.5 
 
r   rA   c                  v    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZd Zed        Zy)PermissionTypeaccessibilityEventsaudioCapturebackgroundSyncbackgroundFetchclipboardReadWriteclipboardSanitizedWritedurableStorageflashgeolocationmidi	midiSysexnfcnotificationspaymentHandlerperiodicBackgroundSyncprotectedMediaIdentifiersensorsvideoCaptureidleDetectionwakeLockScreenwakeLockSystemc                    | j                   S r   r7   r   s    r   r   zPermissionType.to_json|   r9   r   c                     | |      S r   r   r   s     r   r   zPermissionType.from_json   r   r   N)r$   r%   r&   ACCESSIBILITY_EVENTSAUDIO_CAPTUREBACKGROUND_SYNCBACKGROUND_FETCHCLIPBOARD_READ_WRITECLIPBOARD_SANITIZED_WRITEDURABLE_STORAGEFLASHGEOLOCATIONMIDI
MIDI_SYSEXNFCNOTIFICATIONSPAYMENT_HANDLERPERIODIC_BACKGROUND_SYNCPROTECTED_MEDIA_IDENTIFIERSENSORSVIDEO_CAPTUREIDLE_DETECTIONWAKE_LOCK_SCREENWAKE_LOCK_SYSTEMr   r'   r   r   r   r   rN   rN   e   s    0"M&O(/ 9&OEKDJ
C#M&O7!;G"M$N''  r   rN   c                  .    e Zd ZdZdZdZd Zed        Zy)PermissionSettinggranteddeniedpromptc                    | j                   S r   r7   r   s    r   r   zPermissionSetting.to_json   r9   r   c                     | |      S r   r   r   s     r   r   zPermissionSetting.from_json   r   r   N)	r$   r%   r&   GRANTEDDENIEDPROMPTr   r'   r   r   r   r   r|   r|      s*    GFF  r   r|   c                  j    e Zd ZU dZded<   dZded<   dZded<   dZded	<   dZded
<   d Z	e
d        Zy)PermissionDescriptorz
    Definition of PermissionDescriptor defined in the Permissions API:
    https://w3c.github.io/permissions/#dictdef-permissiondescriptor.
    r"   nameNtyping.Optional[bool]sysexuser_visible_onlytyping.Optional[str]type_allow_without_sanitizationc                   t               }| j                  |d<   | j                  | j                  |d<   | j                  | j                  |d<   | j                  | j                  |d<   | j
                  | j
                  |d<   |S )Nr   r   userVisibleOnlytypeallowWithoutSanitization)rI   r   r   r   r   r   rJ   s     r   r   zPermissionDescriptor.to_json   s    vyyV::! JJDM!!-&*&<&<D"#::!::DL**6/3/N/ND+,r   c           
          | t        |d         d|v rt        |d         nd d|v rt        |d         nd d|v rt        |d         nd d|v rt        |d               S d       S )Nr   r   r   r   r   )r   r   r   r   r   )r"   boolr   s     r   r   zPermissionDescriptor.from_json   s    T&\")0D$tG}%d?PTX?Xd4(9#:;^b'-~#d6l#4QkosQstD1K,L'M
 	

 z~
 	
r   )r$   r%   r&   r;   rL   r   r   r   r   r   r'   r   r   r   r   r   r      s]     I $(E ' 04,3 #'E& 9= 5< 
 
r   r   c                  F    e Zd ZU dZded<   ded<   ded<   d Zed        Zy)	Bucketz"
    Chrome histogram bucket.
    r/   lowhighcountc                t    t               }| j                  |d<   | j                  |d<   | j                  |d<   |S )Nr   r   r   )rI   r   r   r   rJ   s     r   r   zBucket.to_json   s5    vhhUyyV

Wr   c                `     | t        |d         t        |d         t        |d               S )Nr   r   r   )r   r   r   )r/   r   s     r   r   zBucket.from_json   s3    DK T&\"d7m$
 	
r   Nr$   r%   r&   r;   rL   r   r'   r   r   r   r   r   r      s5     
H I J 
 
r   r   c                  P    e Zd ZU dZded<   ded<   ded<   ded<   d	 Zed
        Zy)	Histogramz
    Chrome histogram.
    r"   r   r/   sum_r   ztyping.List[Bucket]bucketsc                    t               }| j                  |d<   | j                  |d<   | j                  |d<   | j                  D cg c]  }|j                          c}|d<   |S c c}w )Nr   sumr   r   )rI   r   r   r   r   r   )r   r   is      r   r   zHistogram.to_json   sX    vyyViiU

W04=1199;=Y >s   A%c                     | t        |d         t        |d         t        |d         |d   D cg c]  }t        j                  |       c}      S c c}w )Nr   r   r   r   )r   r   r   r   )r"   r/   r   r   )r   r   r   s      r   r   zHistogram.from_json   sV    T&\"T%[!d7m$26y/BQV%%a(B	
 	
 Cs   ANr   r   r   r   r   r      s=     I I J !  
 
r   r   c              #     K   t               }| j                         |d<   |j                         |d<   |||d<   ||j                         |d<   d|d}|}yw)a  
    Set permission settings for given origin.

    **EXPERIMENTAL**

    :param permission: Descriptor of permission to override.
    :param setting: Setting of the permission.
    :param origin: *(Optional)* Origin the permission applies to, all origins if not specified.
    :param browser_context_id: *(Optional)* Context to override. When omitted, default browser context is used.
    
permissionsettingNoriginbrowserContextIdzBrowser.setPermissionmethodparamsrI   r   )r   r   r   browser_context_idr   cmd_dictr   s          r   set_permissionr     ss       &F%--/F<)F9!x%%7%?%?%A!")H >Ds   AAc              #     K   t               }| D cg c]  }|j                          c}|d<   |||d<   ||j                         |d<   d|d}|}yc c}w w)aa  
    Grant specific permissions to the given origin and reject all others.

    **EXPERIMENTAL**

    :param permissions:
    :param origin: *(Optional)* Origin the permission applies to, all origins if not specified.
    :param browser_context_id: *(Optional)* BrowserContext to override permissions. When omitted, default browser context is used.
    permissionsNr   r   zBrowser.grantPermissionsr   r   )r   r   r   r   r   r   r   s          r   grant_permissionsr     so      &F2=>QQYY[>F=!x%%7%?%?%A!",H >D ?s   AA1Ac              #  \   K   t               }| | j                         |d<   d|d}|}yw)z
    Reset all permission management for all origins.

    **EXPERIMENTAL**

    :param browser_context_id: *(Optional)* BrowserContext to reset permissions. When omitted, default browser context is used.
    Nr   zBrowser.resetPermissionsr   r   )r   r   r   r   s       r   reset_permissionsr   :  s?      &F%%7%?%?%A!",H >Ds   *,c              #  t   K   t               }| |d<   ||j                         |d<   |||d<   d|d}|}yw)a?  
    Set the behavior when downloading a file.

    **EXPERIMENTAL**

    :param behavior: Whether to allow all or deny all download requests, or use default Chrome behavior if available (otherwise deny). ``allowAndName`` allows download and names files according to their dowmload guids.
    :param browser_context_id: *(Optional)* BrowserContext to set download behavior. When omitted, default browser context is used.
    :param download_path: *(Optional)* The default path to save downloaded files to. This is requred if behavior is set to 'allow' or 'allowAndName'.
    behaviorNr   downloadPathzBrowser.setDownloadBehaviorr   r   )r   r   download_pathr   r   r   s         r   set_download_behaviorr   N  sY      &F!F:%%7%?%?%A!" !.~/H >Ds   68c               #     K   ddi} | }yw)z#
    Close browser gracefully.
    r   zBrowser.closeNr   r   r   s     r   closer   i  s     
 	/H >D   
c               #     K   ddi} | }yw)zC
    Crashes browser on the main thread.

    **EXPERIMENTAL**
    r   zBrowser.crashNr   r   s     r   crashr   s  s      	/H >Dr   c               #     K   ddi} | }yw)z4
    Crashes GPU process.

    **EXPERIMENTAL**
    r   zBrowser.crashGpuProcessNr   r   s     r   crash_gpu_processr     s      	+H >Dr   c               #     K   ddi} | }t        |d         t        |d         t        |d         t        |d         t        |d         fS w)a,  
    Returns version information.

    :returns: A tuple with the following items:

        0. **protocolVersion** - Protocol version.
        1. **product** - Product name.
        2. **revision** - Product revision.
        3. **userAgent** - User-Agent.
        4. **jsVersion** - V8 version.
    r   zBrowser.getVersionprotocolVersionproductrevision	userAgent	jsVersionr"   r   s     r   get_versionr     si      	&H >DD"#$DODDD s   AAc               #  \   K   ddi} | }|d   D cg c]  }t        |       c}S c c}w w)z
    Returns the command line switches for the browser process if, and only if
    --enable-automation is on the commandline.

    **EXPERIMENTAL**

    :returns: Commandline parameters
    r   zBrowser.getBrowserCommandLine	argumentsr   )r   r   r   s      r   get_browser_command_liner     s;      	1H >D -.qCF...s   ,',c              #     K   t               }| | |d<   |||d<   d|d}|}|d   D cg c]  }t        j                  |       c}S c c}w w)aS  
    Get Chrome histograms.

    **EXPERIMENTAL**

    :param query: *(Optional)* Requested substring in name. Only histograms which have query as a substring in their name are extracted. An empty or absent query returns all histograms.
    :param delta: *(Optional)* If true, retrieve delta since last call.
    :returns: Histograms.
    querydeltazBrowser.getHistogramsr   
histogramsrI   r   r   )r   r   r   r   r   r   s         r   get_histogramsr     sg      &Fww)H >D,0,>?qI"???s   )AA
Ac              #  x   K   t               }| |d<   |||d<   d|d}|}t        j                  |d         S w)z
    Get a Chrome histogram by name.

    **EXPERIMENTAL**

    :param name: Requested histogram name.
    :param delta: *(Optional)* If true, retrieve delta since last call.
    :returns: Histogram.
    r   r   zBrowser.getHistogramr   	histogramr   )r   r   r   r   r   s        r   get_histogramr     sS      &FF6Nw(H >DtK011s   8:c              #     K   t               }| j                         |d<   d|d}|}t        j                  |d         S w)z
    Get position and size of the browser window.

    **EXPERIMENTAL**

    :param window_id: Browser window id.
    :returns: Bounds information of the window. When window state is 'minimized', the restored window position and size are returned.
    windowIdzBrowser.getWindowBoundsr   bounds)rI   r   rA   r   )	window_idr   r   r   s       r   get_window_boundsr     sM      &F"**,F:+H >DDN++s   ?Ac              #     K   t               }| | j                         |d<   d|d}|}t        j                  |d         t        j                  |d         fS w)a  
    Get the browser window that contains the devtools target.

    **EXPERIMENTAL**

    :param target_id: *(Optional)* Devtools agent host id. If called as a part of the session, associated targetId is used.
    :returns: A tuple with the following items:

        0. **windowId** - Browser window id.
        1. **bounds** - Bounds information of the window. When window state is 'minimized', the restored window position and size are returned.
    targetIdzBrowser.getWindowForTargetr   r   r   )rI   r   r+   r   rA   )	target_idr   r   r   s       r   get_window_for_targetr     sm      &F&..0z.H >D4
+,h( s   AAc              #  ~   K   t               }| j                         |d<   |j                         |d<   d|d}|}yw)a5  
    Set position and/or size of the browser window.

    **EXPERIMENTAL**

    :param window_id: Browser window id.
    :param bounds: New window bounds. The 'minimized', 'maximized' and 'fullscreen' states cannot be combined with 'left', 'top', 'width' or 'height'. Leaves unspecified fields unchanged.
    r   r   zBrowser.setWindowBoundsr   Nr   )r   r   r   r   r   s        r   set_window_boundsr     sI      &F"**,F:~~'F8+H >Ds   ;=c              #  N   K   t               }| | |d<   |||d<   d|d}|}yw)z
    Set dock tile details, platform-specific.

    **EXPERIMENTAL**

    :param badge_label: *(Optional)*
    :param image: *(Optional)* Png encoded image.
    N
badgeLabelimagezBrowser.setDockTiler   )rI   )badge_labelr   r   r   r   s        r   set_dock_tiler   .  sD      &F*|w'H >Ds   #%)NN)
r   r   r   r|   r   r   r   !typing.Optional[BrowserContextID]r!   0typing.Generator[T_JSON_DICT, T_JSON_DICT, None])r   ztyping.List[PermissionType]r   r   r   r   r!   r   r   )r   r   r!   r   )r   r"   r   r   r   r   r!   r   )r!   r   )r!   zQtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[str, str, str, str, str]])r!   z<typing.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[str]])r   r   r   r   r!   zBtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[Histogram]])r   r"   r   r   r!   z5typing.Generator[T_JSON_DICT, T_JSON_DICT, Histogram])r   r+   r!   z2typing.Generator[T_JSON_DICT, T_JSON_DICT, Bounds])r   z typing.Optional[target.TargetID]r!   zJtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[WindowID, Bounds]])r   r+   r   rA   r!   r   )r   r   r   r   r!   r   )&
__future__r   utilr   r   dataclassesr   enumtyping r   r"   r
   r/   r+   Enumr1   rA   rN   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      sd   # * !   	As 	A	9s 	9$)) " )
 )
 )
XTYY >
		 
 +
 +
 +
\ 
 
 
: 
 
 
J (,@D	(" % >	
 
8@ (,@D0$ > 
8	8 AE=	7, AE.2= , 
8	6		2/" '+'+@#@$@ 
J@8 (,22$2 
=22,,	9,, 7;3	Q8 
8. -1&*)# 
8r   