U
    g`                  	   @  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G dd dejZddddZddddZd`dddddddddZddd d!Zdad"d#d#dd$d%d&Zdbdd'd(d)d*dd+d,d-Zdcd.d#d#dd/d0d1Zddd2d2d2d2d#d#dd3d4d5Zdedd6dd7d8d9Zd:dd;d<d=Zdfd*dd>d?d@Zd:dd;dAdBZd:dd;dCdDZd:ddEdFdGZ d:ddEdHdIZ!d:dd;dJdKZ"d:dd;dLdMZ#d:dd;dNdOZ$dgdPddQdRdSZ%edTeG dUdV dVZ&edWeG dXdY dYZ'edZeG d[d\ d\Z(ed]eG d^d_ d_Z)dS )h    )annotations   )event_classT_JSON_DICT)	dataclassN)dom)page)runtimec                   @  s   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
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 )GridHighlightConfigzC
    Configuration data for the highlighting of Grid elements.
    Ntyping.Optional[bool]show_grid_extension_linesshow_positive_line_numbersshow_negative_line_numberstyping.Optional[dom.RGBA]grid_border_colorcell_border_colorgrid_border_dashcell_border_dashrow_gap_colorrow_hatch_colorcolumn_gap_colorcolumn_hatch_colorc                 C  s   t  }| jd k	r| j|d< | jd k	r.| j|d< | jd k	rB| j|d< | jd k	rZ| j |d< | jd k	rr| j |d< | jd k	r| j|d< | jd k	r| j|d< | j	d k	r| j	 |d< | j
d k	r| j
 |d	< | jd k	r| j |d
< | jd k	r| j |d< |S )NshowGridExtensionLinesshowPositiveLineNumbersshowNegativeLineNumbersgridBorderColorcellBorderColorgridBorderDashcellBorderDashrowGapColorrowHatchColorcolumnGapColorcolumnHatchColor)dictr   r   r   r   to_jsonr   r   r   r   r   r   r   selfjson r(   R/tmp/pip-unpacked-wheel-3ysq0mf8/selenium/webdriver/common/devtools/v85/overlay.pyr$   7   s0    















zGridHighlightConfig.to_jsonc                 C  s  | d|krt |d nd d|kr,t |d nd d|krBt |d nd d|kr\tj|d nd d|krvtj|d nd d|krt |d nd d|krt |d nd d|krtj|d nd d	|krtj|d	 nd d
|krtj|d
 nd d|krtj|d nd dS )Nr   r   r   r   r   r   r   r   r    r!   r"   )r   r   r   r   r   r   r   r   r   r   r   )boolr   RGBA	from_jsonclsr'   r(   r(   r)   r,   Q   s    zGridHighlightConfig.from_json)__name__
__module____qualname____doc__r   __annotations__r   r   r   r   r   r   r   r   r   r   r$   classmethodr,   r(   r(   r(   r)   r
      s   
r
   c                   @  s   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
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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 )HighlightConfigzC
    Configuration data for the highlighting of page elements.
    Nr   	show_infoshow_stylesshow_rulersshow_accessibility_infoshow_extension_linesr   content_colorpadding_colorborder_colormargin_colorevent_target_colorshape_colorshape_margin_colorcss_grid_colortyping.Optional[ColorFormat]color_formatz$typing.Optional[GridHighlightConfig]grid_highlight_configc                 C  sf  t  }| jd k	r| j|d< | jd k	r.| j|d< | jd k	rB| j|d< | jd k	rV| j|d< | jd k	rj| j|d< | jd k	r| j |d< | jd k	r| j |d< | j	d k	r| j	 |d< | j
d k	r| j
 |d	< | jd k	r| j |d
< | jd k	r| j |d< | jd k	r| j |d< | jd k	r.| j |d< | jd k	rH| j |d< | jd k	rb| j |d< |S )NshowInfo
showStyles
showRulersshowAccessibilityInfoshowExtensionLinescontentColorpaddingColorborderColormarginColoreventTargetColor
shapeColorshapeMarginColorcssGridColorcolorFormatgridHighlightConfig)r#   r6   r7   r8   r9   r:   r;   r$   r<   r=   r>   r?   r@   rA   rB   rD   rE   r%   r(   r(   r)   r$      s@    















