/* * Copyright (c) 2025, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include #include #include #include #include namespace WebView { class WebUI : public IPC::ConnectionToServer , public WebUIClientEndpoint { public: static ErrorOr> create(WebContentClient&, String host); virtual ~WebUI(); String const& host() const { return m_host; } protected: WebUI(WebContentClient&, NonnullOwnPtr, String host); using Interface = Function; virtual void register_interfaces() { } void register_interface(StringView name, Interface); private: virtual void die() override; virtual void received_message(String name, JsonValue data) override; WebContentClient& m_client; String m_host; HashMap m_interfaces; }; #define WEB_UI(WebUIType) \ public: \ static NonnullRefPtr create(WebContentClient& client, NonnullOwnPtr transport, String host) \ { \ return adopt_ref(*new WebUIType(client, move(transport), move(host))); \ } \ \ private: \ WebUIType(WebContentClient& client, NonnullOwnPtr transport, String host) \ : WebView::WebUI(client, move(transport), move(host)) \ { \ } }