script: Initial stubs for Credential Management API (#38839)

Stubs `Credential`, `CredentialContainer`, and `PasswordCredential` and
adds the credentials attribute to navigator.

Testing: WPT
Fixes: Partially #38788

---------

Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
This commit is contained in:
Ashwin Naren 2025-09-06 12:48:38 -07:00 committed by GitHub
parent 643ac08cf0
commit 3ac8875697
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 347 additions and 0 deletions

View file

@ -0,0 +1,16 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
/*
* The origin of this IDL file is
* https://www.w3.org/TR/credential-management-1/#the-credential-interface
*/
// https://www.w3.org/TR/credential-management-1/#credential
[Pref="dom_credential_management_enabled", Exposed=Window, SecureContext]
interface Credential {
readonly attribute USVString id;
readonly attribute DOMString type;
static Promise<boolean> isConditionalMediationAvailable();
static Promise<undefined> willRequestConditionalCreation();
};

View file

@ -0,0 +1,52 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
/*
* The origin of this IDL file is
* https://www.w3.org/TR/credential-management-1/#framework-credential-management
*/
// https://www.w3.org/TR/credential-management-1/#framework-credential-management
partial interface Navigator {
[SecureContext, SameObject, Pref="dom_credential_management_enabled"] readonly attribute CredentialsContainer credentials;
};
// https://www.w3.org/TR/credential-management-1/#credentialscontainer
[Pref="dom_credential_management_enabled", Exposed=Window, SecureContext]
interface CredentialsContainer {
[Throws] Promise<Credential?> get(optional CredentialRequestOptions options = {});
[Throws] Promise<undefined> store(Credential credential);
[Throws] Promise<Credential?> create(optional CredentialCreationOptions options = {});
[Throws] Promise<undefined> preventSilentAccess();
};
// https://www.w3.org/TR/credential-management-1/#credentialrequestoptions-dictionary
dictionary CredentialRequestOptions {
CredentialMediationRequirement mediation = "optional";
AbortSignal signal;
// FIXME: This should be part of a partial dictionary, but that is not implemented yet
// From PasswordCredential.webidl
boolean password = false;
};
// https://www.w3.org/TR/credential-management-1/#dictdef-credentialcreationoptions
dictionary CredentialCreationOptions {
CredentialMediationRequirement mediation = "optional";
AbortSignal signal;
// FIXME: This should be part of a partial dictionary, but that is not implemented yet
// From PasswordCredential.webidl
PasswordCredentialInit password;
};
// https://www.w3.org/TR/credential-management-1/#dictdef-credentialdata
dictionary CredentialData {
required USVString id;
};
// https://www.w3.org/TR/credential-management-1/#enumdef-credentialmediationrequirement
enum CredentialMediationRequirement {
"silent",
"optional",
"conditional",
"required"
};

View file

@ -0,0 +1,25 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
/*
* The origin of this IDL file is
* https://www.w3.org/TR/credential-management-1/#passwordcredential-interface
*/
// https://www.w3.org/TR/credential-management-1/#passwordcredential-interface
[Pref="dom_credential_management_enabled", Exposed=Window, SecureContext]
interface PasswordCredential : Credential {
[Throws] constructor(HTMLFormElement form);
[Throws] constructor(PasswordCredentialData data);
readonly attribute USVString password;
};
// https://www.w3.org/TR/credential-management-1/#dictdef-passwordcredentialdata
dictionary PasswordCredentialData : CredentialData {
USVString name;
USVString iconURL;
required USVString origin;
required USVString password;
};
typedef (PasswordCredentialData or HTMLFormElement) PasswordCredentialInit;