diff --git a/pytest.ini b/pytest.ini index adff9ae7f..9dc54548f 100644 --- a/pytest.ini +++ b/pytest.ini @@ -41,7 +41,7 @@ markers = qt6_only: Tests which should only run with Qt 6 qt5_xfail: Tests which fail with Qt 5 qt6_xfail: Tests which fail with Qt 6 - qt68_beta4_skip: Fails on Qt 6.8 beta 4 + qt68_no_permission_api: Fails on Qt 6.8 with PyQt<6.8 qt_log_level_fail = WARNING qt_log_ignore = # GitHub Actions diff --git a/qutebrowser/browser/webengine/webenginesettings.py b/qutebrowser/browser/webengine/webenginesettings.py index b4f6f8a1b..63f740a2e 100644 --- a/qutebrowser/browser/webengine/webenginesettings.py +++ b/qutebrowser/browser/webengine/webenginesettings.py @@ -26,7 +26,7 @@ from qutebrowser.config import config, websettings from qutebrowser.config.websettings import AttributeInfo as Attr from qutebrowser.misc import pakjoy from qutebrowser.utils import (standarddir, qtutils, message, log, - urlmatch, usertypes, objreg, version) + urlmatch, usertypes, objreg, version, utils) if TYPE_CHECKING: from qutebrowser.browser.webengine import interceptor @@ -281,6 +281,7 @@ class ProfileSetter: self._set_hardcoded_settings() self.set_persistent_cookie_policy() self.set_dictionary_language() + self.disable_persistent_permissions_policy() def _set_hardcoded_settings(self): """Set up settings with a fixed value.""" @@ -345,6 +346,14 @@ class ProfileSetter: self._profile.setSpellCheckLanguages(filenames) self._profile.setSpellCheckEnabled(bool(filenames)) + def disable_persistent_permissions_policy(self): + """Disable webengine's permission persistence.""" + pyqt_version = utils.VersionNumber.parse(version.PYQT_WEBENGINE_VERSION_STR) + if pyqt_version >= utils.VersionNumber(6, 8): + self._profile.setPersistentPermissionsPolicy( + QWebEngineProfile.PersistentPermissionsPolicy.AskEveryTime + ) + def _update_settings(option): """Update global settings when qwebsettings changed.""" diff --git a/tests/end2end/conftest.py b/tests/end2end/conftest.py index 17703d1e1..83c66380d 100644 --- a/tests/end2end/conftest.py +++ b/tests/end2end/conftest.py @@ -192,8 +192,8 @@ def pytest_collection_modifyitems(config, items): 'Skipped on Windows', pytest.mark.skipif, utils.is_windows), - ('qt68_beta4_skip', # WORKAROUND: https://github.com/qutebrowser/qutebrowser/issues/8242#issuecomment-2184542226 - "Fails on Qt 6.8 beta 4", + ('qt68_no_permission_api', # WORKAROUND: https://github.com/qutebrowser/qutebrowser/issues/8242#issuecomment-2184542226 + "Fails on Qt 6.8 with PyQt<6.8", pytest.mark.xfail, machinery.IS_QT6 and version.qtwebengine_versions( avoid_init=True diff --git a/tests/end2end/features/prompts.feature b/tests/end2end/features/prompts.feature index 9e2062d13..2b65bcc56 100644 --- a/tests/end2end/features/prompts.feature +++ b/tests/end2end/features/prompts.feature @@ -251,7 +251,7 @@ Feature: Prompts And I run :click-element id button Then the javascript message "geolocation permission denied" should be logged - @qt68_beta4_skip + @qt68_no_permission_api Scenario: geolocation with ask -> false When I set content.geolocation to ask And I open data/prompt/geolocation.html in a new tab @@ -260,7 +260,7 @@ Feature: Prompts And I run :prompt-accept no Then the javascript message "geolocation permission denied" should be logged - @qt68_beta4_skip + @qt68_no_permission_api Scenario: geolocation with ask -> false and save When I set content.geolocation to ask And I open data/prompt/geolocation.html in a new tab @@ -270,7 +270,7 @@ Feature: Prompts Then the javascript message "geolocation permission denied" should be logged And the per-domain option content.geolocation should be set to false for http://localhost:(port) - @qt68_beta4_skip + @qt68_no_permission_api Scenario: geolocation with ask -> abort When I set content.geolocation to ask And I open data/prompt/geolocation.html in a new tab