From 1543cea6d0480522fcfc15642ff916fc12175ca7 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Fri, 15 Jul 2022 14:51:34 +0200 Subject: Qt 6.4: Add --webEngineArgs See #7314 --- qutebrowser/config/qtargs.py | 10 +++++++--- tests/unit/config/test_qtargs.py | 30 +++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/qutebrowser/config/qtargs.py b/qutebrowser/config/qtargs.py index 6584daecd..8b7a85b64 100644 --- a/qutebrowser/config/qtargs.py +++ b/qutebrowser/config/qtargs.py @@ -75,10 +75,15 @@ def qt_args(namespace: argparse.Namespace) -> List[str]: log.init.debug("QtWebEngine requested, but unavailable...") return argv + versions = version.qtwebengine_versions(avoid_init=True) + if versions.webengine >= utils.VersionNumber(6, 4): + # https://codereview.qt-project.org/c/qt/qtwebengine/+/376704 + argv.insert(1, "--webEngineArgs") + special_prefixes = (_ENABLE_FEATURES, _DISABLE_FEATURES, _BLINK_SETTINGS) special_flags = [flag for flag in argv if flag.startswith(special_prefixes)] argv = [flag for flag in argv if not flag.startswith(special_prefixes)] - argv += list(_qtwebengine_args(namespace, special_flags)) + argv += list(_qtwebengine_args(versions, namespace, special_flags)) return argv @@ -241,12 +246,11 @@ def _get_lang_override( def _qtwebengine_args( + versions: version.WebEngineVersions, namespace: argparse.Namespace, special_flags: Sequence[str], ) -> Iterator[str]: """Get the QtWebEngine arguments to use based on the config.""" - versions = version.qtwebengine_versions(avoid_init=True) - # https://codereview.qt-project.org/c/qt/qtwebengine/+/256786 # https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/265753 if 'stack' in namespace.debug_flags: diff --git a/tests/unit/config/test_qtargs.py b/tests/unit/config/test_qtargs.py index da422062d..a65847929 100644 --- a/tests/unit/config/test_qtargs.py +++ b/tests/unit/config/test_qtargs.py @@ -41,11 +41,17 @@ def parser(mocker): @pytest.fixture def version_patcher(monkeypatch): """Get a patching function to patch the QtWebEngine version.""" - def run(ver): + def run(ver) -> bool: + """Run patching. + + Return: + True if we know the associated Chromium version, False otherwise + """ versions = version.WebEngineVersions.from_pyqt(ver) monkeypatch.setattr(qtargs.objects, 'backend', usertypes.Backend.QtWebEngine) monkeypatch.setattr(version, 'qtwebengine_versions', lambda avoid_init: versions) + return versions.chromium_major is not None return run @@ -482,6 +488,28 @@ class TestWebEngineArgs: args = qtargs.qt_args(parsed) assert '--lang=de' in args + @pytest.mark.parametrize("version, expected", [ + ('5.15.2', False), + ('5.15.9', False), + ('6.2.4', False), + ('6.3.1', False), + ('6.4.0', True), + ('6.5.0', True), + ]) + def test_webengine_args(self, version_patcher, parser, version, expected): + known_chromium = version_patcher(version) + if not known_chromium: + pytest.skip("Don't know associated Chromium version") + + parsed = parser.parse_args([]) + args = qtargs.qt_args(parsed) + + flag = "--webEngineArgs" + if expected: + assert args[1] == flag + else: + assert flag not in args + class TestEnvVars: -- cgit v1.2.3-54-g00ecf