
    g                       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ej                        Z
 G d d	ej                        Z G d
 dej                        Z G d dej                        Ze G d d             Z	 d	 	 	 ddZddZ	 	 	 	 	 	 d dZ	 	 	 	 	 	 d!dZ	 	 	 	 	 	 	 	 d"dZ	 d	 	 	 	 	 d#dZddZ ed      e G d d                    Z ed      e G d d                    Zy)$    )annotations   )event_classT_JSON_DICT)	dataclassNc                  .    e Zd ZdZdZdZd Zed        Zy)
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                    | j                   S Nvalueselfs    a/var/www/html/venv/lib/python3.12/site-packages/selenium/webdriver/common/devtools/v129/fed_cm.pyto_jsonzLoginState.to_json       zz    c                     | |      S r    clsjsons     r   	from_jsonzLoginState.from_json       4yr   N)	__name__
__module____qualname____doc__SIGN_INSIGN_UPr   classmethodr   r   r   r   r	   r	      s,     GG  r   r	   c                  6    e Zd ZdZdZdZdZdZd Ze	d        Z
y)	
DialogTypez%
    The types of FedCM dialogs.
    AccountChooserAutoReauthnConfirmIdpLoginErrorc                    | j                   S r   r   r   s    r   r   zDialogType.to_json&   r   r   c                     | |      S r   r   r   s     r   r   zDialogType.from_json)   r   r   N)r   r   r   r    ACCOUNT_CHOOSERAUTO_REAUTHNCONFIRM_IDP_LOGINERRORr   r#   r   r   r   r   r%   r%      s7     'O L)E  r   r%   c                  2    e Zd ZdZdZdZdZd Zed        Z	y)DialogButtonz*
    The buttons on the FedCM dialog.
    ConfirmIdpLoginContinue
ErrorGotItErrorMoreDetailsc                    | j                   S r   r   r   s    r   r   zDialogButton.to_json6   r   r   c                     | |      S r   r   r   s     r   r   zDialogButton.from_json9   r   r   N)
r   r   r   r    CONFIRM_IDP_LOGIN_CONTINUEERROR_GOT_ITERROR_MORE_DETAILSr   r#   r   r   r   r   r1   r1   .   s3     ";L+  r   r1   c                  .    e Zd ZdZdZdZd Zed        Zy)AccountUrlTypez(
    The URLs that each account has
    TermsOfServicePrivacyPolicyc                    | j                   S r   r   r   s    r   r   zAccountUrlType.to_jsonE   r   r   c                     | |      S r   r   r   s     r   r   zAccountUrlType.from_jsonH   r   r   N)	r   r   r   r    TERMS_OF_SERVICEPRIVACY_POLICYr   r#   r   r   r   r   r;   r;   >   s-     ($N  r   r;   c                      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 Zed        Z	y)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                   t               }| j                  |d<   | j                  |d<   | j                  |d<   | j                  |d<   | j
                  |d<   | j                  |d<   | j                  |d<   | j                  j                         |d<   | j                  | j                  |d	<   | j                  | j                  |d
<   |S )N	accountIdrF   rG   	givenName
pictureUrlidpConfigUrlidpLoginUrl
loginStatetermsOfServiceUrlprivacyPolicyUrl)dictrE   rF   rG   rH   rI   rJ   rK   rL   r   rN   rO   )r   r   s     r   r   zAccount.to_jsong   s    v OO[

WyyV OO[!--\#22^"00]!--557\$$0(,(A(AD$%"".'+'>'>D#$r   c                L    | t        |d         t        |d         t        |d         t        |d         t        |d         t        |d         t        |d         t        j                  |d         d	|v rt        |d	         nd d
|v rt        |d
         
      S d 
      S )NrQ   rF   rG   rR   rS   rT   rU   rV   rW   rX   )
rE   rF   rG   rH   rI   rJ   rK   rL   rN   rO   )rD   r	   r   r   s     r   r   zAccount.from_jsonw   s    4,-d7m$T&\"4,-D./tN34d=12",,T,-?@CVZ^C^T*=%>!?dh@RVZ@Zs4(:#;<
 	
 ae
 	
r   )
r   r   r   r    __annotations__rN   rO   r   r#   r   r   r   r   rC   rC   M   sh     OJ
IO 26.5/3,3  
 
