/* * Copyright (c) 2020, Nicholas Hollett * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace LaunchServer { class ClientConnection final : public IPC::ClientConnection , public LaunchServerEndpoint { C_OBJECT(ClientConnection) public: ~ClientConnection() override; virtual void die() override; private: explicit ClientConnection(NonnullRefPtr, int client_id); virtual OwnPtr handle(const Messages::LaunchServer::Greet&) override; virtual OwnPtr handle(const Messages::LaunchServer::OpenURL&) override; virtual OwnPtr handle(const Messages::LaunchServer::GetHandlersForURL&) override; virtual OwnPtr handle(const Messages::LaunchServer::GetHandlersWithDetailsForURL&) override; virtual OwnPtr handle(const Messages::LaunchServer::AddAllowedURL&) override; virtual OwnPtr handle(const Messages::LaunchServer::AddAllowedHandlerWithAnyURL&) override; virtual OwnPtr handle(const Messages::LaunchServer::AddAllowedHandlerWithOnlySpecificURLs&) override; virtual OwnPtr handle(const Messages::LaunchServer::SealAllowlist&) override; struct AllowlistEntry { String handler_name; bool any_url { false }; Vector urls; }; Vector m_allowlist; bool m_allowlist_is_sealed { false }; }; }