/* * Copyright (c) 2018-2020, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include #include #include namespace WebContent { class ClientConnection final : public IPC::ClientConnection , public WebContentServerEndpoint { C_OBJECT(ClientConnection); public: explicit ClientConnection(NonnullRefPtr, int client_id); ~ClientConnection() override; virtual void die() override; private: Web::Page& page(); const Web::Page& page() const; virtual OwnPtr handle(const Messages::WebContentServer::Greet&) override; virtual void handle(const Messages::WebContentServer::UpdateSystemTheme&) override; virtual void handle(const Messages::WebContentServer::UpdateScreenRect&) override; virtual void handle(const Messages::WebContentServer::LoadURL&) override; virtual void handle(const Messages::WebContentServer::LoadHTML&) override; virtual void handle(const Messages::WebContentServer::Paint&) override; virtual void handle(const Messages::WebContentServer::SetViewportRect&) override; virtual void handle(const Messages::WebContentServer::MouseDown&) override; virtual void handle(const Messages::WebContentServer::MouseMove&) override; virtual void handle(const Messages::WebContentServer::MouseUp&) override; virtual void handle(const Messages::WebContentServer::MouseWheel&) override; virtual void handle(const Messages::WebContentServer::KeyDown&) override; virtual void handle(const Messages::WebContentServer::AddBackingStore&) override; virtual void handle(const Messages::WebContentServer::RemoveBackingStore&) override; virtual void handle(const Messages::WebContentServer::DebugRequest&) override; virtual void handle(const Messages::WebContentServer::GetSource&) override; virtual void handle(const Messages::WebContentServer::JSConsoleInitialize&) override; virtual void handle(const Messages::WebContentServer::JSConsoleInput&) override; void flush_pending_paint_requests(); NonnullOwnPtr m_page_host; struct PaintRequest { Gfx::IntRect content_rect; NonnullRefPtr bitmap; i32 bitmap_id { -1 }; }; Vector m_pending_paint_requests; RefPtr m_paint_flush_timer; HashMap> m_backing_stores; WeakPtr m_interpreter; OwnPtr m_console_client; }; }