diff options
author | Florian Bruhin <me@the-compiler.org> | 2023-08-10 15:28:28 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2023-08-10 15:30:34 +0200 |
commit | 8defe1ae44c1c524e937ae08ed16052ee0724e0f (patch) | |
tree | 694dc6de8bc765da1e980347028264992935cb03 | |
parent | 0b200207dd01d1e6e806ce4e6b91cb4327437d6b (diff) | |
download | qutebrowser-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.py | 13 | ||||
-rw-r--r-- | tests/end2end/features/urlmarks.feature | 7 |
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 |