a
    xdB                     @  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 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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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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/d0d1d2d3Zd4d5d6d7Z d4d5d8d9Z!ed:eG d;d< d<Z"dS )>    )annotations   )event_classT_JSON_DICT)	dataclassN)network)pagec                   @  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 )AffectedCookiezL
    Information about a cookie that is affected by an inspector issue.
    strnamepathdomainc                 C  s(   t  }| j|d< | j|d< | j|d< |S )Nr   r   r   )dictr   r   r   selfjson r   e/var/www/html/Ranjet/env/lib/python3.9/site-packages/selenium/webdriver/common/devtools/v85/audits.pyto_json   s
    


zAffectedCookie.to_jsonc                 C  s&   | t |d t |d t |d dS )Nr   r   r   )r   r   r   )r
   clsr   r   r   r   	from_json#   s
    


zAffectedCookie.from_jsonN__name__
__module____qualname____doc____annotations__r   classmethodr   r   r   r   r   r	      s   
r	   c                   @  s:   e Zd ZU dZded< dZded< dd Zed	d
 ZdS )AffectedRequestzM
    Information about a request that is affected by an inspector issue.
    network.RequestId
request_idNtyping.Optional[str]urlc                 C  s,   t  }| j |d< | jd ur(| j|d< |S )N	requestIdr#   )r   r!   r   r#   r   r   r   r   r   6   s
    

zAffectedRequest.to_jsonc                 C  s,   | t j|d d|v r$t|d nd dS )Nr$   r#   )r!   r#   )r   Z	RequestIdr   r
   r   r   r   r   r   =   s    zAffectedRequest.from_json)	r   r   r   r   r   r#   r   r   r   r   r   r   r   r   ,   s   
r   c                   @  s.   e Zd ZU dZded< dd Zedd ZdS )	AffectedFramezE
    Information about the frame affected by an inspector issue.
    zpage.FrameIdframe_idc                 C  s   t  }| j |d< |S )NframeId)r   r&   r   r   r   r   r   r   L   s    zAffectedFrame.to_jsonc                 C  s   | t j|d dS )Nr'   )r&   )r   ZFrameIdr   r   r   r   r   r   Q   s    zAffectedFrame.from_jsonNr   r   r   r   r   r%   E   s
   
r%   c                   @  s(   e Zd ZdZdZdd Zedd ZdS )SameSiteCookieExclusionReasonZ&ExcludeSameSiteUnspecifiedTreatedAsLaxZExcludeSameSiteNoneInsecurec                 C  s   | j S Nvaluer   r   r   r   r   \   s    z%SameSiteCookieExclusionReason.to_jsonc                 C  s   | |S r)   r   r   r   r   r   r   _   s    z'SameSiteCookieExclusionReason.from_jsonN)r   r   r   Z,EXCLUDE_SAME_SITE_UNSPECIFIED_TREATED_AS_LAXZEXCLUDE_SAME_SITE_NONE_INSECUREr   r   r   r   r   r   r   r(   X   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	d
 Zedd ZdS )SameSiteCookieWarningReasonZ'WarnSameSiteUnspecifiedCrossSiteContextZWarnSameSiteNoneInsecureZ%WarnSameSiteUnspecifiedLaxAllowUnsafeZ$WarnSameSiteStrictLaxDowngradeStrictZ&WarnSameSiteStrictCrossDowngradeStrictZ#WarnSameSiteStrictCrossDowngradeLaxZ#WarnSameSiteLaxCrossDowngradeStrictZ WarnSameSiteLaxCrossDowngradeLaxc                 C  s   | j S r)   r*   r,   r   r   r   r   n   s    z#SameSiteCookieWarningReason.to_jsonc                 C  s   | |S r)   r   r   r   r   r   r   q   s    z%SameSiteCookieWarningReason.from_jsonN)r   r   r   Z-WARN_SAME_SITE_UNSPECIFIED_CROSS_SITE_CONTEXTZWARN_SAME_SITE_NONE_INSECUREZ+WARN_SAME_SITE_UNSPECIFIED_LAX_ALLOW_UNSAFEZ*WARN_SAME_SITE_STRICT_LAX_DOWNGRADE_STRICTZ,WARN_SAME_SITE_STRICT_CROSS_DOWNGRADE_STRICTZ)WARN_SAME_SITE_STRICT_CROSS_DOWNGRADE_LAXZ)WARN_SAME_SITE_LAX_CROSS_DOWNGRADE_STRICTZ&WARN_SAME_SITE_LAX_CROSS_DOWNGRADE_LAXr   r   r   r   r   r   r   r-   d   s   r-   c                   @  s(   e Zd ZdZdZdd Zedd ZdS )SameSiteCookieOperationZ	SetCookieZ
