summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2022-07-15 14:51:34 +0200
committerFlorian Bruhin <me@the-compiler.org>2022-07-15 14:51:34 +0200
commit1543cea6d0480522fcfc15642ff916fc12175ca7 (patch)
tree52bd601dff6dc5ffb630f0842f42c1daaa647135
parentc870385c2ba876d5e2010ef90b8c6141b4c2867f (diff)
downloadqutebrowser-1543cea6d0480522fcfc15642ff916fc12175ca7.tar.gz
qutebrowser-1543cea6d0480522fcfc15642ff916fc12175ca7.zip
Qt 6.4: Add --webEngineArgs
See #7314
-rw-r--r--qutebrowser/config/qtargs.py10
-rw-r--r--tests/unit/config/test_qtargs.py30
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: