mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-22 01:09:25 +00:00
LibWebView+ImageDecoder+RequestServer+WebContent: Add init_transport
This commit is contained in:
@@ -40,6 +40,15 @@ void ConnectionFromClient::die()
|
||||
}
|
||||
}
|
||||
|
||||
Messages::ImageDecoderServer::InitTransportResponse ConnectionFromClient::init_transport([[maybe_unused]] int peer_pid)
|
||||
{
|
||||
#ifdef AK_OS_WINDOWS
|
||||
m_transport.set_peer_pid(peer_pid);
|
||||
return Core::System::getpid();
|
||||
#endif
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
||||
ErrorOr<IPC::File> ConnectionFromClient::connect_new_client()
|
||||
{
|
||||
int socket_fds[2] {};
|
||||
|
||||
@@ -43,6 +43,7 @@ private:
|
||||
virtual Messages::ImageDecoderServer::DecodeImageResponse decode_image(Core::AnonymousBuffer const&, Optional<Gfx::IntSize> const& ideal_size, Optional<ByteString> const& mime_type) override;
|
||||
virtual void cancel_decoding(i64 image_id) override;
|
||||
virtual Messages::ImageDecoderServer::ConnectNewClientsResponse connect_new_clients(size_t count) override;
|
||||
virtual Messages::ImageDecoderServer::InitTransportResponse init_transport(int peer_pid) override;
|
||||
|
||||
ErrorOr<IPC::File> connect_new_client();
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
endpoint ImageDecoderServer
|
||||
{
|
||||
init_transport(int peer_pid) => (int peer_pid)
|
||||
decode_image(Core::AnonymousBuffer data, Optional<Gfx::IntSize> ideal_size, Optional<ByteString> mime_type) => (i64 image_id)
|
||||
cancel_decoding(i64 image_id) =|
|
||||
|
||||
|
||||
@@ -279,6 +279,15 @@ void ConnectionFromClient::die()
|
||||
Core::EventLoop::current().quit(0);
|
||||
}
|
||||
|
||||
Messages::RequestServer::InitTransportResponse ConnectionFromClient::init_transport([[maybe_unused]] int peer_pid)
|
||||
{
|
||||
#ifdef AK_OS_WINDOWS
|
||||
m_transport.set_peer_pid(peer_pid);
|
||||
return Core::System::getpid();
|
||||
#endif
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
||||
Messages::RequestServer::ConnectNewClientResponse ConnectionFromClient::connect_new_client()
|
||||
{
|
||||
static_assert(IsSame<IPC::Transport, IPC::TransportSocket>, "Need to handle other IPC transports here");
|
||||
|
||||
@@ -43,6 +43,7 @@ public:
|
||||
private:
|
||||
explicit ConnectionFromClient(IPC::Transport);
|
||||
|
||||
virtual Messages::RequestServer::InitTransportResponse init_transport(int peer_pid) override;
|
||||
virtual Messages::RequestServer::ConnectNewClientResponse connect_new_client() override;
|
||||
virtual Messages::RequestServer::IsSupportedProtocolResponse is_supported_protocol(ByteString const&) override;
|
||||
virtual void set_dns_server(ByteString const& host_or_address, u16 port, bool use_tls) override;
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
endpoint RequestServer
|
||||
{
|
||||
init_transport(int peer_pid) => (int peer_pid)
|
||||
connect_new_client() => (IPC::File client_socket)
|
||||
|
||||
// use_tls: enable DNS over TLS
|
||||
|
||||
@@ -70,6 +70,15 @@ void ConnectionFromClient::die()
|
||||
Web::Platform::EventLoopPlugin::the().quit();
|
||||
}
|
||||
|
||||
Messages::WebContentServer::InitTransportResponse ConnectionFromClient::init_transport([[maybe_unused]] int peer_pid)
|
||||
{
|
||||
#ifdef AK_OS_WINDOWS
|
||||
m_transport.set_peer_pid(peer_pid);
|
||||
return Core::System::getpid();
|
||||
#endif
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
||||
Optional<PageClient&> ConnectionFromClient::page(u64 index, SourceLocation location)
|
||||
{
|
||||
if (auto page = m_page_host->page(index); page.has_value())
|
||||
|
||||
@@ -53,6 +53,7 @@ private:
|
||||
Optional<PageClient&> page(u64 index, SourceLocation = SourceLocation::current());
|
||||
Optional<PageClient const&> page(u64 index, SourceLocation = SourceLocation::current()) const;
|
||||
|
||||
virtual Messages::WebContentServer::InitTransportResponse init_transport(int peer_pid) override;
|
||||
virtual void close_server() override;
|
||||
virtual Messages::WebContentServer::GetWindowHandleResponse get_window_handle(u64 page_id) override;
|
||||
virtual void set_window_handle(u64 page_id, String const& handle) override;
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
endpoint WebContentServer
|
||||
{
|
||||
init_transport(int peer_pid) => (int peer_pid)
|
||||
close_server() =|
|
||||
|
||||
get_window_handle(u64 page_id) => (String handle)
|
||||
|
||||
@@ -280,6 +280,10 @@ ErrorOr<void> initialize_resource_loader(GC::Heap& heap, int request_server_sock
|
||||
TRY(socket->set_blocking(true));
|
||||
|
||||
auto request_client = TRY(try_make_ref_counted<Requests::RequestClient>(IPC::Transport(move(socket))));
|
||||
#ifdef AK_OS_WINDOWS
|
||||
auto response = request_client->send_sync<Messages::RequestServer::InitTransport>(Core::System::getpid());
|
||||
request_client->transport().set_peer_pid(response->peer_pid());
|
||||
#endif
|
||||
Web::ResourceLoader::initialize(heap, move(request_client));
|
||||
|
||||
return {};
|
||||
@@ -292,6 +296,10 @@ ErrorOr<void> initialize_image_decoder(int image_decoder_socket)
|
||||
TRY(socket->set_blocking(true));
|
||||
|
||||
auto new_client = TRY(try_make_ref_counted<ImageDecoderClient::Client>(IPC::Transport(move(socket))));
|
||||
#ifdef AK_OS_WINDOWS
|
||||
auto response = new_client->send_sync<Messages::ImageDecoderServer::InitTransport>(Core::System::getpid());
|
||||
new_client->transport().set_peer_pid(response->peer_pid());
|
||||
#endif
|
||||
|
||||
Web::Platform::ImageCodecPlugin::install(*new WebView::ImageCodecPlugin(move(new_client)));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user