a
    xde                     @  s  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 ddl	mZ eG d	d
 d
ZeG dd d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G dd dejZddddZddddZddddZddd d!Zd"dd#d$d%Zd~d&dd#d'd(Zd)dd*d+d,Zdd-dd.d/d0Zdd1d1d)d"d2d3d3d3d3d&d4d5d6dd7d8d9Zd"dd:d;d<Zd"dd=d>d?Zdd"d@ddAdBdCZ dd@dDddEdFdGZ!dHddIdJdKZ"dd2d2d2ddLdMdNZ#d"d"ddOdPdQZ$dddRdSZ%dHddTdUdVZ&d)ddWdXdYZ'd"ddZd[d\Z(dd"d3dd]d^d_Z)ddd2d3d`dadbdcddZ*dd@ddedfdgZ+dHddhdidjZ,d1d1ddkdldmZ-dnddodpdqZ.d1ddrdsdtZ/ddHd@d@duddvdwdxZ0d"dd#dydzZ1ed{eG d|d} d}Z2dS )    )annotations   )event_classT_JSON_DICT)	dataclassN)dom)network)pagec                   @  s6   e Zd ZU dZded< ded< dd Zedd	 Zd
S )ScreenOrientationz
    Screen orientation.
    strtype_intanglec                 C  s   t  }| j|d< | j|d< |S )Ntyper   )dictr   r   selfjson r   i/var/www/html/Ranjet/env/lib/python3.9/site-packages/selenium/webdriver/common/devtools/v112/emulation.pyto_json   s    

zScreenOrientation.to_jsonc                 C  s   | t |d t|d dS )Nr   r   )r   r   r   r   clsr   r   r   r   	from_json"   s    

zScreenOrientation.from_jsonN__name__
__module____qualname____doc____annotations__r   classmethodr   r   r   r   r   r
      s   
r
   c                   @  s:   e Zd ZU ded< ded< ded< dd Zedd	 Zd
S )DisplayFeaturer   orientationr   offsetmask_lengthc                 C  s(   t  }| j|d< | j|d< | j|d< |S )Nr#   r$   
maskLength)r   r#   r$   r%   r   r   r   r   r   8   s
    


zDisplayFeature.to_jsonc                 C  s&   | t |d t|d t|d dS )Nr#   r$   r&   )r#   r$   r%   r   r   r   r   r   r   ?   s
    


zDisplayFeature.from_jsonNr   r   r   r    r   r!   r   r   r   r   r   r"   *   s   
r"   c                   @  s2   e Zd ZU ded< ded< dd Zedd ZdS )	MediaFeaturer   namevaluec                 C  s   t  }| j|d< | j|d< |S )Nr)   r*   )r   r)   r*   r   r   r   r   r   N   s    

zMediaFeature.to_jsonc                 C  s   | t |d t |d dS )Nr)   r*   )r)   r*   r   r   r   r   r   r   T   s    

zMediaFeature.from_jsonNr'   r   r   r   r   r(   H   s
   
r(   c                   @  s0   e Zd ZdZdZdZdZdd Zedd Z	d	S )
VirtualTimePolicya?  
    advance: If the scheduler runs out of immediate work, the virtual time base may fast forward to
    allow the next delayed task (if any) to run; pause: The virtual time base may not advance;
    pauseIfNetworkFetchesPending: The virtual time base may not advance if there are any pending
    resource fetches.
    ZadvancepauseZpauseIfNetworkFetchesPendingc                 C  s   | j S Nr*   r   r   r   r   r   g   s    zVirtualTimePolicy.to_jsonc                 C  s   | |S r.   r   r   r   r   r   r   j   s    zVirtualTimePolicy.from_jsonN)
r   r   r   r   ZADVANCEZPAUSEZ PAUSE_IF_NETWORK_FETCHES_PENDINGr   r!   r   r   r   r   r   r,   \   s   r,   c                   @  s6   e Zd ZU dZded< ded< dd Zedd Zd	S )
UserAgentBrandVersionzg
    Used to specify User Agent Cient Hints to emulate. See https://wicg.github.io/ua-client-hints
    r   brandversionc                 C  s   t  }| j|d< | j|d< |S )Nr2   r3   )r   r2   r3   r   r   r   r   r   x   s    

