Qt 6.4: Add --webEngineArgs

See #7314
This commit is contained in:
Florian Bruhin 2022-07-15 14:51:34 +02:00
parent ce32159b08
commit 34db7a1ef4
2 changed files with 36 additions and 4 deletions

View File

@ -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:

View File

@ -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: