[packages/qt6] upstream fix for QTBUG-113579; rel 2
atler
atler at pld-linux.org
Wed May 31 11:31:43 CEST 2023
commit 6c89a4f1834881156fba0df63189c96d2324ad3e
Author: Jan Palus <atler at pld-linux.org>
Date: Wed May 31 11:30:18 2023 +0200
upstream fix for QTBUG-113579; rel 2
fixes: https://github.com/qutebrowser/qutebrowser/issues/7695
QTBUG-113579.patch | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
qt6.spec | 6 +++-
2 files changed, 97 insertions(+), 1 deletion(-)
---
diff --git a/qt6.spec b/qt6.spec
index 2315348..4123d39 100644
--- a/qt6.spec
+++ b/qt6.spec
@@ -107,7 +107,7 @@ Summary: Qt6 Library
Summary(pl.UTF-8): Biblioteka Qt6
Name: qt6
Version: 6.5.1
-Release: 1
+Release: 2
License: LGPL v3 or GPL v2 or GPL v3 or commercial
Group: X11/Libraries
Source0: https://download.qt.io/official_releases/qt/6.5/%{version}/single/qt-everywhere-src-%{version}.tar.xz
@@ -118,6 +118,7 @@ Patch2: %{name}-gn.patch
Patch3: no-implicit-sse2.patch
Patch4: x32.patch
Patch5: qtwebengine-cmake-build-type.patch
+Patch6: QTBUG-113579.patch
URL: https://www.qt.io/
%{?with_directfb:BuildRequires: DirectFB-devel}
BuildRequires: EGL-devel
@@ -3574,6 +3575,9 @@ narzędzia.
%patch3 -p1
%patch4 -p1
%patch5 -p1
+cd qtwebengine
+%patch6 -p1
+cd ..
%{__sed} -i -e 's,usr/X11R6/,usr/,g' qtbase/mkspecs/linux-g++-64/qmake.conf
diff --git a/QTBUG-113579.patch b/QTBUG-113579.patch
new file mode 100644
index 0000000..97d3dc8
--- /dev/null
+++ b/QTBUG-113579.patch
@@ -0,0 +1,92 @@
+From 281174f5e010d819a49562b48b2c2067255a41c6 Mon Sep 17 00:00:00 2001
+From: Szabolcs David <davidsz at inf.u-szeged.hu>
+Date: Fri, 19 May 2023 01:00:41 +0200
+Subject: [PATCH] Normalize clipboard permissions
+
+Handle clipboard read and write permissions the same way everywhere.
+
+Fixes: QTBUG-113579
+Change-Id: If1f271e8591c54f4ee2f935486502df19d5f6b3e
+Reviewed-by: Allan Sandfeld Jensen <allan.jensen at qt.io>
+(cherry picked from commit 79e4a37668a9176373e81fe4fc8dfe29f6c8c37b)
+Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot at qt-project.org>
+---
+
+diff --git a/src/core/permission_manager_qt.cpp b/src/core/permission_manager_qt.cpp
+index 9d98c05..28e1c98 100644
+--- a/src/core/permission_manager_qt.cpp
++++ b/src/core/permission_manager_qt.cpp
+@@ -84,6 +84,22 @@
+ }
+ }
+
++static blink::mojom::PermissionStatus getStatusFromSettings(blink::PermissionType type, WebEngineSettings *settings)
++{
++ switch (type) {
++ case blink::PermissionType::CLIPBOARD_READ_WRITE:
++ if (!settings->testAttribute(QWebEngineSettings::JavascriptCanPaste))
++ return blink::mojom::PermissionStatus::DENIED;
++ Q_FALLTHROUGH();
++ case blink::PermissionType::CLIPBOARD_SANITIZED_WRITE:
++ if (!settings->testAttribute(QWebEngineSettings::JavascriptCanAccessClipboard))
++ return blink::mojom::PermissionStatus::DENIED;
++ return blink::mojom::PermissionStatus::GRANTED;
++ default:
++ return blink::mojom::PermissionStatus::ASK;
++ }
++}
++
+ PermissionManagerQt::PermissionManagerQt()
+ : m_requestIdCount(0)
+ {
+@@ -179,13 +195,8 @@
+ Q_ASSERT(contentsDelegate);
+
+ ProfileAdapter::PermissionType permissionType = toQt(permission);
+- if (permissionType == ProfileAdapter::ClipboardRead) {
+- WebEngineSettings *settings = contentsDelegate->webEngineSettings();
+- if (settings->testAttribute(QWebEngineSettings::JavascriptCanAccessClipboard)
+- && settings->testAttribute(QWebEngineSettings::JavascriptCanPaste))
+- std::move(callback).Run(blink::mojom::PermissionStatus::GRANTED);
+- else
+- std::move(callback).Run(blink::mojom::PermissionStatus::DENIED);
++ if (permissionType == ProfileAdapter::ClipboardRead || permissionType == ProfileAdapter::ClipboardWrite) {
++ std::move(callback).Run(getStatusFromSettings(permission, contentsDelegate->webEngineSettings()));
+ return;
+ } else if (!canRequestPermissionFor(permissionType)) {
+ std::move(callback).Run(blink::mojom::PermissionStatus::DENIED);
+@@ -220,14 +231,9 @@
+ const ProfileAdapter::PermissionType permissionType = toQt(permission);
+ if (permissionType == ProfileAdapter::UnsupportedPermission)
+ result.push_back(blink::mojom::PermissionStatus::DENIED);
+- else if (permissionType == ProfileAdapter::ClipboardRead) {
+- WebEngineSettings *settings = contentsDelegate->webEngineSettings();
+- if (settings->testAttribute(QWebEngineSettings::JavascriptCanAccessClipboard)
+- && settings->testAttribute(QWebEngineSettings::JavascriptCanPaste))
+- result.push_back(blink::mojom::PermissionStatus::GRANTED);
+- else
+- result.push_back(blink::mojom::PermissionStatus::DENIED);
+- } else {
++ else if (permissionType == ProfileAdapter::ClipboardRead || permissionType == ProfileAdapter::ClipboardWrite)
++ result.push_back(getStatusFromSettings(permission, contentsDelegate->webEngineSettings()));
++ else {
+ answerable = false;
+ break;
+ }
+@@ -280,14 +286,8 @@
+ permission == blink::PermissionType::CLIPBOARD_SANITIZED_WRITE) {
+ WebContentsDelegateQt *delegate = static_cast<WebContentsDelegateQt *>(
+ content::WebContents::FromRenderFrameHost(render_frame_host)->GetDelegate());
+- if (!delegate->webEngineSettings()->testAttribute(
+- QWebEngineSettings::JavascriptCanAccessClipboard))
+- return blink::mojom::PermissionStatus::DENIED;
+- if (permission == blink::PermissionType::CLIPBOARD_READ_WRITE
+- && !delegate->webEngineSettings()->testAttribute(
+- QWebEngineSettings::JavascriptCanPaste))
+- return blink::mojom::PermissionStatus::DENIED;
+- return blink::mojom::PermissionStatus::GRANTED;
++ Q_ASSERT(delegate);
++ return getStatusFromSettings(permission, delegate->webEngineSettings());
+ }
+
+ return GetPermissionStatus(
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/qt6.git/commitdiff/6c89a4f1834881156fba0df63189c96d2324ad3e
More information about the pld-cvs-commit
mailing list