zUserAgentBrandVersion.to_jsonc                 C  s   | t |d t |d dS )Nr2   r3   )r2   r3   r+   r   r   r   r   r   ~   s    

zUserAgentBrandVersion.from_jsonNr   r   r   r   r   r1   o   s   
r1   c                   @  s   e Zd ZU dZded< ded< ded< ded< 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	ded< dd Z
edd Zd	S )UserAgentMetadataz
    Used to specify User Agent Cient Hints to emulate. See https://wicg.github.io/ua-client-hints
    Missing optional values will be filled in by the target with what it would normally use.
    r   platformplatform_versionarchitecturemodelboolmobileNz3typing.Optional[typing.List[UserAgentBrandVersion]]brandsfull_version_listtyping.Optional[str]full_versionbitnesstyping.Optional[bool]wow64c                 C  s   t  }| j|d< | j|d< | j|d< | j|d< | j|d< | jd urVdd | jD |d< | jd urtd	d | jD |d
< | jd ur| j|d< | j	d ur| j	|d< | j
d ur| j
|d< |S )Nr5   platformVersionr7   r8   r:   c                 S  s   g | ]}|  qS r   r   .0ir   r   r   
<listcomp>       z-UserAgentMetadata.to_json.<locals>.<listcomp>r;   c                 S  s   g | ]}|  qS r   rC   rD   r   r   r   rG      rH   fullVersionListfullVersionr?   rA   )r   r5   r6   r7   r8   r:   r;   r<   r>   r?   rA   r   r   r   r   r      s"    












zUserAgentMetadata.to_jsonc                 C  s   | t |d t |d t |d t |d t|d d|v rNdd |d D nd d	|v rjd
d |d	 D nd d|v rt |d nd d|v rt |d nd d|v rt|d nd d
S )Nr5   rB   r7   r8   r:   r;   c                 S  s   g | ]}t |qS r   r1   r   rD   r   r   r   rG      rH   z/UserAgentMetadata.from_json.<locals>.<listcomp>rI   c                 S  s   g | ]}t |qS r   rK   rD   r   r   r   rG      rH   rJ   r?   rA   )
r5   r6   r7   r8   r:   r;   r<   r>   r?   rA   )r   r9   r   r   r   r   r      s    




zUserAgentMetadata.from_json)r   r   r   r   r    r;   r<   r>   r?   rA   r   r!   r   r   r   r   r   r4      s   
r4   c                   @  s,   e Zd ZdZdZdZdd Zedd ZdS )	DisabledImageTypez3
    Enum of image types that can be disabled.
    ZavifZwebpc                 C  s   | j S r.   r/   r0   r   r   r   r      s    zDisabledImageType.to_jsonc                 C  s   | |S r.   r   r   r   r   r   r      s    zDisabledImageType.from_jsonN)	r   r   r   r   ZAVIFZWEBPr   r!   r   r   r   r   r   rL      s   rL   z0typing.Generator[T_JSON_DICT, T_JSON_DICT, bool])returnc                  c  s   ddi} | V }t |d S )z^
    Tells whether emulation is supported.

    :returns: True if emulation is supported.
    methodzEmulation.canEmulateresult)r9   cmd_dictr   r   r   r   can_emulate   s    rR   z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]c                  c  s   ddi} | V }dS )z/
    Clears the overridden device metrics.
    rN   z$Emulation.clearDeviceMetricsOverrideNr   rP   r   r   r   clear_device_metrics_override   s    rS   c                  c  s   ddi} | V }dS )z?
    Clears the overridden Geolocation Position and Error.
    rN   z"Emulation.clearGeolocationOverrideNr   rP   r   r   r   clear_geolocation_override   s    rT   c                  c  s   ddi} | V }dS )z[
    Requests that page scale factor is reset to initial values.

    **EXPERIMENTAL**
    rN   zEmulation.resetPageScaleFactorNr   rP   r   r   r   reset_page_scale_factor   s    rU   r9   )enabledrM   c                 c  s"   t  }| |d< d|d}|V }dS )z
    Enables or disables simulating a focused and active page.

    **EXPERIMENTAL**

    :param enabled: Whether to enable to disable focus emulation.
    rV   z"Emulation.setFocusEmulationEnabledrN   paramsNr   rV   rX   rQ   r   r   r   r   set_focus_emulation_enabled  s    