ReadCookiec                 C  s   | j S r)   r*   r,   r   r   r   r   z   s    zSameSiteCookieOperation.to_jsonc                 C  s   | |S r)   r   r   r   r   r   r   }   s    z!SameSiteCookieOperation.from_jsonN)r   r   r   Z
SET_COOKIEZREAD_COOKIEr   r   r   r   r   r   r   r.   v   s
   r.   c                   @  sj   e Zd ZU dZ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d Ze	dd Z
d
S )SameSiteCookieIssueDetailsz
    This information is currently necessary, as the front-end has a difficult
    time finding a specific cookie. With this, we can convey specific error
    information without the cookie.
    r	   cookiez(typing.List[SameSiteCookieWarningReason]cookie_warning_reasonsz*typing.List[SameSiteCookieExclusionReason]cookie_exclusion_reasonsr.   	operationNr"   site_for_cookies
cookie_url typing.Optional[AffectedRequest]requestc                 C  s   t  }| j |d< dd | jD |d< dd | jD |d< | j |d< | jd ur^| j|d< | jd urr| j|d	< | jd ur| j |d
< |S )Nr0   c                 S  s   g | ]}|  qS r   r   .0ir   r   r   
<listcomp>       z6SameSiteCookieIssueDetails.to_json.<locals>.<listcomp>cookieWarningReasonsc                 S  s   g | ]}|  qS r   r8   r9   r   r   r   r<      r=   cookieExclusionReasonsr3   siteForCookies	cookieUrlr7   )	r   r0   r   r1   r2   r3   r4   r5   r7   r   r   r   r   r      s    




z"SameSiteCookieIssueDetails.to_jsonc                 C  s   | t |d dd |d D dd |d D t|d d|v rNt|d nd d	|v rdt|d	 nd d
|v r|t|d
 nd dS )Nr0   c                 S  s   g | ]}t |qS r   )r-   r   r9   r   r   r   r<      r=   z8SameSiteCookieIssueDetails.from_json.<locals>.<listcomp>r>   c                 S  s   g | ]}t |qS r   )r(   r   r9   r   r   r   r<      r=   r?   r3   r@   rA   r7   )r0   r1   r2   r3   r4   r5   r7   )r	   r   r.   r
   r   r   r   r   r   r      s    z$SameSiteCookieIssueDetails.from_json)r   r   r   r   r   r4   r5   r7   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 )	MixedContentResolutionStatusZMixedContentBlockedZ!MixedContentAutomaticallyUpgradedZMixedContentWarningc                 C  s   | j S r)   r*   r,   r   r   r   r      s    z$MixedContentResolutionStatus.to_jsonc                 C  s   | |S r)   r   r   r   r   r   r      s    z&MixedContentResolutionStatus.from_jsonN)	r   r   r   ZMIXED_CONTENT_BLOCKEDZ$MIXED_CONTENT_AUTOMATICALLY_UPGRADEDZMIXED_CONTENT_WARNINGr   r   r   r   r   r   r   rB      s   rB   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d Zedd ZdS ) MixedContentResourceTypeZAudioZBeaconZ	CSPReportDownloadZEventSourceZFaviconZFontZFormZFrameZImageImportZManifestZPingZ
PluginDataZPluginResourceZPrefetchResourceZScriptZServiceWorkerZSharedWorkerZ
StylesheetZTrackZVideoZWorkerZXMLHttpRequestXSLTc                 C  s   | j S r)   r*   r,   r   r   r   r      s    z MixedContentResourceType.to_jsonc                 C  s   | |S r)   r   r   r   r   r   r      s    z"MixedContentResourceType.from_jsonN) r   r   r   ZAUDIOZBEACONZ
CSP_REPORTZDOWNLOADZEVENT_SOURCEZFAVICONZFONTZFORMFRAMEZIMAGEZIMPORTZMANIFESTZPINGZPLUGIN_DATAZPLUGIN_RESOURCEZPREFETCHZRESOURCEZSCRIPTZSERVICE_WORKERZSHARED_WORKERZ
STYLESHEETZTRACKZVIDEOZWORKERZXML_HTTP_REQUESTrG   r   r   r   r   r   r   r   rC      s:   rC   c                   @  s^   e Zd ZU 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d Zedd Z	dS )MixedContentIssueDetailsrB   resolution_statusr
   insecure_urlmain_resource_urlNz)typing.Optional[MixedContentResourceType]resource_typer6   r7   typing.Optional[AffectedFrame]framec                 C  st   t  }| j |d< | j|d< | j|d< | jd ur@| j |d< | jd urX| j |d< | jd urp| j |d< |S )NresolutionStatusinsecureURLmainResourceURLresourceTyper7   rO   )r   rJ   r   rK   rL   rM   r7   rO   r   r   r   r   r      s    




