a
    xd}Q                     @  sj  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
 ddl	mZ G dd	 d	eZG d
d deZG dd dejZeG dd dZG dd dejZG dd dejZeG dd dZG dd dejZeG dd dZeG dd dZd^ddddddd d!Zd_d"dddd#d$d%Zd`ddd&d'd(Zdad)ddd*dd+d,d-Zdbd)ddd.d/d0Zdd1d2d3Zdd1d4d5Zdd1d6d7Z d8d1d9d:Z!d;d1d<d=Z"dcdd*d>d?d@dAZ#ddd)d*dBdCdDdEZ$ddFdGdHdIZ%dedJdKdLdMdNZ&ddddOdPdQZ'dfddddRdSdTZ(dddUdVdWZ)edXeG dYdZ dZZ*ed[eG d\d] d]Z+dS )g    )annotations   )event_classT_JSON_DICT)	dataclassN)page)targetc                      s>   e Zd ZddddZedd dddZ fdd	Z  ZS )
BrowserContextIDstrreturnc                 C  s   | S N selfr   r   g/var/www/html/Ranjet/env/lib/python3.9/site-packages/selenium/webdriver/common/devtools/v113/browser.pyto_json   s    zBrowserContextID.to_jsonjsonr   c                 C  s   | |S r   r   clsr   r   r   r   	from_json   s    zBrowserContextID.from_jsonc                   s   d t  S )NzBrowserContextID({})formatsuper__repr__r   	__class__r   r   r      s    zBrowserContextID.__repr____name__
__module____qualname__r   classmethodr   r   __classcell__r   r   r   r   r	      s   r	   c                      s>   e Zd ZddddZedd dddZ fdd	Z  ZS )
WindowIDintr   c                 C  s   | S r   r   r   r   r   r   r      s    zWindowID.to_jsonr   c                 C  s   | |S r   r   r   r   r   r   r       s    zWindowID.from_jsonc                   s   d t  S )NzWindowID({})r   r   r   r   r   r   $   s    zWindowID.__repr__r   r   r   r   r   r$      s   r$   c                   @  s4   e Zd ZdZdZdZdZdZdd Ze	dd	 Z
d
S )WindowStatez*
    The state of the browser window.
    normalZ	minimizedZ	maximizedZ
fullscreenc                 C  s   | j S r   valuer   r   r   r   r   1   s    zWindowState.to_jsonc                 C  s   | |S r   r   r   r   r   r   r   4   s    zWindowState.from_jsonN)r   r    r!   __doc__NORMALZ	MINIMIZEDZ	MAXIMIZEDZ
FULLSCREENr   r"   r   r   r   r   r   r&   (   s   r&   c                   @  sb   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
d Z
edd ZdS )Boundsz+
    Browser window bounds information
    Nztyping.Optional[int]lefttopwidthheightztyping.Optional[WindowState]window_statec                 C  sr   t  }| jd ur| j|d< | jd ur.| j|d< | jd urB| j|d< | jd urV| j|d< | jd urn| j |d< |S )Nr-   r.   r/   r0   windowState)dictr-   r.   r/   r0   r1   r   r   r   r   r   r   r   M   s    