r[   r@   c                 c  s*   t  }| dur| |d< d|d}|V }dS )z
    Automatically render all web contents using a dark theme.

    **EXPERIMENTAL**

    :param enabled: *(Optional)* Whether to enable or disable automatic dark mode. If not specified, any existing override will be cleared.
    NrV   z!Emulation.setAutoDarkModeOverriderW   rY   rZ   r   r   r   set_auto_dark_mode_override  s    
r\   float)raterM   c                 c  s"   t  }| |d< d|d}|V }dS )z
    Enables CPU throttling to emulate slow CPUs.

    **EXPERIMENTAL**

    :param rate: Throttling rate as a slowdown factor (1 is no throttle, 2 is 2x slowdown, etc).
    r^   zEmulation.setCPUThrottlingRaterW   NrY   )r^   rX   rQ   r   r   r   r   set_cpu_throttling_rate(  s    
r_   ztyping.Optional[dom.RGBA])colorrM   c                 c  s.   t  }| dur|  |d< d|d}|V }dS )a  
    Sets or clears an override of the default background color of the frame. This override is used
    if the content does not specify one.

    :param color: *(Optional)* RGBA of the default background color. If not specified, any existing override will be cleared.
    Nr`   z+Emulation.setDefaultBackgroundColorOverriderW   r   r   )r`   rX   rQ   r   r   r   r   %set_default_background_color_override;  s    	rb   r   ztyping.Optional[float]ztyping.Optional[int]z"typing.Optional[ScreenOrientation]ztyping.Optional[page.Viewport]ztyping.Optional[DisplayFeature])widthheightdevice_scale_factorr:   scalescreen_widthscreen_height
position_x
position_ydont_set_visible_sizescreen_orientationviewportdisplay_featurerM   c                 c  s   t  }| |d< ||d< ||d< ||d< |dur6||d< |durF||d< |durV||d< |durf||d	< |durv||d
< |	dur|	|d< |
dur|
 |d< |dur| |d< |dur| |d< d|d}|V }dS )a[  
    Overrides the values of device screen dimensions (window.screen.width, window.screen.height,
    window.innerWidth, window.innerHeight, and "device-width"/"device-height"-related CSS media
    query results).

    :param width: Overriding width value in pixels (minimum 0, maximum 10000000). 0 disables the override.
    :param height: Overriding height value in pixels (minimum 0, maximum 10000000). 0 disables the override.
    :param device_scale_factor: Overriding device scale factor value. 0 disables the override.
    :param mobile: Whether to emulate mobile device. This includes viewport meta tag, overlay scrollbars, text autosizing and more.
    :param scale: **(EXPERIMENTAL)** *(Optional)* Scale to apply to resulting view image.
    :param screen_width: **(EXPERIMENTAL)** *(Optional)* Overriding screen width value in pixels (minimum 0, maximum 10000000).
    :param screen_height: **(EXPERIMENTAL)** *(Optional)* Overriding screen height value in pixels (minimum 0, maximum 10000000).
    :param position_x: **(EXPERIMENTAL)** *(Optional)* Overriding view X position on screen in pixels (minimum 0, maximum 10000000).
    :param position_y: **(EXPERIMENTAL)** *(Optional)* Overriding view Y position on screen in pixels (minimum 0, maximum 10000000).
    :param dont_set_visible_size: **(EXPERIMENTAL)** *(Optional)* Do not set visible view size, rely upon explicit setVisibleSize call.
    :param screen_orientation: *(Optional)* Screen orientation override.
    :param viewport: **(EXPERIMENTAL)** *(Optional)* If set, the visible area of the page will be overridden to this viewport. This viewport change is not observed by the page, e.g. viewport-relative elements do not change positions.
    :param display_feature: **(EXPERIMENTAL)** *(Optional)* If set, the display feature of a multi-segment screen. If not set, multi-segment support is turned-off.
    rc   rd   ZdeviceScaleFactorr:   Nrf   ZscreenWidthZscreenHeightZ	positionXZ	positionYZdontSetVisibleSizeZscreenOrientationrm   ZdisplayFeaturez"Emulation.setDeviceMetricsOverriderW   ra   )rc   rd   re   r:   rf   rg   rh   ri   rj   rk   rl   rm   rn   rX   rQ   r   r   r   r   set_device_metrics_overrideN  s6    "ro   )hiddenrM   c                 c  s"   t  }| |d< d|d}|V }dS )z\


    **EXPERIMENTAL**

    :param hidden: Whether scrollbars should be always hidden.
    rp   zEmulation.setScrollbarsHiddenrW   NrY   )rp   rX   rQ   r   r   r   r   set_scrollbars_hidden  s    
