U
    gN                     @  s8  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 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 G d.d/ d/ejZ!eG d0d1 d1Z"eG d2d3 d3Z#eG d4d5 d5Z$G d6d7 d7ejZ%G d8d9 d9ejZ&eG d:d; d;Z'eG d<d= d=Z(eG d>d? d?Z)eG d@dA dAZ*G dBdC dCejZ+eG dDdE dEZ,eG dFdG dGZ-eG dHdI dIZ.eG dJdK dKZ/G dLdM dMejZ0eG dNdO dOZ1G dPdQ dQejZ2eG dRdS dSZ3G dTdU dUejZ4eG dVdW dWZ5eG dXdY dYZ6G dZd[ d[ejZ7eG d\d] d]Z8G d^d_ d_ejZ9eG d`da daZ:G dbdc dcejZ;eG ddde deZ<G dfdg dge=Z>eG dhdi diZ?ddjdkdldmdndodpdqZ@drdsdtduZAdrdsdvdwZBddmdrdxdydzZCd{dsd|d}ZDed~eG dd dZEdS )    )annotations   )event_classT_JSON_DICT)	dataclassN)dom)network)page)runtimec                   @  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   R/tmp/pip-unpacked-wheel-3ysq0mf8/selenium/webdriver/common/devtools/v130/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 k	r(| j|d< |S )N	requestIdr&   )r   r$   r   r&   r   r   r   r   r   8   s
    

zAffectedRequest.to_jsonc                 C  s,   | t j|d d|kr$t|d n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.
    page.FrameIdframe_idc                 C  s   t  }| j |d< |S )NframeId)r   r+   r   r   r   r   r   r   N   s    zAffectedFrame.to_jsonc                 C  s   | t j|d dS )Nr,   )r+   )r	   FrameIdr   r   r   r   r   r   S   s    zAffectedFrame.from_jsonNr   r   r   r   r   r)   G   s
   
r)   c                   @  sD   e 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 )CookieExclusionReasonZ&ExcludeSameSiteUnspecifiedTreatedAsLaxZExcludeSameSiteNoneInsecureZExcludeSameSiteLaxZExcludeSameSiteStrictZExcludeInvalidSamePartyZ!ExcludeSamePartyCrossPartyContextZExcludeDomainNonASCIIZ-ExcludeThirdPartyCookieBlockedInFirstPartySetZExcludeThirdPartyPhaseoutc                 C  s   | j S Nvaluer   r   r   r   r   e   s    zCookieExclusionReason.to_jsonc                 C  s   | |S r/   r   r   r   r   r   r   h   s    zCookieExclusionReason.from_jsonN)r   r   r   Z,EXCLUDE_SAME_SITE_UNSPECIFIED_TREATED_AS_LAXZEXCLUDE_SAME_SITE_NONE_INSECUREZEXCLUDE_SAME_SITE_LAXZEXCLUDE_SAME_SITE_STRICTZEXCLUDE_INVALID_SAME_PARTYZ&EXCLUDE_SAME_PARTY_CROSS_PARTY_CONTEXTZEXCLUDE_DOMAIN_NON_ASCIIZ5EXCLUDE_THIRD_PARTY_COOKIE_BLOCKED_IN_FIRST_PARTY_SETZEXCLUDE_THIRD_PARTY_PHASEOUTr   r!   r   r   r   r   r   r.   Z   s   r.   c                   @  sP   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d Zedd ZdS )CookieWarningReasonZ'WarnSameSiteUnspecifiedCrossSiteContextZWarnSameSiteNoneInsecureZ%WarnSameSiteUnspecifiedLaxAllowUnsafeZ$WarnSameSiteStrictLaxDowngradeStrictZ&WarnSameSiteStrictCrossDowngradeStrictZ#WarnSameSiteStrictCrossDowngradeLaxZ#WarnSameSiteLaxCrossDowngradeStrictZ WarnSameSiteLaxCrossDowngradeLaxZ WarnAttributeValueExceedsMaxSizeZWarnDomainNonASCIIZWarnThirdPartyPhaseoutZ.WarnCrossSiteRedirectDowngradeChangesInclusionc                 C  s   | j S r/   r0   r2   r   r   r   r   {   s    zCookieWarningReason.to_jsonc                 C  s   | |S r/   r   r   r   r   r   r   ~   s    zCookieWarningReason.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_LAXZ%WARN_ATTRIBUTE_VALUE_EXCEEDS_MAX_SIZEZWARN_DOMAIN_NON_ASCIIZWARN_THIRD_PARTY_PHASEOUTZ4WARN_CROSS_SITE_REDIRECT_DOWNGRADE_CHANGES_INCLUSIONr   r!   r   r   r   r   r   r3   m   s   r3   c                   @  s(   e Zd ZdZdZdd Zedd ZdS )CookieOperationZ	SetCookieZ
ReadCookiec                 C  s   | j S r/   r0   r2   r   r   r   r      s    zCookieOperation.to_jsonc                 C  s   | |S r/   r   r   r   r   r   r      s    zCookieOperation.from_jsonN)r   r   r   Z
SET_COOKIEZREAD_COOKIEr   r!   r   r   r   r   r   r4      s
   r4   c                   @  sz   e Zd ZU dZ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 )CookieIssueDetailsz
    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.
    z typing.List[CookieWarningReason]cookie_warning_reasonsz"typing.List[CookieExclusionReason]cookie_exclusion_reasonsr4   	operationNztyping.Optional[AffectedCookie]cookier%   raw_cookie_linesite_for_cookies
cookie_url typing.Optional[AffectedRequest]requestc                 C  s   t  }dd | jD |d< dd | jD |d< | j |d< | jd k	rT| j |d< | jd k	rh| j|d< | jd k	r|| j|d	< | jd k	r| j|d
< | j	d k	r| j	 |d< |S )Nc                 S  s   g | ]}|  qS r   r   .0ir   r   r   
<listcomp>   s     z.CookieIssueDetails.to_json.<locals>.<listcomp>cookieWarningReasonsc                 S  s   g | ]}|  qS r   r?   r@   r   r   r   rC      s     cookieExclusionReasonsr8   r9   rawCookieLinesiteForCookies	cookieUrlr>   )
r   r6   r7   r8   r   r9   r:   r;   r<   r>   r   r   r   r   r      s    







