webkit2gtk3/glib-2.56.patch
Michael Catanzaro 1df915795c Update to WebKitGTK 2.48.1
Also, switch to Clang, because this is the preferred compiler anyway,
and otherwise ld runs out of memory when linking on i686.

Resolves: RHEL-84089
2025-04-14 18:59:37 -05:00

483 lines
21 KiB
Diff

diff --git a/Tools/MiniBrowser/gtk/BrowserSettingsDialog.c b/Tools/MiniBrowser/gtk/BrowserSettingsDialog.c
index ef000cd2b910..432c97257048 100644
--- a/Tools/MiniBrowser/gtk/BrowserSettingsDialog.c
+++ b/Tools/MiniBrowser/gtk/BrowserSettingsDialog.c
@@ -175,11 +175,12 @@ static void featureTreeViewRenderStatusData(GtkTreeViewColumn *column, GtkCellRe
{
g_autoptr(WebKitFeature) feature = NULL;
gtk_tree_model_get(model, iter, FEATURES_LIST_COLUMN_FEATURE, &feature, -1);
- g_autoptr(GEnumClass) enumClass = g_type_class_ref(WEBKIT_TYPE_FEATURE_STATUS);
+ GEnumClass *enumClass = g_type_class_ref(WEBKIT_TYPE_FEATURE_STATUS);
g_object_set(renderer,
"markup", NULL,
"text", g_enum_get_value(enumClass, webkit_feature_get_status(feature))->value_nick,
NULL);
+ g_type_class_unref(enumClass);
}
static void featureTreeViewRenderCategoryData(GtkTreeViewColumn *column, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
diff --git a/Tools/MiniBrowser/gtk/main.c b/Tools/MiniBrowser/gtk/main.c
index 8be643a54151..ae82b41400b5 100644
--- a/Tools/MiniBrowser/gtk/main.c
+++ b/Tools/MiniBrowser/gtk/main.c
@@ -273,7 +273,7 @@ static gboolean parseFeaturesOptionCallback(const gchar *option, const gchar *va
"features, prefixes '-' and '!' disable features. Names are case-insensitive. Example:\n"
"\n %s --features='!DirPseudo,+WebAnimationsCustomEffects,webgl'\n\n"
"Available features (+/- = enabled/disabled by default):\n\n", g_get_prgname());
- g_autoptr(GEnumClass) statusEnum = g_type_class_ref(WEBKIT_TYPE_FEATURE_STATUS);
+ GEnumClass *statusEnum = g_type_class_ref(WEBKIT_TYPE_FEATURE_STATUS);
for (gsize i = 0; i < webkit_feature_list_get_length(featureList); i++) {
WebKitFeature *feature = webkit_feature_list_get(featureList, i);
g_print(" %c %s (%s)",
@@ -284,6 +284,7 @@ static gboolean parseFeaturesOptionCallback(const gchar *option, const gchar *va
g_print(": %s", webkit_feature_get_name(feature));
g_print("\n");
}
+ g_type_class_unref(statusEnum);
exit(EXIT_SUCCESS);
}
From 4e525b9192df17a80b07188af6b6e7cf6476ff10 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@redhat.com>
Date: Fri, 4 Apr 2025 13:20:59 -0500
Subject: [PATCH] Revert "[GLib] Remove all GLIB_CHECK_VERSION conditionals"
This reverts commit 85b637b69f1c3a6242420b198d1c173477ce0f22.
---
Source/WTF/wtf/URL.h | 4 ++--
Source/WTF/wtf/glib/GRefPtr.cpp | 2 ++
Source/WTF/wtf/glib/GRefPtr.h | 3 +++
Source/WTF/wtf/glib/SocketConnection.cpp | 13 +++++++++++++
Source/WTF/wtf/glib/URLGLib.cpp | 2 ++
Source/WebCore/platform/LowPowerModeNotifier.h | 2 ++
.../platform/glib/LowPowerModeNotifierGLib.cpp | 8 ++++++++
.../platform/network/soup/CertificateInfoSoup.cpp | 8 ++++++++
Source/WebKit/NetworkProcess/glib/DNSCache.cpp | 12 ++++++++++++
Source/WebKit/NetworkProcess/glib/DNSCache.h | 2 ++
.../NetworkProcess/glib/WebKitCachedResolver.cpp | 6 ++++++
.../glib/WebKitOverridingResolver.cpp | 4 ++++
Source/WebKit/Shared/glib/ArgumentCodersGLib.cpp | 6 ++++++
Source/cmake/OptionsGTK.cmake | 13 ++++++++++++-
Source/cmake/OptionsWPE.cmake | 13 ++++++++++++-
15 files changed, 94 insertions(+), 4 deletions(-)
diff --git a/Source/WTF/wtf/URL.h b/Source/WTF/wtf/URL.h
index 8a7864508a8e..f065677c68ad 100644
--- a/Source/WTF/wtf/URL.h
+++ b/Source/WTF/wtf/URL.h
@@ -27,7 +27,7 @@
#include <wtf/text/WTFString.h>
-#if USE(GLIB)
+#if USE(GLIB) && HAVE(GURI)
#include <wtf/glib/GRefPtr.h>
#endif
@@ -237,7 +237,7 @@ public:
WTF_EXPORT_PRIVATE operator NSURL *() const;
#endif
-#if USE(GLIB)
+#if USE(GLIB) && HAVE(GURI)
WTF_EXPORT_PRIVATE URL(GUri*);
WTF_EXPORT_PRIVATE GRefPtr<GUri> createGUri() const;
#endif
diff --git a/Source/WTF/wtf/glib/GRefPtr.cpp b/Source/WTF/wtf/glib/GRefPtr.cpp
index 4c15aa9866c0..6faa98b7eab2 100644
--- a/Source/WTF/wtf/glib/GRefPtr.cpp
+++ b/Source/WTF/wtf/glib/GRefPtr.cpp
@@ -207,6 +207,7 @@ template <> void derefGPtr(GDBusNodeInfo* ptr)
g_dbus_node_info_unref(ptr);
}
+#if HAVE(GURI)
template <> GUri* refGPtr(GUri* ptr)
{
if (ptr)
@@ -219,6 +220,7 @@ template <> void derefGPtr(GUri* ptr)
if (ptr)
g_uri_unref(ptr);
}
+#endif
template <>
GArray* refGPtr(GArray* ptr)
diff --git a/Source/WTF/wtf/glib/GRefPtr.h b/Source/WTF/wtf/glib/GRefPtr.h
index 87a9ef9760bf..d6c71c14a981 100644
--- a/Source/WTF/wtf/glib/GRefPtr.h
+++ b/Source/WTF/wtf/glib/GRefPtr.h
@@ -264,8 +264,11 @@ template <> WTF_EXPORT_PRIVATE GArray* refGPtr(GArray*);
template <> WTF_EXPORT_PRIVATE void derefGPtr(GArray*);
template <> WTF_EXPORT_PRIVATE GResource* refGPtr(GResource*);
template <> WTF_EXPORT_PRIVATE void derefGPtr(GResource*);
+
+#if HAVE(GURI)
template <> WTF_EXPORT_PRIVATE GUri* refGPtr(GUri*);
template <> WTF_EXPORT_PRIVATE void derefGPtr(GUri*);
+#endif
template <typename T> inline T* refGPtr(T* ptr)
{
diff --git a/Source/WTF/wtf/glib/SocketConnection.cpp b/Source/WTF/wtf/glib/SocketConnection.cpp
index d1185aeb2d47..80a622b83eba 100644
--- a/Source/WTF/wtf/glib/SocketConnection.cpp
+++ b/Source/WTF/wtf/glib/SocketConnection.cpp
@@ -145,7 +145,20 @@ bool SocketConnection::readMessage()
if (!it->value.first.isNull()) {
GUniquePtr<GVariantType> variantType(g_variant_type_new(it->value.first.data()));
size_t parametersSize = bodySize.value() - messageNameLength.value();
+ // g_variant_new_from_data() requires the memory to be properly aligned for the type being loaded,
+ // but it's not possible to know the alignment because g_variant_type_info_query() is not public API.
+ // Since GLib 2.60 g_variant_new_from_data() already checks the alignment and reallocates the buffer
+ // in aligned memory only if needed. For older versions we can simply ensure the memory is 8 aligned.
+#if GLIB_CHECK_VERSION(2, 60, 0)
parameters = g_variant_new_from_data(variantType.get(), messageData, parametersSize, FALSE, nullptr, nullptr);
+#else
+ auto* alignedMemory = fastAlignedMalloc(8, parametersSize);
+ memcpy(alignedMemory, messageData, parametersSize);
+ GRefPtr<GBytes> bytes = g_bytes_new_with_free_func(alignedMemory, parametersSize, [](gpointer data) {
+ fastAlignedFree(data);
+ }, alignedMemory);
+ parameters = g_variant_new_from_bytes(variantType.get(), bytes.get(), FALSE);
+#endif
if (messageIsByteSwapped(flags))
parameters = adoptGRef(g_variant_byteswap(parameters.get()));
}
diff --git a/Source/WTF/wtf/glib/URLGLib.cpp b/Source/WTF/wtf/glib/URLGLib.cpp
index 589dc1b52f8f..f67fe780f333 100644
--- a/Source/WTF/wtf/glib/URLGLib.cpp
+++ b/Source/WTF/wtf/glib/URLGLib.cpp
@@ -35,6 +35,7 @@
namespace WTF {
+#if HAVE(GURI)
URL::URL(GUri* uri)
{
if (!uri) {
@@ -56,6 +57,7 @@ GRefPtr<GUri> URL::createGUri() const
static_cast<GUriFlags>(G_URI_FLAGS_HAS_PASSWORD | G_URI_FLAGS_ENCODED_PATH | G_URI_FLAGS_ENCODED_QUERY | G_URI_FLAGS_ENCODED_FRAGMENT | G_URI_FLAGS_SCHEME_NORMALIZE | G_URI_FLAGS_PARSE_RELAXED),
nullptr));
}
+#endif
bool URL::hostIsIPAddress(StringView host)
{
diff --git a/Source/WebCore/platform/LowPowerModeNotifier.h b/Source/WebCore/platform/LowPowerModeNotifier.h
index c8f2051d77f6..e2ea0dae3292 100644
--- a/Source/WebCore/platform/LowPowerModeNotifier.h
+++ b/Source/WebCore/platform/LowPowerModeNotifier.h
@@ -61,8 +61,10 @@ private:
RetainPtr<WebLowPowerModeObserver> m_observer;
LowPowerModeChangeCallback m_callback;
#elif USE(GLIB)
+#if GLIB_CHECK_VERSION(2, 69, 1)
LowPowerModeChangeCallback m_callback;
GRefPtr<GPowerProfileMonitor> m_powerProfileMonitor;
+#endif
bool m_lowPowerModeEnabled { false };
#endif
};
diff --git a/Source/WebCore/platform/glib/LowPowerModeNotifierGLib.cpp b/Source/WebCore/platform/glib/LowPowerModeNotifierGLib.cpp
index e083cc66934e..7c0f55d089e6 100644
--- a/Source/WebCore/platform/glib/LowPowerModeNotifierGLib.cpp
+++ b/Source/WebCore/platform/glib/LowPowerModeNotifierGLib.cpp
@@ -28,10 +28,13 @@ namespace WebCore {
LowPowerModeNotifier::LowPowerModeNotifier(LowPowerModeChangeCallback&& callback)
+#if GLIB_CHECK_VERSION(2, 69, 1)
: m_callback(WTFMove(callback))
, m_powerProfileMonitor(adoptGRef(g_power_profile_monitor_dup_default()))
, m_lowPowerModeEnabled(g_power_profile_monitor_get_power_saver_enabled(m_powerProfileMonitor.get()))
+#endif
{
+#if GLIB_CHECK_VERSION(2, 69, 1)
g_signal_connect_swapped(m_powerProfileMonitor.get(), "notify::power-saver-enabled", G_CALLBACK(+[] (LowPowerModeNotifier* self, GParamSpec*, GPowerProfileMonitor* monitor) {
bool powerSaverEnabled = g_power_profile_monitor_get_power_saver_enabled(monitor);
if (self->m_lowPowerModeEnabled != powerSaverEnabled) {
@@ -39,11 +42,16 @@ LowPowerModeNotifier::LowPowerModeNotifier(LowPowerModeChangeCallback&& callback
self->m_callback(self->m_lowPowerModeEnabled);
}
}), this);
+#else
+ UNUSED_PARAM(callback);
+#endif
}
LowPowerModeNotifier::~LowPowerModeNotifier()
{
+#if GLIB_CHECK_VERSION(2, 69, 1)
g_signal_handlers_disconnect_by_data(m_powerProfileMonitor.get(), this);
+#endif
}
bool LowPowerModeNotifier::isLowPowerModeEnabled() const
diff --git a/Source/WebCore/platform/network/soup/CertificateInfoSoup.cpp b/Source/WebCore/platform/network/soup/CertificateInfoSoup.cpp
index f32ecca7a300..e81a5433709d 100644
--- a/Source/WebCore/platform/network/soup/CertificateInfoSoup.cpp
+++ b/Source/WebCore/platform/network/soup/CertificateInfoSoup.cpp
@@ -73,9 +73,11 @@ CertificateInfo CertificateInfo::isolatedCopy() const
certificatesDataList.append(certificateData.release());
}
+#if GLIB_CHECK_VERSION(2, 69, 0)
GUniqueOutPtr<char> privateKey;
GUniqueOutPtr<char> privateKeyPKCS11Uri;
g_object_get(m_certificate.get(), "private-key-pem", &privateKey.outPtr(), "private-key-pkcs11-uri", &privateKeyPKCS11Uri.outPtr(), nullptr);
+#endif
GType certificateType = g_tls_backend_get_certificate_type(g_tls_backend_get_default());
GRefPtr<GTlsCertificate> certificate;
@@ -86,8 +88,10 @@ CertificateInfo CertificateInfo::isolatedCopy() const
certificateType, nullptr, nullptr,
"certificate-pem", certificateData.get(),
"issuer", issuer,
+#if GLIB_CHECK_VERSION(2, 69, 0)
"private-key-pem", certificatesDataList.isEmpty() ? privateKey.get() : nullptr,
"private-key-pkcs11-uri", certificatesDataList.isEmpty() ? privateKeyPKCS11Uri.get() : nullptr,
+#endif
nullptr)));
RELEASE_ASSERT(certificate);
issuer = certificate.get();
@@ -101,6 +105,7 @@ std::optional<CertificateSummary> CertificateInfo::summary() const
if (!m_certificate)
return std::nullopt;
+#if GLIB_CHECK_VERSION(2, 69, 0)
CertificateSummary summaryInfo;
GRefPtr<GDateTime> validNotBefore;
@@ -125,6 +130,9 @@ std::optional<CertificateSummary> CertificateInfo::summary() const
}
return summaryInfo;
+#else
+ return std::nullopt;
+#endif
}
} // namespace WebCore
diff --git a/Source/WebKit/NetworkProcess/glib/DNSCache.cpp b/Source/WebKit/NetworkProcess/glib/DNSCache.cpp
index db92010baabf..b717b734e8e8 100644
--- a/Source/WebKit/NetworkProcess/glib/DNSCache.cpp
+++ b/Source/WebKit/NetworkProcess/glib/DNSCache.cpp
@@ -50,9 +50,17 @@ DNSCache::DNSCacheMap& DNSCache::mapForType(Type type)
case Type::Default:
return m_dnsMap;
case Type::IPv4Only:
+#if GLIB_CHECK_VERSION(2, 59, 0)
return m_ipv4Map;
+#else
+ return m_dnsMap;
+#endif
case Type::IPv6Only:
+#if GLIB_CHECK_VERSION(2, 59, 0)
return m_ipv6Map;
+#else
+ return m_dnsMap;
+#endif
}
RELEASE_ASSERT_NOT_REACHED();
@@ -118,16 +126,20 @@ void DNSCache::removeExpiredResponsesFired()
{
Locker locker { m_lock };
removeExpiredResponsesInMap(m_dnsMap);
+#if GLIB_CHECK_VERSION(2, 59, 0)
removeExpiredResponsesInMap(m_ipv4Map);
removeExpiredResponsesInMap(m_ipv6Map);
+#endif
}
void DNSCache::clear()
{
Locker locker { m_lock };
m_dnsMap.clear();
+#if GLIB_CHECK_VERSION(2, 59, 0)
m_ipv4Map.clear();
m_ipv6Map.clear();
+#endif
}
} // namespace WebKit
diff --git a/Source/WebKit/NetworkProcess/glib/DNSCache.h b/Source/WebKit/NetworkProcess/glib/DNSCache.h
index 6aa530f44321..49aded549588 100644
--- a/Source/WebKit/NetworkProcess/glib/DNSCache.h
+++ b/Source/WebKit/NetworkProcess/glib/DNSCache.h
@@ -65,8 +65,10 @@ private:
Lock m_lock;
DNSCacheMap m_dnsMap WTF_GUARDED_BY_LOCK(m_lock);
+#if GLIB_CHECK_VERSION(2, 59, 0)
DNSCacheMap m_ipv4Map;
DNSCacheMap m_ipv6Map;
+#endif
RunLoop::Timer m_expiredTimer;
};
diff --git a/Source/WebKit/NetworkProcess/glib/WebKitCachedResolver.cpp b/Source/WebKit/NetworkProcess/glib/WebKitCachedResolver.cpp
index 2752ff9cfc2c..7804e8b7a588 100644
--- a/Source/WebKit/NetworkProcess/glib/WebKitCachedResolver.cpp
+++ b/Source/WebKit/NetworkProcess/glib/WebKitCachedResolver.cpp
@@ -67,7 +67,9 @@ static Vector<GRefPtr<GInetAddress>> addressListGListToVector(GList* addressList
struct LookupAsyncData {
CString hostname;
+#if GLIB_CHECK_VERSION(2, 59, 0)
DNSCache::Type dnsCacheType { DNSCache::Type::Default };
+#endif
};
WEBKIT_DEFINE_ASYNC_DATA_STRUCT(LookupAsyncData)
@@ -117,6 +119,7 @@ static GList* webkitCachedResolverLookupByNameFinish(GResolver* resolver, GAsync
return static_cast<GList*>(g_task_propagate_pointer(G_TASK(result), error));
}
+#if GLIB_CHECK_VERSION(2, 59, 0)
static inline DNSCache::Type dnsCacheType(GResolverNameLookupFlags flags)
{
// A cache is kept for each type of response to avoid the overcomplication of combining or filtering results.
@@ -177,6 +180,7 @@ static GList* webkitCachedResolverLookupByNameWithFlagsFinish(GResolver* resolve
return static_cast<GList*>(g_task_propagate_pointer(G_TASK(result), error));
}
+#endif // GLIB_CHECK_VERSION(2, 59, 0)
static char* webkitCachedResolverLookupByAddress(GResolver* resolver, GInetAddress* address, GCancellable* cancellable, GError** error)
{
@@ -219,9 +223,11 @@ static void webkit_cached_resolver_class_init(WebKitCachedResolverClass* klass)
resolverClass->lookup_by_name = webkitCachedResolverLookupByName;
resolverClass->lookup_by_name_async = webkitCachedResolverLookupByNameAsync;
resolverClass->lookup_by_name_finish = webkitCachedResolverLookupByNameFinish;
+#if GLIB_CHECK_VERSION(2, 59, 0)
resolverClass->lookup_by_name_with_flags = webkitCachedResolverLookupByNameWithFlags;
resolverClass->lookup_by_name_with_flags_async = webkitCachedResolverLookupByNameWithFlagsAsync;
resolverClass->lookup_by_name_with_flags_finish = webkitCachedResolverLookupByNameWithFlagsFinish;
+#endif
resolverClass->lookup_by_address = webkitCachedResolverLookupByAddress;
resolverClass->lookup_by_address_async = webkitCachedResolverLookupByAddressAsync;
resolverClass->lookup_by_address_finish = webkitCachedResolverLookupByAddressFinish;
diff --git a/Source/WebKit/NetworkProcess/glib/WebKitOverridingResolver.cpp b/Source/WebKit/NetworkProcess/glib/WebKitOverridingResolver.cpp
index 150d74ed0296..f461e3c695fe 100644
--- a/Source/WebKit/NetworkProcess/glib/WebKitOverridingResolver.cpp
+++ b/Source/WebKit/NetworkProcess/glib/WebKitOverridingResolver.cpp
@@ -90,6 +90,7 @@ static GList* webkitOverridingResolverLookupByNameFinish(GResolver* resolver, GA
return static_cast<GList*>(g_task_propagate_pointer(G_TASK(result), error));
}
+#if GLIB_CHECK_VERSION(2, 59, 0)
static GList* createLoobackAddressList(WebKitOverridingResolver* resolver, GResolverNameLookupFlags flags)
{
GList* list = nullptr;
@@ -129,6 +130,7 @@ static GList* webkitOverridingResolverLookupByNameWithFlagsFinish(GResolver* res
return static_cast<GList*>(g_task_propagate_pointer(G_TASK(result), error));
}
+#endif // GLIB_CHECK_VERSION(2, 59, 0)
static char* webkitOverridingResolverLookupByAddress(GResolver* resolver, GInetAddress* address, GCancellable* cancellable, GError** error)
{
@@ -166,9 +168,11 @@ static void webkit_overriding_resolver_class_init(WebKitOverridingResolverClass*
resolverClass->lookup_by_name = webkitOverridingResolverLookupByName;
resolverClass->lookup_by_name_async = webkitOverridingResolverLookupByNameAsync;
resolverClass->lookup_by_name_finish = webkitOverridingResolverLookupByNameFinish;
+#if GLIB_CHECK_VERSION(2, 59, 0)
resolverClass->lookup_by_name_with_flags = webkitOverridingResolverLookupByNameWithFlags;
resolverClass->lookup_by_name_with_flags_async = webkitOverridingResolverLookupByNameWithFlagsAsync;
resolverClass->lookup_by_name_with_flags_finish = webkitOverridingResolverLookupByNameWithFlagsFinish;
+#endif
resolverClass->lookup_by_address = webkitOverridingResolverLookupByAddress;
resolverClass->lookup_by_address_async = webkitOverridingResolverLookupByAddressAsync;
resolverClass->lookup_by_address_finish = webkitOverridingResolverLookupByAddressFinish;
diff --git a/Source/WebKit/Shared/glib/ArgumentCodersGLib.cpp b/Source/WebKit/Shared/glib/ArgumentCodersGLib.cpp
index a73466be12f1..9ab0cfb6f440 100644
--- a/Source/WebKit/Shared/glib/ArgumentCodersGLib.cpp
+++ b/Source/WebKit/Shared/glib/ArgumentCodersGLib.cpp
@@ -121,11 +121,13 @@ void ArgumentCoder<GRefPtr<GTlsCertificate>>::encode(Encoder& encoder, const GRe
encoder << certificatesData;
+#if GLIB_CHECK_VERSION(2, 69, 0)
GRefPtr<GByteArray> privateKey;
GUniqueOutPtr<char> privateKeyPKCS11Uri;
g_object_get(certificate.get(), "private-key", &privateKey.outPtr(), "private-key-pkcs11-uri", &privateKeyPKCS11Uri.outPtr(), nullptr);
encoder << privateKey;
encoder << CString(privateKeyPKCS11Uri.get());
+#endif
}
std::optional<GRefPtr<GTlsCertificate>> ArgumentCoder<GRefPtr<GTlsCertificate>>::decode(Decoder& decoder)
@@ -138,6 +140,7 @@ std::optional<GRefPtr<GTlsCertificate>> ArgumentCoder<GRefPtr<GTlsCertificate>>:
if (!certificatesData->size())
return GRefPtr<GTlsCertificate>();
+#if GLIB_CHECK_VERSION(2, 69, 0)
std::optional<GRefPtr<GByteArray>> privateKey;
decoder >> privateKey;
if (UNLIKELY(!privateKey))
@@ -147,6 +150,7 @@ std::optional<GRefPtr<GTlsCertificate>> ArgumentCoder<GRefPtr<GTlsCertificate>>:
decoder >> privateKeyPKCS11Uri;
if (UNLIKELY(!privateKeyPKCS11Uri))
return std::nullopt;
+#endif
GType certificateType = g_tls_backend_get_certificate_type(g_tls_backend_get_default());
GRefPtr<GTlsCertificate> certificate;
@@ -156,8 +160,10 @@ std::optional<GRefPtr<GTlsCertificate>> ArgumentCoder<GRefPtr<GTlsCertificate>>:
certificateType, nullptr, nullptr,
"certificate", certificateData.get(),
"issuer", issuer,
+#if GLIB_CHECK_VERSION(2, 69, 0)
"private-key", i == certificatesData->size() - 1 ? privateKey->get() : nullptr,
"private-key-pkcs11-uri", i == certificatesData->size() - 1 ? privateKeyPKCS11Uri->data() : nullptr,
+#endif
nullptr)));
issuer = certificate.get();
}
diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake
index 4a285e849cfd..0aca16c1d25f 100644
--- a/Source/cmake/OptionsGTK.cmake
+++ b/Source/cmake/OptionsGTK.cmake
@@ -205,6 +204,13 @@ else ()
SET_AND_EXPOSE_TO_BUILD(ENABLE_2022_GLIB_API OFF)
endif ()
+if (ENABLE_2022_GLIB_API)
+ set(GLIB_MINIMUM_VERSION 2.70.0)
+else ()
+ set(GLIB_MINIMUM_VERSION 2.56.4)
+endif ()
+find_package(GLIB ${GLIB_MINIMUM_VERSION} REQUIRED COMPONENTS gio gio-unix gobject gthread gmodule)
+
EXPOSE_STRING_VARIABLE_TO_BUILD(WEBKITGTK_API_INFIX)
EXPOSE_STRING_VARIABLE_TO_BUILD(WEBKITGTK_API_VERSION)
@@ -277,6 +283,11 @@ if (ENABLED_COMPILER_SANITIZERS)
set(ENABLE_DOCUMENTATION OFF)
endif ()
+# GUri is available in GLib since version 2.66, but we only want to use it if version is >= 2.67.1.
+if (PC_GLIB_VERSION VERSION_GREATER "2.67.1" OR PC_GLIB_VERSION STREQUAL "2.67.1")
+ SET_AND_EXPOSE_TO_BUILD(HAVE_GURI 1)
+endif ()
+
if (ENABLE_GAMEPAD)
find_package(Manette 0.2.4)
if (NOT Manette_FOUND)
--
2.49.0
diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake
index 6c39538ba6fc..0a30e0c4c7c1 100644
--- a/Source/cmake/OptionsGTK.cmake
+++ b/Source/cmake/OptionsGTK.cmake
@@ -7,7 +7,6 @@ SET_PROJECT_VERSION(2 48 1)
set(USER_AGENT_BRANDING "" CACHE STRING "Branding to add to user agent string")
-find_package(GLIB 2.70.0 REQUIRED COMPONENTS gio gio-unix gobject gthread gmodule)
find_package(Cairo 1.14.0 REQUIRED)
find_package(LibGcrypt 1.7.0 REQUIRED)
find_package(Libtasn1 REQUIRED)