blob: 721810e77d5f2ffb766fb84d6c046a8bf51e9bf2 [file] [log] [blame]
<!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">
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>