summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2023-08-10 15:28:28 +0200
committerFlorian Bruhin <me@the-compiler.org>2023-08-10 15:30:34 +0200
commit8defe1ae44c1c524e937ae08ed16052ee0724e0f (patch)
tree694dc6de8bc765da1e980347028264992935cb03
parent0b200207dd01d1e6e806ce4e6b91cb4327437d6b (diff)
downloadqutebrowser-8defe1ae44c1c524e937ae08ed16052ee0724e0f.tar.gz
qutebrowser-8defe1ae44c1c524e937ae08ed16052ee0724e0f.zip
Require user interaction for hints on qute:// pages
With Qt 6.3+, user interaction is required to navigate outside of qute:// from a qute:// page. Fixes #7815 See #7220 - should be revisited once we have a qute-bookmarks:// instead where we can adjust permissions when registering the URL handler.
-rw-r--r--qutebrowser/browser/webengine/webengineelem.py13
-rw-r--r--tests/end2end/features/urlmarks.feature7
2 files changed, 19 insertions, 1 deletions
diff --git a/qutebrowser/browser/webengine/webengineelem.py b/qutebrowser/browser/webengine/webengineelem.py
index d383c1aa7..a0148148d 100644
--- a/qutebrowser/browser/webengine/webengineelem.py
+++ b/qutebrowser/browser/webengine/webengineelem.py
@@ -11,7 +11,7 @@ from qutebrowser.qt.core import QRect, QEventLoop
from qutebrowser.qt.widgets import QApplication
from qutebrowser.qt.webenginecore import QWebEngineSettings
-from qutebrowser.utils import log, javascript, urlutils, usertypes, utils
+from qutebrowser.utils import log, javascript, urlutils, usertypes, utils, version
from qutebrowser.browser import webelem
if TYPE_CHECKING:
@@ -213,6 +213,17 @@ class WebEngineElement(webelem.AbstractWebElement):
return True
if baseurl.scheme() == url.scheme(): # e.g. a qute:// link
return False
+
+ # Qt 6.3+ needs an user interaction to allow navigations from qute:// to
+ # outside qute:// (like e.g. on qute://bookmarks).
+ versions = version.qtwebengine_versions()
+ if (
+ baseurl.scheme() == "qute" and
+ url.scheme() != "qute" and
+ versions.webengine >= utils.VersionNumber(6, 3)
+ ):
+ return True
+
return url.scheme() not in urlutils.WEBENGINE_SCHEMES
def _click_editable(self, click_target: usertypes.ClickTarget) -> None:
diff --git a/tests/end2end/features/urlmarks.feature b/tests/end2end/features/urlmarks.feature
index e8f4a9e77..65e6c051a 100644
--- a/tests/end2end/features/urlmarks.feature
+++ b/tests/end2end/features/urlmarks.feature
@@ -262,3 +262,10 @@ Feature: quickmarks and bookmarks
And I run :bookmark-add
And I open qute://bookmarks
Then the page should contain the plaintext "Test title"
+
+ Scenario: Following a bookmark
+ When I open data/numbers/1.txt in a new tab
+ And I run :bookmark-add
+ And I open qute://bookmarks
+ And I hint with args "links current" and follow a
+ Then data/numbers/1.txt should be loaded