rq   )disabledrM   c                 c  s"   t  }| |d< d|d}|V }dS )zc


    **EXPERIMENTAL**

    :param disabled: Whether document.coookie API should be disabled.
    rr   z#Emulation.setDocumentCookieDisabledrW   NrY   )rr   rX   rQ   r   r   r   r   set_document_cookie_disabled  s    
rs   r=   )rV   configurationrM   c                 c  s2   t  }| |d< |dur||d< d|d}|V }dS )z


    **EXPERIMENTAL**

    :param enabled: Whether touch emulation based on mouse input should be enabled.
    :param configuration: *(Optional)* Touch/gesture events configuration. Default: current platform.
    rV   Nrt   z$Emulation.setEmitTouchEventsForMouserW   rY   )rV   rt   rX   rQ   r   r   r   r   set_emit_touch_events_for_mouse  s    ru   z*typing.Optional[typing.List[MediaFeature]])mediafeaturesrM   c                 c  sD   t  }| dur| |d< |dur0dd |D |d< d|d}|V }dS )z
    Emulates the given media type or media feature for CSS media queries.

    :param media: *(Optional)* Media type to emulate. Empty string disables the override.
    :param features: *(Optional)* Media features to emulate.
    Nrv   c                 S  s   g | ]}|  qS r   rC   rD   r   r   r   rG     rH   z&set_emulated_media.<locals>.<listcomp>rw   zEmulation.setEmulatedMediarW   rY   )rv   rw   rX   rQ   r   r   r   r   set_emulated_media  s    
rx   r   )r   rM   c                 c  s"   t  }| |d< d|d}|V }dS )a  
    Emulates the given vision deficiency.

    **EXPERIMENTAL**

    :param type_: Vision deficiency to emulate. Order: best-effort emulations come first, followed by any physiologically accurate emulations for medically recognized color vision deficiencies.
    r   z%Emulation.setEmulatedVisionDeficiencyrW   NrY   )r   rX   rQ   r   r   r   r   set_emulated_vision_deficiency  s    
