/* * Copyright (c) 2023, Andrew Kaster * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace WebWorker { class PageHost final : public Web::PageClient { JS_CELL(PageHost, Web::PageClient); public: static JS::NonnullGCPtr create(JS::VM& vm, ConnectionFromClient& client); virtual ~PageHost(); virtual Web::Page& page() override; virtual Web::Page const& page() const override; virtual bool is_connection_open() const override; virtual Gfx::Palette palette() const override; virtual Web::DevicePixelRect screen_rect() const override; virtual double device_pixels_per_css_pixel() const override; virtual Web::CSS::PreferredColorScheme preferred_color_scheme() const override; virtual void paint(Web::DevicePixelRect const&, Gfx::Bitmap&, Web::PaintOptions = {}) override; virtual void request_file(Web::FileRequest) override; virtual void schedule_repaint() override {}; private: explicit PageHost(ConnectionFromClient&); virtual void visit_edges(JS::Cell::Visitor&) override; void setup_palette(); ConnectionFromClient& m_client; JS::NonnullGCPtr m_page; RefPtr m_palette_impl; }; }