o
    ҷhB                     @  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@dAd6d7ZdBd9d:Z dBd;d<Z!ed=eG d>d? d?Z"dS )C    )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   `/var/www/html/venv/lib/python3.10/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  s0   | t j|d d|v rt|d dS d dS )Nr$   r#   )r!   r#   )r   	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   FrameIdr   r   r   r   r   r   Q   s   zAffectedFrame.from_jsonNr   r   r   r   r   r&   E   s   
 r&   c                   @  (   e Zd ZdZdZdd Zedd ZdS )SameSiteCookieExclusionReason&ExcludeSameSiteUnspecifiedTreatedAsLaxExcludeSameSiteNoneInsecurec                 C     | j S Nvaluer   r   r   r   r   \      z%SameSiteCookieExclusionReason.to_jsonc                 C     | |S r/   r   r   r   r   r   r   _      z'SameSiteCookieExclusionReason.from_jsonN)r   r   r   ,EXCLUDE_SAME_SITE_UNSPECIFIED_TREATED_AS_LAXEXCLUDE_SAME_SITE_NONE_INSECUREr   r   r   r   r   r   r   r+   X       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 )SameSiteCookieWarningReason'WarnSameSiteUnspecifiedCrossSiteContextWarnSameSiteNoneInsecure%WarnSameSiteUnspecifiedLaxAllowUnsafe$WarnSameSiteStrictLaxDowngradeStrict&WarnSameSiteStrictCrossDowngradeStrict#WarnSameSiteStrictCrossDowngradeLax#WarnSameSiteLaxCrossDowngradeStrict WarnSameSiteLaxCrossDowngradeLaxc                 C  r.   r/   r0   r2   r   r   r   r   n   r3   z#SameSiteCookieWarningReason.to_jsonc                 C  r4   r/   r   r   r   r   r   r   q   r5   z%SameSiteCookieWarningReason.from_jsonN)r   r   r   -WARN_SAME_SITE_UNSPECIFIED_CROSS_SITE_CONTEXTWARN_SAME_SITE_NONE_INSECURE+WARN_SAME_SITE_UNSPECIFIED_LAX_ALLOW_UNSAFE*WARN_SAME_SITE_STRICT_LAX_DOWNGRADE_STRICT,WARN_SAME_SITE_STRICT_CROSS_DOWNGRADE_STRICT)WARN_SAME_SITE_STRICT_CROSS_DOWNGRADE_LAX)WARN_SAME_SITE_LAX_CROSS_DOWNGRADE_STRICT&WARN_SAME_SITE_LAX_CROSS_DOWNGRADE_LAXr   r   r   r   r   r   r   r9   d   s    r9   c                   @  r*   )SameSiteCookieOperation	SetCookie
