[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