LibIPC+LibWeb+LibWebView: Remove clone_from_transport() API
Replace clone_from_transport() (which dup()s the FD) with from_transport() (which releases the FD) in the WebWorkerClient call site. The UI process never uses the WebWorkerClient connection after spawning — it only passes the transport to WebContent — so releasing instead of cloning is safe and simpler. This removes clone_from_transport() from TransportHandle, and clone_for_transfer() from TransportSocket/TransportSocketWindows, as they no longer have any callers.
This commit is contained in:
parent
269d5f739b
commit
db9652643a
9 changed files with 2 additions and 30 deletions
|
|
@ -24,12 +24,6 @@ ErrorOr<TransportHandle> TransportHandle::from_transport(Transport& transport)
|
|||
return TransportHandle { File::adopt_fd(fd) };
|
||||
}
|
||||
|
||||
ErrorOr<TransportHandle> TransportHandle::clone_from_transport(Transport& transport)
|
||||
{
|
||||
auto file = TRY(transport.clone_for_transfer());
|
||||
return TransportHandle { move(file) };
|
||||
}
|
||||
|
||||
ErrorOr<NonnullOwnPtr<Transport>> TransportHandle::create_transport() const
|
||||
{
|
||||
auto socket = TRY(Core::LocalSocket::adopt_fd(m_file.take_fd()));
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@ public:
|
|||
TransportHandle& operator=(TransportHandle&&) = default;
|
||||
|
||||
static ErrorOr<TransportHandle> from_transport(Transport& transport);
|
||||
static ErrorOr<TransportHandle> clone_from_transport(Transport& transport);
|
||||
|
||||
ErrorOr<NonnullOwnPtr<Transport>> create_transport() const;
|
||||
|
||||
|
|
|
|||
|
|
@ -509,9 +509,4 @@ ErrorOr<int> TransportSocket::release_underlying_transport_for_transfer()
|
|||
return m_socket->release_fd();
|
||||
}
|
||||
|
||||
ErrorOr<IPC::File> TransportSocket::clone_for_transfer()
|
||||
{
|
||||
return IPC::File::clone_fd(m_socket->fd().value());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,8 +72,6 @@ public:
|
|||
// Obnoxious name to make it clear that this is a dangerous operation.
|
||||
ErrorOr<int> release_underlying_transport_for_transfer();
|
||||
|
||||
ErrorOr<IPC::File> clone_for_transfer();
|
||||
|
||||
private:
|
||||
enum class TransferState {
|
||||
Continue,
|
||||
|
|
|
|||
|
|
@ -277,9 +277,4 @@ ErrorOr<int> TransportSocketWindows::release_underlying_transport_for_transfer()
|
|||
return m_socket->release_fd();
|
||||
}
|
||||
|
||||
ErrorOr<IPC::File> TransportSocketWindows::clone_for_transfer()
|
||||
{
|
||||
return IPC::File::clone_fd(m_socket->fd().value());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,8 +49,6 @@ public:
|
|||
// Obnoxious name to make it clear that this is a dangerous operation.
|
||||
ErrorOr<int> release_underlying_transport_for_transfer();
|
||||
|
||||
ErrorOr<IPC::File> clone_for_transfer();
|
||||
|
||||
private:
|
||||
ErrorOr<void> duplicate_handles(Bytes, Vector<size_t> const& handle_offsets);
|
||||
ErrorOr<void> transfer(ReadonlyBytes);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@
|
|||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibCore/System.h>
|
||||
#include <LibWeb/Worker/WebWorkerClient.h>
|
||||
|
||||
namespace Web::HTML {
|
||||
|
|
@ -45,9 +44,4 @@ WebWorkerClient::WebWorkerClient(NonnullOwnPtr<IPC::Transport> transport)
|
|||
{
|
||||
}
|
||||
|
||||
IPC::TransportHandle WebWorkerClient::clone_transport()
|
||||
{
|
||||
return MUST(IPC::TransportHandle::clone_from_transport(*m_transport));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,8 +33,6 @@ public:
|
|||
Function<HTTP::Cookie::VersionedCookie(URL::URL const&, HTTP::Cookie::Source)> on_request_cookie;
|
||||
Function<Messages::WebWorkerClient::RequestWorkerAgentResponse(Web::Bindings::AgentType)> on_request_worker_agent;
|
||||
|
||||
IPC::TransportHandle clone_transport();
|
||||
|
||||
private:
|
||||
virtual void die() override;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -791,7 +791,8 @@ Messages::WebContentClient::RequestWorkerAgentResponse WebContentClient::request
|
|||
auto request_server_handle = MUST(connect_new_request_server_client());
|
||||
auto image_decoder_handle = MUST(connect_new_image_decoder_client());
|
||||
auto worker_client = MUST(WebView::launch_web_worker_process(worker_type));
|
||||
return { worker_client->clone_transport(), move(request_server_handle), move(image_decoder_handle) };
|
||||
auto worker_handle = MUST(IPC::TransportHandle::from_transport(worker_client->transport()));
|
||||
return { move(worker_handle), move(request_server_handle), move(image_decoder_handle) };
|
||||
}
|
||||
|
||||
return { IPC::TransportHandle {}, IPC::TransportHandle {}, IPC::TransportHandle {} };
|
||||
|
|
|
|||
Loading…
Reference in a new issue