o
    ҷh'Q                     @  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G dd dejZeG dd dZeG dd dZd|ddZd}ddZd}ddZd}ddZd~d d!Zdd$d%Z	ddd(d)Z								ddd<d=Zdd?d@ZddBdCZ	dddFdGZ		dddKdLZddOdPZ			dddTdUZ ddWdXZ!ddZd[Z"dd]d^Z#	ddd`daZ$				dddidjZ%	dddldmZ&ddodpZ'ddqdrZ(			dddwdxZ)edyeG dzd{ d{Z*d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     t  }| j|d< | j|d< |S )Ntyper   )dictr   r   selfjson r   c/var/www/html/venv/lib/python3.10/site-packages/selenium/webdriver/common/devtools/v85/emulation.pyto_json      

zScreenOrientation.to_jsonc                 C  s   | t |d t|d dS )Nr   r   )r   r   )r   r   clsr   r   r   r   	from_json"      

zScreenOrientation.from_jsonN__name__
__module____qualname____doc____annotations__r   classmethodr   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  r   )Nr%   r&   )r   r%   r&   r   r   r   r   r   0   r   zMediaFeature.to_jsonc                 C     | t |d t |d dS )Nr%   r&   )r%   r&   r   r   r   r   r   r   6   r   zMediaFeature.from_jsonN)r   r   r    r"   r   r#   r   r   r   r   r   r$   *   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.
    advancepausepauseIfNetworkFetchesPendingc                 C  s   | j S N)r&   )r   r   r   r   r   I   s   zVirtualTimePolicy.to_jsonc                 C  s   | |S r-   r   r   r   r   r   r   L   s   zVirtualTimePolicy.from_jsonN)
r   r   r    r!   ADVANCEPAUSE 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 )
UserAgentBrandVersiong
    Used to specify User Agent Cient Hints to emulate. See https://wicg.github.io/ua-client-hints
    r   brandversionc                 C  r   )Nr3   r4   )r   r3   r4   r   r   r   r   r   Z   r   zUserAgentBrandVersion.to_jsonc                 C  r'   )Nr3   r4   )r3   r4   r(   r   r   r   r   r   `   r   zUserAgentBrandVersion.from_jsonNr   r   r   r   r   r1   Q   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ed	< d
ed< dd Zedd ZdS )UserAgentMetadatar2   z"typing.List[UserAgentBrandVersion]brandsr   full_versionplatformplatform_versionarchitecturemodelboolmobilec                 C  sZ   t  }dd | jD |d< | j|d< | j|d< | j|d< | j|d< | j|d< | j|d	< |S )
Nc                 S     g | ]}|  qS r   r   .0ir   r   r   
<listcomp>}       z-UserAgentMetadata.to_json.<locals>.<listcomp>r6   fullVersionr8   platformVersionr:   r;   r=   )r   r6   r7   r8   r9   r:   r;   r=   r   r   r   r   r   {   s   





zUserAgentMetadata.to_jsonc              
   C  sT   | dd |d D t |d t |d t |d t |d t |d t|d	 d
S )Nc                 S  s   g | ]}t |qS r   )r1   r   r@   r   r   r   rC      s    z/UserAgentMetadata.from_json.<locals>.<listcomp>r6   rE   r8   rF   r:   r;   r=   )r6   r7   r8   r9   r:   r;   r=   )r   r<   r   r   r   r   r      s   





zUserAgentMetadata.from_jsonNr   r   r   r   r   r5   h   s   
 r5   return0typing.Generator[T_JSON_DICT, T_JSON_DICT, bool]c                  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)r<   cmd_dictr   r   r   r   can_emulate   s
   rM   0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]c                  c      ddi} | V }dS )z/
    Clears the overridden device metrics.
    rI   z$Emulation.clearDeviceMetricsOverrideNr   rK   r   r   r   clear_device_metrics_override      
rP   c                  c  rO   )z?
    Clears the overridden Geolocation Position and Error.
    rI   z"Emulation.clearGeolocationOverrideNr   rK   r   r   r   clear_geolocation_override   rQ   rR   c                  c  rO   )z[
    Requests that page scale factor is reset to initial values.

    **EXPERIMENTAL**
    rI   zEmulation.resetPageScaleFactorNr   rK   r   r   r   reset_page_scale_factor   s   