r   rC   c              #  @   K   t               }| | |d<   d|d}|}yw)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rY   )disable_rejection_delayr`   cmd_dictr   s       r   enablerd      s6      &F**A&' H >Ds   c               #     K   ddi} | }y w)Nr_   zFedCm.disabler   rc   r   s     r   disablerg      s      	/H >D   
c              #  F   K   t               }| |d<   ||d<   d|d}|}yw)z5
    :param dialog_id:
    :param account_index:
    dialogIdaccountIndexzFedCm.selectAccountr^   Nra   )	dialog_idaccount_indexr`   rc   r   s        r   select_accountrn      s9      &F"F:*F>'H >Ds   !c              #  b   K   t               }| |d<   |j                         |d<   d|d}|}yw)z5
    :param dialog_id:
    :param dialog_button:
    rj   dialogButtonzFedCm.clickDialogButtonr^   NrY   r   )rl   dialog_buttonr`   rc   r   s        r   click_dialog_buttonrs      sB      &F"F:*224F>+H >Ds   -/c              #  l   K   t               }| |d<   ||d<   |j                         |d<   d|d}|}yw)zR
    :param dialog_id:
    :param account_index:
    :param account_url_type:
    rj   rk   accountUrlTypezFedCm.openUrlr^   Nrq   )rl   rm   account_url_typer`   rc   r   s         r   open_urlrw      sM      &F"F:*F>/779F!H >Ds   24c              #  J   K   t               }| |d<   |||d<   d|d}|}yw)zE
    :param dialog_id:
    :param trigger_cooldown: *(Optional)*
    rj   NtriggerCooldownzFedCm.dismissDialogr^   ra   )rl   trigger_cooldownr`   rc   r   s        r   dismiss_dialogr{      s@      &F"F:#$4 !'H >Ds   !#c               #     K   ddi} | }yw)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.
    r_   zFedCm.resetCooldownNr   rf   s     r   reset_cooldownr}      s      	'H >Drh   zFedCm.dialogShownc                  R    e Zd ZU ded<   ded<   ded<   ded<   ded	<   edd
       Zy)DialogShownrD   rl   r%   dialog_typeztyping.List[Account]accountstitlerM   subtitlec           
          | t        |d         t        j                  |d         |d   D cg c]  }t        j                  |       c}t        |d         d|v rt        |d               S d       S c c}w )Nrj   
dialogTyper   r   r   )rl   r   r   r   r   )rD   r%   r   rC   )r   r   is      r   r   zDialogShown.from_json  s    $z*+",,T,-?@484DEqg''*Ed7m$.8D.@Sj)*
 	

 GK
 	
 Fs   A7N)r   r   returnr   )r   r   r   r[   r#   r   r   r   r   r   r      s4     N"" J""
 
r   r   zFedCm.dialogClosedc                  .    e Zd ZU dZded<   edd       Zy)DialogClosedze
    Triggered when a dialog is closed, either by user action, JS abort,
    or a command below.
    rD   rl   c                ,     | t        |d               S )Nrj   )rl   )rD   r   s     r   r   zDialogClosed.from_json  s    $z*+
 	
r   N)r   r   r   r   )r   r   r   r    r[   r#   r   r   r   r   r   r     s      N
 
r   r   r   )rb   typing.Optional[bool]r   0typing.Generator[T_JSON_DICT, T_JSON_DICT, None])r   r   )rl   rD   rm   intr   r   )rl   rD   rr   r1   r   r   )rl   rD   rm   r   rv   r;   r   r   )rl   rD   rz   r   r   r   )
__future__r   utilr   r   dataclassesr   enumtypingEnumr	   r%   r1   r;   rC   rd   rg   rn   rs   rw   r{   r}   r   r   r   r   r   <module>r      sm   # * !     "499  TYY  6
 6
 6
t :>!6	7  
8$# 
8$ ) 
8	. 37/ 
8&  !

 
  "
( !"

 
  #
r   