diff --git a/SOURCES/0007-oauth2-enable-html5-features.patch b/SOURCES/0007-oauth2-enable-html5-features.patch
new file mode 100644
index 0000000..cad3ef8
--- /dev/null
+++ b/SOURCES/0007-oauth2-enable-html5-features.patch
@@ -0,0 +1,33 @@
+diff -up evolution-data-server-3.40.4/src/libedataserverui/e-credentials-prompter-impl-oauth2.c.7 evolution-data-server-3.40.4/src/libedataserverui/e-credentials-prompter-impl-oauth2.c
+--- evolution-data-server-3.40.4/src/libedataserverui/e-credentials-prompter-impl-oauth2.c.7 2021-08-13 11:44:41.000000000 +0200
++++ evolution-data-server-3.40.4/src/libedataserverui/e-credentials-prompter-impl-oauth2.c 2024-01-11 15:28:03.245950925 +0100
+@@ -573,6 +573,7 @@ e_credentials_prompter_impl_oauth2_show_
+ GtkScrolledWindow *scrolled_window;
+ GtkWindow *dialog_parent;
+ ECredentialsPrompter *prompter;
++ WebKitCookieManager *cookie_manager;
+ WebKitSettings *webkit_settings;
+ WebKitWebContext *web_context;
+ gchar *title, *uri;
+@@ -725,9 +726,9 @@ e_credentials_prompter_impl_oauth2_show_
+ webkit_settings = webkit_settings_new_with_settings (
+ "auto-load-images", TRUE,
+ "default-charset", "utf-8",
+- "enable-html5-database", FALSE,
+ "enable-dns-prefetching", FALSE,
+- "enable-html5-local-storage", FALSE,
++ "enable-html5-database", TRUE,
++ "enable-html5-local-storage", TRUE,
+ "enable-offline-web-application-cache", FALSE,
+ "enable-page-cache", FALSE,
+ "enable-plugins", FALSE,
+@@ -737,6 +738,9 @@ e_credentials_prompter_impl_oauth2_show_
+ web_context = webkit_web_context_new ();
+ webkit_web_context_set_sandbox_enabled (web_context, TRUE);
+
++ cookie_manager = webkit_web_context_get_cookie_manager (web_context);
++ webkit_cookie_manager_set_accept_policy (cookie_manager, WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS);
++
+ widget = g_object_new (WEBKIT_TYPE_WEB_VIEW,
+ "settings", webkit_settings,
+ "web-context", web_context,
diff --git a/SOURCES/evolution-data-server-3.40.4-no-libedataserverui-in-alarm-notify.patch b/SOURCES/evolution-data-server-3.40.4-no-libedataserverui-in-alarm-notify.patch
new file mode 100644
index 0000000..d7dcb4f
--- /dev/null
+++ b/SOURCES/evolution-data-server-3.40.4-no-libedataserverui-in-alarm-notify.patch
@@ -0,0 +1,71 @@
+diff --git a/src/services/evolution-alarm-notify/CMakeLists.txt b/src/services/evolution-alarm-notify/CMakeLists.txt
+index a4c0a41..a713797 100644
+--- a/src/services/evolution-alarm-notify/CMakeLists.txt
++++ b/src/services/evolution-alarm-notify/CMakeLists.txt
+@@ -1,9 +1,14 @@
+ set(DEPENDENCIES
+ ecal
+- edataserverui
+ )
+
+ set(SOURCES
++ ../../libedataserverui/libedataserverui-private.h
++ ../../libedataserverui/libedataserverui-private.c
++ ../../libedataserverui/e-buffer-tagger.h
++ ../../libedataserverui/e-buffer-tagger.c
++ ../../libedataserverui/e-reminders-widget.h
++ ../../libedataserverui/e-reminders-widget.c
+ evolution-alarm-notify.c
+ e-alarm-notify.h
+ e-alarm-notify.c
+@@ -17,9 +22,15 @@ add_dependencies(evolution-alarm-notify
+ ${DEPENDENCIES}
+ )
+
++# the -DLIBEDATASERVERUI_COMPILATION is a hackish way to borrow sources from
++# the libedataserverui without depending on it (because it can be uninstalled)
+ target_compile_definitions(evolution-alarm-notify PRIVATE
+ -DG_LOG_DOMAIN=\"evolution-alarm-notify\"
+ -DLOCALEDIR=\"${LOCALE_INSTALL_DIR}\"
++ -DLIBEDATASERVERUI_COMPILATION
++ -DE_DATA_SERVER_PREFIX=\"${CMAKE_INSTALL_PREFIX}\"
++ -DE_DATA_SERVER_UIMODULEDIR=\"${uimoduledir}\"
++ -DE_DATA_SERVER_ICONDIR=\"${icondir}\"
+ )
+
+ target_compile_options(evolution-alarm-notify PUBLIC
+@@ -33,6 +44,7 @@ target_include_directories(evolution-alarm-notify PUBLIC
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_BINARY_DIR}/src
+ ${CMAKE_SOURCE_DIR}/src
++ ${CMAKE_SOURCE_DIR}/src/libedataserverui
+ ${CANBERRA_INCLUDE_DIRS}
+ ${DATA_SERVER_INCLUDE_DIRS}
+ ${GNOME_PLATFORM_INCLUDE_DIRS}
+diff --git a/src/services/evolution-alarm-notify/e-alarm-notify.c b/src/services/evolution-alarm-notify/e-alarm-notify.c
+index 5c9b479..bf53a86 100644
+--- a/src/services/evolution-alarm-notify/e-alarm-notify.c
++++ b/src/services/evolution-alarm-notify/e-alarm-notify.c
+@@ -30,7 +30,9 @@
+ #endif
+
+ #include "libecal/libecal.h"
+-#include "libedataserverui/libedataserverui.h"
++
++#include "libedataserverui/e-buffer-tagger.h"
++#include "libedataserverui/e-reminders-widget.h"
+
+ #include "e-alarm-notify.h"
+
+diff --git a/src/services/evolution-alarm-notify/evolution-alarm-notify.c b/src/services/evolution-alarm-notify/evolution-alarm-notify.c
+index 5467a8d..14a13aa 100644
+--- a/src/services/evolution-alarm-notify/evolution-alarm-notify.c
++++ b/src/services/evolution-alarm-notify/evolution-alarm-notify.c
+@@ -22,7 +22,6 @@
+ #include
+
+ #include
+-#include
+
+ #include "e-alarm-notify.h"
+
diff --git a/SPECS/evolution-data-server.spec b/SPECS/evolution-data-server.spec
index 30ebb48..77540e8 100644
--- a/SPECS/evolution-data-server.spec
+++ b/SPECS/evolution-data-server.spec
@@ -54,7 +54,7 @@
Name: evolution-data-server
Version: 3.40.4
-Release: 6%{?dist}
+Release: 9%{?dist}
Summary: Backend data server for Evolution
License: LGPLv2+
URL: https://wiki.gnome.org/Apps/Evolution
@@ -65,6 +65,8 @@ Patch02: evolution-data-server-3.40.4-secret-monitor-warnings.patch
Patch03: evolution-data-server-3.40.4-google-contacts-to-carddav.patch
Patch04: evolution-data-server-3.40.4-google-oauth2.patch
Patch05: evolution-data-server-3.40.4-caldav-crash.patch
+Patch06: evolution-data-server-3.40.4-no-libedataserverui-in-alarm-notify.patch
+Patch07: 0007-oauth2-enable-html5-features.patch
Provides: evolution-webcal = %{version}
Obsoletes: evolution-webcal < 2.24.0
@@ -72,6 +74,8 @@ Obsoletes: evolution-webcal < 2.24.0
# RH-bug #1362477
Recommends: pinentry-gui
+Recommends: %{name}-ui
+
%if 0%{?fedora}
# From rhughes-f20-gnome-3-12 copr
Obsoletes: compat-evolution-data-server310-libcamel < 3.12
@@ -152,12 +156,27 @@ Requires: pkgconfig(libical-glib) >= %{libical_version}
Requires: pkgconfig(libsecret-unstable) >= %{libsecret_version}
Requires: pkgconfig(libsoup-2.4) >= %{libsoup_version}
Requires: pkgconfig(sqlite3) >= %{sqlite_version}
-Requires: pkgconfig(webkit2gtk-4.0) >= %{webkit2gtk_version}
Requires: pkgconfig(json-glib-1.0) >= %{json_glib_version}
%description devel
Development files needed for building things which link against %{name}.
+%package ui
+Summary: libedataserverui library from %{name}
+Requires: %{name}%{?_isa} = %{version}-%{release}
+
+%description ui
+libedataserverui library files from %{name}.
+
+%package ui-devel
+Summary: Development files for building against libedataserverui from %{name}
+Requires: %{name}-devel%{?_isa} = %{version}-%{release}
+Requires: %{name}-ui%{?_isa} = %{version}-%{release}
+Requires: pkgconfig(webkit2gtk-4.0) >= %{webkit2gtk_version}
+
+%description ui-devel
+Development files needed for building things which link against libedataserverui from %{name}.
+
%package langpacks
Summary: Translations for %{name}
BuildArch: noarch
@@ -307,8 +326,6 @@ find $RPM_BUILD_ROOT -name '*.so.*' -exec chmod +x {} \;
%{_libdir}/libedata-cal-2.0.so.1.0.0
%{_libdir}/libedataserver-1.2.so.26
%{_libdir}/libedataserver-1.2.so.26.0.0
-%{_libdir}/libedataserverui-1.2.so.3
-%{_libdir}/libedataserverui-1.2.so.3.0.0
%{_libdir}/girepository-1.0/Camel-1.2.typelib
%{_libdir}/girepository-1.0/EBackend-1.2.typelib
@@ -318,7 +335,6 @@ find $RPM_BUILD_ROOT -name '*.so.*' -exec chmod +x {} \;
%{_libdir}/girepository-1.0/EDataBook-1.2.typelib
%{_libdir}/girepository-1.0/EDataCal-2.0.typelib
%{_libdir}/girepository-1.0/EDataServer-1.2.typelib
-%{_libdir}/girepository-1.0/EDataServerUI-1.2.typelib
%{_libexecdir}/camel-gpg-photo-saver
%{_libexecdir}/camel-index-control-1.2
@@ -366,7 +382,6 @@ find $RPM_BUILD_ROOT -name '*.so.*' -exec chmod +x {} \;
%dir %{ebook_backends_dir}
%dir %{ecal_backends_dir}
%dir %{modules_dir}
-%dir %{uimodules_dir}
%{_libdir}/evolution-data-server/libedbus-private.so
@@ -407,12 +422,18 @@ find $RPM_BUILD_ROOT -name '*.so.*' -exec chmod +x {} \;
%{modules_dir}/module-oauth2-services.so
%{modules_dir}/module-outlook-backend.so
%{modules_dir}/module-secret-monitor.so
-%{modules_dir}/module-trust-prompt.so
%{modules_dir}/module-webdav-backend.so
%{modules_dir}/module-yahoo-backend.so
%files devel
-%{_includedir}/evolution-data-server
+%{_includedir}/evolution-data-server/camel
+%{_includedir}/evolution-data-server/libebackend
+%{_includedir}/evolution-data-server/libebook
+%{_includedir}/evolution-data-server/libebook-contacts
+%{_includedir}/evolution-data-server/libecal
+%{_includedir}/evolution-data-server/libedata-book
+%{_includedir}/evolution-data-server/libedata-cal
+%{_includedir}/evolution-data-server/libedataserver
%{_libdir}/libcamel-1.2.so
%{_libdir}/libebackend-1.2.so
%{_libdir}/libebook-1.2.so
@@ -421,7 +442,6 @@ find $RPM_BUILD_ROOT -name '*.so.*' -exec chmod +x {} \;
%{_libdir}/libedata-book-1.2.so
%{_libdir}/libedata-cal-2.0.so
%{_libdir}/libedataserver-1.2.so
-%{_libdir}/libedataserverui-1.2.so
%{_libdir}/pkgconfig/camel-1.2.pc
%{_libdir}/pkgconfig/evolution-data-server-1.2.pc
%{_libdir}/pkgconfig/libebackend-1.2.pc
@@ -431,7 +451,6 @@ find $RPM_BUILD_ROOT -name '*.so.*' -exec chmod +x {} \;
%{_libdir}/pkgconfig/libedata-book-1.2.pc
%{_libdir}/pkgconfig/libedata-cal-2.0.pc
%{_libdir}/pkgconfig/libedataserver-1.2.pc
-%{_libdir}/pkgconfig/libedataserverui-1.2.pc
%{_datadir}/gir-1.0/Camel-1.2.gir
%{_datadir}/gir-1.0/EBackend-1.2.gir
%{_datadir}/gir-1.0/EBook-1.2.gir
@@ -440,7 +459,6 @@ find $RPM_BUILD_ROOT -name '*.so.*' -exec chmod +x {} \;
%{_datadir}/gir-1.0/EDataBook-1.2.gir
%{_datadir}/gir-1.0/EDataCal-2.0.gir
%{_datadir}/gir-1.0/EDataServer-1.2.gir
-%{_datadir}/gir-1.0/EDataServerUI-1.2.gir
%{_datadir}/vala/vapi/camel-1.2.deps
%{_datadir}/vala/vapi/camel-1.2.vapi
%{_datadir}/vala/vapi/libebackend-1.2.deps
@@ -457,6 +475,19 @@ find $RPM_BUILD_ROOT -name '*.so.*' -exec chmod +x {} \;
%{_datadir}/vala/vapi/libedata-cal-2.0.vapi
%{_datadir}/vala/vapi/libedataserver-1.2.deps
%{_datadir}/vala/vapi/libedataserver-1.2.vapi
+
+%files ui
+%dir %{uimodules_dir}
+%{_libdir}/libedataserverui-1.2.so.3
+%{_libdir}/libedataserverui-1.2.so.3.0.0
+%{_libdir}/girepository-1.0/EDataServerUI-1.2.typelib
+%{modules_dir}/module-trust-prompt.so
+
+%files ui-devel
+%{_includedir}/evolution-data-server/libedataserverui
+%{_libdir}/libedataserverui-1.2.so
+%{_libdir}/pkgconfig/libedataserverui-1.2.pc
+%{_datadir}/gir-1.0/EDataServerUI-1.2.gir
%{_datadir}/vala/vapi/libedataserverui-1.2.deps
%{_datadir}/vala/vapi/libedataserverui-1.2.vapi
@@ -480,6 +511,16 @@ find $RPM_BUILD_ROOT -name '*.so.*' -exec chmod +x {} \;
%{_datadir}/installed-tests
%changelog
+* Thu Jan 11 2024 Milan Crha - 3.40.4-9
+- Resolves: RHEL-21361 (OAuth2: Enable HTML5 database and local storage features for web view)
+
+* Wed Oct 11 2023 Milan Crha - 3.40.4-8
+- Resolves: RHEL-12405 (Move WebKitGTK parts in Evolution Data Server into optional subpackage)
+- Add requirement on ui subpackage into ui-devel subpackage
+
+* Tue Oct 10 2023 Milan Crha - 3.40.4-7
+- Resolves: RHEL-12405 (Move WebKitGTK parts in Evolution Data Server into optional subpackage)
+
* Tue May 24 2022 Milan Crha - 3.40.4-6
- Resolves: #2089902 (CalDAV: Crash on calendar update)