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.
62 lines
1.7 KiB
C++
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();
|
|
}
|
|
|
|
}
|