Blob Blame History Raw
From cdb16f26f63f5093479a43cab32012845bcf33ed Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@gnome.org>
Date: Tue, 15 Nov 2022 08:58:38 +0000
Subject: [PATCH] M!107 - Use webkitgtk-6.0 API version

In WebKitGTK 2.39.1, the GTK 4 API version has been renamed from webkit2gtk-5.0 to webkitgtk-6.0.

Closes https://gitlab.gnome.org/GNOME/evolution-data-server/-/merge_requests/107
---
 CMakeLists.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index a3ce7c1dd..c575acd3e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -426,7 +426,7 @@ if(ENABLE_GTK4)
 
 	if(ENABLE_OAUTH2_WEBKITGTK4)
 		pkg_check_modules_for_option(ENABLE_OAUTH2_WEBKITGTK4 "WebKitGTK gtk4 for built-in OAuth2 authentications" OAUTH2_WEBKITGTK4
-			webkit2gtk-5.0>=${webkit2gtk4_minimum_version}
+			webkitgtk-6.0>=${webkit2gtk4_minimum_version}
 		)
 	endif(ENABLE_OAUTH2_WEBKITGTK4)
 endif(ENABLE_GTK4)
-- 
GitLab

From 8d29b0bded2e4e3700ce08e9db2eaeac4400528a Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@gnome.org>
Date: Mon, 21 Nov 2022 17:49:29 +0000
Subject: [PATCH] M!108 - Try harder to support webkitgtk-6.0

The cdb16f26f63f5093479a43cab32012845bcf33ed attempted to handle WebKitGTK
API changes, but I forgot the header file name changed as well.

Closes https://gitlab.gnome.org/GNOME/evolution-data-server/-/merge_requests/108
---
 src/libedataserverui/e-credentials-prompter-impl-oauth2.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
index 2415947c3..b99ac4e60 100644
--- a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
+++ b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
@@ -32,21 +32,19 @@
 #if GTK_CHECK_VERSION(4, 0, 0)
 #ifdef ENABLE_OAUTH2_WEBKITGTK4
 #define WITH_WEBKITGTK 1
+#include <webkit/webkit.h>
 #else
 #undef WITH_WEBKITGTK
 #endif
 #else
 #ifdef ENABLE_OAUTH2_WEBKITGTK
 #define WITH_WEBKITGTK 1
+#include <webkit2/webkit2.h>
 #else
 #undef WITH_WEBKITGTK
 #endif
 #endif
 