zHighlightConfig.to_jsonc                 C  s  | d|krt |d nd d|kr,t |d nd d|krBt |d nd d|krXt |d nd d|krnt |d nd d|krtj|d nd d|krtj|d nd d|krtj|d nd d	|krtj|d	 nd d
|krtj|d
 nd d|krtj|d nd d|kr(tj|d nd d|krDtj|d nd d|kr^t|d nd d|krxt|d nd dS )NrF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   )r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rD   rE   )r*   r   r+   r,   ColorFormatr
   r-   r(   r(   r)   r,      s"    zHighlightConfig.from_json)r/   r0   r1   r2   r6   r3   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rD   rE   r$   r4   r,   r(   r(   r(   r)   r5   b   s&   
"r5   c                   @  s,   e Zd ZdZdZdZdd Zedd ZdS )	rU   ZrgbZhslhexc                 C  s   | j S Nvaluer&   r(   r(   r)   r$      s    zColorFormat.to_jsonc                 C  s   | |S rW   r(   r-   r(   r(   r)   r,      s    zColorFormat.from_jsonN)	r/   r0   r1   ZRGBZHSLZHEX_r$   r4   r,   r(   r(   r(   r)   rU      s   rU   c                   @  sF   e Zd ZU dZded< dZded< dZded< dd	 Zed
d Z	dS )HingeConfigz-
    Configuration for dual screen hinge
    zdom.RectrectNr   r;   outline_colorc                 C  sH   t  }| j |d< | jd k	r,| j |d< | jd k	rD| j |d< |S )Nr\   rK   outlineColor)r#   r\   r$   r;   r]   r%   r(   r(   r)   r$      s    

zHingeConfig.to_jsonc                 C  sJ   | t j|d d|kr(t j|d nd d|krBt j|d nd dS )Nr\   rK   r^   )r\   r;   r]   )r   ZRectr,   r+   r-   r(   r(   r)   r,      s
    zHingeConfig.from_json)
r/   r0   r1   r2   r3   r;   r]   r$   r4   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 )InspectModeZsearchForNodeZsearchForUAShadowDOMZcaptureAreaScreenshotZshowDistancesnonec                 C  s   | j S rW   rX   rZ   r(   r(   r)   r$      s    zInspectMode.to_jsonc                 C  s   | |S rW   r(   r-   r(   r(   r)   r,     s    zInspectMode.from_jsonN)r/   r0   r1   ZSEARCH_FOR_NODEZSEARCH_FOR_UA_SHADOW_DOMZCAPTURE_AREA_SCREENSHOTZSHOW_DISTANCESNONEr$   r4   r,   r(   r(   r(   r)   r_      s   r_   z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None])returnc                  c  s   ddi} | V }dS )z(
    Disables domain notifications.
    methodzOverlay.disableNr(   cmd_dictr'   r(   r(   r)   disable  s     rf   c                  c  s   ddi} | V }dS )z'
    Enables domain notifications.
    rc   zOverlay.enableNr(   rd   r(   r(   r)   enable  s     rg   
dom.NodeIdr   rC   z0typing.Generator[T_JSON_DICT, T_JSON_DICT, dict])node_idinclude_distanceinclude_stylerD   r9   rb   c                 c  sr   t  }|  |d< |dk	r"||d< |dk	r2||d< |dk	rF| |d< |dk	rV||d< d|d}|V }t |d	 S )
a  
    For testing.

    :param node_id: Id of the node to get highlight object for.
    :param include_distance: *(Optional)* Whether to include distance info.
    :param include_style: *(Optional)* Whether to include style info.
    :param color_format: *(Optional)* The color format to get config with (default: hex).
    :param show_accessibility_info: *(Optional)* Whether to show accessibility info (default: true).
    :returns: Highlight data for the node.
    nodeIdNZincludeDistanceZincludeStylerS   rI   z!Overlay.getHighlightObjectForTestrc   paramsZ	highlightr#   r$   )ri   rj   rk   rD   r9   rn   re   r'   r(   r(   r)   get_highlight_object_for_test  s    rp   c                  c  s   ddi} | V }dS )z
    Hides any highlight.
    rc   zOverlay.hideHighlightNr(   rd   r(   r(   r)   hide_highlight>  s     rq   zpage.FrameIdr   )frame_idr;   content_outline_colorrb   c                 c  sN   t  }|  |d< |dk	r&| |d< |dk	r:| |d< d|d}|V }dS )aM  
    Highlights owner element of the frame with given id.

    :param frame_id: Identifier of the frame to highlight.
    :param content_color: *(Optional)* The content box highlight fill color (default: transparent).
    :param content_outline_color: *(Optional)* The content box highlight outline color (default: transparent).
    ZframeIdNrK   ZcontentOutlineColorzOverlay.highlightFramerm   ro   )rr   r;   rs   rn   re   r'   r(   r(   r)   highlight_frameH  s    rt   ztyping.Optional[dom.NodeId]z"typing.Optional[dom.BackendNodeId]z'typing.Optional[runtime.RemoteObjectId]ztyping.Optional[str])highlight_configri   backend_node_id	object_idselectorrb   c                 c  sr   t  }|  |d< |dk	r&| |d< |dk	r:| |d< |dk	rN| |d< |dk	r^||d< d|d}|V }dS )	a  
    Highlights DOM node with given id or with the given JavaScript object wrapper. Either nodeId or
    objectId must be specified.

    :param highlight_config: A descriptor for the highlight appearance.
    :param node_id: *(Optional)* Identifier of the node to highlight.
    :param backend_node_id: *(Optional)* Identifier of the backend node to highlight.
    :param object_id: *(Optional)* JavaScript object id of the node to be highlighted.
    :param selector: *(Optional)* Selectors to highlight relevant nodes.
    highlightConfigNrl   backendNodeIdZobjectIdrx   zOverlay.highlightNoderm   ro   )ru   ri   rv   rw   rx   rn   re   r'   r(   r(   r)   highlight_nodea  s    r{   zdom.Quad)quadcolorr]   rb   c                 c  sN   t  }|  |d< |dk	r&| |d< |dk	r:| |d< d|d}|V }dS )a1  
    Highlights given quad. Coordinates are absolute with respect to the main frame viewport.

    :param quad: Quad to highlight
    :param color: *(Optional)* The highlight fill color (default: transparent).
    :param outline_color: *(Optional)* The highlight outline color (default: transparent).
    r|   Nr}   r^   zOverlay.highlightQuadrm   ro   )r|   r}   r]   rn   re   r'   r(   r(   r)   highlight_quad  s    r~   int)xywidthheightr}   r]   rb   c           	      c  sb   t  }| |d< ||d< ||d< ||d< |dk	r:| |d< |dk	rN| |d< d|d	}|V }dS )