ReadCookiec                 C  r.   r/   r0   r2   r   r   r   r   z   r3   zSameSiteCookieOperation.to_jsonc                 C  r4   r/   r   r   r   r   r   r   }   r5   z!SameSiteCookieOperation.from_jsonN)r   r   r   
SET_COOKIEREAD_COOKIEr   r   r   r   r   r   r   rJ   v   r8   rJ   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_reasonsrJ   	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r9| j|d	< | jd urE| j |d
< |S )NrP   c                 S     g | ]}|  qS r   r   .0ir   r   r   
<listcomp>       z6SameSiteCookieIssueDetails.to_json.<locals>.<listcomp>cookieWarningReasonsc                 S  rX   r   rY   rZ   r   r   r   r]      r^   cookieExclusionReasonsrS   siteForCookies	cookieUrlrW   )	r   rP   r   rQ   rR   rS   rT   rU   rW   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 r't|d nd d	|v r2t|d	 nd d
|v r@t|d
 dS d dS )NrP   c                 S     g | ]}t |qS r   )r9   r   rZ   r   r   r   r]          z8SameSiteCookieIssueDetails.from_json.<locals>.<listcomp>r_   c                 S  rc   r   )r+   r   rZ   r   r   r   r]      rd   r`   rS   ra   rb   rW   )rP   rQ   rR   rS   rT   rU   rW   )r	   r   rJ   r
   r   r   r   r   r   r      s   z$SameSiteCookieIssueDetails.from_json)r   r   r   r   r   rT   rU   rW   r   r   r   r   r   r   r   rO      s   
 rO   c                   @  ,   e Zd ZdZdZdZdd Zedd ZdS )	MixedContentResolutionStatusMixedContentBlocked!MixedContentAutomaticallyUpgradedMixedContentWarningc                 C  r.   r/   r0   r2   r   r   r   r      r3   z$MixedContentResolutionStatus.to_jsonc                 C  r4   r/   r   r   r   r   r   r      r5   z&MixedContentResolutionStatus.from_jsonN)	r   r   r   MIXED_CONTENT_BLOCKED$MIXED_CONTENT_AUTOMATICALLY_UPGRADEDMIXED_CONTENT_WARNINGr   r   r   r   r   r   r   rf          rf   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 ) MixedContentResourceTypeAudioBeacon	CSPReportDownloadEventSourceFaviconFontFormFrameImageImportManifestPing
PluginDataPluginResourcePrefetchResourceScriptServiceWorkerSharedWorker
StylesheetTrackVideoWorkerXMLHttpRequestXSLTc                 C  r.   r/   r0   r2   r   r   r   r      r3   z MixedContentResourceType.to_jsonc                 C  r4   r/   r   r   r   r   r   r      r5   z"MixedContentResourceType.from_jsonN) r   r   r   AUDIOBEACON
CSP_REPORTDOWNLOADEVENT_SOURCEFAVICONFONTFORMFRAMEIMAGEIMPORTMANIFESTPINGPLUGIN_DATAPLUGIN_RESOURCEPREFETCHRESOURCESCRIPTSERVICE_WORKERSHARED_WORKER
STYLESHEETTRACKVIDEOWORKERXML_HTTP_REQUESTr   r   r   r   r   r   r   r   rn      s<    rn   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 )MixedContentIssueDetailsrf   resolution_statusr
   insecure_urlmain_resource_urlNz)typing.Optional[MixedContentResourceType]resource_typerV   rW   typing.Optional[AffectedFrame]framec                 C  st   t  }| j |d< | j|d< | j|d< | jd ur | j |d< | jd ur,| j |d< | jd ur8| j |d< |S )NresolutionStatusinsecureURLmainResourceURLresourceTyperW   r   )r   r   r   r   r   r   rW   r   r   r   r   r   r      s   




z MixedContentIssueDetails.to_jsonc              
   C  st   | t |d t|d t|d d|v rt|d nd d|v r(t|d nd d|v r6t|d dS d dS )Nr   r   r   r   rW   r   )r   r   r   r   rW   r   )rf   r   r
   rn   r   r&   r   r   r   r   r   
  s   

z"MixedContentIssueDetails.from_json)
r   r   r   r   r   rW   r   r   r   r   r   r   r   r   r      s   
 r   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.
     CoepFrameResourceNeedsCoepHeader+CoopSandboxedIFrameCannotNavigateToCoopPageCorpNotSameOrigin1CorpNotSameOriginAfterDefaultedToSameOriginByCoepCorpNotSameSitec                 C  r.   r/   r0   r2   r   r   r   r   !  r3   zBlockedByResponseReason.to_jsonc                 C  r4   r/   r   r   r   r   r   r   $  r5   z!BlockedByResponseReason.from_jsonN)r   r   r   r   %COEP_FRAME_RESOURCE_NEEDS_COEP_HEADER3COOP_SANDBOXED_I_FRAME_CANNOT_NAVIGATE_TO_COOP_PAGECORP_NOT_SAME_ORIGIN;CORP_NOT_SAME_ORIGIN_AFTER_DEFAULTED_TO_SAME_ORIGIN_BY_COEPCORP_NOT_SAME_SITEr   r   r   r   r   r   r   r     s    r   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   rW   r   reasonNr   r   c                 C  s>   t  }| j |d< | j |d< | jd ur| j |d< |S )NrW   r   r   )r   rW   r   r   r   r   r   r   r   r   6  s   
z%BlockedByResponseIssueDetails.to_jsonc                 C  s<   | t |d t|d d|v rt|d dS d dS )NrW   r   r   )rW   r   r   )r   r   r   r&   r   r   r   r   r   >  s   z'BlockedByResponseIssueDetails.from_json)	r   r   r   r   r   r   r   r   r   r   r   r   r   r   )  s   
 r   c                   @  r*   )HeavyAdResolutionStatusHeavyAdBlockedHeavyAdWarningc                 C  r.   r/   r0   r2   r   r   r   r   K  r3   zHeavyAdResolutionStatus.to_jsonc                 C  r4   r/   r   r   r   r   r   r   N  r5   z!HeavyAdResolutionStatus.from_jsonN)r   r   r   HEAVY_AD_BLOCKEDHEAVY_AD_WARNINGr   r   r   r   r   r   r   r   G  r8   r   c                   @  re   )	HeavyAdReasonNetworkTotalLimitCpuTotalLimitCpuPeakLimitc                 C  r.   r/   r0   r2   r   r   r   r   X  r3   zHeavyAdReason.to_jsonc                 C  r4   r/   r   r   r   r   r   r   [  r5   zHeavyAdReason.from_jsonN)	r   r   r   NETWORK_TOTAL_LIMITCPU_TOTAL_LIMITCPU_PEAK_LIMITr   r   r   r   r   r   r   r   S  rm   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 )HeavyAdIssueDetailsr   
resolutionr   r   r&   r   c                 C  s4   t  }| j |d< | j |d< | j |d< |S )Nr   r   r   )r   r   r   r   r   r   r   r   r   r   k  s
   zHeavyAdIssueDetails.to_jsonc                 C  s,   | t |d t|d t|d dS )Nr   r   r   )r   r   r   )r   r   r   r&   r   r   r   r   r   r  s
   zHeavyAdIssueDetails.from_jsonN)r   r   r   r   r   r   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 )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.
    SameSiteCookieIssueMixedContentIssueBlockedByResponseIssueHeavyAdIssuec                 C  r.   r/   r0   r2   r   r   r   r     r3   zInspectorIssueCode.to_jsonc                 C  r4   r/   r   r   r   r   r   r     r5   zInspectorIssueCode.from_jsonN)r   r   r   r   SAME_SITE_COOKIE_ISSUEMIXED_CONTENT_ISSUEBLOCKED_BY_RESPONSE_ISSUE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r| j |d< | jd ur'| j |d< | jd ur3| 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  sl   | d|v rt |d nd d|v rt|d nd d|v r$t|d nd d|v r2t|d dS d dS )Nr   r   r   r   )r   r   r   r   )rO   r   r   r   r   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 )Nr   r   )r   r   r   r   r   r   r   r   r     s   zInspectorIssue.to_jsonc                 C  s    | t |d t|d dS )Nr   r   )r   r   )r   r   r   r   r   r   r   r     s   zInspectorIssue.from_jsonNr   r   r   r   r   r     s   
 r   r!   r    encodingr
   qualitytyping.Optional[float]	size_onlytyping.Optional[bool]returnXtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[typing.Optional[str], int, int]]c                 c  sz    t  }|  |d< ||d< |dur||d< |dur||d< d|d}|V }d|v r0t|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$   r   Nr   sizeOnlyzAudits.getEncodedResponse)methodparamsbodyoriginalSizeencodedSize)r   r   r
   int)r!   r   r   r   r   cmd_dictr   r   r   r   get_encoded_response  s    

r   0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]c                  c      ddi} | V }dS )z\
    Disables issues domain, prevents further issues from being reported to the client.
    r   zAudits.disableNr   r   r   r   r   r   disable  s   
r   c                  c  r   )zz
    Enables issues domain, sends the issues collected so far to the client by means of the
    ``issueAdded`` event.
    r   zAudits.enableNr   r   r   r   r   enable  s   
r   zAudits.issueAddedc                   @  s$   e Zd ZU ded< ed	ddZdS )

IssueAddedr   issuer   r   r   c                 C  s   | t |d dS )Nr   )r   )r   r   r   r   r   r   r     s   zIssueAdded.from_jsonN)r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r     s   
 r   )NN)
r!   r    r   r
   r   r   r   r   r   r   )r   r   )#
__future__r   utilr   r   dataclassesr   enumtyping r   r   r	   r   r&   Enumr+   r9   rJ   rO   rf   rn   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sT   1$0$
'