-#ifdef WITH_WEBKITGTK
-#include <webkit2/webkit2.h>
-#endif /* WITH_WEBKITGTK */
-
 struct _ECredentialsPrompterImplOAuth2Private {
 	GMutex property_lock;
 
-- 
GitLab


From 6f4d38537ec2192d7066a7ba145ca7ab0f607e56 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@redhat.com>
Date: Thu, 19 Jan 2023 20:12:04 -0600
Subject: [PATCH] M!112 - Update for removal of WebKitGTK sandbox API

WebKitGTK 2.39.5 contains an ABI break. The sandbox is now mandatory, so
the function to enable/disable it has been removed.
---
 src/libedataserverui/e-credentials-prompter-impl-oauth2.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
index 099a8f20c..0e5fb582f 100644
--- a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
+++ b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
@@ -1149,7 +1149,9 @@ e_credentials_prompter_impl_oauth2_show_dialog (ECredentialsPrompterImplOAuth2 *
 		NULL);
 
 	web_context = webkit_web_context_new ();
+#if !GTK_CHECK_VERSION(4, 0, 0) || !WEBKIT_CHECK_VERSION(2, 39, 5)
 	webkit_web_context_set_sandbox_enabled (web_context, TRUE);
+#endif
 	credentials_prompter_impl_oauth2_set_proxy (web_context,  e_credentials_prompter_get_registry (prompter), prompter_oauth2->priv->auth_source);
 
 	widget = g_object_new (WEBKIT_TYPE_WEB_VIEW,
-- 
GitLab

From 816deda308279c3e5a8a816ae2d94542c9084555 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@redhat.com>
Date: Wed, 1 Feb 2023 13:36:21 -0600
Subject: [PATCH 1/2] M!114 - OAuth2: stop trying to disable WebKit plugins

WebKitGTK removed support for plugins in 2.32, but evolution-data-server
already requires 2.34 at least. This property is gone in 2.39.5.
---
 src/libedataserverui/e-credentials-prompter-impl-oauth2.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
index 7e116fc7f..7a1f40e10 100644
--- a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
+++ b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
@@ -1205,7 +1205,6 @@ e_credentials_prompter_impl_oauth2_show_dialog (ECredentialsPrompterImplOAuth2 *
 		"enable-html5-local-storage", FALSE,
 		"enable-offline-web-application-cache", FALSE,
 		"enable-page-cache", FALSE,
-		"enable-plugins", FALSE,
 		"media-playback-allows-inline", FALSE,
 		"hardware-acceleration-policy", WEBKIT_HARDWARE_ACCELERATION_POLICY_NEVER,
 		NULL);
-- 
GitLab


From 02703b28d798931afccebf79c842b54625a8dcd0 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@redhat.com>
Date: Wed, 1 Feb 2023 13:46:15 -0600
Subject: [PATCH 2/2] M!114 - OAuth2: use WebKitNetworkSession to manage proxy
 settings

With WebKitGTK 2.39.6, network proxy settings moved from
WebKitWebsiteDataManager to WebKitNetworkSession.
---
 .../e-credentials-prompter-impl-oauth2.c      | 40 +++++++++++++++++--
 1 file changed, 36 insertions(+), 4 deletions(-)

diff --git a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
index 7a1f40e10..9a3918b61 100644
--- a/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
+++ b/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
@@ -679,7 +679,12 @@ credentials_prompter_impl_oauth2_sanitize_host (gchar *host)
 }
 
 static void
-credentials_prompter_impl_oauth2_set_proxy (WebKitWebContext *web_context,
+credentials_prompter_impl_oauth2_set_proxy (
+#if GTK_CHECK_VERSION(4, 0, 0) && WEBKIT_CHECK_VERSION(2, 39, 6)
+					    WebKitNetworkSession *network_session,
+#else
+					    WebKitWebsiteDataManager *data_manager,
+#endif
 					    ESourceRegistry *registry,
 					    ESource *auth_source)
 {
@@ -704,7 +709,6 @@ credentials_prompter_impl_oauth2_set_proxy (WebKitWebContext *web_context,
 
 	if (proxy_source && e_source_has_extension (proxy_source, E_SOURCE_EXTENSION_PROXY)) {
 		ESourceProxy *proxy;
-		WebKitWebsiteDataManager *data_manager;
 		WebKitNetworkProxySettings *proxy_settings = NULL;
 		GUri *guri;
 		gchar **ignore_hosts = NULL;
@@ -712,11 +716,14 @@ credentials_prompter_impl_oauth2_set_proxy (WebKitWebContext *web_context,
 		guint16 port;
 
 		proxy = e_source_get_extension (proxy_source, E_SOURCE_EXTENSION_PROXY);
-		data_manager = webkit_web_context_get_website_data_manager (web_context);
 
 		switch (e_source_proxy_get_method (proxy)) {
 		case E_PROXY_METHOD_DEFAULT:
+#if GTK_CHECK_VERSION(4, 0, 0) && WEBKIT_CHECK_VERSION(2, 39, 6)
+			webkit_network_session_set_proxy_settings (network_session, WEBKIT_NETWORK_PROXY_MODE_DEFAULT, NULL);
+#else
 			webkit_website_data_manager_set_network_proxy_settings (data_manager, WEBKIT_NETWORK_PROXY_MODE_DEFAULT, NULL);
+#endif
 			break;
 		case E_PROXY_METHOD_MANUAL:
 			ignore_hosts = e_source_proxy_dup_ignore_hosts (proxy);
@@ -770,13 +777,21 @@ credentials_prompter_impl_oauth2_set_proxy (WebKitWebContext *web_context,
 			}
 			g_free (tmp);
 
+#if GTK_CHECK_VERSION(4, 0, 0) && WEBKIT_CHECK_VERSION(2, 39, 6)
+			webkit_network_session_set_proxy_settings (network_session, WEBKIT_NETWORK_PROXY_MODE_CUSTOM, proxy_settings);
+#else
 			webkit_website_data_manager_set_network_proxy_settings (data_manager, WEBKIT_NETWORK_PROXY_MODE_CUSTOM, proxy_settings);
+#endif
 			break;
 		case E_PROXY_METHOD_AUTO:
 			/* not supported by WebKitGTK */
 			break;
 		case E_PROXY_METHOD_NONE:
+#if GTK_CHECK_VERSION(4, 0, 0) && WEBKIT_CHECK_VERSION(2, 39, 6)
+			webkit_network_session_set_proxy_settings (network_session, WEBKIT_NETWORK_PROXY_MODE_NO_PROXY, proxy_settings);
+#else
 			webkit_website_data_manager_set_network_proxy_settings (data_manager, WEBKIT_NETWORK_PROXY_MODE_NO_PROXY, NULL);
+#endif
 			break;
 		}
 
@@ -899,6 +914,11 @@ e_credentials_prompter_impl_oauth2_show_dialog (ECredentialsPrompterImplOAuth2 *
 	GtkWidget *progress_bar;
 	WebKitSettings *webkit_settings;
 	WebKitWebContext *web_context;
+#if GTK_CHECK_VERSION(4, 0, 0) && WEBKIT_CHECK_VERSION(2, 39, 6)
+	WebKitNetworkSession *network_session;
+#else
+	WebKitWebsiteDataManager *data_manager;
+#endif
 #endif /* WITH_WEBKITGTK */
 	gchar *title, *uri;
 	GString *info_markup;
@@ -1213,9 +1233,18 @@ e_credentials_prompter_impl_oauth2_show_dialog (ECredentialsPrompterImplOAuth2 *
 #if !GTK_CHECK_VERSION(4, 0, 0) || !WEBKIT_CHECK_VERSION(2, 39, 5)
 	webkit_web_context_set_sandbox_enabled (web_context, TRUE);
 #endif
-	credentials_prompter_impl_oauth2_set_proxy (web_context,  e_credentials_prompter_get_registry (prompter), prompter_oauth2->priv->auth_source);
+#if GTK_CHECK_VERSION(4, 0, 0) && WEBKIT_CHECK_VERSION(2, 39, 6)
+	network_session = webkit_network_session_new (NULL, NULL);
+	credentials_prompter_impl_oauth2_set_proxy (network_session, e_credentials_prompter_get_registry (prompter), prompter_oauth2->priv->auth_source);
+#else
+	data_manager = webkit_web_context_get_website_data_manager (web_context);
+	credentials_prompter_impl_oauth2_set_proxy (data_manager, e_credentials_prompter_get_registry (prompter), prompter_oauth2->priv->auth_source);
+#endif
 
 	widget = g_object_new (WEBKIT_TYPE_WEB_VIEW,
+#if GTK_CHECK_VERSION(4, 0, 0) && WEBKIT_CHECK_VERSION(2, 39, 6)
+			"network-session", network_session,
+#endif
 			"settings", webkit_settings,
 			"web-context", web_context,
 			NULL);
@@ -1231,6 +1260,9 @@ e_credentials_prompter_impl_oauth2_show_dialog (ECredentialsPrompterImplOAuth2 *
 	gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scrolled_window), widget);
 #else
 	gtk_container_add (GTK_CONTAINER (scrolled_window), widget);
+#endif
+#if GTK_CHECK_VERSION(4, 0, 0) && WEBKIT_CHECK_VERSION(2, 39, 6)
+	g_object_unref (network_session);
 #endif
 	g_object_unref (webkit_settings);
 	g_object_unref (web_context);
-- 
GitLab