LibWeb+LibWebView+LibRequests: Reduce dependency on LibIPC includes

Let's try to include the IPC encoder/decoder stuff in fewer headers
to make rebuilds more pleasant when editing these files.
This commit is contained in:
Andreas Kling 2025-12-01 10:36:50 +01:00 committed by Jelle Raaijmakers
parent 62d7011f45
commit 1c45930767
Notes: github-actions[bot] 2025-12-01 14:14:26 +00:00
8 changed files with 66 additions and 45 deletions

View file

@ -3,6 +3,7 @@ set(SOURCES
NetworkError.h
Request.cpp
RequestClient.cpp
RequestTimingInfo.cpp
WebSocket.cpp
)

View file

@ -0,0 +1,57 @@
/*
* Copyright (c) 2025, Tim Flynn <trflynn89@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibIPC/Decoder.h>
#include <LibIPC/Encoder.h>
#include <LibRequests/RequestTimingInfo.h>
namespace IPC {
template<>
ErrorOr<void> encode(Encoder& encoder, Requests::RequestTimingInfo const& timing_info)
{
TRY(encoder.encode(timing_info.domain_lookup_start_microseconds));
TRY(encoder.encode(timing_info.domain_lookup_end_microseconds));
TRY(encoder.encode(timing_info.connect_start_microseconds));
TRY(encoder.encode(timing_info.connect_end_microseconds));
TRY(encoder.encode(timing_info.secure_connect_start_microseconds));
TRY(encoder.encode(timing_info.request_start_microseconds));
TRY(encoder.encode(timing_info.response_start_microseconds));
TRY(encoder.encode(timing_info.response_end_microseconds));
TRY(encoder.encode(timing_info.encoded_body_size));
TRY(encoder.encode(timing_info.http_version_alpn_identifier));
return {};
}
template<>
ErrorOr<Requests::RequestTimingInfo> decode(Decoder& decoder)
{
auto domain_lookup_start_microseconds = TRY(decoder.decode<i64>());
auto domain_lookup_end_microseconds = TRY(decoder.decode<i64>());
auto connect_start_microseconds = TRY(decoder.decode<i64>());
auto connect_end_microseconds = TRY(decoder.decode<i64>());
auto secure_connect_start_microseconds = TRY(decoder.decode<i64>());
auto request_start_microseconds = TRY(decoder.decode<i64>());
auto response_start_microseconds = TRY(decoder.decode<i64>());
auto response_end_microseconds = TRY(decoder.decode<i64>());
auto encoded_body_size = TRY(decoder.decode<i64>());
auto http_version_alpn_identifier = TRY(decoder.decode<Requests::ALPNHttpVersion>());
return Requests::RequestTimingInfo {
.domain_lookup_start_microseconds = domain_lookup_start_microseconds,
.domain_lookup_end_microseconds = domain_lookup_end_microseconds,
.connect_start_microseconds = connect_start_microseconds,
.connect_end_microseconds = connect_end_microseconds,
.secure_connect_start_microseconds = secure_connect_start_microseconds,
.request_start_microseconds = request_start_microseconds,
.response_start_microseconds = response_start_microseconds,
.response_end_microseconds = response_end_microseconds,
.encoded_body_size = encoded_body_size,
.http_version_alpn_identifier = http_version_alpn_identifier,
};
}
}

View file

@ -6,9 +6,7 @@
#pragma once
#include <AK/FlyString.h>
#include <LibIPC/Decoder.h>
#include <LibIPC/Encoder.h>
#include <LibIPC/Forward.h>
#include <LibRequests/ALPNHttpVersion.h>
namespace Requests {
@ -31,47 +29,9 @@ struct RequestTimingInfo {
namespace IPC {
template<>
inline ErrorOr<void> encode(Encoder& encoder, Requests::RequestTimingInfo const& timing_info)
{
TRY(encoder.encode(timing_info.domain_lookup_start_microseconds));
TRY(encoder.encode(timing_info.domain_lookup_end_microseconds));
TRY(encoder.encode(timing_info.connect_start_microseconds));
TRY(encoder.encode(timing_info.connect_end_microseconds));
TRY(encoder.encode(timing_info.secure_connect_start_microseconds));
TRY(encoder.encode(timing_info.request_start_microseconds));
TRY(encoder.encode(timing_info.response_start_microseconds));
TRY(encoder.encode(timing_info.response_end_microseconds));
TRY(encoder.encode(timing_info.encoded_body_size));
TRY(encoder.encode(timing_info.http_version_alpn_identifier));
return {};
}
ErrorOr<void> encode(Encoder&, Requests::RequestTimingInfo const&);
template<>
inline ErrorOr<Requests::RequestTimingInfo> decode(Decoder& decoder)
{
auto domain_lookup_start_microseconds = TRY(decoder.decode<i64>());
auto domain_lookup_end_microseconds = TRY(decoder.decode<i64>());
auto connect_start_microseconds = TRY(decoder.decode<i64>());
auto connect_end_microseconds = TRY(decoder.decode<i64>());
auto secure_connect_start_microseconds = TRY(decoder.decode<i64>());
auto request_start_microseconds = TRY(decoder.decode<i64>());
auto response_start_microseconds = TRY(decoder.decode<i64>());
auto response_end_microseconds = TRY(decoder.decode<i64>());
auto encoded_body_size = TRY(decoder.decode<i64>());
auto http_version_alpn_identifier = TRY(decoder.decode<Requests::ALPNHttpVersion>());
return Requests::RequestTimingInfo {
.domain_lookup_start_microseconds = domain_lookup_start_microseconds,
.domain_lookup_end_microseconds = domain_lookup_end_microseconds,
.connect_start_microseconds = connect_start_microseconds,
.connect_end_microseconds = connect_end_microseconds,
.secure_connect_start_microseconds = secure_connect_start_microseconds,
.request_start_microseconds = request_start_microseconds,
.response_start_microseconds = response_start_microseconds,
.response_end_microseconds = response_end_microseconds,
.encoded_body_size = encoded_body_size,
.http_version_alpn_identifier = http_version_alpn_identifier,
};
}
ErrorOr<Requests::RequestTimingInfo> decode(Decoder&);
}

View file

@ -11,6 +11,8 @@
#include <AK/HashTable.h>
#include <AK/StringBuilder.h>
#include <LibGC/DeferGC.h>
#include <LibIPC/Decoder.h>
#include <LibIPC/Encoder.h>
#include <LibJS/Runtime/FunctionObject.h>
#include <LibRegex/Regex.h>
#include <LibWeb/Animations/Animation.h>

View file

@ -768,6 +768,7 @@ class UserActivation;
class ValidityState;
class VideoTrack;
class VideoTrackList;
class WebWorkerClient;
class Window;
class WindowEnvironmentSettingsObject;
class WindowProxy;

View file

@ -10,7 +10,6 @@
#include <LibWeb/Bindings/RequestPrototype.h>
#include <LibWeb/Bindings/WorkerPrototype.h>
#include <LibWeb/Forward.h>
#include <LibWeb/Worker/WebWorkerClient.h>
namespace Web::HTML {

View file

@ -17,7 +17,7 @@
#include <LibDevTools/Forward.h>
#include <LibImageDecoderClient/Client.h>
#include <LibMain/Main.h>
#include <LibRequests/RequestClient.h>
#include <LibRequests/Forward.h>
#include <LibURL/URL.h>
#include <LibWeb/CSS/PreferredColorScheme.h>
#include <LibWeb/CSS/PreferredContrast.h>

View file

@ -17,6 +17,7 @@
#include <AK/LexicalPath.h>
#include <AK/NumberFormat.h>
#include <AK/QuickSort.h>
#include <AK/Random.h>
#include <LibCore/ConfigFile.h>
#include <LibCore/DirIterator.h>
#include <LibCore/Directory.h>