public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Ionen Wolkens" <ionen@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtwebengine/files/, dev-qt/qtwebengine/
Date: Wed, 26 Apr 2023 03:54:49 +0000 (UTC)	[thread overview]
Message-ID: <1682481270.9b8f2313546c9a4c1c9dd7a3fc59f77b7147d43d.ionen@gentoo> (raw)

commit:     9b8f2313546c9a4c1c9dd7a3fc59f77b7147d43d
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Tue Apr 25 23:38:00 2023 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Wed Apr 26 03:54:30 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9b8f2313

dev-qt/qtwebengine: fix qutebrowser's hinting issue (6.5 regression)

Without this, scripts that qutebrowser (or others) inject may
semi-randomly fail leading to e.g. keyword hints not working, or
users' greasemonkey scripts not being loaded.

qutebrowser has opted to not do messy mitigations (at least for now)
and a fix here makes more sense. Albeit fix was not merged upstream
yet, "hopefully" will make it in 6.5.1 if doesn't miss the window.

Given qtwebengine is not used for much in Gentoo beside qutebrowser
so far, should be worth the revbump/rebuild.

Acked-by: Jimi Huotari <chiitoo <AT> gentoo.org>
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 .../qtwebengine-6.5.0-userscripts-loading.patch    | 112 +++++++++++++++++++++
 ...6.5.0-r1.ebuild => qtwebengine-6.5.0-r2.ebuild} |   5 +-
 2 files changed, 116 insertions(+), 1 deletion(-)

diff --git a/dev-qt/qtwebengine/files/qtwebengine-6.5.0-userscripts-loading.patch b/dev-qt/qtwebengine/files/qtwebengine-6.5.0-userscripts-loading.patch
new file mode 100644
index 000000000000..6a5802829bb4
--- /dev/null
+++ b/dev-qt/qtwebengine/files/qtwebengine-6.5.0-userscripts-loading.patch
@@ -0,0 +1,112 @@
+https://github.com/qutebrowser/qutebrowser/issues/7662
+https://bugreports.qt.io/browse/QTBUG-113109
+
+https://codereview.qt-project.org/c/qt/qtwebengine/+/474114
+From: Allan Sandfeld Jensen <allan.jensen@qt.io>
+Date: Mon, 24 Apr 2023 17:33:17 +0200
+Subject: [PATCH] Fix user script management when subframes are present
+
+Only the main frames should administer scripts associated with it.
+
+Pick-to: 6.5
+Fixes: QTBUG-113109
+Change-Id: Ibda66f55ef99da632134a9de1425797262faba9b
+--- a/src/core/renderer/user_resource_controller.cpp
++++ b/src/core/renderer/user_resource_controller.cpp
+@@ -289,10 +289,11 @@
+     FrameUserScriptMap::iterator it = m_frameUserScriptMap.find(renderFrame);
+     if (it == m_frameUserScriptMap.end()) // ASSERT maybe?
+         return;
+-    for (uint64_t id : std::as_const(it.value())) {
+-        m_scripts.remove(id);
++    if (renderFrame->IsMainFrame()) {
++        for (uint64_t id : std::as_const(it.value()))
++            m_scripts.remove(id);
+     }
+-    m_frameUserScriptMap.remove(renderFrame);
++    m_frameUserScriptMap.erase(it);
+ }
+ 
+ void UserResourceController::addScriptForFrame(const QtWebEngineCore::UserScriptData &script,
+@@ -304,7 +305,8 @@
+ 
+     if (!(*it).contains(script.scriptId))
+         (*it).append(script.scriptId);
+-    m_scripts.insert(script.scriptId, script);
++    if (!frame || frame->IsMainFrame())
++        m_scripts.insert(script.scriptId, script);
+ }
+ 
+ void UserResourceController::removeScriptForFrame(const QtWebEngineCore::UserScriptData &script,
+@@ -315,7 +317,8 @@
+         return;
+ 
+     (*it).removeOne(script.scriptId);
+-    m_scripts.remove(script.scriptId);
++    if (!frame || frame->IsMainFrame())
++        m_scripts.remove(script.scriptId);
+ }
+ 
+ void UserResourceController::clearScriptsForFrame(content::RenderFrame *frame)
+@@ -323,8 +326,10 @@
+     FrameUserScriptMap::iterator it = m_frameUserScriptMap.find(frame);
+     if (it == m_frameUserScriptMap.end())
+         return;
+-    for (uint64_t id : std::as_const(it.value()))
+-        m_scripts.remove(id);
++    if (!frame || frame->IsMainFrame()) {
++        for (uint64_t id : std::as_const(it.value()))
++            m_scripts.remove(id);
++    }
+ 
+     m_frameUserScriptMap.remove(frame);
+ }
+--- a/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.cpp
++++ b/tests/auto/widgets/qwebenginescript/tst_qwebenginescript.cpp
+@@ -76,6 +76,7 @@
+     void scriptsInNestedIframes();
+     void matchQrcUrl();
+     void injectionOrder();
++    void reloadWithSubframes();
+ };
+ 
+ void tst_QWebEngineScript::domEditing()
+@@ -694,6 +695,38 @@
+     QTRY_COMPARE(page.log, expected);
+ }
+ 
++void tst_QWebEngineScript::reloadWithSubframes()
++{
++    class Page : public QWebEnginePage
++    {
++    public:
++        Page() : QWebEnginePage() {}
++        QVector<QString> log;
++
++    protected:
++        void javaScriptConsoleMessage(JavaScriptConsoleMessageLevel, const QString &message, int,
++                                      const QString &) override
++        {
++            log.append(message);
++        }
++    } page;
++
++    QWebEngineScript s;
++    s.setInjectionPoint(QWebEngineScript::DocumentCreation);
++    s.setSourceCode(QStringLiteral("console.log('Hello');"));
++    page.scripts().insert(s);
++
++    page.setHtml(QStringLiteral("<body>"
++                                "  <h1>Test scripts working on reload </h1>"
++                                "  <iframe src='about://blank'>"
++                                "  </iframe>"
++                                "</body>"));
++    QTRY_COMPARE(page.log.size(), 1);
++
++    page.triggerAction(QWebEnginePage::Reload);
++    QTRY_COMPARE(page.log.size(), 2);
++}
++
+ QTEST_MAIN(tst_QWebEngineScript)
+ 
+ #include "tst_qwebenginescript.moc"