ry   )latitude	longitudeaccuracyrM   c                 c  sJ   t  }| dur| |d< |dur&||d< |dur6||d< d|d}|V }dS )a  
    Overrides the Geolocation Position or Error. Omitting any of the parameters emulates position
    unavailable.

    :param latitude: *(Optional)* Mock latitude
    :param longitude: *(Optional)* Mock longitude
    :param accuracy: *(Optional)* Mock accuracy
    Nrz   r{   r|   z Emulation.setGeolocationOverriderW   rY   )rz   r{   r|   rX   rQ   r   r   r   r   set_geolocation_override  s    r}   )is_user_activeis_screen_unlockedrM   c                 c  s*   t  }| |d< ||d< d|d}|V }dS )z
    Overrides the Idle state.

    **EXPERIMENTAL**

    :param is_user_active: Mock isUserActive
    :param is_screen_unlocked: Mock isScreenUnlocked
    ZisUserActiveZisScreenUnlockedzEmulation.setIdleOverriderW   NrY   )r~   r   rX   rQ   r   r   r   r   set_idle_override  s    r   c                  c  s   ddi} | V }dS )z<
    Clears Idle state overrides.

    **EXPERIMENTAL**
    rN   zEmulation.clearIdleOverrideNr   rP   r   r   r   clear_idle_override%  s    r   )r5   rM   c                 c  s"   t  }| |d< d|d}|V }dS )z
    Overrides value returned by the javascript navigator object.

    **EXPERIMENTAL**

    :param platform: The platform navigator.platform should return.
    r5   zEmulation.setNavigatorOverridesrW   NrY   )r5   rX   rQ   r   r   r   r   set_navigator_overrides1  s    
r   )page_scale_factorrM   c                 c  s"   t  }| |d< d|d}|V }dS )zu
    Sets a specified page scale factor.

    **EXPERIMENTAL**

    :param page_scale_factor: Page scale factor.
    ZpageScaleFactorzEmulation.setPageScaleFactorrW   NrY   )r   rX   rQ   r   r   r   r   set_page_scale_factorD  s    
r   )r*   rM   c                 c  s"   t  }| |d< d|d}|V }dS )z|
    Switches script execution in the page.

    :param value: Whether script execution should be disabled in the page.
    r*   z$Emulation.setScriptExecutionDisabledrW   NrY   )r*   rX   rQ   r   r   r   r   set_script_execution_disabledW  s    r   )rV   max_touch_pointsrM   c                 c  s2   t  }| |d< |dur||d< d|d}|V }dS )z
    Enables touch on platforms which do not support them.

    :param enabled: Whether the touch event emulation should be enabled.
    :param max_touch_points: *(Optional)* Maximum touch points supported. Defaults to one.
    rV   NZmaxTouchPointsz"Emulation.setTouchEmulationEnabledrW   rY   )rV   r   rX   rQ   r   r   r   r   set_touch_emulation_enabledh  s    
r   z'typing.Optional[network.TimeSinceEpoch]z1typing.Generator[T_JSON_DICT, T_JSON_DICT, float])policybudget&max_virtual_time_task_starvation_countinitial_virtual_timerM   c                 c  sb   t  }|  |d< |dur"||d< |dur2||d< |durF| |d< d|d}|V }t|d S )	a#  
    Turns on virtual time for all frames (replacing real-time with a synthetic time source) and sets
    the current virtual time policy.  Note this supersedes any previous time budget.

    **EXPERIMENTAL**

    :param policy:
    :param budget: *(Optional)* If set, after this many virtual milliseconds have elapsed virtual time will be paused and a virtualTimeBudgetExpired event is sent.
    :param max_virtual_time_task_starvation_count: *(Optional)* If set this specifies the maximum number of tasks that can be run before virtual is forced forwards to prevent deadlock.
    :param initial_virtual_time: *(Optional)* If set, base::Time::Now will be overridden to initially return this value.
    :returns: Absolute timestamp at which virtual time was first enabled (up time in milliseconds).
    r   Nr   Z!maxVirtualTimeTaskStarvationCountZinitialVirtualTimezEmulation.setVirtualTimePolicyrW   ZvirtualTimeTicksBase)r   r   r]   )r   r   r   r   rX   rQ   r   r   r   r   set_virtual_time_policy}  s    r   )localerM   c                 c  s*   t  }| dur| |d< d|d}|V }dS )z
    Overrides default host system locale with the specified one.

    **EXPERIMENTAL**

    :param locale: *(Optional)* ICU style C locale (e.g. "en_US"). If not specified or empty, disables the override and restores default host system locale.
    Nr   zEmulation.setLocaleOverriderW   rY   )r   rX   rQ   r   r   r   r   set_locale_override  s    
