mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 18:07:34 +00:00
LibWeb: Abstract the LibProtocol ResourceLoader connection
This is the final component that required LibProtocol as a dependency of LibWeb. With this, we can now remove the dependency, and LibWeb no longer requires IPC to work :^)
This commit is contained in:
parent
2a359695c6
commit
c00ae53b66
10 changed files with 245 additions and 37 deletions
53
Userland/Libraries/LibWebView/RequestServerAdapter.h
Normal file
53
Userland/Libraries/LibWebView/RequestServerAdapter.h
Normal file
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Dex♪ <dexes.ttp@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AK/Function.h>
|
||||
#include <AK/URL.h>
|
||||
#include <LibWeb/Loader/ResourceLoader.h>
|
||||
|
||||
namespace Protocol {
|
||||
class Request;
|
||||
class RequestClient;
|
||||
}
|
||||
|
||||
namespace WebView {
|
||||
|
||||
class RequestServerRequestAdapter
|
||||
: public Web::ResourceLoaderConnectorRequest
|
||||
, public Weakable<RequestServerRequestAdapter> {
|
||||
public:
|
||||
static ErrorOr<NonnullRefPtr<RequestServerRequestAdapter>> try_create(NonnullRefPtr<Protocol::Request>);
|
||||
virtual ~RequestServerRequestAdapter() override;
|
||||
|
||||
virtual void set_should_buffer_all_input(bool) override;
|
||||
virtual bool stop() override;
|
||||
|
||||
virtual void stream_into(Core::Stream::Stream&) override;
|
||||
|
||||
private:
|
||||
RequestServerRequestAdapter(NonnullRefPtr<Protocol::Request>);
|
||||
NonnullRefPtr<Protocol::Request> m_request;
|
||||
};
|
||||
|
||||
class RequestServerAdapter : public Web::ResourceLoaderConnector {
|
||||
public:
|
||||
static ErrorOr<NonnullRefPtr<RequestServerAdapter>> try_create();
|
||||
virtual ~RequestServerAdapter() override;
|
||||
|
||||
virtual void prefetch_dns(AK::URL const& url) override;
|
||||
virtual void preconnect(AK::URL const& url) override;
|
||||
|
||||
virtual RefPtr<Web::ResourceLoaderConnectorRequest> start_request(String const& method, URL const&, HashMap<String, String> const& request_headers = {}, ReadonlyBytes request_body = {}, Core::ProxyData const& = {}) override;
|
||||
|
||||
private:
|
||||
RequestServerAdapter(NonnullRefPtr<Protocol::RequestClient> protocol_client);
|
||||
|
||||
RefPtr<Protocol::RequestClient> m_protocol_client;
|
||||
};
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue