ladybird/Services/WebContent/PageHost.cpp
Aliaksandr Kalenik 805e2fa7b3 LibWebView+WebContent: Remove compositor thread option
Remove the command-line option that allowed Browser to start
WebContent with the in-process compositor thread instead of the
Compositor helper process. The compositor process is now the default
path, so the opt-out flag and the matching WebContent selector only kept
the old thread mode reachable.

With that option gone, simplify Browser and WebContent startup to wire
each WebContent process to the Compositor process directly. The old
local Browser-to-WebContent compositor IPC setup and its fallback input
and ready-to-paint branches are no longer needed.
2026-05-25 00:45:24 +02:00

62 lines
1.7 KiB
C++

/*
* Copyright (c) 2020-2023, Andreas Kling <andreas@ladybird.org>
* Copyright (c) 2021-2022, Linus Groh <linusg@serenityos.org>
* Copyright (c) 2023, Andrew Kaster <akaster@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibWeb/Bindings/MainThreadVM.h>
#include <LibWeb/Compositor/CompositorHost.h>
#include <LibWeb/HTML/TraversableNavigable.h>
#include <WebContent/ConnectionFromClient.h>
#include <WebContent/PageClient.h>
#include <WebContent/PageHost.h>
#include <WebContent/WebContentCompositorHost.h>
#include <WebContent/WebDriverConnection.h>
namespace WebContent {
PageHost::PageHost(ConnectionFromClient& client)
: m_client(client)
{
auto& first_page = create_page();
Web::HTML::TraversableNavigable::create_a_fresh_top_level_traversable(first_page.page(), URL::about_blank());
}
PageClient& PageHost::create_page()
{
m_pages.set(m_next_id, PageClient::create(Web::Bindings::main_thread_vm(), *this, m_next_id));
++m_next_id;
return *m_pages.get(m_next_id - 1).value();
}
void PageHost::remove_page(Badge<PageClient>, u64 index)
{
m_pages.remove(index);
}
Optional<PageClient&> PageHost::page(u64 index)
{
return m_pages.get(index).map([](auto& value) -> PageClient& {
return *value;
});
}
PageHost::~PageHost() = default;
void PageHost::ensure_compositor_host(Web::DisplayListPlayerType display_list_player_type)
{
if (m_compositor_host)
return;
m_compositor_host = create_web_content_compositor_host(m_client);
m_compositor_host->start(display_list_player_type);
}
void PageHost::compositor_process_reconnected()
{
for (auto& [_, page] : m_pages)
page->compositor_process_reconnected();
}
}