o
    M,h                     @  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G dd dej	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	d/d0ddZd1ddZd2ddZd3dd Zd4d"d#Z	d/d5d%d&Zd1d'd(Zed)eG d*d+ d+Zed,eG d-d. d.ZdS )6    )annotations   )event_classT_JSON_DICT)	dataclassNc                   @  ,   e Zd ZdZdZdZdd Zedd ZdS )	
LoginStatez
    Whether this is a sign-up or sign-in action for this account, i.e.
    whether this account has ever been used to sign in to this RP before.
    SignInSignUpc                 C     | j S Nvalueself r   z/var/www/www-root/data/www/bot.pdev.uz/venv/lib/python3.10/site-packages/selenium/webdriver/common/devtools/v140/fed_cm.pyto_json      zLoginState.to_jsonc                 C     | |S r   r   clsjsonr   r   r   	from_json      zLoginState.from_jsonN)	__name__
__module____qualname____doc__SIGN_INSIGN_UPr   classmethodr   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 )
DialogTypez%
    The types of FedCM dialogs.
    AccountChooserAutoReauthnConfirmIdpLoginErrorc                 C  r   r   r   r   r   r   r   r   &   r   zDialogType.to_jsonc                 C  r   r   r   r   r   r   r   r   )   r   zDialogType.from_jsonN)r   r   r   r   ACCOUNT_CHOOSERAUTO_REAUTHNCONFIRM_IDP_LOGINERRORr   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 )
DialogButtonz*
    The buttons on the FedCM dialog.
    ConfirmIdpLoginContinue
ErrorGotItErrorMoreDetailsc                 C  r   r   r   r   r   r   r   r   6   r   zDialogButton.to_jsonc                 C  r   r   r   r   r   r   r   r   9   r   zDialogButton.from_jsonN)
r   r   r   r   CONFIRM_IDP_LOGIN_CONTINUEERROR_GOT_ITERROR_MORE_DETAILSr   r!   r   r   r   r   r   r+   .   s    r+   c                   @  r   )	AccountUrlTypez(
    The URLs that each account has
    TermsOfServicePrivacyPolicyc                 C  r   r   r   r   r   r   r   r   E   r   zAccountUrlType.to_jsonc                 C  r   r   r   r   r   r   r   r   H   r   zAccountUrlType.from_jsonN)	r   r   r   r   TERMS_OF_SERVICEPRIVACY_POLICYr   r!   r   r   r   r   r   r2   >   s    r2   c                   @  s~   e Zd ZU dZded< ded< ded< ded< ded< ded< ded	< d
ed< dZded< dZded< dd Zedd Z	dS )Accountz/
    Corresponds to IdentityRequestAccount
    str
account_idemailname
given_namepicture_urlidp_config_urlidp_login_urlr   login_stateNtyping.Optional[str]terms_of_service_urlprivacy_policy_urlc                 C  s   t  }| j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | j|d< | j	 |d< | j
d ur7| j
|d	< | jd urA| j|d
< |S )N	accountIdr:   r;   	givenName
pictureUrlidpConfigUrlidpLoginUrl
loginStatetermsOfServiceUrlprivacyPolicyUrl)dictr9   r:   r;   r<   r=   r>   r?   r@   r   rB   rC   )r   r   r   r   r   r   g   s   










zAccount.to_jsonc                 C  s   | t |d t |d t |d t |d t |d t |d t |d t|d d	|v r4t |d	 nd d
|v rAt |d
 d
S d d
S )NrD   r:   r;   rE   rF   rG   rH   rI   rJ   rK   )
r9   r:   r;   r<   r=   r>   r?   r@   rB   rC   )r8   r   r   r   r   r   r   r   w   s   