zCookieIssueDetails.to_jsonc                 C  s   | dd |d D dd |d D t |d d|krDt|d nd d|krZt|d nd d	|krpt|d	 nd d
|krt|d
 nd d|krt|d nd dS )Nc                 S  s   g | ]}t |qS r   )r3   r   r@   r   r   r   rC      s     z0CookieIssueDetails.from_json.<locals>.<listcomp>rD   c                 S  s   g | ]}t |qS r   )r.   r   r@   r   r   r   rC      s     rE   r8   r9   rF   rG   rH   r>   )r6   r7   r8   r9   r:   r;   r<   r>   )r4   r   r   r   r"   r   r   r   r   r      s    zCookieIssueDetails.from_json)r   r   r   r   r    r9   r:   r;   r<   r>   r   r!   r   r   r   r   r   r5      s   
r5   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/   r0   r2   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   rI      s   rI   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ZdZdZdd Z e!d d! Z"d"S )#MixedContentResourceTypeZAttributionSrcZAudioZBeaconZ	CSPReportDownloadZEventSourceZFaviconZFontZFormZFrameZImageZImportJSONZManifestZPingZ
PluginDataZPluginResourceZPrefetchResourceZScriptZServiceWorkerZSharedWorkerZSpeculationRulesZ
StylesheetZTrackZVideoZWorkerZXMLHttpRequestXSLTc                 C  s   | j S r/   r0   r2   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ATTRIBUTION_SRCZAUDIOZBEACONZ
CSP_REPORTZDOWNLOADZEVENT_SOURCEZFAVICONZFONTZFORMFRAMEZIMAGEZIMPORTrL   ZMANIFESTZPINGZPLUGIN_DATAZPLUGIN_RESOURCEZPREFETCHZRESOURCEZSCRIPTZSERVICE_WORKERZSHARED_WORKERZSPECULATION_RULESZ
STYLESHEETZTRACKZVIDEOZWORKERZXML_HTTP_REQUESTrN   r   r!   r   r   r   r   r   rJ      s@   rJ   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 )MixedContentIssueDetailsrI   resolution_statusr   insecure_urlmain_resource_urlNz)typing.Optional[MixedContentResourceType]resource_typer=   r>   typing.Optional[AffectedFrame]framec                 C  st   t  }| j |d< | j|d< | j|d< | jd k	r@| j |d< | jd k	rX| j |d< | jd k	rp| j |d< |S )NresolutionStatusinsecureURLmainResourceURLresourceTyper>   rV   )r   rQ   r   rR   rS   rT   r>   rV   r   r   r   r   r     s    




z MixedContentIssueDetails.to_jsonc              
   C  sp   | t |d t|d t|d d|kr8t|d nd d|krPt|d nd d|krht|d nd dS )NrW   rX   rY   rZ   r>   rV   )rQ   rR   rS   rT   r>   rV   )rI   r   r   rJ   r"   r)   r   r   r   r   r   $  s    

z"MixedContentIssueDetails.from_json)
r   r   r   r    rT   r>   rV   r   r!   r   r   r   r   r   rP      s   
rP   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 )BlockedByResponseReasonz
    Enum indicating the reason a response has been blocked. These reasons are
    refinements of the net error BLOCKED_BY_RESPONSE.
    Z CoepFrameResourceNeedsCoepHeaderZ+CoopSandboxedIFrameCannotNavigateToCoopPageZCorpNotSameOriginZ1CorpNotSameOriginAfterDefaultedToSameOriginByCoepZ0CorpNotSameOriginAfterDefaultedToSameOriginByDipZ7CorpNotSameOriginAfterDefaultedToSameOriginByCoepAndDipZCorpNotSameSitec                 C  s   | j S r/   r0   r2   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_ORIGIN_AFTER_DEFAULTED_TO_SAME_ORIGIN_BY_DIPZCCORP_NOT_SAME_ORIGIN_AFTER_DEFAULTED_TO_SAME_ORIGIN_BY_COEP_AND_DIPZCORP_NOT_SAME_SITEr   r!   r   r   r   r   r   r[   0  s   r[   c                   @  sN   e Zd ZU dZded< ded< dZ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"   r>   r[   reasonNrU   parent_frameblocked_framec                 C  sV   t  }| j |d< | j |d< | jd k	r:| j |d< | jd k	rR| j |d< |S )Nr>   r]   parentFrameblockedFrame)r   r>   r   r]   r^   r_   r   r   r   r   r   T  s    

z%BlockedByResponseIssueDetails.to_jsonc                 C  sP   | t |d t|d d|kr0t|d nd d|krHt|d nd dS )Nr>   r]   r`   ra   )r>   r]   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   r\   E  s   

r\   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/   r0   r2   r   r   r   r   l  s    zHeavyAdResolutionStatus.to_jsonc                 C  s   | |S r/   r   r   r   r   r   r   o  s    z!HeavyAdResolutionStatus.from_jsonN)r   r   r   ZHEAVY_AD_BLOCKEDZHEAVY_AD_WARNINGr   r!   r   r   r   r   r   rb   h  s
   rb   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/   r0   r2   r   r   r   r   y  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   rc   t  s   rc   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 )HeavyAdIssueDetailsrb   
resolutionrc   r]   r)   rV   c                 C  s4   t  }| j |d< | j |d< | j |d< |S )Nre   r]   rV   )r   re   r   r]   rV   r   r   r   r   r     s
    zHeavyAdIssueDetails.to_jsonc                 C  s,   | t |d t|d t|d dS )Nre   r]   rV   )re   r]   rV   )rb   r   rc   r)   r   r   r   r   r     s
    zHeavyAdIssueDetails.from_jsonNr   r   r   r    r   r!   r   r   r   r   r   rd     s   
rd   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 )"ContentSecurityPolicyViolationTypeZkInlineViolationZkEvalViolationZkURLViolationZkTrustedTypesSinkViolationZkTrustedTypesPolicyViolationZkWasmEvalViolationc                 C  s   | j S r/   r0   r2   r   r   r   r     s    z*ContentSecurityPolicyViolationType.to_jsonc                 C  s   | |S r/   r   r   r   r   r   r     s    z,ContentSecurityPolicyViolationType.from_jsonN)r   r   r   ZK_INLINE_VIOLATIONZK_EVAL_VIOLATIONZK_URL_VIOLATIONZK_TRUSTED_TYPES_SINK_VIOLATIONZ K_TRUSTED_TYPES_POLICY_VIOLATIONZK_WASM_EVAL_VIOLATIONr   r!   r   r   r   r   r   rg     s   rg   c                   @  sF   e Zd ZU ded< ded< ded< dZded< d	d
 Zedd ZdS )SourceCodeLocationr   r&   intline_numbercolumn_numberNz!typing.Optional[runtime.ScriptId]	script_idc                 C  s@   t  }| j|d< | j|d< | j|d< | jd k	r<| j |d< |S )Nr&   
lineNumbercolumnNumberscriptId)r   r&   rj   rk   rl   r   r   r   r   r   r     s    



zSourceCodeLocation.to_jsonc                 C  s@   | t |d t|d t|d d|kr8tj|d nd dS )Nr&   rm   rn   ro   )r&   rj   rk   rl   )r   ri   r
   ZScriptIdr   r   r   r   r   r     s    


zSourceCodeLocation.from_json)r   r   r   r    rl   r   r!   r   r   r   r   r   rh     s   
	rh   c                   @  sj   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Zded< dd Ze	dd Z
dS )!ContentSecurityPolicyIssueDetailsr   violated_directiveboolis_report_onlyrg   &content_security_policy_violation_typeNr%   blocked_urlrU   frame_ancestor#typing.Optional[SourceCodeLocation]source_code_location"typing.Optional[dom.BackendNodeId]violating_node_idc                 C  s   t  }| j|d< | j|d< | j |d< | jd k	r<| j|d< | jd k	rT| j |d< | jd k	rl| j |d< | jd k	r| j |d< |S )NviolatedDirectiveisReportOnly"contentSecurityPolicyViolationType
blockedURLframeAncestorsourceCodeLocationviolatingNodeId)	r   rq   rs   rt   r   ru   rv   rx   rz   r   r   r   r   r     s    






z)ContentSecurityPolicyIssueDetails.to_jsonc                 C  s   | t |d t|d t|d d|kr6t |d nd d|krNt|d nd d|krft|d nd d|krtj|d nd dS )	Nr{   r|   r}   r~   r   r   r   )rq   rs   rt   ru   rv   rx   rz   )r   rr   rg   r   r)   rh   r   BackendNodeIdr   r   r   r   r     s    

z+ContentSecurityPolicyIssueDetails.from_json)r   r   r   r    ru   rv   rx   rz   r   r!   r   r   r   r   r   rp     s   
rp   c                   @  s(   e Zd ZdZdZdd Zedd ZdS )SharedArrayBufferIssueTypeZTransferIssueZCreationIssuec                 C  s   | j S r/   r0   r2   r   r   r   r     s    z"SharedArrayBufferIssueType.to_jsonc                 C  s   | |S r/   r   r   r   r   r   r     s    z$SharedArrayBufferIssueType.from_jsonN)r   r   r   ZTRANSFER_ISSUEZCREATION_ISSUEr   r!   r   r   r   r   r   r     s
   r   c                   @  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 )SharedArrayBufferIssueDetailsz
    Details for a issue arising from an SAB being instantiated in, or
    transferred to a context that is not cross-origin isolated.
    rh   rx   rr   
is_warningr   type_c                 C  s0   t  }| j |d< | j|d< | j |d< |S )Nr   	isWarningtype)r   rx   r   r   r   r   r   r   r   r     s
    
z%SharedArrayBufferIssueDetails.to_jsonc                 C  s*   | t |d t|d t|d dS )Nr   r   r   )rx   r   r   )rh   r   rr   r   r   r   r   r   r     s
    
z'SharedArrayBufferIssueDetails.from_jsonNr   r   r   r   r   r     s   
r   c                   @  sZ   e Zd ZU 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 )LowTextContrastIssueDetailsdom.BackendNodeIdrz   r   violating_node_selectorfloatcontrast_ratiothreshold_aathreshold_aaa	font_sizefont_weightc                 C  sT   t  }| j |d< | j|d< | j|d< | j|d< | j|d< | j|d< | j|d< |S )Nr   violatingNodeSelectorcontrastRatiothresholdAAthresholdAAAfontSize
fontWeight)	r   rz   r   r   r   r   r   r   r   r   r   r   r   r   /  s    





z#LowTextContrastIssueDetails.to_jsonc              
   C  sR   | t j|d t|d t|d t|d t|d t|d t|d dS )	Nr   r   r   r   r   r   r   )rz   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   :  s    





z%LowTextContrastIssueDetails.from_jsonNrf   r   r   r   r   r     s   
r   c                   @  sn   e Zd ZU dZ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d Z	e
dd ZdS )CorsIssueDetailszl
    Details for a CORS related issue, e.g. a warning or error related to
    CORS RFC1918 enforcement.
    znetwork.CorsErrorStatuscors_error_statusrr   r   r"   r>   Nrw   locationr%   initiator_originz'typing.Optional[network.IPAddressSpace]resource_ip_address_spacez,typing.Optional[network.ClientSecurityState]client_security_statec                 C  s   t  }| j |d< | j|d< | j |d< | jd k	rD| j |d< | jd k	rX| j|d< | jd k	rp| j |d< | jd k	r| j |d< |S )NcorsErrorStatusr   r>   r   initiatorOriginresourceIPAddressSpaceclientSecurityState)	r   r   r   r   r>   r   r   r   r   r   r   r   r   r   [  s    





zCorsIssueDetails.to_jsonc                 C  s   | t j|d t|d t|d d|kr<t|d nd d|krRt|d nd d|krlt j|d nd d|krt j|d nd dS )	Nr   r   r>   r   r   r   r   )r   r   r>   r   r   r   r   )	r   ZCorsErrorStatusr   rr   r"   rh   r   ZIPAddressSpaceZClientSecurityStater   r   r   r   r   j  s    
zCorsIssueDetails.from_json)r   r   r   r   r    r   r   r   r   r   r!   r   r   r   r   r   r   G  s   
r   c                   @  st   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d Zedd ZdS )AttributionReportingIssueTypeZPermissionPolicyDisabledZUntrustworthyReportingOriginZInsecureContextInvalidHeaderZInvalidRegisterTriggerHeaderZSourceAndTriggerHeadersZSourceIgnoredZTriggerIgnoredZOsSourceIgnoredZOsTriggerIgnoredZInvalidRegisterOsSourceHeaderZInvalidRegisterOsTriggerHeaderZWebAndOsHeadersZNoWebOrOsSupportZ4NavigationRegistrationWithoutTransientUserActivationZInvalidInfoHeaderZNoRegisterSourceHeaderZNoRegisterTriggerHeaderZNoRegisterOsSourceHeaderZNoRegisterOsTriggerHeaderZ+NavigationRegistrationUniqueScopeAlreadySetc                 C  s   | j S r/   r0   r2   r   r   r   r     s    z%AttributionReportingIssueType.to_jsonc                 C  s   | |S r/   r   r   r   r   r   r     s    z'AttributionReportingIssueType.from_jsonN)r   r   r   ZPERMISSION_POLICY_DISABLEDZUNTRUSTWORTHY_REPORTING_ORIGINZINSECURE_CONTEXTZINVALID_HEADERZINVALID_REGISTER_TRIGGER_HEADERZSOURCE_AND_TRIGGER_HEADERSZSOURCE_IGNOREDZTRIGGER_IGNOREDZOS_SOURCE_IGNOREDZOS_TRIGGER_IGNOREDZ!INVALID_REGISTER_OS_SOURCE_HEADERZ"INVALID_REGISTER_OS_TRIGGER_HEADERZWEB_AND_OS_HEADERSZNO_WEB_OR_OS_SUPPORTZ9NAVIGATION_REGISTRATION_WITHOUT_TRANSIENT_USER_ACTIVATIONZINVALID_INFO_HEADERZNO_REGISTER_SOURCE_HEADERZNO_REGISTER_TRIGGER_HEADERZNO_REGISTER_OS_SOURCE_HEADERZNO_REGISTER_OS_TRIGGER_HEADERZ0NAVIGATION_REGISTRATION_UNIQUE_SCOPE_ALREADY_SETr   r!   r   r   r   r   r   r   w  s0   r   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d Zedd ZdS )SharedDictionaryErrorZ UseErrorCrossOriginNoCorsRequestZUseErrorDictionaryLoadFailureZ!UseErrorMatchingDictionaryNotUsedZ)UseErrorUnexpectedContentDictionaryHeaderZ!WriteErrorCossOriginNoCorsRequestZWriteErrorDisallowedBySettingsZWriteErrorExpiredResponseZWriteErrorFeatureDisabledZWriteErrorInsufficientResourcesZWriteErrorInvalidMatchFieldZ!WriteErrorInvalidStructuredHeaderZWriteErrorNavigationRequestZWriteErrorNoMatchFieldZWriteErrorNonListMatchDestFieldZWriteErrorNonSecureContextZWriteErrorNonStringIdFieldZ"WriteErrorNonStringInMatchDestListZWriteErrorNonStringMatchFieldZWriteErrorNonTokenTypeFieldZWriteErrorRequestAbortedZWriteErrorShuttingDownZWriteErrorTooLongIdFieldZWriteErrorUnsupportedTypec                 C  s   | j S r/   r0   r2   r   r   r   r     s    zSharedDictionaryError.to_jsonc                 C  s   | |S r/   r   r   r   r   r   r     s    zSharedDictionaryError.from_jsonN)r   r   r   Z&USE_ERROR_CROSS_ORIGIN_NO_CORS_REQUESTZ!USE_ERROR_DICTIONARY_LOAD_FAILUREZ&USE_ERROR_MATCHING_DICTIONARY_NOT_USEDZ.USE_ERROR_UNEXPECTED_CONTENT_DICTIONARY_HEADERZ'WRITE_ERROR_COSS_ORIGIN_NO_CORS_REQUESTZ"WRITE_ERROR_DISALLOWED_BY_SETTINGSZWRITE_ERROR_EXPIRED_RESPONSEZWRITE_ERROR_FEATURE_DISABLEDZ"WRITE_ERROR_INSUFFICIENT_RESOURCESZWRITE_ERROR_INVALID_MATCH_FIELDZ%WRITE_ERROR_INVALID_STRUCTURED_HEADERZWRITE_ERROR_NAVIGATION_REQUESTZWRITE_ERROR_NO_MATCH_FIELDZ%WRITE_ERROR_NON_LIST_MATCH_DEST_FIELDZWRITE_ERROR_NON_SECURE_CONTEXTZWRITE_ERROR_NON_STRING_ID_FIELDZ)WRITE_ERROR_NON_STRING_IN_MATCH_DEST_LISTZ"WRITE_ERROR_NON_STRING_MATCH_FIELDZ WRITE_ERROR_NON_TOKEN_TYPE_FIELDZWRITE_ERROR_REQUEST_ABORTEDZWRITE_ERROR_SHUTTING_DOWNZWRITE_ERROR_TOO_LONG_ID_FIELDZWRITE_ERROR_UNSUPPORTED_TYPEr   r!   r   r   r   r   r   r     s4   r   c                   @  sR   e Zd ZU 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 ) AttributionReportingIssueDetailsz
    Details for issues around "Attribution Reporting API" usage.
    Explainer: https://github.com/WICG/attribution-reporting-api
    r   violation_typeNr=   r>   ry   rz   r%   invalid_parameterc                 C  s\   t  }| j |d< | jd k	r,| j |d< | jd k	rD| j |d< | jd k	rX| j|d< |S )NviolationTyper>   r   invalidParameter)r   r   r   r>   rz   r   r   r   r   r   r     s    



z(AttributionReportingIssueDetails.to_jsonc                 C  s\   | t |d d|kr$t|d nd d|kr>tj|d nd d|krTt|d nd dS )Nr   r>   r   r   )r   r>   rz   r   )r   r   r"   r   r   r   r   r   r   r   r     s    z*AttributionReportingIssueDetails.from_json)r   r   r   r   r    r>   rz   r   r   r!   r   r   r   r   r   r     s   
r   c                   @  sN   e Zd ZU dZded< ded< ded< ded	< d
ed< dd Zedd ZdS )QuirksModeIssueDetailszs
    Details for issues about documents in Quirks Mode
    or Limited Quirks Mode that affects page layouting.
    rr   is_limited_quirks_moder   document_node_idr   r&   r*   r+   znetwork.LoaderId	loader_idc                 C  sH   t  }| j|d< | j |d< | j|d< | j |d< | j |d< |S )NisLimitedQuirksModedocumentNodeIdr&   r,   loaderId)r   r   r   r   r&   r+   r   r   r   r   r   r     s    

zQuirksModeIssueDetails.to_jsonc              	   C  sF   | t |d tj|d t|d tj|d tj|d dS )Nr   r   r&   r,   r   )r   r   r&   r+   r   )	rr   r   r   r   r   r	   r-   r   ZLoaderIdr   r   r   r   r     s    

z QuirksModeIssueDetails.from_jsonNr   r   r   r   r   r     s   
	r   c                   @  s6   e Zd ZU ded< dZded< dd Zedd	 ZdS )
NavigatorUserAgentIssueDetailsr   r&   Nrw   r   c                 C  s,   t  }| j|d< | jd k	r(| j |d< |S )Nr&   r   )r   r&   r   r   r   r   r   r   r     s
    

z&NavigatorUserAgentIssueDetails.to_jsonc                 C  s*   | t |d d|kr"t|d nd dS )Nr&   r   )r&   r   )r   rh   r   r   r   r   r   r     s    
z(NavigatorUserAgentIssueDetails.from_json)r   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 )
SharedDictionaryIssueDetailsr   shared_dictionary_errorr"   r>   c                 C  s&   t  }| j |d< | j |d< |S )NsharedDictionaryErrorr>   )r   r   r   r>   r   r   r   r   r     s    z$SharedDictionaryIssueDetails.to_jsonc                 C  s    | t |d t|d dS )Nr   r>   )r   r>   )r   r   r"   r   r   r   r   r   !  s    z&SharedDictionaryIssueDetails.from_jsonNrf   r   r   r   r   r     s
   
r   c                   @  sL   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d Zedd ZdS )GenericIssueErrorTypeZFormLabelForNameErrorZFormDuplicateIdForInputErrorZFormInputWithNoLabelErrorZ#FormAutocompleteAttributeEmptyErrorZ)FormEmptyIdAndNameAttributesForInputErrorZ!FormAriaLabelledByToNonExistingIdZ:FormInputAssignedAutocompleteValueToIdOrNameAttributeErrorZ$FormLabelHasNeitherForNorNestedInputZ%FormLabelForMatchesNonExistingIdErrorZ6FormInputHasWrongButWellIntendedAutocompleteValueErrorZResponseWasBlockedByORBc                 C  s   | j S r/   r0   r2   r   r   r   r   6  s    zGenericIssueErrorType.to_jsonc                 C  s   | |S r/   r   r   r   r   r   r   9  s    zGenericIssueErrorType.from_jsonN)r   r   r   ZFORM_LABEL_FOR_NAME_ERRORZ!FORM_DUPLICATE_ID_FOR_INPUT_ERRORZFORM_INPUT_WITH_NO_LABEL_ERRORZ'FORM_AUTOCOMPLETE_ATTRIBUTE_EMPTY_ERRORZ1FORM_EMPTY_ID_AND_NAME_ATTRIBUTES_FOR_INPUT_ERRORZ(FORM_ARIA_LABELLED_BY_TO_NON_EXISTING_IDZDFORM_INPUT_ASSIGNED_AUTOCOMPLETE_VALUE_TO_ID_OR_NAME_ATTRIBUTE_ERRORZ+FORM_LABEL_HAS_NEITHER_FOR_NOR_NESTED_INPUTZ,FORM_LABEL_FOR_MATCHES_NON_EXISTING_ID_ERRORZ?FORM_INPUT_HAS_WRONG_BUT_WELL_INTENDED_AUTOCOMPLETE_VALUE_ERRORZRESPONSE_WAS_BLOCKED_BY_ORBr   r!   r   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Zded< dZd	ed
< dZded< dd Z	e
dd ZdS )GenericIssueDetailszL
    Depending on the concrete errorType, different properties are set.
    r   
error_typeNztyping.Optional[page.FrameId]r+   ry   rz   r%   violating_node_attributer=   r>   c                 C  st   t  }| j |d< | jd k	r,| j |d< | jd k	rD| j |d< | jd k	rX| j|d< | jd k	rp| j |d< |S )N	errorTyper,   r   violatingNodeAttributer>   )r   r   r   r+   rz   r   r>   r   r   r   r   r   N  s    




zGenericIssueDetails.to_jsonc              	   C  sv   | t |d d|kr&tj|d nd d|kr@tj|d nd d|krVt|d nd d|krnt|d nd dS )Nr   r,   r   r   r>   )r   r+   rz   r   r>   )r   r   r	   r-   r   r   r   r"   r   r   r   r   r   [  s    zGenericIssueDetails.from_json)r   r   r   r   r    r+   rz   r   r>   r   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 )DeprecationIssueDetailsz
    This issue tracks information needed to print a deprecation message.
    https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/frame/third_party/blink/renderer/core/frame/deprecation/README.md
    rh   rx   r   r   NrU   affected_framec                 C  s:   t  }| j |d< | j|d< | jd k	r6| j |d< |S )Nr   r   affectedFrame)r   rx   r   r   r   r   r   r   r   r   s  s    

zDeprecationIssueDetails.to_jsonc                 C  s6   | t |d t|d d|kr.t|d nd dS )Nr   r   r   )rx   r   r   )rh   r   r   r)   r   r   r   r   r   {  s
    
z!DeprecationIssueDetails.from_json)	r   r   r   r   r    r   r   r!   r   r   r   r   r   r   f  s   
r   c                   @  s.   e Zd ZU dZded< dd Zedd ZdS )	BounceTrackingIssueDetailsa~  
    This issue warns about sites in the redirect chain of a finished navigation
    that may be flagged as trackers and have their state cleared if they don't
    receive a user interaction. Note that in this context 'site' means eTLD+1.
    For example, if the URL ``https://example.test:80/bounce`` was in the
    redirect chain, the site reported would be ``example.test``.
    typing.List[str]tracking_sitesc                 C  s   t  }dd | jD |d< |S )Nc                 S  s   g | ]}|qS r   r   r@   r   r   r   rC     s     z6BounceTrackingIssueDetails.to_json.<locals>.<listcomp>trackingSites)r   r   r   r   r   r   r     s    z"BounceTrackingIssueDetails.to_jsonc                 C  s   | dd |d D dS )Nc                 S  s   g | ]}t |qS r   r   r@   r   r   r   rC     s     z8BounceTrackingIssueDetails.from_json.<locals>.<listcomp>r   )r   r   r   r   r   r   r     s    z$BounceTrackingIssueDetails.from_jsonNr   r   r   r   r   r     s
   
r   c                   @  sF   e Zd ZU dZded< ded< ded< ded	< d
d Zedd ZdS )%CookieDeprecationMetadataIssueDetailsaa  
    This issue warns about third-party sites that are accessing cookies on the
    current page, and have been permitted due to having a global metadata grant.
    Note that in this context 'site' means eTLD+1. For example, if the URL
    ``https://example.test:80/web_page`` was accessing cookies, the site reported
    would be ``example.test``.
    r   allowed_sitesr   opt_out_percentagerr   is_opt_out_top_levelr4   r8   c                 C  s@   t  }dd | jD |d< | j|d< | j|d< | j |d< |S )Nc                 S  s   g | ]}|qS r   r   r@   r   r   r   rC     s     zACookieDeprecationMetadataIssueDetails.to_json.<locals>.<listcomp>allowedSitesoptOutPercentageisOptOutTopLevelr8   )r   r   r   r   r8   r   r   r   r   r   r     s    

z-CookieDeprecationMetadataIssueDetails.to_jsonc                 C  s8   | dd |d D t |d t|d t|d dS )Nc                 S  s   g | ]}t |qS r   r   r@   r   r   r   rC     s     zCCookieDeprecationMetadataIssueDetails.from_json.<locals>.<listcomp>r   r   r   r8   )r   r   r   r8   )r   rr   r4   r   r   r   r   r   r     s    

z/CookieDeprecationMetadataIssueDetails.from_jsonNr   r   r   r   r   r     s   
r   c                   @  s(   e Zd ZdZdZdd Zedd ZdS )ClientHintIssueReasonZMetaTagAllowListInvalidOriginZMetaTagModifiedHTMLc                 C  s   | j S r/   r0   r2   r   r   r   r     s    zClientHintIssueReason.to_jsonc                 C  s   | |S r/   r   r   r   r   r   r     s    zClientHintIssueReason.from_jsonN)r   r   r   Z"META_TAG_ALLOW_LIST_INVALID_ORIGINZMETA_TAG_MODIFIED_HTMLr   r!   r   r   r   r   r   r     s
   r   c                   @  s*   e Zd ZU ded< dd Zedd ZdS ) FederatedAuthRequestIssueDetailsFederatedAuthRequestIssueReason#federated_auth_request_issue_reasonc                 C  s   t  }| j |d< |S )NfederatedAuthRequestIssueReason)r   r   r   r   r   r   r   r     s    z(FederatedAuthRequestIssueDetails.to_jsonc                 C  s   | t |d dS )Nr   )r   )r   r   r   r   r   r   r     s    z*FederatedAuthRequestIssueDetails.from_jsonNrf   r   r   r   r   r     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	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%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/d0 Z1e2d1d2 Z3d3S )4r   z
    Represents the failure reason when a federated authentication reason fails.
    Should be updated alongside RequestIdTokenStatus in
    third_party/blink/public/mojom/devtools/inspector_issue.mojom to include
    all cases except for success.
    ZShouldEmbargoZTooManyRequestsZWellKnownHttpNotFoundZWellKnownNoResponseZWellKnownInvalidResponseZWellKnownListEmptyZWellKnownInvalidContentTypeZConfigNotInWellKnownZWellKnownTooBigZConfigHttpNotFoundZConfigNoResponseZConfigInvalidResponseZConfigInvalidContentTypeZClientMetadataHttpNotFoundZClientMetadataNoResponseZClientMetadataInvalidResponseZ ClientMetadataInvalidContentTypeZIdpNotPotentiallyTrustworthyZDisabledInSettingsZDisabledInFlagsZErrorFetchingSigninZInvalidSigninResponseZAccountsHttpNotFoundZAccountsNoResponseZAccountsInvalidResponseZAccountsListEmptyZAccountsInvalidContentTypeZIdTokenHttpNotFoundZIdTokenNoResponseZIdTokenInvalidResponseZIdTokenIdpErrorResponseZ IdTokenCrossSiteIdpErrorResponseZIdTokenInvalidRequestZIdTokenInvalidContentTypeZErrorIdTokenZCanceledZRpPageNotVisibleZSilentMediationFailureZThirdPartyCookiesBlockedNotSignedInWithIdpZMissingTransientUserActivationZReplacedByButtonModeZInvalidFieldsSpecifiedZRelyingPartyOriginIsOpaqueZTypeNotMatchingc                 C  s   | j S r/   r0   r2   r   r   r   r     s    z'FederatedAuthRequestIssueReason.to_jsonc                 C  s   | |S r/   r   r   r   r   r   r     s    z)FederatedAuthRequestIssueReason.from_jsonN)4r   r   r   r   ZSHOULD_EMBARGOTOO_MANY_REQUESTSZWELL_KNOWN_HTTP_NOT_FOUNDZWELL_KNOWN_NO_RESPONSEZWELL_KNOWN_INVALID_RESPONSEZWELL_KNOWN_LIST_EMPTYZWELL_KNOWN_INVALID_CONTENT_TYPEZCONFIG_NOT_IN_WELL_KNOWNZWELL_KNOWN_TOO_BIGZCONFIG_HTTP_NOT_FOUNDZCONFIG_NO_RESPONSEZCONFIG_INVALID_RESPONSEZCONFIG_INVALID_CONTENT_TYPEZCLIENT_METADATA_HTTP_NOT_FOUNDZCLIENT_METADATA_NO_RESPONSEZ CLIENT_METADATA_INVALID_RESPONSEZ$CLIENT_METADATA_INVALID_CONTENT_TYPEZIDP_NOT_POTENTIALLY_TRUSTWORTHYZDISABLED_IN_SETTINGSZDISABLED_IN_FLAGSZERROR_FETCHING_SIGNINZINVALID_SIGNIN_RESPONSEZACCOUNTS_HTTP_NOT_FOUNDZACCOUNTS_NO_RESPONSEZACCOUNTS_INVALID_RESPONSEZACCOUNTS_LIST_EMPTYZACCOUNTS_INVALID_CONTENT_TYPEZID_TOKEN_HTTP_NOT_FOUNDZID_TOKEN_NO_RESPONSEZID_TOKEN_INVALID_RESPONSEZID_TOKEN_IDP_ERROR_RESPONSEZ&ID_TOKEN_CROSS_SITE_IDP_ERROR_RESPONSEZID_TOKEN_INVALID_REQUESTZID_TOKEN_INVALID_CONTENT_TYPEZERROR_ID_TOKENZCANCELEDZRP_PAGE_NOT_VISIBLEZSILENT_MEDIATION_FAILUREZTHIRD_PARTY_COOKIES_BLOCKEDNOT_SIGNED_IN_WITH_IDPZ!MISSING_TRANSIENT_USER_ACTIVATIONZREPLACED_BY_BUTTON_MODEZINVALID_FIELDS_SPECIFIEDZRELYING_PARTY_ORIGIN_IS_OPAQUEZTYPE_NOT_MATCHINGr   r!   r   r   r   r   r   r     sb   r   c                   @  s*   e Zd ZU ded< dd Zedd ZdS )(FederatedAuthUserInfoRequestIssueDetails'FederatedAuthUserInfoRequestIssueReason-federated_auth_user_info_request_issue_reasonc                 C  s   t  }| j |d< |S )N'federatedAuthUserInfoRequestIssueReason)r   r   r   r   r   r   r   r     s    z0FederatedAuthUserInfoRequestIssueDetails.to_jsonc                 C  s   | t |d dS )Nr   )r   )r   r   r   r   r   r   r      s    z2FederatedAuthUserInfoRequestIssueDetails.from_jsonNrf   r   r   r   r   r     s   
r   c                   @  sH   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d Zedd ZdS )r   z
    Represents the failure reason when a getUserInfo() call fails.
    Should be updated alongside FederatedAuthUserInfoRequestResult in
    third_party/blink/public/mojom/devtools/inspector_issue.mojom.
    ZNotSameOriginZ	NotIframeZNotPotentiallyTrustworthyZNoApiPermissionr   ZNoAccountSharingPermissionZInvalidConfigOrWellKnownZInvalidAccountsResponseZ"NoReturningUserFromFetchedAccountsc                 C  s   | j S r/   r0   r2   r   r   r   r   7  s    z/FederatedAuthUserInfoRequestIssueReason.to_jsonc                 C  s   | |S r/   r   r   r   r   r   r   :  s    z1FederatedAuthUserInfoRequestIssueReason.from_jsonN)r   r   r   r   ZNOT_SAME_ORIGINZ
NOT_IFRAMEZNOT_POTENTIALLY_TRUSTWORTHYZNO_API_PERMISSIONr   ZNO_ACCOUNT_SHARING_PERMISSIONZINVALID_CONFIG_OR_WELL_KNOWNZINVALID_ACCOUNTS_RESPONSEZ'NO_RETURNING_USER_FROM_FETCHED_ACCOUNTSr   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 )ClientHintIssueDetailsz
    This issue tracks client hints related issues. It's used to deprecate old
    features, encourage the use of new ones, and provide general guidance.
    rh   rx   r   client_hint_issue_reasonc                 C  s&   t  }| j |d< | j |d< |S )Nr   clientHintIssueReason)r   rx   r   r   r   r   r   r   r   I  s    zClientHintIssueDetails.to_jsonc                 C  s    | t |d t|d dS )Nr   r   )rx   r   )rh   r   r   r   r   r   r   r   O  s    z ClientHintIssueDetails.from_jsonNr   r   r   r   r   r   ?  s   
r   c                   @  s>   e Zd ZU ded< ded< dZded< dd Zed	d
 ZdS )FailedRequestInfor   r&   failure_messageNz"typing.Optional[network.RequestId]r$   c                 C  s6   t  }| j|d< | j|d< | jd k	r2| j |d< |S )Nr&   failureMessager'   )r   r&   r   r$   r   r   r   r   r   r   a  s    


zFailedRequestInfo.to_jsonc                 C  s6   | t |d t |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   i  s
    

zFailedRequestInfo.from_json)r   r   r   r    r$   r   r!   r   r   r   r   r   r   W  s   
r   c                   @  s(   e Zd ZdZdZdd Zedd ZdS )StyleSheetLoadingIssueReasonZLateImportRuleZRequestFailedc                 C  s   | j S r/   r0   r2   r   r   r   r   v  s    z$StyleSheetLoadingIssueReason.to_jsonc                 C  s   | |S r/   r   r   r   r   r   r   y  s    z&StyleSheetLoadingIssueReason.from_jsonN)r   r   r   ZLATE_IMPORT_RULEZREQUEST_FAILEDr   r!   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 )StylesheetLoadingIssueDetailszK
    This issue warns when a referenced stylesheet couldn't be loaded.
    rh   rx   r    style_sheet_loading_issue_reasonNz"typing.Optional[FailedRequestInfo]failed_request_infoc                 C  s>   t  }| j |d< | j |d< | jd k	r:| j |d< |S )Nr   styleSheetLoadingIssueReasonfailedRequestInfo)r   rx   r   r   r   r   r   r   r   r     s    
z%StylesheetLoadingIssueDetails.to_jsonc                 C  s8   | t |d t|d d|kr0t|d nd dS )Nr   r   r   )rx   r   r   )rh   r   r   r   r   r   r   r   r     s
    z'StylesheetLoadingIssueDetails.from_json)	r   r   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 )
PropertyRuleIssueReasonZInvalidSyntaxZInvalidInitialValueZInvalidInheritsZInvalidNamec                 C  s   | j S r/   r0   r2   r   r   r   r     s    zPropertyRuleIssueReason.to_jsonc                 C  s   | |S r/   r   r   r   r   r   r     s    z!PropertyRuleIssueReason.from_jsonN)
r   r   r   ZINVALID_SYNTAXZINVALID_INITIAL_VALUEZINVALID_INHERITSZINVALID_NAMEr   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 )PropertyRuleIssueDetailszp
    This issue warns about errors in property rules that lead to property
    registrations being ignored.
    rh   rx   r   property_rule_issue_reasonNr%   property_valuec                 C  s:   t  }| j |d< | j |d< | jd k	r6| j|d< |S )Nr   propertyRuleIssueReasonpropertyValue)r   rx   r   r   r   r   r   r   r   r     s    

z PropertyRuleIssueDetails.to_jsonc                 C  s6   | t |d t|d d|kr.t|d nd dS )Nr   r   r   )rx   r   r   )rh   r   r   r   r   r   r   r   r     s
    z"PropertyRuleIssueDetails.from_json)	r   r   r   r   r    r   r   r!   r   r   r   r   r   r     s   
r   c                   @  sx   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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CookieIssueZMixedContentIssueZBlockedByResponseIssueZHeavyAdIssueZContentSecurityPolicyIssueZSharedArrayBufferIssueZLowTextContrastIssueZ	CorsIssueZAttributionReportingIssueZQuirksModeIssueZNavigatorUserAgentIssueZGenericIssueZDeprecationIssueZClientHintIssueZFederatedAuthRequestIssueZBounceTrackingIssueZCookieDeprecationMetadataIssueZStylesheetLoadingIssueZ!FederatedAuthUserInfoRequestIssueZPropertyRuleIssueZSharedDictionaryIssuec                 C  s   | j S r/   r0   r2   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COOKIE_ISSUEZMIXED_CONTENT_ISSUEZBLOCKED_BY_RESPONSE_ISSUEZHEAVY_AD_ISSUEZCONTENT_SECURITY_POLICY_ISSUEZSHARED_ARRAY_BUFFER_ISSUEZLOW_TEXT_CONTRAST_ISSUEZ
CORS_ISSUEZATTRIBUTION_REPORTING_ISSUEZQUIRKS_MODE_ISSUEZNAVIGATOR_USER_AGENT_ISSUEZGENERIC_ISSUEZDEPRECATION_ISSUEZCLIENT_HINT_ISSUEZFEDERATED_AUTH_REQUEST_ISSUEZBOUNCE_TRACKING_ISSUEZ!COOKIE_DEPRECATION_METADATA_ISSUEZSTYLESHEET_LOADING_ISSUEZ&FEDERATED_AUTH_USER_INFO_REQUEST_ISSUEZPROPERTY_RULE_ISSUEZSHARED_DICTIONARY_ISSUEr   r!   r   r   r   r   r   r     s2   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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/d0 ZdS )1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[CookieIssueDetails]cookie_issue_detailsz)typing.Optional[MixedContentIssueDetails]mixed_content_issue_detailsz.typing.Optional[BlockedByResponseIssueDetails]!blocked_by_response_issue_detailsz$typing.Optional[HeavyAdIssueDetails]heavy_ad_issue_detailsz2typing.Optional[ContentSecurityPolicyIssueDetails]%content_security_policy_issue_detailsz.typing.Optional[SharedArrayBufferIssueDetails]!shared_array_buffer_issue_detailsz,typing.Optional[LowTextContrastIssueDetails]low_text_contrast_issue_detailsz!typing.Optional[CorsIssueDetails]cors_issue_detailsz1typing.Optional[AttributionReportingIssueDetails]#attribution_reporting_issue_detailsz'typing.Optional[QuirksModeIssueDetails]quirks_mode_issue_detailsz/typing.Optional[NavigatorUserAgentIssueDetails]"navigator_user_agent_issue_detailsz$typing.Optional[GenericIssueDetails]generic_issue_detailsz(typing.Optional[DeprecationIssueDetails]deprecation_issue_detailsz'typing.Optional[ClientHintIssueDetails]client_hint_issue_detailsz1typing.Optional[FederatedAuthRequestIssueDetails]$federated_auth_request_issue_detailsz+typing.Optional[BounceTrackingIssueDetails]bounce_tracking_issue_detailsz6typing.Optional[CookieDeprecationMetadataIssueDetails])cookie_deprecation_metadata_issue_detailsz.typing.Optional[StylesheetLoadingIssueDetails] stylesheet_loading_issue_detailsz)typing.Optional[PropertyRuleIssueDetails]property_rule_issue_detailsz9typing.Optional[FederatedAuthUserInfoRequestIssueDetails].federated_auth_user_info_request_issue_detailsz-typing.Optional[SharedDictionaryIssueDetails]shared_dictionary_issue_detailsc                 C  s  t  }| jd k	r| j |d< | jd k	r6| j |d< | jd k	rN| j |d< | jd k	rf| 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	rD| j |d< | jd k	r^| j |d< | jd k	rx| 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cookieIssueDetailsmixedContentIssueDetailsblockedByResponseIssueDetailsheavyAdIssueDetails!contentSecurityPolicyIssueDetailssharedArrayBufferIssueDetailslowTextContrastIssueDetailscorsIssueDetails attributionReportingIssueDetailsquirksModeIssueDetailsnavigatorUserAgentIssueDetailsgenericIssueDetailsdeprecationIssueDetailsclientHintIssueDetails federatedAuthRequestIssueDetailsbounceTrackingIssueDetails%cookieDeprecationMetadataIssueDetailsstylesheetLoadingIssueDetailspropertyRuleIssueDetails(federatedAuthUserInfoRequestIssueDetailssharedDictionaryIssueDetails)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      sX    









zInspectorIssueDetails.to_jsonc                 C  s  | d|krt |d nd d|kr0t|d nd d|krHt|d nd d|kr`t|d nd d|krxt|d nd d|krt|d nd d|krt|d nd d|krt|d nd d	|krt	|d	 nd d
|krt
|d
 nd d|kr
t|d nd d|kr$t|d nd d|kr>t|d nd d|krXt|d nd d|krrt|d nd d|krt|d nd d|krt|d nd d|krt|d nd d|krt|d nd d|krt|d nd d|krt|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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r5   r   rP   r\   rd   rp   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   N  s.    zInspectorIssueDetails.from_json)r   r   r   r   r   r    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r   r   r   r   r   r     s2   
.r   c                      sB   e Zd ZdZddddZedd dddZ fd	d
Z  ZS )IssueIdz
    A unique id for a DevTools inspector issue. Allows other entities (e.g.
    exceptions, CDP message, console messages, etc.) to reference an issue.
    r   returnc                 C  s   | S r/   r   r2   r   r   r   r   n  s    zIssueId.to_jsonr   r  c                 C  s   | |S r/   r   r   r   r   r   r   q  s    zIssueId.from_jsonc                   s   d t  S )NzIssueId({}))formatsuper__repr__r2   	__class__r   r   r  u  s    zIssueId.__repr__)	r   r   r   r   r   r!   r   r  __classcell__r   r   r  r   r  i  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 )InspectorIssuez8
    An inspector issue reported from the back-end.
    r   coder   detailsNztyping.Optional[IssueId]issue_idc                 C  s>   t  }| j |d< | j |d< | jd k	r:| j |d< |S )Nr  r  issueId)r   r  r   r  r   r   r   r   r   r     s    
zInspectorIssue.to_jsonc                 C  s8   | t |d t|d d|kr0t|d nd dS )Nr  r  r!  )r  r  r   )r   r   r   r  r   r   r   r   r     s
    zInspectorIssue.from_json)	r   r   r   r   r    r   r   r!   r   r   r   r   r   r  y  s   
r  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_onlyr  c                 c  sx   t  }|  |d< ||d< |dk	r*||d< |dk	r:||d< d|d}|V }d|k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'   r"  Nr#  ZsizeOnlyzAudits.getEncodedResponsemethodparamsbodyZoriginalSizeZencodedSize)r   r   r   ri   )r$   r"  r#  r$  r'  cmd_dictr   r   r   r   get_encoded_response  s    

r*  z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]r  c                  c  s   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  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.
    r&  zAudits.enableNr   r+  r   r   r   enable  s     r-  )
report_aaar  c                 c  s*   t  }| dk	r| |d< d|d}|V }dS )z
    Runs the contrast check for the target page. Found issues are reported
    using Audits.issueAdded event.

    :param report_aaa: *(Optional)* Whether to report WCAG AAA level issues. Default is false.
    NZ	reportAAAzAudits.checkContrastr%  )r   )r.  r'  r)  r   r   r   r   check_contrast  s    	r/  zLtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[GenericIssueDetails]]c                  c  s    ddi} | V }dd |d D S )z
    Runs the form issues check for the target page. Found issues are reported
    using Audits.issueAdded event.

    :returns: 
    r&  zAudits.checkFormsIssuesc                 S  s   g | ]}t |qS r   )r   r   r@   r   r   r   rC     s     z&check_forms_issues.<locals>.<listcomp>Z
formIssuesr   r+  r   r   r   check_forms_issues  s
     r0  zAudits.issueAddedc                   @  s*   e Zd ZU ded< edd dddZdS )
IssueAddedr  issuer   r  c                 C  s   | t |d dS )Nr2  )r2  )r  r   r   r   r   r   r     s    zIssueAdded.from_jsonN)r   r   r   r    r!   r   r   r   r   r   r1    s   
r1  )NN)N)F
__future__r   utilr   r   Zdataclassesr   enumtyping r   r   r	   r
   r   r"   r)   Enumr.   r3   r4   r5   rI   rJ   rP   r[   r\   rb   rc   rd   rg   rh   rp   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r*  r,  r-  r/  r0  r1  r   r   r   r   <module>   s   ;'0"-'/!"%'"=$y   '
 