/* * Copyright (c) 2025, Altomani Gianluca * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include namespace Web::CredentialManagement { // https://www.w3.org/TR/credential-management-1/#passwordcredential class PasswordCredential final : public Credential , public CredentialUserData { WEB_PLATFORM_OBJECT(PasswordCredential, Credential); GC_DECLARE_ALLOCATOR(PasswordCredential); public: [[nodiscard]] static WebIDL::ExceptionOr> construct_impl(JS::Realm&, GC::Ref); [[nodiscard]] static WebIDL::ExceptionOr> construct_impl(JS::Realm&, PasswordCredentialData const&); virtual ~PasswordCredential() override; String const& password() const { return m_password; } URL::Origin const& origin() const { return m_origin; } String type() const override { return "password"_string; } private: PasswordCredential(JS::Realm&, PasswordCredentialData const&, URL::Origin); virtual void initialize(JS::Realm&) override; // TODO: Use Core::SecretString when it comes back String m_password; // https://www.w3.org/TR/credential-management-1/#dom-credential-origin-slot URL::Origin m_origin; }; // https://www.w3.org/TR/credential-management-1/#dictdef-passwordcredentialdata struct PasswordCredentialData : CredentialData { Optional name; Optional icon_url; String password; }; // https://www.w3.org/TR/credential-management-1/#typedefdef-passwordcredentialinit using PasswordCredentialInit = Variant>; }