From: "Andreas Sturmlechner" <asturm@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtwebengine/files/, dev-qt/qtwebengine/
Date: Fri, 12 Mar 2021 20:08:55 +0000 (UTC) [thread overview]
Message-ID: <1615579599.286732e1677d672669f19607f1db62780c62d746.asturm@gentoo> (raw)
commit: 286732e1677d672669f19607f1db62780c62d746
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 12 17:08:45 2021 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Fri Mar 12 20:06:39 2021 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=286732e1
dev-qt/qtwebengine: Fix runtime crash with certain locales
Due to the pain a revbump will cause and only a minority of users affected,
the patch is applied in place and we will ask affected users to rebuild.
Reported-by: 12101111 <w12101111 <AT> outlook.com>
Thanks-to: Florian Bruhin <gentoo.org <AT> the-compiler.org>
Bug: https://bugs.gentoo.org/757606
Package-Manager: Portage-3.0.17, Repoman-3.0.2
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
...-5.15.2_p20210224-fix-crash-w-app-locales.patch | 135 +++++++++++++++++++++
.../qtwebengine-5.15.2_p20210224.ebuild | 3 +-
2 files changed, 137 insertions(+), 1 deletion(-)
diff --git a/dev-qt/qtwebengine/files/qtwebengine-5.15.2_p20210224-fix-crash-w-app-locales.patch b/dev-qt/qtwebengine/files/qtwebengine-5.15.2_p20210224-fix-crash-w-app-locales.patch
new file mode 100644
index 00000000000..3a372381ebd
--- /dev/null
+++ b/dev-qt/qtwebengine/files/qtwebengine-5.15.2_p20210224-fix-crash-w-app-locales.patch
@@ -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: 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 ++++++++--------
+ .../widgets/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 e13ecd8d1..c2c78ff8b 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 7c8aa3ac9..1ccd2926d 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 2ad5b7565..09a4141b0 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 021986381..bf2c28ae6 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");
+--
+cgit v1.2.1
+
diff --git a/dev-qt/qtwebengine/qtwebengine-5.15.2_p20210224.ebuild b/dev-qt/qtwebengine/qtwebengine-5.15.2_p20210224.ebuild
index 2c33bc250e6..bd9662af876 100644
--- a/dev-qt/qtwebengine/qtwebengine-5.15.2_p20210224.ebuild
+++ b/dev-qt/qtwebengine/qtwebengine-5.15.2_p20210224.ebuild
@@ -89,7 +89,8 @@ DEPEND="${RDEPEND}
PATCHES=(
"${FILESDIR}/${PN}-5.15.0-disable-fatal-warnings.patch" # bug 695446
- "${FILESDIR}/${P}-chromium-87-v8-icu68.patch" # bug 757606
+ "${FILESDIR}/${P}-fix-crash-w-app-locales.patch" # bug 773919, QTBUG-91715
+ "${FILESDIR}/${P}-chromium-87-v8-icu68.patch" # downstream, bug 757606
"${FILESDIR}/${P}-disable-git.patch" # downstream snapshot fix
)
next reply other threads:[~2021-03-12 20:09 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-12 20:08 Andreas Sturmlechner [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-04-18 11:25 [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtwebengine/files/, dev-qt/qtwebengine/ Ionen Wolkens
2025-03-31 15:57 Ionen Wolkens
2025-03-04 15:47 Ionen Wolkens
2024-12-04 12:19 Ionen Wolkens
2024-12-03 8:58 Ionen Wolkens
2024-12-02 7:23 Ionen Wolkens
2024-11-18 9:06 Ionen Wolkens
2024-10-30 2:55 Sam James
2024-09-13 2:45 Ionen Wolkens
2024-08-09 9:27 Ionen Wolkens
2024-07-29 20:20 Sam James
2024-05-23 16:04 Andreas Sturmlechner
2024-04-29 23:51 Sam James
2024-04-17 0:15 Ionen Wolkens
2023-12-19 20:33 Ionen Wolkens
2023-11-22 12:46 Ionen Wolkens
2023-11-21 22:36 Andreas Sturmlechner
2023-11-06 18:11 Andreas Sturmlechner
2023-08-10 3:53 Sam James
2023-08-04 12:35 Sam James
2023-07-26 13:31 Jimi Huotari
2023-06-10 13:33 Jimi Huotari
2023-06-10 13:33 Jimi Huotari
2023-04-26 3:54 Ionen Wolkens
2023-04-22 18:09 Andreas Sturmlechner
2023-03-27 12:51 Sam James
2023-01-08 21:45 Andreas Sturmlechner
2022-08-02 21:51 Sam James
2022-04-05 16:35 Andreas Sturmlechner
2022-04-05 16:35 Andreas Sturmlechner
2021-12-28 12:19 Andreas Sturmlechner
2021-12-25 0:10 Andreas Sturmlechner
2021-12-14 18:13 Andreas Sturmlechner
2021-11-14 19:53 Andreas Sturmlechner
2021-10-31 3:06 Sam James
2021-10-09 22:24 Sam James
2021-09-19 13:42 Andreas Sturmlechner
2021-09-14 16:27 Andreas Sturmlechner
2021-07-22 9:35 Andreas Sturmlechner
2021-05-17 21:15 Andreas Sturmlechner
2021-04-20 22:23 Andreas Sturmlechner
2021-04-06 21:34 Andreas Sturmlechner
2021-03-24 0:50 Georgy Yakovlev
2021-02-26 21:19 Andreas Sturmlechner
2021-02-23 20:27 Andreas Sturmlechner
2021-01-02 1:23 Andreas Sturmlechner
2020-11-05 22:51 Andreas Sturmlechner
2020-08-19 19:39 Andreas Sturmlechner
2020-05-17 8:18 Andreas Sturmlechner
2020-05-14 17:21 Andreas Sturmlechner
2020-04-29 20:44 Lars Wendler
2018-06-27 19:00 Andreas Sturmlechner
2018-02-07 2:04 Andreas Sturmlechner
2017-12-10 1:43 Michael Palimaka
2017-01-31 5:14 Davide Pesavento
2016-12-06 6:54 Michael Palimaka
2016-12-01 14:03 Michael Palimaka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1615579599.286732e1677d672669f19607f1db62780c62d746.asturm@gentoo \
--to=asturm@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox