Accepting request 881936 from KDE:Qt:5.15

- Update to version 5.15.3:
  * Fix spelling and coding style
  * Fix new view request handling (QTBUG-87378)
  * Fix getDefaultScreenId on X11
  * Fix flaky tst_QWebEngineView::textSelectionOutOfInputField test
  * Move touch input tests to separate testcase
  * Add touch input tests for scrolling and pinch zooming
  * Fix rare duplicate ids forming in touch point id's mapping
  * Use the module's version number for QtWebEngineProcess
  * Touch handling: provide id mapping without modifying TouchPoint instance
    (QTBUG-88001)
  * Touch handling: fix mapped ids cleanup for TouchCancel event
  * et custom headers from QWebEngineUrlRequestInfo before triggering redirect
    (QTBUG-88861)
  * Forward modifier flags for lock keys (QTBUG-89001)
  * Fix handling of more than one finger for touch event (QTBUG-86389)
  * Stabilize load signals emitting (QTBUG-65223, QTBUG-87089)
  * Fix building against 5.12 on most CIs
  * Update minimum HarfBuzz version to 2.4.0 (QTBUG-88976)
  * Fix building against Qt 5.14
  * Migrate user script IPC to mojo
  * Fix crashes in user resource controller when single process
  * Minor. Fix namespace for user resource controller
  * Minor. RenderThreadObserverQt is really a RenderConfiguration
  * Remove RenderViewObserverHelper from UserResourceController
  * Cache mojo interface bindings to UserResourceControllerRenderFrame
  * Cache mojo interface bindings for WebChannelIPCTransport
  * Migrate render_view_observer_qt to mojo
  * Fix crash on linkedin.com (QTBUG-89740)
  * Suppress error pages also for http errors if they are disabled

OBS-URL: https://build.opensuse.org/request/show/881936
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtwebengine?expand=0&rev=67
This commit is contained in:
Richard Brown 2021-04-10 13:26:24 +00:00 committed by Git OBS Bridge
commit 61b69d453f
14 changed files with 492 additions and 522 deletions

View File

@ -0,0 +1,135 @@
From 199ea00a9eea13315a652c62778738629185b059 Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@qt.io>
Date: Wed, 10 Mar 2021 17:14:27 +0100
Subject: [PATCH] Fix normalization of app locales
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Use the internal Chromium routine to get the app locale Chromium
expects.
Fixes: QTBUG-91715
Change-Id: I5042eb066cb6879ad69628959912f2841867b4e8
Reviewed-by: Michael Brüning <michael.bruning@qt.io>
---
src/core/content_browser_client_qt.cpp | 7 +++++-
src/core/content_browser_client_qt.h | 2 ++
src/core/web_engine_library_info.cpp | 18 +++++++-------
.../qwebengineview/tst_qwebengineview.cpp | 24 +++++++++++++++++++
4 files changed, 40 insertions(+), 11 deletions(-)
diff --git a/src/core/content_browser_client_qt.cpp b/src/core/content_browser_client_qt.cpp
index e13ecd8d..c2c78ff8 100644
--- a/src/core/content_browser_client_qt.cpp
+++ b/src/core/content_browser_client_qt.cpp
@@ -471,7 +471,12 @@ std::unique_ptr<net::ClientCertStore> ContentBrowserClientQt::CreateClientCertSt
std::string ContentBrowserClientQt::GetApplicationLocale()
{
- return WebEngineLibraryInfo::getApplicationLocale();
+ std::string bcp47Name = QLocale().bcp47Name().toStdString();
+ if (m_cachedQtLocale != bcp47Name) {
+ m_cachedQtLocale = bcp47Name;
+ m_appLocale = WebEngineLibraryInfo::getApplicationLocale();
+ }
+ return m_appLocale;
}
std::string ContentBrowserClientQt::GetAcceptLangs(content::BrowserContext *context)
diff --git a/src/core/content_browser_client_qt.h b/src/core/content_browser_client_qt.h
index 7c8aa3ac..1ccd2926 100644
--- a/src/core/content_browser_client_qt.h
+++ b/src/core/content_browser_client_qt.h
@@ -269,6 +269,8 @@ public:
private:
scoped_refptr<ShareGroupQtQuick> m_shareGroupQtQuick;
+ std::string m_appLocale;
+ std::string m_cachedQtLocale;
};
} // namespace QtWebEngineCore
diff --git a/src/core/web_engine_library_info.cpp b/src/core/web_engine_library_info.cpp
index 2ad5b756..09a4141b 100644
--- a/src/core/web_engine_library_info.cpp
+++ b/src/core/web_engine_library_info.cpp
@@ -46,6 +46,7 @@
#include "components/spellcheck/spellcheck_buildflags.h"
#include "content/public/common/content_paths.h"
#include "sandbox/policy/switches.h"
+#include "ui/base/l10n/l10n_util.h"
#include "ui/base/ui_base_paths.h"
#include "ui/base/ui_base_switches.h"
@@ -353,18 +354,15 @@ base::string16 WebEngineLibraryInfo::getApplicationName()
std::string WebEngineLibraryInfo::getApplicationLocale()
{
base::CommandLine *parsedCommandLine = base::CommandLine::ForCurrentProcess();
- if (!parsedCommandLine->HasSwitch(switches::kLang)) {
+ if (parsedCommandLine->HasSwitch(switches::kLang)) {
+ return parsedCommandLine->GetSwitchValueASCII(switches::kLang);
+ } else {
const QString &locale = QLocale().bcp47Name();
-
- // QLocale::bcp47Name returns "en" for American English locale. Chromium requires the "US" suffix
- // to clarify the dialect and ignores the shorter version.
- if (locale == "en")
- return "en-US";
-
- return locale.toStdString();
+ std::string resolvedLocale;
+ if (l10n_util::CheckAndResolveLocale(locale.toStdString(), &resolvedLocale))
+ return resolvedLocale;
}
-
- return parsedCommandLine->GetSwitchValueASCII(switches::kLang);
+ return "en-US";
}
#if defined(OS_WIN)
diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
index 02198638..bf2c28ae 100644
--- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
+++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
@@ -123,6 +123,7 @@ private Q_SLOTS:
void doNotBreakLayout();
void changeLocale();
+ void mixLangLocale();
void inputMethodsTextFormat_data();
void inputMethodsTextFormat();
void keyboardEvents();
@@ -1210,6 +1211,29 @@ void tst_QWebEngineView::changeLocale()
QCOMPARE(errorLines.first().toUtf8(), QByteArrayLiteral("Die Website ist nicht erreichbar"));
}
+void tst_QWebEngineView::mixLangLocale()
+{
+ for (QString locale : { "en_DK", "de_CH", "eu_ES" }) {
+ QLocale::setDefault(locale);
+ QWebEngineView view;
+ QSignalSpy loadSpy(&view, &QWebEngineView::loadFinished);
+
+ bool terminated = false;
+ auto sc = connect(view.page(), &QWebEnginePage::renderProcessTerminated, [&] () { terminated = true; });
+
+ view.load(QUrl("qrc:///resources/dummy.html"));
+ QTRY_VERIFY(terminated || loadSpy.count() == 1);
+
+ QVERIFY2(!terminated,
+ qPrintable(QString("Locale [%1] terminated: %2, loaded: %3").arg(locale).arg(terminated).arg(loadSpy.count())));
+ QVERIFY(loadSpy.first().first().toBool());
+
+ QString content = toPlainTextSync(view.page());
+ QVERIFY2(!content.isEmpty() && content.contains("test content"), qPrintable(content));
+ }
+ QLocale::setDefault(QLocale("en"));
+}
+
void tst_QWebEngineView::inputMethodsTextFormat_data()
{
QTest::addColumn<QString>("string");
--
2.30.2

15
_service Normal file
View File

@ -0,0 +1,15 @@
<services>
<service name="tar_scm" mode="disabled">
<param name="changesgenerate">enable</param>
<param name="version">5.15.3</param>
<param name="url">git://code.qt.io/qt/qtwebengine.git</param>
<param name="scm">git</param>
<param name="filename">qtwebengine-everywhere-src</param>
<param name="revision">5.15.3</param>
</service>
<service name="recompress" mode="disabled">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
<service name="set_version" mode="disabled" />
</services>

4
_servicedata Normal file
View File

@ -0,0 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">git://code.qt.io/qt/qtwebengine.git</param>
<param name="changesrevision">a059e7404a6db799f4da0ad696e65ae9c854b4b0</param></service></servicedata>

View File

@ -1,13 +1,13 @@
# Patch made by Kevin Kofler <Kevin@tigcc.ticalc.org>
# https://bugzilla.redhat.com/show_bug.cgi?id=1904652
Index: qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
===================================================================
--- qtwebengine-everywhere-src-5.15.2.orig/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
+++ qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
@@ -253,6 +253,18 @@ ResultExpr EvaluateSyscallImpl(int fs_de
return RestrictKillTarget(current_pid, sysno);
diff --git a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc b/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
index 4772dc0..1f31d3a 100644
--- a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
+++ b/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
@@ -268,6 +268,18 @@ ResultExpr EvaluateSyscallImpl(int fs_denied_errno,
}
#endif
+#if defined(__NR_newfstatat)
+ if (sysno == __NR_newfstatat) {
@ -24,10 +24,10 @@ Index: qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/sec
if (SyscallSets::IsFileSystem(sysno) ||
SyscallSets::IsCurrentDirectory(sysno)) {
return Error(fs_denied_errno);
Index: qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
===================================================================
--- qtwebengine-everywhere-src-5.15.2.orig/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
+++ qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
diff --git a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc b/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
index 76eb324..ad95656 100644
--- a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
+++ b/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
@@ -6,6 +6,8 @@
#include "sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h"
@ -36,13 +36,13 @@ Index: qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/sec
+#include <fcntl.h>
#include <stddef.h>
#include <stdint.h>
#include <sys/syscall.h>
@@ -353,6 +355,35 @@ intptr_t SIGSYSSchedHandler(const struct
#include <string.h>
@@ -355,6 +357,35 @@ intptr_t SIGSYSSchedHandler(const struct arch_seccomp_data& args,
return -ENOSYS;
}
+intptr_t SIGSYSFstatatHandler(const struct arch_seccomp_data& args,
+ void* aux) {
+ void* aux) {
+ switch (args.nr) {
+#if defined(__NR_newfstatat)
+ case __NR_newfstatat:
@ -73,7 +73,7 @@ Index: qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/sec
bpf_dsl::ResultExpr CrashSIGSYS() {
return bpf_dsl::Trap(CrashSIGSYS_Handler, NULL);
}
@@ -385,6 +416,10 @@ bpf_dsl::ResultExpr RewriteSchedSIGSYS()
@@ -387,6 +418,10 @@ bpf_dsl::ResultExpr RewriteSchedSIGSYS() {
return bpf_dsl::Trap(SIGSYSSchedHandler, NULL);
}
@ -84,23 +84,22 @@ Index: qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/sec
void AllocateCrashKeys() {
#if !defined(OS_NACL_NONSFI)
if (seccomp_crash_key)
Index: qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h
===================================================================
--- qtwebengine-everywhere-src-5.15.2.orig/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h
+++ qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h
@@ -63,6 +63,11 @@ SIGSYSPtraceFailure(const struct arch_se
SANDBOX_EXPORT intptr_t
SIGSYSSchedHandler(const struct arch_seccomp_data& args, void* aux);
diff --git a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h b/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h
index 7a958b9..d0bfab7 100644
--- a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h
+++ b/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h
@@ -62,6 +62,10 @@ SANDBOX_EXPORT intptr_t SIGSYSPtraceFailure(const arch_seccomp_data& args,
// sched_setparam(), sched_setscheduler()
SANDBOX_EXPORT intptr_t SIGSYSSchedHandler(const arch_seccomp_data& args,
void* aux);
+// If the fstatat syscall is actually a disguised fstat, calls the regular fstat
+// syscall, otherwise, crashes in the same way as CrashSIGSYS_Handler.
+SANDBOX_EXPORT intptr_t SIGSYSFstatatHandler(const struct arch_seccomp_data& args,
+SANDBOX_EXPORT intptr_t SIGSYSFstatatHandler(const struct arch_seccomp_data& args,
+ void* aux);
+
// Variants of the above functions for use with bpf_dsl.
SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYS();
SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSClone();
@@ -72,6 +77,7 @@ SANDBOX_EXPORT bpf_dsl::ResultExpr Crash
@@ -72,6 +76,7 @@ SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSKill();
SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSFutex();
SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSPtrace();
SANDBOX_EXPORT bpf_dsl::ResultExpr RewriteSchedSIGSYS();
@ -108,10 +107,10 @@ Index: qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/sec
// Allocates a crash key so that Seccomp information can be recorded.
void AllocateCrashKeys();
Index: qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc
===================================================================
--- qtwebengine-everywhere-src-5.15.2.orig/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc
+++ qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc
diff --git a/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc b/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc
index fcfd2aa..5396b36 100644
--- a/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc
+++ b/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc
@@ -261,4 +261,13 @@ int sys_sigaction(int signum,
#endif // defined(MEMORY_SANITIZER)
@ -126,10 +125,10 @@ Index: qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/ser
+}
+
} // namespace sandbox
Index: qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h
===================================================================
--- qtwebengine-everywhere-src-5.15.2.orig/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h
+++ qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h
diff --git a/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h b/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h
index 1975bfb..ed7ee5a 100644
--- a/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h
+++ b/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h
@@ -17,6 +17,7 @@ struct sock_fprog;
struct rlimit64;
struct cap_hdr;
@ -138,7 +137,7 @@ Index: qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/ser
namespace sandbox {
@@ -84,6 +85,9 @@ SANDBOX_EXPORT int sys_sigaction(int sig
@@ -84,6 +85,9 @@ SANDBOX_EXPORT int sys_sigaction(int signum,
const struct sigaction* act,
struct sigaction* oldact);

View File

@ -1,15 +1,19 @@
Author Bernhard M. Wiedemann <bwiedemann suse de>
Date: 2020-04-07
https://bugzilla.opensuse.org/show_bug.cgi?id=1163766
From eaae274cb1975be558d8a535ba2310bc67c073a6 Mon Sep 17 00:00:00 2001
From: "Bernhard M. Wiedemann" <bwiedemann suse de>
Date: Wed, 24 Mar 2021 16:00:08 +0100
Subject: [PATCH] https://bugzilla.opensuse.org/show_bug.cgi?id=1163766
seccomp filters disallow a new kernel syscall to get time
used on i586
---
.../sandbox/linux/system_headers/x86_32_linux_syscalls.h | 8 ++++++++
.../chromium/sandbox/policy/linux/bpf_ime_policy_linux.cc | 3 +++
3 files changed, 16 insertions(+)
Index: qtwebengine-everywhere-src-5.15.0-beta3/src/3rdparty/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h
===================================================================
--- qtwebengine-everywhere-src-5.15.0-beta3.orig/src/3rdparty/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h
+++ qtwebengine-everywhere-src-5.15.0-beta3/src/3rdparty/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h
diff --git a/src/3rdparty/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h b/src/3rdparty/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h
index 7613c9bbc..7093ac054 100644
--- a/src/3rdparty/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h
+++ b/src/3rdparty/chromium/sandbox/linux/system_headers/x86_32_linux_syscalls.h
@@ -1710,5 +1710,13 @@
#define __NR_clone3 435
#endif
@ -24,33 +28,20 @@ Index: qtwebengine-everywhere-src-5.15.0-beta3/src/3rdparty/chromium/sandbox/lin
+
#endif // SANDBOX_LINUX_SYSTEM_HEADERS_X86_32_LINUX_SYSCALLS_H_
Index: qtwebengine-everywhere-src-5.15.0-beta3/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
===================================================================
--- qtwebengine-everywhere-src-5.15.0-beta3.orig/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
+++ qtwebengine-everywhere-src-5.15.0-beta3/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
@@ -151,6 +151,11 @@ ResultExpr EvaluateSyscallImpl(int fs_de
if (sysno == __NR_clock_gettime || sysno == __NR_clock_nanosleep) {
return RestrictClockID();
}
+#if defined(__NR_clock_gettime64)
+ if (sysno == __NR_clock_gettime64 || sysno == __NR_clock_nanosleep_time64) {
+ return RestrictClockID();
+ }
+#endif
if (sysno == __NR_clone) {
return RestrictCloneToThreadsAndEPERMFork();
Index: qtwebengine-everywhere-src-5.15.0-beta3/src/3rdparty/chromium/services/service_manager/sandbox/linux/bpf_ime_policy_linux.cc
===================================================================
--- qtwebengine-everywhere-src-5.15.0-beta3.orig/src/3rdparty/chromium/services/service_manager/sandbox/linux/bpf_ime_policy_linux.cc
+++ qtwebengine-everywhere-src-5.15.0-beta3/src/3rdparty/chromium/services/service_manager/sandbox/linux/bpf_ime_policy_linux.cc
@@ -31,6 +31,9 @@ ResultExpr ImeProcessPolicy::EvaluateSys
diff --git a/src/3rdparty/chromium/sandbox/policy/linux/bpf_ime_policy_linux.cc b/src/3rdparty/chromium/sandbox/policy/linux/bpf_ime_policy_linux.cc
index 3fcdbcc18..c7a00c2c2 100644
--- a/src/3rdparty/chromium/sandbox/policy/linux/bpf_ime_policy_linux.cc
+++ b/src/3rdparty/chromium/sandbox/policy/linux/bpf_ime_policy_linux.cc
@@ -31,6 +31,9 @@ ResultExpr ImeProcessPolicy::EvaluateSyscall(int sysno) const {
#endif
#if defined(__NR_clock_gettime)
case __NR_clock_gettime:
#endif
+#endif
+#if defined(__NR_clock_gettime64)
+ case __NR_clock_gettime64:
+#endif
#endif
return Allow();
// https://crbug.com/991435
#if defined(__NR_getrusage)
--
2.30.2

View File

@ -1,27 +0,0 @@
From b516ed189eb440e909f36baca1557b98e4d9ffd7 Mon Sep 17 00:00:00 2001
From: Frederik Seiffert <frederik@algoriddim.com>
Date: Thu, 12 Nov 2020 12:53:43 +0100
Subject: [PATCH] Fix building with ICU 68.
ICU 68 no longer defines the TRUE macro.
Closes #204.
---
encoding.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/encoding.c b/encoding.c
index c34aca44..264f60bb 100644
--- a/src/3rdparty/chromium/third_party/libxml/src/encoding.c
+++ b/src/3rdparty/chromium/third_party/libxml/src/encoding.c
@@ -2004,7 +2004,7 @@ xmlEncOutputChunk(xmlCharEncodingHandler *handler, unsigned char *out,
#ifdef LIBXML_ICU_ENABLED
else if (handler->uconv_out != NULL) {
ret = xmlUconvWrapper(handler->uconv_out, 0, out, outlen, in, inlen,
- TRUE);
+ 1);
}
#endif /* LIBXML_ICU_ENABLED */
else {
--
GitLab

View File

@ -1,301 +0,0 @@
From 9236b21c883360482bd2c06929bfdecbc47f186c Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@qt.io>
Date: Mon, 16 Nov 2020 13:16:13 +0100
Subject: Fix build with system ICU 68
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fixes: QTBUG-88116
Change-Id: I935babf51c2670fad7cc7950a2fe07eb2829c4cb
Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
---
chromium/base/i18n/string_compare.cc | 4 ++--
chromium/base/i18n/time_formatting.cc | 2 +-
.../components/autofill/core/common/autofill_regexes.cc | 8 ++++----
.../spellcheck/renderer/spellcheck_worditerator.cc | 2 +-
.../url_formatter/spoof_checks/idn_spoof_checker.cc | 4 ++--
.../url_formatter/spoof_checks/skeleton_generator.cc | 2 +-
chromium/services/service_manager/zygote/zygote_linux.cc | 2 +-
.../blink/renderer/platform/text/locale_icu.cc | 4 ++--
.../renderer/platform/text/text_break_iterator_icu.cc | 16 ++++++++--------
.../blink/renderer/platform/text/unicode_utilities.cc | 2 +-
.../blink/renderer/platform/wtf/text/text_codec_icu.cc | 2 +-
chromium/ui/base/l10n/formatter.cc | 6 +++---
12 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/chromium/base/i18n/string_compare.cc b/chromium/base/i18n/string_compare.cc
index 6cd59b98f49..a5fa502b53f 100644
--- a/src/3rdparty/chromium/base/i18n/string_compare.cc
+++ b/src/3rdparty/chromium/base/i18n/string_compare.cc
@@ -18,8 +18,8 @@ UCollationResult CompareString16WithCollator(const icu::Collator& collator,
StringPiece16 rhs) {
UErrorCode error = U_ZERO_ERROR;
UCollationResult result = collator.compare(
- icu::UnicodeString(FALSE, lhs.data(), static_cast<int>(lhs.length())),
- icu::UnicodeString(FALSE, rhs.data(), static_cast<int>(rhs.length())),
+ icu::UnicodeString(false, lhs.data(), static_cast<int>(lhs.length())),
+ icu::UnicodeString(false, rhs.data(), static_cast<int>(rhs.length())),
error);
DCHECK(U_SUCCESS(error));
return result;
diff --git a/chromium/base/i18n/time_formatting.cc b/chromium/base/i18n/time_formatting.cc
index 1a6c1389ba0..106dd0e5b47 100644
--- a/src/3rdparty/chromium/base/i18n/time_formatting.cc
+++ b/src/3rdparty/chromium/base/i18n/time_formatting.cc
@@ -236,7 +236,7 @@ bool TimeDurationFormatWithSeconds(const TimeDelta time,
icu::FieldPosition ignore(icu::FieldPosition::DONT_CARE);
measure_format.formatMeasures(measures, 3, formatted, ignore, status);
*out = i18n::UnicodeStringToString16(formatted);
- return U_SUCCESS(status) == TRUE;
+ return U_SUCCESS(status) == true;
}
string16 DateIntervalFormat(const Time& begin_time,
diff --git a/chromium/components/autofill/core/common/autofill_regexes.cc b/chromium/components/autofill/core/common/autofill_regexes.cc
index b141cb2d0f6..a8a688d50c7 100644
--- a/src/3rdparty/chromium/components/autofill/core/common/autofill_regexes.cc
+++ b/src/3rdparty/chromium/components/autofill/core/common/autofill_regexes.cc
@@ -43,7 +43,7 @@ class AutofillRegexes {
icu::RegexMatcher* AutofillRegexes::GetMatcher(const base::string16& pattern) {
auto it = matchers_.find(pattern);
if (it == matchers_.end()) {
- const icu::UnicodeString icu_pattern(FALSE, pattern.data(),
+ const icu::UnicodeString icu_pattern(false, pattern.data(),
pattern.length());
UErrorCode status = U_ZERO_ERROR;
@@ -70,20 +70,20 @@ bool MatchesPattern(const base::string16& input,
base::AutoLock lock(*g_lock);
icu::RegexMatcher* matcher = g_autofill_regexes->GetMatcher(pattern);
- icu::UnicodeString icu_input(FALSE, input.data(), input.length());
+ icu::UnicodeString icu_input(false, input.data(), input.length());
matcher->reset(icu_input);
UErrorCode status = U_ZERO_ERROR;
UBool matched = matcher->find(0, status);
DCHECK(U_SUCCESS(status));
- if (matched == TRUE && match) {
+ if (matched == true && match) {
icu::UnicodeString match_unicode = matcher->group(0, status);
DCHECK(U_SUCCESS(status));
*match = base::i18n::UnicodeStringToString16(match_unicode);
}
- return matched == TRUE;
+ return matched == true;
}
} // namespace autofill
diff --git a/chromium/components/spellcheck/renderer/spellcheck_worditerator.cc b/chromium/components/spellcheck/renderer/spellcheck_worditerator.cc
index 8fe8a6df381..e3a65580c08 100644
--- a/src/3rdparty/chromium/components/spellcheck/renderer/spellcheck_worditerator.cc
+++ b/src/3rdparty/chromium/components/spellcheck/renderer/spellcheck_worditerator.cc
@@ -424,7 +424,7 @@ bool SpellcheckWordIterator::Normalize(size_t input_start,
// spellchecker and we need manual normalization as well. The normalized
// text does not have to be NUL-terminated since its characters are copied to
// string16, which adds a NUL character when we need.
- icu::UnicodeString input(FALSE, &text_[input_start],
+ icu::UnicodeString input(false, &text_[input_start],
base::checked_cast<int32_t>(input_length));
UErrorCode status = U_ZERO_ERROR;
icu::UnicodeString output;
diff --git a/chromium/components/url_formatter/spoof_checks/idn_spoof_checker.cc b/chromium/components/url_formatter/spoof_checks/idn_spoof_checker.cc
index 1964793fd3e..c4e01026c38 100644
--- a/src/3rdparty/chromium/components/url_formatter/spoof_checks/idn_spoof_checker.cc
+++ b/src/3rdparty/chromium/components/url_formatter/spoof_checks/idn_spoof_checker.cc
@@ -347,7 +347,7 @@ bool IDNSpoofChecker::SafeToDisplayAsUnicode(
if (U_FAILURE(status) || (result & USPOOF_ALL_CHECKS))
return false;
- icu::UnicodeString label_string(FALSE /* isTerminated */, label.data(),
+ icu::UnicodeString label_string(false /* isTerminated */, label.data(),
base::checked_cast<int32_t>(label.size()));
// A punycode label with 'xn--' prefix is not subject to the URL
@@ -677,7 +677,7 @@ bool IDNSpoofChecker::IsWholeScriptConfusableAllowedForTLD(
base::StringPiece tld,
base::StringPiece16 tld_unicode) {
icu::UnicodeString tld_string(
- FALSE /* isTerminated */, tld_unicode.data(),
+ false /* isTerminated */, tld_unicode.data(),
base::checked_cast<int32_t>(tld_unicode.size()));
// Allow if the TLD contains any letter from the script, in which case it's
// likely to be a TLD in that script.
diff --git a/chromium/components/url_formatter/spoof_checks/skeleton_generator.cc b/chromium/components/url_formatter/spoof_checks/skeleton_generator.cc
index 41485914007..b8c1c2f547a 100644
--- a/src/3rdparty/chromium/components/url_formatter/spoof_checks/skeleton_generator.cc
+++ b/src/3rdparty/chromium/components/url_formatter/spoof_checks/skeleton_generator.cc
@@ -117,7 +117,7 @@ SkeletonGenerator::~SkeletonGenerator() = default;
Skeletons SkeletonGenerator::GetSkeletons(base::StringPiece16 hostname) {
Skeletons skeletons;
size_t hostname_length = hostname.length() - (hostname.back() == '.' ? 1 : 0);
- icu::UnicodeString host(FALSE, hostname.data(), hostname_length);
+ icu::UnicodeString host(false, hostname.data(), hostname_length);
// If input has any characters outside Latin-Greek-Cyrillic and [0-9._-],
// there is no point in getting rid of diacritics because combining marks
// attached to non-LGC characters are already blocked.
diff --git a/chromium/services/service_manager/zygote/zygote_linux.cc b/chromium/services/service_manager/zygote/zygote_linux.cc
index aa601ab28d7..920438e5b50 100644
--- a/src/3rdparty/chromium/services/service_manager/zygote/zygote_linux.cc
+++ b/src/3rdparty/chromium/services/service_manager/zygote/zygote_linux.cc
@@ -564,7 +564,7 @@ base::ProcessId Zygote::ReadArgsAndFork(base::PickleIterator iter,
if (!iter.ReadString16(&timezone_id))
return -1;
icu::TimeZone::adoptDefault(icu::TimeZone::createTimeZone(
- icu::UnicodeString(FALSE, timezone_id.data(), timezone_id.length())));
+ icu::UnicodeString(false, timezone_id.data(), timezone_id.length())));
if (!iter.ReadInt(&numfds))
return -1;
diff --git a/chromium/third_party/blink/renderer/platform/text/locale_icu.cc b/chromium/third_party/blink/renderer/platform/text/locale_icu.cc
index abff1b1d809..57f1286d4e4 100644
--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/text/locale_icu.cc
+++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/text/locale_icu.cc
@@ -169,12 +169,12 @@ static String GetDateFormatPattern(const UDateFormat* date_format) {
return g_empty_string;
UErrorCode status = U_ZERO_ERROR;
- int32_t length = udat_toPattern(date_format, TRUE, nullptr, 0, &status);
+ int32_t length = udat_toPattern(date_format, true, nullptr, 0, &status);
if (status != U_BUFFER_OVERFLOW_ERROR || !length)
return g_empty_string;
StringBuffer<UChar> buffer(length);
status = U_ZERO_ERROR;
- udat_toPattern(date_format, TRUE, buffer.Characters(), length, &status);
+ udat_toPattern(date_format, true, buffer.Characters(), length, &status);
if (U_FAILURE(status))
return g_empty_string;
return String::Adopt(buffer);
diff --git a/chromium/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc b/chromium/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc
index a257cd75ccf..898d0c47bb1 100644
--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc
+++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/text/text_break_iterator_icu.cc
@@ -311,13 +311,13 @@ static inline bool TextInChunkOrOutOfRange(UText* text,
text->chunkOffset = offset <= std::numeric_limits<int32_t>::max()
? static_cast<int32_t>(offset)
: 0;
- is_accessible = TRUE;
+ is_accessible = true;
return true;
}
if (native_index >= native_length &&
text->chunkNativeLimit == native_length) {
text->chunkOffset = text->chunkLength;
- is_accessible = FALSE;
+ is_accessible = false;
return true;
}
} else {
@@ -330,12 +330,12 @@ static inline bool TextInChunkOrOutOfRange(UText* text,
text->chunkOffset = offset <= std::numeric_limits<int32_t>::max()
? static_cast<int32_t>(offset)
: 0;
- is_accessible = TRUE;
+ is_accessible = true;
return true;
}
if (native_index <= 0 && !text->chunkNativeStart) {
text->chunkOffset = 0;
- is_accessible = FALSE;
+ is_accessible = false;
return true;
}
}
@@ -346,7 +346,7 @@ static UBool TextLatin1Access(UText* text,
int64_t native_index,
UBool forward) {
if (!text->context)
- return FALSE;
+ return false;
int64_t native_length = TextNativeLength(text);
UBool is_accessible;
if (TextInChunkOrOutOfRange(text, native_index, native_length, forward,
@@ -370,7 +370,7 @@ static UBool TextLatin1Access(UText* text,
DCHECK_EQ(new_context, kPriorContext);
TextLatin1SwitchToPriorContext(text, native_index, native_length, forward);
}
- return TRUE;
+ return true;
}
static const struct UTextFuncs kTextLatin1Funcs = {
@@ -510,7 +510,7 @@ static void TextUTF16SwitchToPriorContext(UText* text,
static UBool TextUTF16Access(UText* text, int64_t native_index, UBool forward) {
if (!text->context)
- return FALSE;
+ return false;
int64_t native_length = TextNativeLength(text);
UBool is_accessible;
if (TextInChunkOrOutOfRange(text, native_index, native_length, forward,
@@ -532,7 +532,7 @@ static UBool TextUTF16Access(UText* text, int64_t native_index, UBool forward) {
DCHECK_EQ(new_context, kPriorContext);
TextUTF16SwitchToPriorContext(text, native_index, native_length, forward);
}
- return TRUE;
+ return true;
}
static const struct UTextFuncs kTextUTF16Funcs = {
diff --git a/chromium/third_party/blink/renderer/platform/text/unicode_utilities.cc b/chromium/third_party/blink/renderer/platform/text/unicode_utilities.cc
index 2cefd5390b6..b8c4515dc13 100644
--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/text/unicode_utilities.cc
+++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/text/unicode_utilities.cc
@@ -300,7 +300,7 @@ void NormalizeCharactersIntoNFCForm(const UChar* characters,
DCHECK(U_SUCCESS(status));
int32_t input_length = static_cast<int32_t>(length);
// copy-on-write.
- icu::UnicodeString normalized(FALSE, characters, input_length);
+ icu::UnicodeString normalized(false, characters, input_length);
// In the vast majority of cases, input is already NFC. Run a quick check
// to avoid normalizing the entire input unnecessarily.
int32_t normalized_prefix_length =
diff --git a/chromium/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc b/chromium/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc
index 810d1cd9181..9074b640fff 100644
--- a/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc
+++ b/src/3rdparty/chromium/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc
@@ -326,7 +326,7 @@ void TextCodecICU::CreateICUConverter() const {
DLOG_IF(ERROR, err == U_AMBIGUOUS_ALIAS_WARNING)
<< "ICU ambiguous alias warning for encoding: " << encoding_.GetName();
if (converter_icu_)
- ucnv_setFallback(converter_icu_, TRUE);
+ ucnv_setFallback(converter_icu_, true);
}
int TextCodecICU::DecodeToBuffer(UChar* target,
diff --git a/chromium/ui/base/l10n/formatter.cc b/chromium/ui/base/l10n/formatter.cc
index 486a3a029cb..d7a41724628 100644
--- a/src/3rdparty/chromium/ui/base/l10n/formatter.cc
+++ b/src/3rdparty/chromium/ui/base/l10n/formatter.cc
@@ -232,7 +232,7 @@ void Formatter::Format(Unit unit,
int value,
icu::UnicodeString* formatted_string) const {
DCHECK(simple_format_[unit]);
- DCHECK(formatted_string->isEmpty() == TRUE);
+ DCHECK(formatted_string->isEmpty() == true);
UErrorCode error = U_ZERO_ERROR;
FormatNumberInPlural(*simple_format_[unit],
value, formatted_string, &error);
@@ -248,7 +248,7 @@ void Formatter::Format(TwoUnits units,
<< "Detailed() not implemented for your (format, length) combination!";
DCHECK(detailed_format_[units][1])
<< "Detailed() not implemented for your (format, length) combination!";
- DCHECK(formatted_string->isEmpty() == TRUE);
+ DCHECK(formatted_string->isEmpty() == true);
UErrorCode error = U_ZERO_ERROR;
FormatNumberInPlural(*detailed_format_[units][0], value_1,
formatted_string, &error);
@@ -281,7 +281,7 @@ std::unique_ptr<icu::MessageFormat> Formatter::InitFormat(
base::string16 pattern = l10n_util::GetStringUTF16(pluralities.id);
UErrorCode error = U_ZERO_ERROR;
std::unique_ptr<icu::MessageFormat> format(new icu::MessageFormat(
- icu::UnicodeString(FALSE, pattern.data(), pattern.length()), error));
+ icu::UnicodeString(false, pattern.data(), pattern.length()), error));
DCHECK(U_SUCCESS(error));
if (format.get())
return format;
--
cgit v1.2.1

View File

@ -1,3 +1,145 @@
-------------------------------------------------------------------
Wed Mar 24 12:45:13 UTC 2021 - christophe@krop.fr
- Update to version 5.15.3:
* Fix spelling and coding style
* Fix new view request handling (QTBUG-87378)
* Fix getDefaultScreenId on X11
* Fix flaky tst_QWebEngineView::textSelectionOutOfInputField test
* Move touch input tests to separate testcase
* Add touch input tests for scrolling and pinch zooming
* Fix rare duplicate ids forming in touch point id's mapping
* Use the module's version number for QtWebEngineProcess
* Touch handling: provide id mapping without modifying TouchPoint instance
(QTBUG-88001)
* Touch handling: fix mapped ids cleanup for TouchCancel event
* et custom headers from QWebEngineUrlRequestInfo before triggering redirect
(QTBUG-88861)
* Forward modifier flags for lock keys (QTBUG-89001)
* Fix handling of more than one finger for touch event (QTBUG-86389)
* Stabilize load signals emitting (QTBUG-65223, QTBUG-87089)
* Fix building against 5.12 on most CIs
* Update minimum HarfBuzz version to 2.4.0 (QTBUG-88976)
* Fix building against Qt 5.14
* Migrate user script IPC to mojo
* Fix crashes in user resource controller when single process
* Minor. Fix namespace for user resource controller
* Minor. RenderThreadObserverQt is really a RenderConfiguration
* Remove RenderViewObserverHelper from UserResourceController
* Cache mojo interface bindings to UserResourceControllerRenderFrame
* Cache mojo interface bindings for WebChannelIPCTransport
* Migrate render_view_observer_qt to mojo
* Fix crash on linkedin.com (QTBUG-89740)
* Suppress error pages also for http errors if they are disabled
* Fix leak in QQuickWebEngineViewPrivate::contextMenuRequested
* Register PerformanceNode early enough
* Quiet log on webrtc usage
* Remove configure option that doesn't work
* Remove Java build dependency
* Fix blank popups in qml (QTBUG-86034)
* Fix position of popup on qml (QTBUG-86034, QTBUG-89358)
* Enable hangout services extension (QTBUG-85731)
* Allow to fallback to default locale for non existent data packs (QTBUG-90490)
* Support devtools close button
* Do not extract download file names from certain url schemes (QTBUG-90355)
* Leave room for the null-termination byte when checking remote drive path
(QTBUG-90347)
* Do not set open files limit for linking if not necessary
* Remove even more remains of non network service code
* Add back prefers-color-scheme support (QTBUG-89753)
* Start supporting chrome.resourcesPrivate API (QTBUG-90035)
* Enable chrome://user-actions WebUI
* Remove remains of chrome://flash
* Fix loadFinished signal if page has content but server sends HTTP error
(QTBUG-90517)
* Fix devtools page resource loading as raw data instead of html string
* Remove frame metadata observer (RenderWidgetHostViewQt) on destroy
* Resolve installed interceptors right before interception point (QTBUG-86286)
* Update searches faster
* Remove more leftovers of the old compositor
* Enable webrtc logging and the corresponding WebUI
* Support mips64el platform CPU(loongson 3A4000)
* Add tracing UI resources
* Fix crash on meet.google.com
* Fix mad popup qquickwindows on wayland
* Fix crashes on BrowserContext destruction
* Fix crash on exit in quicknanobrowser when popup
* Remove QtPdf dependency on nss at build-time
* Avoid accessing profileAdapter when profile is shutting down (QTBUG-91187)
* Do not flush messages form profile destructor
* Ignore QQuickWebEngineNewViewRequest if it is unhandled
* Fix ScopedGLContextChecker with QTWEBENGINE_DISABLE_GPU_THREAD=1
* Don't send duplicate load progress values
* Fix neon support in libpng
* Do not call deprecated profile interceptor on ui thread (QTBUG-86267)
* Add certificate error message for ERR_SSL_OBSOLETE_VERSION
* Fix assert in WebContentsAdapter::devToolsFrontendDestroyed
* Avoid to reject a certificate error twice in Quick
* Fix PDF viewer plugin
* FIXUP: Fix swap condition in DisplayGLOutputSurface::updatePaintNode
(QTBUG-86599)
* Fix favicon engine under device pixel scaling
* Do not pass a native keycode matching the menu key when it is remapped
(QTBUG-86672)
* Optimize WebEngineSettings::testAttribute
* Warn about QtWebengineProcess launching from network share (QTBUG-84632)
* Handle non-ascii names for pulseaudio (QTBUG-85363)
* Do not set audio device for desktop capture if audio loopback is unsupported
* Fix new view request handling (QTBUG-87378)
* Fix getDefaultScreenId on X11
* Touch handling: provide id mapping without modifying TouchPoint instance
(QTBUG-88001)
* Set custom headers from QWebEngineUrlRequestInfo before triggering redirect
(QTBUG-88861)
* Stabilize load signals emitting (QTBUG-65223)
- CVE fixes backported in chromium updates:
* CVE-2020-16044: Use after free in WebRTC
* CVE-2021-21118: Heap buffer overflow in Blink
* CVE-2021-21119: Use after free in Media
* CVE-2021-21120: Use after free in WebSQL
* CVE-2021-21121: Use after free in Omnibox
* CVE-2021-21122: Use after free in Blink
* CVE-2021-21123: Insufficient data validation in File System API
* CVE-2021-21125: Insufficient policy enforcement in File System API
* CVE-2021-21126: Insufficient policy enforcement in extensions
* CVE-2021-21127: Insufficient policy enforcement in extensions
* CVE-2021-21128: Heap buffer overflow in Blink
* CVE-2021-21129: Insufficient policy enforcement in File System API
* CVE-2021-21130: Insufficient policy enforcement in File System API
* CVE-2021-21131: Insufficient policy enforcement in File System API
* CVE-2021-21132: Inappropriate implementation in DevTools
* CVE-2021-21135: Inappropriate implementation in Performance API
* CVE-2021-21137: Inappropriate implementation in DevTools
* CVE-2021-21140: Uninitialized Use in USB
* CVE-2021-21141: Insufficient policy enforcement in File System API
* CVE-2021-21145: Use after free in Fonts
* CVE-2021-21146: Use after free in Navigation
* CVE-2021-21147: Inappropriate implementation in Skia
* CVE-2021-21148: Heap buffer overflow in V8
* CVE-2021-21149: Stack overflow in Data Transfer
* CVE-2021-21150: Use after free in Downloads
* CVE-2021-21152: Heap buffer overflow in Media
* CVE-2021-21153: Stack overflow in GPU Process
* CVE-2021-21156: Heap buffer overflow in V8
* CVE-2021-21157: Use after free in Web Sockets
- Drop obsolete patches:
* icu-68.patch
* icu-68-2.patch
- Rebase patches:
* fix1163766.patch
* sandbox-statx-futex_time64.patch
* rtc-dont-use-h264.patch
* chromium-glibc-2.33.patch
- Add patch to fix crash with certain locales:
* 0001-Fix-normalization-of-app-locales.patch
- Clean the spec file a bit
-------------------------------------------------------------------
Wed Mar 10 16:52:28 UTC 2021 - Fabian Vogt <fabian@ritter-vogt.de>
- Can't use system_vpx on Leap 15.3
-------------------------------------------------------------------
Wed Feb 17 13:19:20 UTC 2021 - Fabian Vogt <fabian@ritter-vogt.de>

View File

@ -1,7 +1,7 @@
#
# spec file for package libqt5-qtwebengine
#
# Copyright (c) 2020 SUSE LLC
# Copyright (c) 2021 SUSE LLC
# Copyright © 2017 Kevin Kofler <Kevin@tigcc.ticalc.org>
#
# All modifications and additions to the file contributed by third parties
@ -17,16 +17,7 @@
#
%define qt5_snapshot 0
%if %{?suse_version} > 1500 || 0%{?sle_version} > 150100
%bcond_without system_harfbuzz
%bcond_without system_icu
%else
%bcond_with system_harfbuzz
%bcond_with system_icu
%endif
%if %{?suse_version} > 1500 || 0%{?sle_version} > 150200
%if %{?suse_version} > 1500 || 0%{?sle_version} > 150300
%bcond_without system_vpx
%else
%bcond_with system_vpx
@ -38,29 +29,31 @@
%global _qtwebengine_dictionaries_dir %{_libqt5_datadir}/qtwebengine_dictionaries
Name: libqt5-qtwebengine
Version: 5.15.2
Version: 5.15.3
Release: 0
Summary: Qt 5 WebEngine Library
License: LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
Group: Development/Libraries/X11
URL: https://www.qt.io
%define base_name libqt5
%define real_version 5.15.2
%define so_version 5.15.2
%define tar_version qtwebengine-everywhere-src-5.15.2
Source: https://download.qt.io/official_releases/qt/5.15/%{real_version}/submodules/%{tar_version}.tar.xz
%define real_version 5.15.3
%define so_version 5.15.3
%define tar_version qtwebengine-everywhere-src-%{version}
Source: %{tar_version}.tar.xz
# Generated from a local build
Source1: sync.profile
# PATCH-FIX-UPSTREAM armv6-ffmpeg-no-thumb.patch - Fix ffmpeg configuration for armv6
Patch1: armv6-ffmpeg-no-thumb.patch
Patch0: armv6-ffmpeg-no-thumb.patch
# PATCH-FIX-OPENSUSE disable-gpu-when-using-nouveau-boo-1005323.diff
Patch2: disable-gpu-when-using-nouveau-boo-1005323.diff
Patch3: fix1163766.patch
Patch4: chromium-glibc-2.33.patch
Patch5: sandbox-statx-futex_time64.patch
Patch1: disable-gpu-when-using-nouveau-boo-1005323.diff
Patch2: fix1163766.patch
Patch3: sandbox-statx-futex_time64.patch
# PATCH-FIX-OPENSUSE
Patch9: rtc-dont-use-h264.patch
Patch4: rtc-dont-use-h264.patch
# PATCH-FIX-UPSTREAM
Patch10: icu-68.patch
Patch11: icu-68-2.patch
Patch5: 0001-Fix-normalization-of-app-locales.patch
# PATCH-FIX-UPSTREAM
Patch6: chromium-glibc-2.33.patch
# http://www.chromium.org/blink not ported to PowerPC
ExcludeArch: ppc ppc64 ppc64le s390 s390x
# Try to fix i586 MemoryErrors with rpmlint
@ -80,29 +73,33 @@ BuildRequires: libQt5QuickControls2-devel
BuildRequires: libqt5-qtsvg-devel
BuildRequires: libcap-devel
BuildRequires: libgcrypt-devel
BuildRequires: libicu-devel
BuildRequires: libjpeg-devel
BuildRequires: libpng-devel
BuildRequires: libqt5-qtbase-private-headers-devel >= 5.9
BuildRequires: libqt5-qtdeclarative-private-headers-devel >= 5.9
BuildRequires: libqt5-qtlocation-private-headers-devel >= 5.9
BuildRequires: libqt5-qttools-private-headers-devel >= 5.9
BuildRequires: libqt5-qtwebchannel-private-headers-devel >= 5.9
BuildRequires: libqt5-qtxmlpatterns-private-headers-devel >= 5.9
BuildRequires: libqt5-qtbase-private-headers-devel >= 5.12
BuildRequires: libqt5-qtdeclarative-private-headers-devel >= 5.12
BuildRequires: libqt5-qtlocation-private-headers-devel >= 5.12
BuildRequires: libqt5-qttools-private-headers-devel >= 5.12
BuildRequires: libqt5-qtwebchannel-private-headers-devel >= 5.12
BuildRequires: libqt5-qtxmlpatterns-private-headers-devel >= 5.12
BuildRequires: memory-constraints
BuildRequires: ninja
# nodejs-default doesn't exist on Leap 15.2 and nodejs/nodejs-common is confused on TW/i586
%if 0%{?suse_version} == 1500 && 0%{?sle_version} == 150200
BuildRequires: nodejs-common
%else
BuildRequires: nodejs-default
%endif
BuildRequires: pam-devel
BuildRequires: pciutils-devel
BuildRequires: perl
BuildRequires: perl-JSON
BuildRequires: pkg-config
BuildRequires: pkgconfig
BuildRequires: python
BuildRequires: python-devel
BuildRequires: python-xml
BuildRequires: re2-devel
BuildRequires: re2c
BuildRequires: sed
BuildRequires: snappy-devel
BuildRequires: sqlite3-devel
BuildRequires: update-desktop-files
BuildRequires: usbutils
BuildRequires: util-linux
@ -119,13 +116,23 @@ BuildRequires: pkgconfig(bzip2)
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(fontconfig)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(freetype2) >= 2.4.2
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(glib-2.0) >= 2.32
BuildRequires: pkgconfig(glproto)
BuildRequires: pkgconfig(gmodule-2.0)
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(gthread-2.0)
BuildRequires: pkgconfig(harfbuzz) >= 2.4.0
BuildRequires: pkgconfig(icu-uc) >= 65.0
BuildRequires: pkgconfig(icu-i18n) >= 65.0
BuildRequires: pkgconfig(jsoncpp)
BuildRequires: pkgconfig(lcms2)
%if %{with system_ffmpeg}
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavformat)
BuildRequires: pkgconfig(libavutil)
%endif
BuildRequires: pkgconfig(libcrypto)
BuildRequires: pkgconfig(libdrm)
BuildRequires: pkgconfig(libevent)
@ -140,13 +147,22 @@ BuildRequires: pkgconfig(libusb-1.0)
BuildRequires: pkgconfig(libwebp)
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(libxslt)
%if %{with system_minizip}
BuildRequires: pkgconfig(minizip)
%endif
BuildRequires: pkgconfig(nspr)
BuildRequires: pkgconfig(nss)
BuildRequires: pkgconfig(opus)
BuildRequires: pkgconfig(pangocairo)
BuildRequires: pkgconfig(pangoft2)
BuildRequires: pkgconfig(poppler-cpp)
BuildRequires: pkgconfig(protobuf)
BuildRequires: pkgconfig(re2)
BuildRequires: pkgconfig(speex)
BuildRequires: pkgconfig(sqlite3)
%if %{with system_vpx}
BuildRequires: pkgconfig(vpx) >= 1.8.0
%endif
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xcomposite)
BuildRequires: pkgconfig(xcursor)
@ -161,28 +177,6 @@ BuildRequires: pkgconfig(xt)
BuildRequires: pkgconfig(xtst)
BuildRequires: pkgconfig(zlib)
BuildRequires: yasm-devel
%if %{with system_minizip}
BuildRequires: pkgconfig(minizip)
%endif
%if %{with system_harfbuzz}
BuildRequires: pkgconfig(harfbuzz) >= 2.2.0
%endif
%if %{with system_icu}
BuildRequires: pkgconfig(icu-uc) >= 64.0
BuildRequires: pkgconfig(icu-i18n) >= 64.0
%endif
%if %{with system_vpx}
BuildRequires: pkgconfig(vpx) >= 1.8.0
%endif
%if %{with system_ffmpeg}
BuildRequires: pkgconfig(libavcodec)
BuildRequires: pkgconfig(libavformat)
BuildRequires: pkgconfig(libavutil)
%endif
%if %qt5_snapshot
#to create the forwarding headers
BuildRequires: perl
%endif
%requires_ge libQt5Network5
%requires_ge libQtQuick5
%requires_ge libQt5Widgets5
@ -212,10 +206,10 @@ You need this package if you want to compile programs with Qt WebEngine.
%package private-headers-devel
Summary: Non-ABI stable experimental API for the Qt5 WebEngine library
Group: Development/Libraries/C and C++
BuildArch: noarch
Requires: %{name}-devel = %{version}
%requires_ge libqt5-qtbase-private-headers-devel
%requires_ge libqt5-qtdeclarative-private-headers-devel
BuildArch: noarch
%description private-headers-devel
This package provides private headers of libqt5-qtwebengine that are normally
@ -265,9 +259,9 @@ You need this package if you want to compile programs with Qt PDF.
%package -n libqt5-qtpdf-private-headers-devel
Summary: Non-ABI stable experimental API for the Qt5 PDF library
Group: Development/Libraries/C and C++
BuildArch: noarch
Requires: libqt5-qtpdf-devel = %{version}
%requires_ge libqt5-qtbase-private-headers-devel
BuildArch: noarch
%description -n libqt5-qtpdf-private-headers-devel
This package provides private headers of libqt5-qtpdf that are normally
@ -293,11 +287,6 @@ sed -i -e '/toolprefix = /d' -e 's/\${toolprefix}//g' \
src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
%build
%if %qt5_snapshot
#force the configure script to generate the forwarding headers (it checks whether .git directory exists)
mkdir .git
%endif
# TODO: Get the manual unbundling from chromium.spec working here as well
rm -r src/3rdparty/chromium/third_party/openh264/src
@ -313,48 +302,64 @@ export RPM_OPT_FLAGS="${RPM_OPT_FLAGS} -Wno-return-type"
QMAKE_CXXFLAGS="$RPM_OPT_FLAGS" \
QMAKE_LFLAGS+="-Wl,--no-keep-memory -Wl,--hash-size=31 -Wl,--reduce-memory-overheads" \
gn_args+="link_pulseaudio=true" \
gn_args+="media_use_openh264=false" \
gn_args+="use_system_libxml=true use_system_libxslt=true" \
qtwebengine.pro -- \
-webengine-alsa -webengine-kerberos -no-webengine-embedded-build \
%if %{with system_icu}
-webengine-alsa \
-no-webengine-embedded-build \
-webengine-kerberos \
-system-webengine-icu \
%endif
-system-webengine-opus \
-system-webengine-webp \
-webengine-pepper-plugins \
-webengine-printing-and-pdf \
%if %{with system_ffmpeg}
-system-webengine-ffmpeg \
-webengine-proprietary-codecs \
%endif
-system-webengine-opus -system-webengine-webp -webengine-pepper-plugins -webengine-printing-and-pdf
# For an unknown reason, syncqt isn't executed when building the package on the build service
cp %{SOURCE1} .
for i in QtWebEngine QtWebEngineCore QtWebEngineWidgets QtPdf QtPdfWidgets ; do
perl -w %{_libqt5_bindir}/syncqt.pl -module $i -version %{version} -outdir $PWD -builddir $PWD $PWD
done
# Determine the right number of parallel processes based on the available memory
%limit_build -m 2750
# Ensure that also the internal chromium build follows the right number of parallel
# processes instead of its defaults.
export NINJAFLAGS="%{_smp_mflags}"
export NINJAFLAGS="%{?_smp_mflags}"
make %{_smp_mflags} VERBOSE=1
%install
%qmake5_install
#cat %{buildroot}/%{_libdir}/pkgconfig/Qt*Web*.pc
find %{buildroot}/%{_libdir} -type f -name '*la' -print -exec perl -pi -e 's, -L%{_builddir}/\S+,,g' {} +
find %{buildroot}/%{_libdir} -type f -name '*pc' -print -exec perl -pi -e "s, -L$RPM_BUILD_DIR/?\S+,,g" {} + -exec sed -i -e "s,^moc_location=.*,moc_location=%libqt5_bindir/moc," -e "s,uic_location=.*,uic_location=%libqt5_bindir/uic," {} +
find %{buildroot}/%{_libdir} -type f -name '*pc' -exec sed -i -e "/^RPM_BUILD_DIR/d" {} +
find %{buildroot}%{_libdir} -type f -name '*la' -print -exec perl -pi -e 's, -L%{_builddir}/\S+,,g' {} +
find %{buildroot}%{_libdir} -type f -name '*pc' -print -exec perl -pi -e "s, -L$RPM_BUILD_DIR/?\S+,,g" {} + -exec sed -i -e "s,^moc_location=.*,moc_location=%libqt5_bindir/moc," -e "s,uic_location=.*,uic_location=%libqt5_bindir/uic," {} +
find %{buildroot}%{_libdir} -type f -name '*pc' -exec sed -i -e "/^RPM_BUILD_DIR/d" {} +
sed -i '/^Libs.private/d' %{buildroot}%{_libdir}/pkgconfig/Qt*Web*.pc
# kill .la files
rm -f %{buildroot}%{_libqt5_libdir}/*.la
# webenginecore expects icudatl.dat at this location
# ln -sf %{_datadir}/icu/*/icudt*l.dat %{buildroot}%{_datadir}/qt5/icudtl.dat
# Workaround to allow using QtWE with older Qt versions
sed -i -r '/ EXACT\)/d' \
%{buildroot}%{_libqt5_libdir}/cmake/Qt5WebEngine*/Qt5WebEngine*Config.cmake
sed -i '/find_package/!b;n;s/'%{so_version}/$(rpm -q --qf %%{version} libQt5Core5 | sed 's/~.*$//')/ \
%{buildroot}%{_libqt5_libdir}/cmake/Qt5WebEngine*/Qt5WebEngine*Config.cmake
%global qtcore_version %(printf %{pkg_version libQt5Core5})
# NOTE the space after '%%{version}' is important to only match '5.15.X ${_Qt5XXX_FIND_VERSION_EXACT}'
sed -i 's#%{version} #%{qtcore_version} #' %{buildroot}%{_libqt5_libdir}/cmake/*/*Config.cmake
# Hunspell dictionaries will be converted and put here on package installation
mkdir -p %{buildroot}%{_qtwebengine_dictionaries_dir}
%if %{pkg_vcmp libQt5Core5 >= 5.15}
# CMake files for plugins are only useful for static builds
rm -r %{buildroot}%{_libqt5_libdir}/cmake/Qt5Gui
%endif
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%post -n libQt5Pdf5 -p /sbin/ldconfig
@ -362,7 +367,6 @@ mkdir -p %{buildroot}%{_qtwebengine_dictionaries_dir}
%post -n libQt5PdfWidgets5 -p /sbin/ldconfig
%postun -n libQt5PdfWidgets5 -p /sbin/ldconfig
%if 0%{?suse_version} >= 1500
%filetriggerin -- %{_datadir}/hunspell
# Convert Hunspell dictionaries on package installation
while read filename ; do
@ -373,26 +377,22 @@ while read filename ; do
;;
esac
done
%endif
%files
%license LICENSE.*
%dir %{_datadir}/qt5/
%dir %{_qtwebengine_dictionaries_dir}
%dir %{_datadir}/qt5/resources/
%{_datadir}/qt5/resources/qtwebengine_*
%dir %{_datadir}/qt5/translations/
%{_datadir}/qt5/translations/qtwebengine_locales/
%{_libqt5_archdatadir}/qml/QtWebEngine/
%{_libqt5_bindir}/qwebengine_convert_dict
%{_libqt5_libdir}/libQt5WebEngine.so.*
%{_libqt5_libdir}/libQt5WebEngineCore.so.*
%{_libqt5_libdir}/libQt5WebEngineWidgets.so.*
%dir %{_datadir}/qt5/
%dir %{_datadir}/qt5/translations/
%{_datadir}/qt5/translations/qtwebengine_locales/
%dir %{_datadir}/qt5/resources/
%{_datadir}/qt5/resources/qtwebengine_*
%if %{without system_icu}
%{_datadir}/qt5/resources/icudtl.dat
%endif
%dir %{_qtwebengine_dictionaries_dir}
%dir %{_libqt5_libexecdir}
%{_libqt5_libexecdir}/QtWebEngineProcess
%{_libqt5_archdatadir}/qml/QtWebEngine/
%{_libqt5_bindir}/qwebengine_convert_dict
%files private-headers-devel
%license LICENSE.*
@ -401,15 +401,15 @@ done
%files devel
%exclude %{_libqt5_includedir}/QtWebEngine*/%{so_version}
%{_libqt5_includedir}/QtWebEngine*/
%{_libqt5_libdir}/libQt5WebEngine*.so
%{_libqt5_libdir}/libQt5WebEngine*.prl
%{_libqt5_libdir}/pkgconfig/Qt5WebEngine*.pc
%{_libqt5_libdir}/qt5/mkspecs/modules/qt_lib_webengine*.pri
%dir %{_libqt5_libdir}/cmake/Qt5Designer/
%{_libqt5_libdir}/cmake/Qt5Designer/Qt5Designer_QWebEngineViewPlugin.cmake
%{_libqt5_libdir}/cmake/Qt5WebEngine*/
%{_libqt5_libdir}/libQt5WebEngine*.prl
%{_libqt5_libdir}/libQt5WebEngine*.so
%{_libqt5_libdir}/pkgconfig/Qt5WebEngine*.pc
%{_libqt5_libdir}/qt5/mkspecs/modules/qt_lib_webengine*.pri
%dir %{_libqt5_plugindir}/designer/
%{_libqt5_plugindir}/designer/libqwebengineview.so
%{_libqt5_libdir}/cmake/Qt5WebEngine*/
%files examples
%license LICENSE.*
@ -418,12 +418,8 @@ done
%files -n libQt5Pdf5
%license LICENSE.*
%{_libqt5_libdir}/libQt5Pdf.so.*
%{_libqt5_archdatadir}/plugins/imageformats/libqpdf.so
# Not quite sure what this would be used by
%dir %{_libqt5_libdir}/cmake/
%dir %{_libqt5_libdir}/cmake/Qt5Gui/
%{_libqt5_libdir}/cmake/Qt5Gui/Qt5Gui_QPdfPlugin.cmake
%{_libqt5_libdir}/libQt5Pdf.so.*
%files -n libQt5PdfWidgets5
%license LICENSE.*
@ -445,13 +441,13 @@ done
%{_libqt5_includedir}/QtPdfWidgets/
%{_libqt5_libdir}/cmake/Qt5Pdf/
%{_libqt5_libdir}/cmake/Qt5PdfWidgets/
%{_libqt5_libdir}/libQt5Pdf.so
%{_libqt5_libdir}/libQt5PdfWidgets.so
%{_libqt5_libdir}/libQt5Pdf.prl
%{_libqt5_libdir}/libQt5Pdf.so
%{_libqt5_libdir}/libQt5PdfWidgets.prl
%{_libqt5_libdir}/qt5/mkspecs/modules/qt_lib_pdf*.pri
%{_libqt5_libdir}/libQt5PdfWidgets.so
%{_libqt5_libdir}/pkgconfig/Qt5Pdf.pc
%{_libqt5_libdir}/pkgconfig/Qt5PdfWidgets.pc
%{_libqt5_libdir}/qt5/mkspecs/modules/qt_lib_pdf*.pri
%files -n libqt5-qtpdf-examples
%license LICENSE.*

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c8afca0e43d84f7bd595436fbe4d13a5bbdb81ec5104d605085d07545b6f91e0
size 280142544

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cde63cc3986d1324667b75bb1d7cd39a9e72555a321bdda3c5ca604e170868f6
size 319611228

View File

@ -1,11 +1,11 @@
From: Fabian Vogt <fabian@ritter-vogt.de>
Subject: Don't require open264 when proprietary_codecs are supported
Index: qtwebengine-everywhere-src-5.15.1/src/3rdparty/chromium/third_party/webrtc/webrtc.gni
===================================================================
--- qtwebengine-everywhere-src-5.15.1.orig/src/3rdparty/chromium/third_party/webrtc/webrtc.gni
+++ qtwebengine-everywhere-src-5.15.1/src/3rdparty/chromium/third_party/webrtc/webrtc.gni
@@ -149,8 +149,7 @@ declare_args() {
diff --git a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni b/chromium/third_party/webrtc/webrtc.gni
index ca8acdbf259..36897a72aa8 100644
--- a/src/3rdparty/chromium/third_party/webrtc/webrtc.gni
+++ b/src/3rdparty/chromium/third_party/webrtc/webrtc.gni
@@ -151,8 +151,7 @@ declare_args() {
#
# Enabling H264 when building with MSVC is currently not supported, see
# bugs.webrtc.org/9213#c13 for more info.
@ -13,13 +13,14 @@ Index: qtwebengine-everywhere-src-5.15.1/src/3rdparty/chromium/third_party/webrt
- proprietary_codecs && !is_android && !is_ios && !(is_win && !is_clang)
+ rtc_use_h264 = false
# By default, use normal platform audio support or dummy audio, but don't
# use file-based audio playout and record.
Index: qtwebengine-everywhere-src-5.15.1/src/core/config/common.pri
===================================================================
--- qtwebengine-everywhere-src-5.15.1.orig/src/core/config/common.pri
+++ qtwebengine-everywhere-src-5.15.1/src/core/config/common.pri
@@ -27,9 +27,6 @@ qtConfig(webengine-webrtc) {
# Enable this flag to make webrtc::Mutex be implemented by absl::Mutex.
rtc_use_absl_mutex = false
diff --git a/src/core/config/common.pri b/src/core/config/common.pri
index d9d64e76..cd0fd120 100644
--- a/src/core/config/common.pri
+++ b/src/core/config/common.pri
@@ -26,9 +26,6 @@ qtConfig(webengine-webrtc) {
qtConfig(webengine-proprietary-codecs) {
gn_args += proprietary_codecs=true ffmpeg_branding=\"Chrome\"

View File

@ -8,11 +8,11 @@ Return -ENOSYS instead to trigger the fallback in glibc.
futex_time64 is also used internally in glibc, so handle that as well.
The signature is identical where it matters.
Index: qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
===================================================================
--- qtwebengine-everywhere-src-5.15.2.orig/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
+++ qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
@@ -190,6 +190,11 @@ ResultExpr EvaluateSyscallImpl(int fs_de
diff --git a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc b/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
index 3c67b124786..4772dc096f5 100644
--- a/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
+++ b/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc
@@ -194,6 +194,11 @@ ResultExpr EvaluateSyscallImpl(int fs_denied_errno,
if (sysno == __NR_futex)
return RestrictFutex();
@ -24,9 +24,9 @@ Index: qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/sec
if (sysno == __NR_set_robust_list)
return Error(EPERM);
@@ -265,6 +270,12 @@ ResultExpr EvaluateSyscallImpl(int fs_de
@@ -257,6 +262,12 @@ ResultExpr EvaluateSyscallImpl(int fs_denied_errno,
return RestrictKillTarget(current_pid, sysno);
}
#endif
+#if defined(__NR_statx)
+ if (sysno == __NR_statx) {

15
sync.profile Normal file
View File

@ -0,0 +1,15 @@
%modules = ( # path to module name map
"QtWebEngine" => "$basedir/src/webengine",
"QtWebEngineWidgets" => "$basedir/src/webenginewidgets",
"QtWebEngineCore" => "$basedir/src/core",
"QtPdf" => "$basedir/src/pdf",
"QtPdfWidgets" => "$basedir/src/pdfwidgets",
);
%moduleheaders = ( # restrict the module headers to those found in relative path
"QtWebEngine" => "api",
"QtWebEngineWidgets" => "api",
"QtWebEngineCore" => "api",
"QtPdf" => "api"
);
%classnames = (
);