/* * Copyright (c) 2025, Altomani Gianluca * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include #include namespace Web::CredentialManagement { class CredentialsContainer final : public Bindings::PlatformObject { WEB_PLATFORM_OBJECT(CredentialsContainer, Bindings::PlatformObject); GC_DECLARE_ALLOCATOR(CredentialsContainer); public: [[nodiscard]] static GC::Ref create(JS::Realm&); virtual ~CredentialsContainer() override; GC::Ref get(CredentialRequestOptions const& options); GC::Ref store(Credential const& credential); GC::Ref create(CredentialCreationOptions const& options); GC::Ref prevent_silent_access(); private: explicit CredentialsContainer(JS::Realm&); virtual void initialize(JS::Realm&) override; }; struct CredentialRequestOptions { Bindings::CredentialMediationRequirement mediation { Bindings::CredentialMediationRequirement::Optional }; GC::Ptr signal; Optional password; Optional federated; }; struct CredentialCreationOptions { Bindings::CredentialMediationRequirement mediation { Bindings::CredentialMediationRequirement::Optional }; GC::Ptr signal; Optional password; Optional federated; }; }