a  
    Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport.

    :param x: X coordinate
    :param y: Y coordinate
    :param width: Rectangle width
    :param height: Rectangle height
    :param color: *(Optional)* The highlight fill color (default: transparent).
    :param outline_color: *(Optional)* The highlight outline color (default: transparent).
    r   r   r   r   Nr}   r^   zOverlay.highlightRectrm   ro   )	r   r   r   r   r}   r]   rn   re   r'   r(   r(   r)   highlight_rect  s    r   z typing.Optional[HighlightConfig])moderu   rb   c                 c  s:   t  }|  |d< |dk	r&| |d< d|d}|V }dS )av  
    Enters the 'inspect' mode. In this mode, elements that user is hovering over are highlighted.
    Backend then generates 'inspectNodeRequested' event upon element selection.

    :param mode: Set an inspection mode.
    :param highlight_config: *(Optional)* A descriptor for the highlight appearance of hovered-over nodes. May be omitted if ```enabled == false```.
    r   Nry   zOverlay.setInspectModerm   ro   )r   ru   rn   re   r'   r(   r(   r)   set_inspect_mode  s    r   r*   )showrb   c                 c  s"   t  }| |d< d|d}|V }dS )zu
    Highlights owner element of all frames detected to be ads.

    :param show: True for showing ad highlights
    r   zOverlay.setShowAdHighlightsrm   Nr#   r   rn   re   r'   r(   r(   r)   set_show_ad_highlights  s    r   )messagerb   c                 c  s*   t  }| dk	r| |d< d|d}|V }dS )zk
    :param message: *(Optional)* The message to display, also triggers resume and step over controls.
    Nr   z"Overlay.setPausedInDebuggerMessagerm   r   )r   rn   re   r'   r(   r(   r)   set_paused_in_debugger_message  s    r   c                 c  s"   t  }| |d< d|d}|V }dS )zn
    Requests that backend shows debug borders on layers

    :param show: True for showing debug borders
    r   zOverlay.setShowDebugBordersrm   Nr   r   r(   r(   r)   set_show_debug_borders  s    r   c                 c  s"   t  }| |d< d|d}|V }dS )zh
    Requests that backend shows the FPS counter

    :param show: True for showing the FPS counter
    r   zOverlay.setShowFPSCounterrm   Nr   r   r(   r(   r)   set_show_fps_counter  s    r   )resultrb   c                 c  s"   t  }| |d< d|d}|V }dS )zl
    Requests that backend shows paint rectangles

    :param result: True for showing paint rectangles
    r   zOverlay.setShowPaintRectsrm   Nr   r   rn   re   r'   r(   r(   r)   set_show_paint_rects  s    r   c                 c  s"   t  }| |d< d|d}|V }dS )zt
    Requests that backend shows layout shift regions

    :param result: True for showing layout shift regions
    r   z!Overlay.setShowLayoutShiftRegionsrm   Nr   r   r(   r(   r)   set_show_layout_shift_regions(  s    r   c                 c  s"   t  }| |d< d|d}|V }dS )zx
    Requests that backend shows scroll bottleneck rects

    :param show: True for showing scroll bottleneck rects
    r   z$Overlay.setShowScrollBottleneckRectsrm   Nr   r   r(   r(   r)    set_show_scroll_bottleneck_rects9  s    r   c                 c  s"   t  }| |d< d|d}|V }dS )zt
    Requests that backend shows hit-test borders on layers

    :param show: True for showing hit-test borders
    r   zOverlay.setShowHitTestBordersrm   Nr   r   r(   r(   r)   set_show_hit_test_bordersJ  s    r   c                 c  s"   t  }| |d< d|d}|V }dS )zf
    Paints viewport size upon main frame resize.

    :param show: Whether to paint size or not.
    r   z#Overlay.setShowViewportSizeOnResizerm   Nr   r   r(   r(   r)    set_show_viewport_size_on_resize[  s    r   ztyping.Optional[HingeConfig])hinge_configrb   c                 c  s.   t  }| dk	r|  |d< d|d}|V }dS )zp
    Add a dual screen device hinge

    :param hinge_config: *(Optional)* hinge data, null means hideHinge
    NZhingeConfigzOverlay.setShowHingerm   ro   )r   rn   re   r'   r(   r(   r)   set_show_hingel  s    r   zOverlay.inspectNodeRequestedc                   @  s.   e Zd ZU dZded< edd dddZdS )	InspectNodeRequestedz
    Fired when the node should be inspected. This happens after call to ``setInspectMode`` or when
    user manually inspects an element.
    zdom.BackendNodeIdrv   r   r'   rb   c                 C  s   | t j|d dS )Nrz   )rv   )r   ZBackendNodeIdr,   r-   r(   r(   r)   r,     s    zInspectNodeRequested.from_jsonNr/   r0   r1   r2   r3   r4   r,   r(   r(   r(   r)   r   ~  s   
r   zOverlay.nodeHighlightRequestedc                   @  s.   e Zd ZU dZded< edd dddZdS )	NodeHighlightRequestedzc
    Fired when the node should be highlighted. This happens after call to ``setInspectMode``.
    rh   ri   r   r   c                 C  s   | t j|d dS )Nrl   )ri   )r   ZNodeIdr,   r-   r(   r(   r)   r,     s    z NodeHighlightRequested.from_jsonNr   r(   r(   r(   r)   r     s   
r   zOverlay.screenshotRequestedc                   @  s.   e Zd ZU dZded< edd dddZdS )	ScreenshotRequestedzN
    Fired when user asks to capture screenshot of some area on the page.
    zpage.Viewportviewportr   r   c                 C  s   | t j|d dS )Nr   )r   )r   ZViewportr,   r-   r(   r(   r)   r,     s    zScreenshotRequested.from_jsonNr   r(   r(   r(   r)   r     s   
r   zOverlay.inspectModeCanceledc                   @  s$   e Zd ZdZedd dddZdS )InspectModeCanceledz3
    Fired when user cancels the inspect mode.
    r   r   c                 C  s   |  S rW   r(   r-   r(   r(   r)   r,     s    zInspectModeCanceled.from_jsonN)r/   r0   r1   r2   r4   r,   r(   r(   r(   r)   r     s   r   )NNNN)NN)NNNN)NN)NN)N)N)N)*
__future__r   utilr   r   Zdataclassesr   enumtyping r   r   r	   r
   r5   EnumrU   r[   r_   rf   rg   rp   rq   rt   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(   r(   r(   r)   <module>   s~   Ph
    #      $    $   