diff --git a/dev-qt/qtwebengine/qtwebengine-6.5.0-r1.ebuild b/dev-qt/qtwebengine/qtwebengine-6.5.0-r2.ebuild
similarity index 98%
rename from dev-qt/qtwebengine/qtwebengine-6.5.0-r1.ebuild
rename to dev-qt/qtwebengine/qtwebengine-6.5.0-r2.ebuild
index f8bac25f51b1..912effe24979 100644
--- a/dev-qt/qtwebengine/qtwebengine-6.5.0-r1.ebuild
+++ b/dev-qt/qtwebengine/qtwebengine-6.5.0-r2.ebuild
@@ -87,7 +87,10 @@ DEPEND="${RDEPEND}
 	media-libs/libglvnd
 "
 
-PATCHES=( "${FILESDIR}/${PN}-6.5.0-gcc-13-build.patch" )
+PATCHES=(
+	"${FILESDIR}/${PN}-6.5.0-gcc-13-build.patch"
+	"${FILESDIR}/${PN}-6.5.0-userscripts-loading.patch"
+)
 
 python_check_deps() {
 	python_has_version "dev-python/html5lib[${PYTHON_USEDEP}]"


             reply	other threads:[~2023-04-26  3:54 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-26  3:54 Ionen Wolkens [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-12-04 12:19 [gentoo-commits] repo/gentoo:master commit in: dev-qt/qtwebengine/files/, dev-qt/qtwebengine/ 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-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-03-12 20:08 Andreas Sturmlechner
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=1682481270.9b8f2313546c9a4c1c9dd7a3fc59f77b7147d43d.ionen@gentoo \
    --to=ionen@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