/* * Copyright (c) 2025, Altomani Gianluca * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Web::CredentialManagement { class FederatedCredential final : public Credential { WEB_PLATFORM_OBJECT(FederatedCredential, Credential); GC_DECLARE_ALLOCATOR(FederatedCredential); public: [[nodiscard]] static GC::Ref create(JS::Realm&); static WebIDL::ExceptionOr> construct_impl(JS::Realm&, FederatedCredentialInit const&); virtual ~FederatedCredential() override; String const& provider() { return m_provider; } Optional const& protocol() { return m_protocol; } String type() override { return "federated"_string; } private: explicit FederatedCredential(JS::Realm&); virtual void initialize(JS::Realm&) override; String m_provider; Optional m_protocol; }; struct FederatedCredentialRequestOptions { Optional> providers; Optional> protocols; }; struct FederatedCredentialInit : CredentialData { Optional name; Optional icon_url; String origin; String provider; Optional protocol; }; }