rS   enabledr<   c                 c  $    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.
    rT   z"Emulation.setFocusEmulationEnabledrI   paramsNr   )rT   rW   rL   r   r   r   r   set_focus_emulation_enabled      

rY   ratefloatc                 c  rU   )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.setCPUThrottlingRaterV   NrX   )r[   rW   rL   r   r   r   r   set_cpu_throttling_rate   rZ   r]   colortyping.Optional[dom.RGBA]c                 c  s0    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.setDefaultBackgroundColorOverriderV   r   r   )r^   rW   rL   r   r   r   r   %set_default_background_color_override   s   	
ra   widthr   heightdevice_scale_factorr=   scaletyping.Optional[float]screen_widthtyping.Optional[int]screen_height
position_x
position_ydont_set_visible_sizetyping.Optional[bool]screen_orientation"typing.Optional[ScreenOrientation]viewporttyping.Optional[page.Viewport]c                 c  s    t  }| |d< ||d< ||d< ||d< |dur||d< |dur$||d< |dur,||d< |dur4||d	< |dur<||d
< |	durD|	|d< |
durN|
 |d< |durX| |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.
    rb   rc   deviceScaleFactorr=   Nre   screenWidthscreenHeight	positionX	positionYdontSetVisibleSizescreenOrientationrp   z"Emulation.setDeviceMetricsOverriderV   r`   )rb   rc   rd   r=   re   rg   ri   rj   rk   rl   rn   rp   rW   rL   r   r   r   r   set_device_metrics_override   s4    
ry   hiddenc                 c  rU   )z\


    **EXPERIMENTAL**

    :param hidden: Whether scrollbars should be always hidden.
    rz   zEmulation.setScrollbarsHiddenrV   NrX   )rz   rW   rL   r   r   r   r   set_scrollbars_hidden5  rZ   r{   disabledc                 c  rU   )zc


    **EXPERIMENTAL**

    :param disabled: Whether document.coookie API should be disabled.
    r|   z#Emulation.setDocumentCookieDisabledrV   NrX   )r|   rW   rL   r   r   r   r   set_document_cookie_disabledH  rZ   r}   configurationtyping.Optional[str]c                 c  4    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.
    rT   Nr~   z$Emulation.setEmitTouchEventsForMouserV   rX   )rT   r~   rW   rL   r   r   r   r   set_emit_touch_events_for_mouse[  s   
r   mediafeatures*typing.Optional[typing.List[MediaFeature]]c                 c  sF    t  }| dur| |d< |durd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.
    Nr   c                 S  r>   r   r?   r@   r   r   r   rC     rD   z&set_emulated_media.<locals>.<listcomp>r   zEmulation.setEmulatedMediarV   rX   )r   r   rW   rL   r   r   r   r   set_emulated_mediar  s   

r   r   r   c                 c  rU   )zv
    Emulates the given vision deficiency.

    **EXPERIMENTAL**

    :param type_: Vision deficiency to emulate.
    r   z%Emulation.setEmulatedVisionDeficiencyrV   NrX   )r   rW   rL   r   r   r   r   set_emulated_vision_deficiency  rZ   r   latitude	longitudeaccuracyc                 c  sL    t  }| dur| |d< |dur||d< |dur||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
    Nr   r   r   z Emulation.setGeolocationOverriderV   rX   )r   r   r   rW   rL   r   r   r   r   set_geolocation_override  s   
r   r8   c                 c  rU   )z
    Overrides value returned by the javascript navigator object.

    **EXPERIMENTAL**

    :param platform: The platform navigator.platform should return.
    r8   zEmulation.setNavigatorOverridesrV   NrX   )r8   rW   rL   r   r   r   r   set_navigator_overrides  rZ   r   page_scale_factorc                 c  rU   )zu
    Sets a specified page scale factor.

    **EXPERIMENTAL**

    :param page_scale_factor: Page scale factor.
    pageScaleFactorzEmulation.setPageScaleFactorrV   NrX   )r   rW   rL   r   r   r   r   set_page_scale_factor  rZ   r   r&   c                 c  rU   )z|
    Switches script execution in the page.

    :param value: Whether script execution should be disabled in the page.
    r&   z$Emulation.setScriptExecutionDisabledrV   NrX   )r&   rW   rL   r   r   r   r   set_script_execution_disabled  s   
