From ec3267e0022a6076708f5e4014e51d9f58414695 Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Tue, 1 Aug 2023 14:41:13 -0600 Subject: [PATCH] LibProtocol+LibWebView: Allow callers provide their own RequestClient This will be used by Ladybird when it spawns its RequestServer in a Lagom-specific way rather than using SystemServer to do it. --- Userland/Libraries/LibProtocol/RequestClient.h | 4 ++-- Userland/Libraries/LibWebView/RequestServerAdapter.cpp | 7 ++++++- Userland/Libraries/LibWebView/RequestServerAdapter.h | 5 +++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Userland/Libraries/LibProtocol/RequestClient.h b/Userland/Libraries/LibProtocol/RequestClient.h index 7d17a43091..937601fa70 100644 --- a/Userland/Libraries/LibProtocol/RequestClient.h +++ b/Userland/Libraries/LibProtocol/RequestClient.h @@ -21,6 +21,8 @@ class RequestClient final IPC_CLIENT_CONNECTION(RequestClient, "/tmp/session/%sid/portal/request"sv) public: + explicit RequestClient(NonnullOwnPtr); + template> RefPtr start_request(DeprecatedString const& method, URL const&, HashMap const& request_headers = {}, ReadonlyBytes request_body = {}, Core::ProxyData const& = {}); @@ -30,8 +32,6 @@ public: bool set_certificate(Badge, Request&, DeprecatedString, DeprecatedString); private: - RequestClient(NonnullOwnPtr); - virtual void request_progress(i32, Optional const&, u64) override; virtual void request_finished(i32, bool, u64) override; virtual void certificate_requested(i32) override; diff --git a/Userland/Libraries/LibWebView/RequestServerAdapter.cpp b/Userland/Libraries/LibWebView/RequestServerAdapter.cpp index db654cb7fb..c09899a081 100644 --- a/Userland/Libraries/LibWebView/RequestServerAdapter.cpp +++ b/Userland/Libraries/LibWebView/RequestServerAdapter.cpp @@ -68,10 +68,15 @@ void RequestServerRequestAdapter::stream_into(Stream& stream) m_request->stream_into(stream); } +ErrorOr> RequestServerAdapter::try_create(NonnullRefPtr protocol_client) +{ + return try_make_ref_counted(move(protocol_client)); +} + ErrorOr> RequestServerAdapter::try_create() { auto protocol_client = TRY(Protocol::RequestClient::try_create()); - return adopt_nonnull_ref_or_enomem(new (nothrow) RequestServerAdapter(move(protocol_client))); + return try_make_ref_counted(move(protocol_client)); } RequestServerAdapter::RequestServerAdapter(NonnullRefPtr protocol_client) diff --git a/Userland/Libraries/LibWebView/RequestServerAdapter.h b/Userland/Libraries/LibWebView/RequestServerAdapter.h index c9c9e8ce23..d5634e6059 100644 --- a/Userland/Libraries/LibWebView/RequestServerAdapter.h +++ b/Userland/Libraries/LibWebView/RequestServerAdapter.h @@ -36,6 +36,9 @@ private: class RequestServerAdapter : public Web::ResourceLoaderConnector { public: + explicit RequestServerAdapter(NonnullRefPtr protocol_client); + + static ErrorOr> try_create(NonnullRefPtr); static ErrorOr> try_create(); virtual ~RequestServerAdapter() override; @@ -45,8 +48,6 @@ public: virtual RefPtr start_request(DeprecatedString const& method, URL const&, HashMap const& request_headers = {}, ReadonlyBytes request_body = {}, Core::ProxyData const& = {}) override; private: - RequestServerAdapter(NonnullRefPtr protocol_client); - RefPtr m_protocol_client; };