| <!DOCTYPE html> |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <script src=/resources/WebIDLParser.js></script> |
| <script src=/resources/idlharness.js></script> |
| <script type="text/plain" id="untested"> |
| dictionary CredentialData { |
| USVString id; |
| }; |
| |
| [Exposed=Window, SecureContext] |
| interface Credential { |
| readonly attribute USVString id; |
| readonly attribute DOMString type; |
| }; |
| |
| [NoInterfaceObject, SecureContext] |
| interface CredentialUserData { |
| readonly attribute USVString name; |
| readonly attribute USVString iconURL; |
| }; |
| |
| dictionary PasswordCredentialData : CredentialData { |
| USVString name; |
| USVString iconURL; |
| required USVString password; |
| }; |
| |
| typedef (PasswordCredentialData or HTMLFormElement) PasswordCredentialInit; |
| |
| typedef (FormData or URLSearchParams) CredentialBodyType; |
| |
| |
| dictionary FederatedCredentialInit : CredentialData { |
| USVString name; |
| USVString iconURL; |
| required USVString provider; |
| DOMString protocol; |
| }; |
| |
| dictionary CredentialCreationOptions { |
| PasswordCredentialInit? password; |
| FederatedCredentialInit? federated; |
| }; |
| |
| enum CredentialMediationRequirement { |
| "silent", |
| "optional", |
| "required" |
| }; |
| |
| dictionary CredentialRequestOptions { |
| boolean password = false; |
| FederatedCredentialRequestOptions federated; |
| |
| CredentialMediationRequirement mediation = "optional"; |
| }; |
| |
| dictionary FederatedCredentialRequestOptions { |
| sequence<USVString> providers; |
| sequence<DOMString> protocols; |
| }; |
| |
| </script> |
| <script type="text/plain" id="tested"> |
| [Exposed=Window, SecureContext] |
| interface CredentialsContainer { |
| Promise<Credential> get(optional CredentialRequestOptions options); |
| Promise<Credential> store(Credential credential); |
| Promise<Credential?> create(optional CredentialCreationOptions options); |
| Promise<void> preventSilentAccess(); |
| }; |
| |
| [Constructor(PasswordCredentialData data), |
| Constructor(HTMLFormElement form), |
| Exposed=Window, |
| SecureContext] |
| interface PasswordCredential : Credential { |
| readonly attribute DOMString password; |
| }; |
| PasswordCredential implements CredentialUserData; |
| |
| [Constructor(FederatedCredentialInit data), |
| Exposed=Window, |
| SecureContext] |
| interface FederatedCredential : Credential { |
| readonly attribute USVString provider; |
| readonly attribute DOMString? protocol; |
| }; |
| FederatedCredential implements CredentialUserData; |
| </script> |
| <script> |
| "use strict"; |
| var idl_array = new IdlArray(); |
| idl_array.add_untested_idls(document.querySelector('#untested').textContent); |
| idl_array.add_idls(document.querySelector('#tested').textContent); |
| idl_array.add_objects({ |
| CredentialsContainer: ['navigator.credentials'], |
| PasswordCredential: ['new PasswordCredential({ id: "id", password: "pencil", iconURL: "https://example.com/", name: "name" })'], |
| FederatedCredential: ['new FederatedCredential({ id: "id", provider: "https://example.com", iconURL: "https://example.com/", name: "name" })'] |
| }); |
| idl_array.test(); |
| </script> |