r   max_touch_pointsc                 c  r   )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.
    rT   NmaxTouchPointsz"Emulation.setTouchEmulationEnabledrV   rX   )rT   r   rW   rL   r   r   r   r   set_touch_emulation_enabled  s   

r   policybudget&max_virtual_time_task_starvation_countwait_for_navigationinitial_virtual_time'typing.Optional[network.TimeSinceEpoch]1typing.Generator[T_JSON_DICT, T_JSON_DICT, float]c                 c  st    t  }|  |d< |dur||d< |dur||d< |dur"||d< |dur,| |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 wait_for_navigation: *(Optional)* If set the virtual time policy change should be deferred until any frame starts navigating. Note any previous deferred policy change is superseded.
    :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   !maxVirtualTimeTaskStarvationCountwaitForNavigationinitialVirtualTimezEmulation.setVirtualTimePolicyrV   virtualTimeTicksBase)r   r   r\   )r   r   r   r   r   rW   rL   r   r   r   r   set_virtual_time_policy  s    r   localec                 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.setLocaleOverriderV   rX   )r   rW   rL   r   r   r   r   set_locale_override(  s   

r   timezone_idc                 c  rU   )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.
    
timezoneIdzEmulation.setTimezoneOverriderV   NrX   )r   rW   rL   r   r   r   r   set_timezone_override<  rZ   r   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).
    rb   rc   zEmulation.setVisibleSizerV   NrX   )rb   rc   rW   rL   r   r   r   r   set_visible_sizeO  s   
r   
user_agentaccept_languageuser_agent_metadata"typing.Optional[UserAgentMetadata]c                 c  sX    t  }| |d< |dur||d< |dur||d< |dur"| |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
    	userAgentNacceptLanguager8   userAgentMetadatazEmulation.setUserAgentOverriderV   r`   )r   r   r8   r   rW   rL   r   r   r   r   set_user_agent_overrideg  s   
r   z"Emulation.virtualTimeBudgetExpiredc                   @  s   e Zd ZdZedddZdS )	VirtualTimeBudgetExpiredz~
    **EXPERIMENTAL**

    Notification sent after the virtual time budget for the current VirtualTimePolicy has run out.
    r   r   rG   c                 C  s   |  S r-   r   r   r   r   r   r     s   z"VirtualTimeBudgetExpired.from_jsonN)r   r   rG   r   )r   r   r    r!   r#   r   r   r   r   r   r     s    r   )rG   rH   )rG   rN   )rT   r<   rG   rN   )r[   r\   rG   rN   r-   )r^   r_   rG   rN   )NNNNNNNN)rb   r   rc   r   rd   r\   r=   r<   re   rf   rg   rh   ri   rh   rj   rh   rk   rh   rl   rm   rn   ro   rp   rq   rG   rN   )rz   r<   rG   rN   )r|   r<   rG   rN   )rT   r<   r~   r   rG   rN   )NN)r   r   r   r   rG   rN   )r   r   rG   rN   )NNN)r   rf   r   rf   r   rf   rG   rN   )r8   r   rG   rN   )r   r\   rG   rN   )r&   r<   rG   rN   )rT   r<   r   rh   rG   rN   )NNNN)r   r)   r   rf   r   rh   r   rm   r   r   rG   r   )r   r   rG   rN   )r   r   rG   rN   )rb   r   rc   r   rG   rN   )
r   r   r   r   r8   r   r   r   rG   rN   )+
__future__r   utilr   r   dataclassesr   enumtyping r   r   r	   r
   r$   Enumr)   r1   r5   rM   rP   rR   rS   rY   r]   ra   ry   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   
*







<




'