r   )timezone_idrM   c                 c  s"   t  }| |d< d|d}|V }dS )z
    Overrides default host system timezone with the specified one.

    **EXPERIMENTAL**

    :param timezone_id: The timezone identifier. If empty, disables the override and restores default host system timezone.
    Z
timezoneIdzEmulation.setTimezoneOverriderW   NrY   )r   rX   rQ   r   r   r   r   set_timezone_override  s    
r   )rc   rd   rM   c                 c  s*   t  }| |d< ||d< d|d}|V }dS )a<  
    Resizes the frame/viewport of the page. Note that this does not affect the frame's container
    (e.g. browser window). Can be used to produce screenshots of the specified size. Not supported
    on Android.

    **EXPERIMENTAL**

    :param width: Frame width (DIP).
    :param height: Frame height (DIP).
    rc   rd   zEmulation.setVisibleSizerW   NrY   )rc   rd   rX   rQ   r   r   r   r   set_visible_size  s    r   ztyping.List[DisabledImageType])image_typesrM   c                 c  s,   t  }dd | D |d< d|d}|V }dS )zM


    **EXPERIMENTAL**

    :param image_types: Image types to disable.
    c                 S  s   g | ]}|  qS r   rC   rD   r   r   r   rG     rH   z,set_disabled_image_types.<locals>.<listcomp>Z
imageTypeszEmulation.setDisabledImageTypesrW   NrY   )r   rX   rQ   r   r   r   r   set_disabled_image_types  s    
r   )hardware_concurrencyrM   c                 c  s"   t  }| |d< d|d}|V }dS )z]


    **EXPERIMENTAL**

    :param hardware_concurrency: Hardware concurrency to report
    ZhardwareConcurrencyz(Emulation.setHardwareConcurrencyOverriderW   NrY   )r   rX   rQ   r   r   r   r   !set_hardware_concurrency_override  s    
r   z"typing.Optional[UserAgentMetadata])
user_agentaccept_languager5   user_agent_metadatarM   c                 c  sV   t  }| |d< |dur||d< |dur.||d< |durB| |d< d|d}|V }dS )a  
    Allows overriding user agent with the given string.

    :param user_agent: User agent to use.
    :param accept_language: *(Optional)* Browser langugage to emulate.
    :param platform: *(Optional)* The platform navigator.platform should return.
    :param user_agent_metadata: **(EXPERIMENTAL)** *(Optional)* To be sent in Sec-CH-UA-* headers and returned in navigator.userAgentData
    Z	userAgentNZacceptLanguager5   ZuserAgentMetadatazEmulation.setUserAgentOverriderW   ra   )r   r   r5   r   rX   rQ   r   r   r   r   set_user_agent_override  s    r   c                 c  s"   t  }| |d< d|d}|V }dS )z
    Allows overriding the automation flag.

    **EXPERIMENTAL**

    :param enabled: Whether the override should be enabled.
    rV   zEmulation.setAutomationOverriderW   NrY   rZ   r   r   r   set_automation_override!  s    
r   z"Emulation.virtualTimeBudgetExpiredc                   @  s$   e Zd ZdZedd dddZdS )VirtualTimeBudgetExpiredz~
    **EXPERIMENTAL**

    Notification sent after the virtual time budget for the current VirtualTimePolicy has run out.
    r   )r   rM   c                 C  s   |  S r.   r   r   r   r   r   r   >  s    z"VirtualTimeBudgetExpired.from_jsonN)r   r   r   r   r!   r   r   r   r   r   r   4  s   r   )N)N)	NNNNNNNNN)N)NN)NNN)N)NNN)N)NNN)3
__future__r   utilr   r   Zdataclassesr   enumtyping r   r   r	   r
   r"   r(   Enumr,   r1   r4   rL   rR   rS   rT   rU   r[   r\   r_   rb   ro   rq   rs   ru   rx   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   >

           *@          #    