LibWebView+ImageDecoder+RequestServer+WebContent: Add init_transport

This commit is contained in:
stasoid
2025-01-03 21:19:46 +05:00
committed by Andrew Kaster
parent 652af318db
commit 3e46cb9067
14 changed files with 52 additions and 0 deletions

View File

@@ -34,6 +34,8 @@ class Client final
C_OBJECT_ABSTRACT(Client);
public:
using InitTransport = Messages::ImageDecoderServer::InitTransport;
Client(IPC::Transport);
NonnullRefPtr<Core::Promise<DecodedImage>> decode_image(ReadonlyBytes, Function<ErrorOr<void>(DecodedImage&)> on_resolved, Function<void(Error&)> on_rejected, Optional<Gfx::IntSize> ideal_size = {}, Optional<ByteString> mime_type = {});

View File

@@ -24,6 +24,8 @@ class RequestClient final
C_OBJECT_ABSTRACT(RequestClient)
public:
using InitTransport = Messages::RequestServer::InitTransport;
explicit RequestClient(IPC::Transport);
virtual ~RequestClient() override;

View File

@@ -53,6 +53,11 @@ static ErrorOr<NonnullRefPtr<ClientType>> launch_server_process(
if constexpr (requires { client->set_pid(pid_t {}); })
client->set_pid(process.pid());
if constexpr (requires { client->transport().set_peer_pid(0); } && !IsSame<ClientType, Web::HTML::WebWorkerClient>) {
auto response = client->template send_sync<typename ClientType::InitTransport>(Core::System::getpid());
client->transport().set_peer_pid(response->peer_pid());
}
WebView::Application::the().add_child_process(move(process));
if (chrome_options.profile_helper_process == process_type) {

View File

@@ -29,6 +29,8 @@ class WebContentClient final
C_OBJECT_ABSTRACT(WebContentClient);
public:
using InitTransport = Messages::WebContentServer::InitTransport;
static Optional<ViewImplementation&> view_for_pid_and_page_id(pid_t pid, u64 page_id);
template<CallableAs<IterationDecision, WebContentClient&> Callback>