zBounds.to_jsonc              	   C  sx   | d|v rt |d nd d|v r,t |d nd d|v rBt |d nd d|v rXt |d nd d|v rpt|d nd dS )Nr-   r.   r/   r0   r2   )r-   r.   r/   r0   r1   )r%   r&   r   r   r   r   r   r   [   s    zBounds.from_json)r   r    r!   r*   r-   __annotations__r.   r/   r0   r1   r   r"   r   r   r   r   r   r,   9   s   
r,   c                   @  s   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dZdZdZdZdZdd Zedd Z d S )!PermissionTypeZaccessibilityEventsZaudioCaptureZbackgroundSyncZbackgroundFetchZclipboardReadWriteZclipboardSanitizedWriteZdisplayCaptureZdurableStorageZflashZgeolocationZidleDetectionZ
localFontsZmidiZ	midiSysexZnfcZnotificationsZpaymentHandlerZperiodicBackgroundSyncZprotectedMediaIdentifierZsensorsZstorageAccessZtopLevelStorageAccessZvideoCaptureZvideoCapturePanTiltZoomZwakeLockScreenZwakeLockSystemZwindowManagementc                 C  s   | j S r   r(   r   r   r   r   r      s    zPermissionType.to_jsonc                 C  s   | |S r   r   r   r   r   r   r      s    zPermissionType.from_jsonN)!r   r    r!   ZACCESSIBILITY_EVENTSZAUDIO_CAPTUREZBACKGROUND_SYNCZBACKGROUND_FETCHZCLIPBOARD_READ_WRITEZCLIPBOARD_SANITIZED_WRITEZDISPLAY_CAPTUREZDURABLE_STORAGEZFLASHZGEOLOCATIONZIDLE_DETECTIONZLOCAL_FONTSZMIDIZ
MIDI_SYSEXNFCZNOTIFICATIONSZPAYMENT_HANDLERZPERIODIC_BACKGROUND_SYNCZPROTECTED_MEDIA_IDENTIFIERZSENSORSZSTORAGE_ACCESSZTOP_LEVEL_STORAGE_ACCESSZVIDEO_CAPTUREZVIDEO_CAPTURE_PAN_TILT_ZOOMZWAKE_LOCK_SCREENZWAKE_LOCK_SYSTEMZWINDOW_MANAGEMENTr   r"   r   r   r   r   r   r6   f   s<   r6   c                   @  s,   e Zd ZdZdZdZdd Zedd ZdS )	PermissionSettingZgrantedZdeniedpromptc                 C  s   | j S r   r(   r   r   r   r   r      s    zPermissionSetting.to_jsonc                 C  s   | |S r   r   r   r   r   r   r      s    zPermissionSetting.from_jsonN)	r   r    r!   ZGRANTEDZDENIEDZPROMPTr   r"   r   r   r   r   r   r8      s   r8   c                   @  s^   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
d Z	e
dd ZdS )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allow_without_sanitizationpan_tilt_zoomc                 C  sd   t  }| j|d< | jd ur$| j|d< | jd ur8| j|d< | jd urL| j|d< | jd ur`| j|d< |S )Nr;   r=   userVisibleOnlyallowWithoutSanitizationpanTiltZoom)r3   r;   r=   r>   r?   r@   r4   r   r   r   r      s    








zPermissionDescriptor.to_jsonc                 C  sj   | t |d d|v r t|d nd d|v r6t|d nd d|v rLt|d nd d|v rbt|d nd dS )Nr;   r=   rA   rB   rC   )r;   r=   r>   r?   r@   )r
   boolr   r   r   r   r      s    
zPermissionDescriptor.from_json)r   r    r!   r*   r5   r=   r>   r?   r@   r   r"   r   r   r   r   r   r:      s   
r:   c                   @  s,   e Zd ZdZdZdZdd Zedd ZdS )	BrowserCommandIdz<
    Browser command ids used by executeBrowserCommand.
    ZopenTabSearchZcloseTabSearchc                 C  s   | j S r   r(   r   r   r   r   r      s    zBrowserCommandId.to_jsonc                 C  s   | |S r   r   r   r   r   r   r      s    zBrowserCommandId.from_jsonN)	r   r    r!   r*   ZOPEN_TAB_SEARCHZCLOSE_TAB_SEARCHr   r"   r   r   r   r   r   rE      s   rE   c                   @  s>   e Zd ZU dZded< ded< ded< dd Zedd	 Zd
S )Bucketz"
    Chrome histogram bucket.
    r%   lowhighcountc                 C  s(   t  }| j|d< | j|d< | j|d< |S )NrG   rH   rI   )r3   rG   rH   rI   r4   r   r   r   r      s
    


zBucket.to_jsonc                 C  s&   | t |d t |d t |d dS )NrG   rH   rI   )rG   rH   rI   )r%   r   r   r   r   r      s
    


zBucket.from_jsonNr   r    r!   r*   r5   r   r"   r   r   r   r   r   rF      s   
rF   c                   @  sF   e Zd ZU dZded< ded< ded< ded< d	d
 Zedd ZdS )	Histogramz
    Chrome histogram.
    r
   r;   r%   sum_rI   ztyping.List[Bucket]bucketsc                 C  s<   t  }| j|d< | j|d< | j|d< dd | jD |d< |S )Nr;   sumrI   c                 S  s   g | ]}|  qS r   r   .0ir   r   r   
<listcomp>
      z%Histogram.to_json.<locals>.<listcomp>rM   )r3   r;   rL   rI   rM   r4   r   r   r   r     s    


zHistogram.to_jsonc                 C  s6   | t |d t|d t|d dd |d D dS )Nr;   rN   rI   c                 S  s   g | ]}t |qS r   )rF   r   rP   r   r   r   rS     rT   z'Histogram.from_json.<locals>.<listcomp>rM   )r;   rL   rI   rM   )r
   r%   r   r   r   r   r     s    


zHistogram.from_jsonNrJ   r   r   r   r   rK      s   
rK   ztyping.Optional[str]z!typing.Optional[BrowserContextID]z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None])
permissionsettingoriginbrowser_context_idr   c                 c  sV   t  }|  |d< | |d< |dur.||d< |durB| |d< d|d}|V }dS )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.
    rU   rV   NrW   browserContextIdzBrowser.setPermissionmethodparamsr3   r   )rU   rV   rW   rX   r\   cmd_dictr   r   r   r   set_permission  s    r_   ztyping.List[PermissionType])permissionsrW   rX   r   c                 c  sP   t  }dd | D |d< |dur(||d< |dur<| |d< d|d}|V }dS )	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.
    c                 S  s   g | ]}|  qS r   rO   rP   r   r   r   rS   D  rT   z%grant_permissions.<locals>.<listcomp>r`   NrW   rY   zBrowser.grantPermissionsrZ   r]   )r`   rW   rX   r\   r^   r   r   r   r   grant_permissions5  s    ra   )rX   r   c                 c  s.   t  }| dur|  |d< d|d}|V }dS )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.
    NrY   zBrowser.resetPermissionsrZ   r]   )rX   r\   r^   r   r   r   r   reset_permissionsP  s    
rb   r
   r<   )behaviorrX   download_pathevents_enabledr   c                 c  sV   t  }| |d< |dur"| |d< |dur2||d< |durB||d< d|d}|V }dS )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 required if behavior is set to 'allow' or 'allowAndName'.
    :param events_enabled: *(Optional)* Whether to emit download events (defaults to false).
    rc   NrY   ZdownloadPathZeventsEnabledzBrowser.setDownloadBehaviorrZ   r]   )rc   rX   rd   re   r\   r^   r   r   r   r   set_download_behaviord  s    rf   )guidrX   r   c                 c  s6   t  }| |d< |dur"| |d< d|d}|V }dS )a   
    Cancel a download if in progress

    **EXPERIMENTAL**

    :param guid: Global unique identifier of the download.
    :param browser_context_id: *(Optional)* BrowserContext to perform the action in. When omitted, default browser context is used.
    rg   NrY   zBrowser.cancelDownloadrZ   r]   )rg   rX   r\   r^   r   r   r   r   cancel_download  s    rh   r   c                  c  s   ddi} | V }dS )z#
    Close browser gracefully.
    r[   zBrowser.closeNr   r^   r   r   r   r   close  s    rj   c                  c  s   ddi} | V }dS )zC
    Crashes browser on the main thread.

    **EXPERIMENTAL**
    r[   zBrowser.crashNr   ri   r   r   r   crash  s    rk   c                  c  s   ddi} | V }dS )z4
    Crashes GPU process.

    **EXPERIMENTAL**
    r[   zBrowser.crashGpuProcessNr   ri   r   r   r   crash_gpu_process  s    rl   zQtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[str, str, str, str, str]]c                  c  sD   ddi} | V }t |d t |d t |d t |d t |d fS )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.getVersionZprotocolVersionproductrevisionZ	userAgentZ	jsVersionr
   ri   r   r   r   get_version  s    




rp   z<typing.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[str]]c                  c  s    ddi} | V }dd |d D S )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.getBrowserCommandLinec                 S  s   g | ]}t |qS r   ro   rP   r   r   r   rS     rT   z,get_browser_command_line.<locals>.<listcomp>	argumentsr   ri   r   r   r   get_browser_command_line  s    
rr   zBtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[Histogram]])querydeltar   c                 c  sH   t  }| dur| |d< |dur&||d< d|d}|V }dd |d D S )	aY  
    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 delta call.
    :returns: Histograms.
    Nrs   rt   zBrowser.getHistogramsrZ   c                 S  s   g | ]}t |qS r   )rK   r   rP   r   r   r   rS     rT   z"get_histograms.<locals>.<listcomp>Z
histogramsr3   )rs   rt   r\   r^   r   r   r   r   get_histograms  s    rv   z5typing.Generator[T_JSON_DICT, T_JSON_DICT, Histogram])r;   rt   r   c                 c  s<   t  }| |d< |dur||d< d|d}|V }t|d S )z
    Get a Chrome histogram by name.

    **EXPERIMENTAL**

    :param name: Requested histogram name.
    :param delta: *(Optional)* If true, retrieve delta since last delta call.
    :returns: Histogram.
    r;   Nrt   zBrowser.getHistogramrZ   Z	histogram)r3   rK   r   )r;   rt   r\   r^   r   r   r   r   get_histogram  s    rw   z2typing.Generator[T_JSON_DICT, T_JSON_DICT, Bounds])	window_idr   c                 c  s0   t  }|  |d< d|d}|V }t|d S )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.getWindowBoundsrZ   bounds)r3   r   r,   r   )rx   r\   r^   r   r   r   r   get_window_bounds  s    r{   z typing.Optional[target.TargetID]zJtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[WindowID, Bounds]])	target_idr   c                 c  sF   t  }| dur|  |d< d|d}|V }t|d t|d fS )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.
    NZtargetIdzBrowser.getWindowForTargetrZ   ry   rz   )r3   r   r$   r   r,   )r|   r\   r^   r   r   r   r   get_window_for_target-  s    r}   )rx   rz   r   c                 c  s2   t  }|  |d< | |d< d|d}|V }dS )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.
    ry   rz   zBrowser.setWindowBoundsrZ   Nr]   )rx   rz   r\   r^   r   r   r   r   set_window_boundsI  s    r~   )badge_labelimager   c                 c  s:   t  }| dur| |d< |dur&||d< d|d}|V }dS )z
    Set dock tile details, platform-specific.

    **EXPERIMENTAL**

    :param badge_label: *(Optional)*
    :param image: *(Optional)* Png encoded image.
    NZ
badgeLabelr   zBrowser.setDockTilerZ   ru   )r   r   r\   r^   r   r   r   r   set_dock_tile_  s    r   )
command_idr   c                 c  s&   t  }|  |d< d|d}|V }dS )zi
    Invoke custom browser commands used by telemetry.

    **EXPERIMENTAL**

    :param command_id:
    Z	commandIdzBrowser.executeBrowserCommandrZ   Nr]   )r   r\   r^   r   r   r   r   execute_browser_commandw  s    
r   zBrowser.downloadWillBeginc                   @  sF   e Zd ZU dZded< ded< ded< ded< edd d	d
dZdS )DownloadWillBeginzM
    **EXPERIMENTAL**

    Fired when page is about to start a download.
    zpage.FrameIdframe_idr
   rg   urlsuggested_filenamer   r   c                 C  s4   | t j|d t|d t|d t|d dS )NZframeIdrg   r   ZsuggestedFilename)r   rg   r   r   )r   ZFrameIdr   r
   r   r   r   r   r     s    


zDownloadWillBegin.from_jsonNr   r    r!   r*   r5   r"   r   r   r   r   r   r     s   
r   zBrowser.downloadProgressc                   @  sF   e Zd ZU dZded< ded< ded< ded< edd d	d
dZdS )DownloadProgresszc
    **EXPERIMENTAL**

    Fired when download makes progress. Last call has ``done`` == true.
    r
   rg   floattotal_bytesreceived_bytesstater   r   c                 C  s0   | t |d t|d t|d t |d dS )Nrg   Z
totalBytesZreceivedBytesr   )rg   r   r   r   )r
   r   r   r   r   r   r     s    



zDownloadProgress.from_jsonNr   r   r   r   r   r     s   
r   )NN)NN)N)NNN)N)NN)N)N)NN),
__future__r   utilr   r   Zdataclassesr   enumtyping r   r   r
   r	   r%   r$   Enumr&   r,   r6   r8   r:   rE   rF   rK   r_   ra   rb   rf   rh   rj   rk   rl   rp   rr   rv   rw   r{   r}   r~   r   r   r   r   r   r   r   r   <module>   st   ,%.%         ! 
      