zAccount.from_json)
r   r   r   r   __annotations__rB   rC   r   r!   r   r   r   r   r   r7   M   s   
 r7   disable_rejection_delaytyping.Optional[bool]return0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]c                 c  s,    t  }| dur| |d< d|d}|V }dS )z
    :param disable_rejection_delay: *(Optional)* Allows callers to disable the promise rejection delay that would normally happen, if this is unimportant to what's being tested. (step 4 of https://fedidcg.github.io/FedCM/#browser-api-rp-sign-in)
    NdisableRejectionDelayzFedCm.enablemethodparamsrL   )rN   rU   cmd_dictr   r   r   r   enable   s   
rX   c                  c  s    ddi} | V }d S )NrT   zFedCm.disabler   rW   r   r   r   r   disable   s   
rZ   	dialog_idr8   account_indexintc                 c  s,    t  }| |d< ||d< d|d}|V }dS )z5
    :param dialog_id:
    :param account_index:
    dialogIdaccountIndexzFedCm.selectAccountrS   NrV   )r[   r\   rU   rW   r   r   r   r   select_account   s   
r`   dialog_buttonc                 c  s0    t  }| |d< | |d< d|d}|V }dS )z5
    :param dialog_id:
    :param dialog_button:
    r^   dialogButtonzFedCm.clickDialogButtonrS   NrL   r   )r[   ra   rU   rW   r   r   r   r   click_dialog_button   s   
rd   account_url_typec                 c  s8    t  }| |d< ||d< | |d< d|d}|V }dS )zR
    :param dialog_id:
    :param account_index:
    :param account_url_type:
    r^   r_   accountUrlTypezFedCm.openUrlrS   Nrc   )r[   r\   re   rU   rW   r   r   r   r   open_url   s   

rg   trigger_cooldownc                 c  s4    t  }| |d< |dur||d< d|d}|V }dS )zE
    :param dialog_id:
    :param trigger_cooldown: *(Optional)*
    r^   NtriggerCooldownzFedCm.dismissDialogrS   rV   )r[   rh   rU   rW   r   r   r   r   dismiss_dialog   s   
rj   c                  c  s    ddi} | V }dS )z
    Resets the cooldown time, if any, to allow the next FedCM call to show
    a dialog even if one was recently dismissed by the user.
    rT   zFedCm.resetCooldownNr   rY   r   r   r   reset_cooldown   s   
rk   zFedCm.dialogShownc                   @  sD   e Zd ZU ded< ded< ded< ded< ded	< edddZdS )DialogShownr8   r[   r"   dialog_typeztyping.List[Account]accountstitlerA   subtitler   r   rP   c                 C  sR   | t |d t|d dd |d D t |d d|v r%t |d dS d dS )	Nr^   
dialogTypec                 S  s   g | ]}t |qS r   )r7   r   ).0ir   r   r   
<listcomp>  s    z)DialogShown.from_json.<locals>.<listcomp>rn   ro   rp   )r[   rm   rn   ro   rp   )r8   r"   r   r   r   r   r   r     s   

zDialogShown.from_jsonN)r   r   rP   rl   )r   r   r   rM   r!   r   r   r   r   r   rl      s   
 rl   zFedCm.dialogClosedc                   @  s(   e Zd ZU dZded< ed
ddZd	S )DialogClosedze
    Triggered when a dialog is closed, either by user action, JS abort,
    or a command below.
    r8   r[   r   r   rP   c                 C  s   | t |d dS )Nr^   )r[   )r8   r   r   r   r   r     s   
zDialogClosed.from_jsonN)r   r   rP   ru   )r   r   r   r   rM   r!   r   r   r   r   r   ru     s
   
 ru   r   )rN   rO   rP   rQ   )rP   rQ   )r[   r8   r\   r]   rP   rQ   )r[   r8   ra   r+   rP   rQ   )r[   r8   r\   r]   re   r2   rP   rQ   )r[   r8   rh   rO   rP   rQ   )
__future__r   utilr   r   dataclassesr   enumtypingEnumr   r"   r+   r2   r7   rX   rZ   r`   rd   rg   rj   rk   rl   ru   r   r   r   r   <module>   s4   :