z MixedContentIssueDetails.to_jsonc              
   C  sp   | t |d t|d t|d d|v r8t|d nd d|v rPt|d nd d|v rht|d nd dS )NrP   rQ   rR   rS   r7   rO   )rJ   rK   rL   rM   r7   rO   )rB   r   r
   rC   r   r%   r   r   r   r   r   
  s    

z"MixedContentIssueDetails.from_json)
r   r   r   r   rM   r7   rO   r   r   r   r   r   r   r   rI      s   
rI   c                   @  s8   e Zd ZdZdZdZdZdZdZdd Z	e
d	d
 ZdS )BlockedByResponseReasonz
    Enum indicating the reason a response has been blocked. These reasons are
    refinements of the net error BLOCKED_BY_RESPONSE.
    Z CoepFrameResourceNeedsCoepHeaderZ+CoopSandboxedIFrameCannotNavigateToCoopPageZCorpNotSameOriginZ1CorpNotSameOriginAfterDefaultedToSameOriginByCoepZCorpNotSameSitec                 C  s   | j S r)   r*   r,   r   r   r   r   !  s    zBlockedByResponseReason.to_jsonc                 C  s   | |S r)   r   r   r   r   r   r   $  s    z!BlockedByResponseReason.from_jsonN)r   r   r   r   Z%COEP_FRAME_RESOURCE_NEEDS_COEP_HEADERZ3COOP_SANDBOXED_I_FRAME_CANNOT_NAVIGATE_TO_COOP_PAGEZCORP_NOT_SAME_ORIGINZ;CORP_NOT_SAME_ORIGIN_AFTER_DEFAULTED_TO_SAME_ORIGIN_BY_COEPZCORP_NOT_SAME_SITEr   r   r   r   r   r   r   rT     s   rT   c                   @  sB   e Zd ZU dZded< ded< dZded< d	d
 Zedd ZdS )BlockedByResponseIssueDetailsz
    Details for a request that has been blocked with the BLOCKED_BY_RESPONSE
    code. Currently only used for COEP/COOP, but may be extended to include
    some CSP errors in the future.
    r   r7   rT   reasonNrN   rO   c                 C  s>   t  }| j |d< | j |d< | jd ur:| j |d< |S )Nr7   rV   rO   )r   r7   r   rV   rO   r   r   r   r   r   6  s    
z%BlockedByResponseIssueDetails.to_jsonc                 C  s8   | t |d t|d d|v r0t|d nd dS )Nr7   rV   rO   )r7   rV   rO   )r   r   rT   r%   r   r   r   r   r   >  s
    z'BlockedByResponseIssueDetails.from_json)	r   r   r   r   r   rO   r   r   r   r   r   r   r   rU   )  s   
rU   c                   @  s(   e Zd ZdZdZdd Zedd ZdS )HeavyAdResolutionStatusZHeavyAdBlockedZHeavyAdWarningc                 C  s   | j S r)   r*   r,   r   r   r   r   K  s    zHeavyAdResolutionStatus.to_jsonc                 C  s   | |S r)   r   r   r   r   r   r   N  s    z!HeavyAdResolutionStatus.from_jsonN)r   r   r   ZHEAVY_AD_BLOCKEDZHEAVY_AD_WARNINGr   r   r   r   r   r   r   rW   G  s
   rW   c                   @  s,   e Zd ZdZdZdZdd Zedd ZdS )	HeavyAdReasonZNetworkTotalLimitZCpuTotalLimitZCpuPeakLimitc                 C  s   | j S r)   r*   r,   r   r   r   r   X  s    zHeavyAdReason.to_jsonc                 C  s   | |S r)   r   r   r   r   r   r   [  s    zHeavyAdReason.from_jsonN)	r   r   r   ZNETWORK_TOTAL_LIMITZCPU_TOTAL_LIMITZCPU_PEAK_LIMITr   r   r   r   r   r   r   rX   S  s   rX   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 )HeavyAdIssueDetailsrW   
resolutionrX   rV   r%   rO   c                 C  s4   t  }| j |d< | j |d< | j |d< |S )NrZ   rV   rO   )r   rZ   r   rV   rO   r   r   r   r   r   k  s
    zHeavyAdIssueDetails.to_jsonc                 C  s,   | t |d t|d t|d dS )NrZ   rV   rO   )rZ   rV   rO   )rW   r   rX   r%   r   r   r   r   r   r  s
    zHeavyAdIssueDetails.from_jsonN)r   r   r   r   r   r   r   r   r   r   r   rY   `  s   
rY   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 )InspectorIssueCodez
    A unique identifier for the type of issue. Each type may use one of the
    optional fields in InspectorIssueDetails to convey more specific
    information about the kind of issue.
    ZSameSiteCookieIssueZMixedContentIssueZBlockedByResponseIssueZHeavyAdIssuec                 C  s   | j S r)   r*   r,   r   r   r   r     s    zInspectorIssueCode.to_jsonc                 C  s   | |S r)   r   r   r   r   r   r     s    zInspectorIssueCode.from_jsonN)r   r   r   r   ZSAME_SITE_COOKIE_ISSUEZMIXED_CONTENT_ISSUEZBLOCKED_BY_RESPONSE_ISSUEZHEAVY_AD_ISSUEr   r   r   r   r   r   r   r[   {  s   r[   c                   @  sV   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d Z	e
dd ZdS )InspectorIssueDetailsz
    This struct holds a list of optional fields with additional information
    specific to the kind of issue. When adding a new issue code, please also
    add a new optional field to this type.
    Nz+typing.Optional[SameSiteCookieIssueDetails]same_site_cookie_issue_detailsz)typing.Optional[MixedContentIssueDetails]mixed_content_issue_detailsz.typing.Optional[BlockedByResponseIssueDetails]!blocked_by_response_issue_detailsz$typing.Optional[HeavyAdIssueDetails]heavy_ad_issue_detailsc                 C  sj   t  }| jd ur| j |d< | jd ur6| j |d< | jd urN| j |d< | jd urf| j |d< |S )NsameSiteCookieIssueDetailsmixedContentIssueDetailsblockedByResponseIssueDetailsheavyAdIssueDetails)r   r]   r   r^   r_   r`   r   r   r   r   r     s    



zInspectorIssueDetails.to_jsonc                 C  sh   | d|v rt |d nd d|v r0t|d nd d|v rHt|d nd d|v r`t|d nd dS )Nra   rb   rc   rd   )r]   r^   r_   r`   )r/   r   rI   rU   rY   r   r   r   r   r     s    zInspectorIssueDetails.from_json)r   r   r   r   r]   r   r^   r_   r`   r   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 )InspectorIssuez8
    An inspector issue reported from the back-end.
    r[   coder\   detailsc                 C  s&   t  }| j |d< | j |d< |S )Nrf   rg   )r   rf   r   rg   r   r   r   r   r     s    zInspectorIssue.to_jsonc                 C  s    | t |d t|d dS )Nrf   rg   )rf   rg   )r[   r   r\   r   r   r   r   r     s    zInspectorIssue.from_jsonNr   r   r   r   r   re     s   
re   r    r
   ztyping.Optional[float]ztyping.Optional[bool]zXtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[typing.Optional[str], int, int]])r!   encodingquality	size_onlyreturnc                 c  sx   t  }|  |d< ||d< |dur*||d< |dur:||d< d|d}|V }d|v r^t|d ndt|d	 t|d
 fS )a  
    Returns the response body and size if it were re-encoded with the specified settings. Only
    applies to images.

    :param request_id: Identifier of the network request to get content for.
    :param encoding: The encoding to use.
    :param quality: *(Optional)* The quality of the encoding (0-1). (defaults to 1)
    :param size_only: *(Optional)* Whether to only return the size information (defaults to false).
    :returns: A tuple with the following items:

        0. **body** - *(Optional)* The encoded body as a base64 string. Omitted if sizeOnly is true.
        1. **originalSize** - Size before re-encoding.
        2. **encodedSize** - Size after re-encoding.
    r$   rh   Nri   ZsizeOnlyzAudits.getEncodedResponse)methodparamsbodyZoriginalSizeZencodedSize)r   r   r
   int)r!   rh   ri   rj   rm   cmd_dictr   r   r   r   get_encoded_response  s    

rq   z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None])rk   c                  c  s   ddi} | V }dS )z\
    Disables issues domain, prevents further issues from being reported to the client.
    rl   zAudits.disableNr   rp   r   r   r   r   disable  s    rs   c                  c  s   ddi} | V }dS )zz
    Enables issues domain, sends the issues collected so far to the client by means of the
    ``issueAdded`` event.
    rl   zAudits.enableNr   rr   r   r   r   enable  s    rt   zAudits.issueAddedc                   @  s*   e Zd ZU ded< edd dddZdS )
IssueAddedre   issuer   )r   rk   c                 C  s   | t |d dS )Nrv   )rv   )re   r   r   r   r   r   r     s    zIssueAdded.from_jsonN)r   r   r   r   r   r   r   r   r   r   ru     s   
ru   )NN)#
__future__r   utilr   r   Zdataclassesr   enumtyping r   r   r	   r   r%   Enumr(   r-   r.   r/   rB   rC   rI   rT   rU   rW   rX   rY   r[   r\   re   rq   rs   rt   ru   r   r   r   r   <module>   sR   1$0$  '
