From e833ee301b0bb96f4a9df28e2605bf4afbc1cca1 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Fri, 12 Mar 2021 09:36:28 +0100 Subject: Add WebEngineVersions.chromium_major --- qutebrowser/browser/webengine/darkmode.py | 3 +-- qutebrowser/utils/version.py | 10 ++++++++++ tests/unit/utils/test_version.py | 19 +++++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/qutebrowser/browser/webengine/darkmode.py b/qutebrowser/browser/webengine/darkmode.py index 30a9ac6eb..1c6530b49 100644 --- a/qutebrowser/browser/webengine/darkmode.py +++ b/qutebrowser/browser/webengine/darkmode.py @@ -342,8 +342,7 @@ def _variant(versions: version.WebEngineVersions) -> Variant: log.init.warning(f"Ignoring invalid QUTE_DARKMODE_VARIANT={env_var}") if (versions.webengine == utils.VersionNumber(5, 15, 2) and - versions.chromium is not None and - versions.chromium.startswith('87.')): + versions.chromium_major == 87): # WORKAROUND for Gentoo packaging something newer as 5.15.2... return Variant.qt_515_3 elif versions.webengine >= utils.VersionNumber(5, 15, 3): diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py index 46916c516..400b080b9 100644 --- a/qutebrowser/utils/version.py +++ b/qutebrowser/utils/version.py @@ -525,6 +525,7 @@ class WebEngineVersions: webengine: utils.VersionNumber chromium: Optional[str] source: str + chromium_major: Optional[int] = dataclasses.field(init=False) _CHROMIUM_VERSIONS: ClassVar[Dict[utils.VersionNumber, str]] = { # Qt 5.12: Chromium 69 @@ -562,11 +563,20 @@ class WebEngineVersions: # 5.15.1: Security fixes up to 85.0.4183.83 (2020-08-25) # 5.15.2: Updated to 83.0.4103.122 (~2020-06-24) # Security fixes up to 86.0.4240.183 (2020-11-02) + # 5.15.3: Updated to 87.0.4280.144 (~2020-12-02) + # Security fixes up to 88.0.4324.150 (2021-02-04) utils.VersionNumber(5, 15): '80.0.3987.163', utils.VersionNumber(5, 15, 2): '83.0.4103.122', utils.VersionNumber(5, 15, 3): '87.0.4280.144', } + def __post_init__(self): + """Set the major Chromium version.""" + if self.chromium is None: + self.chromium_major = None + else: + self.chromium_major = int(self.chromium.split('.')[0]) + def __str__(self) -> str: s = f'QtWebEngine {self.webengine}' if self.chromium is not None: diff --git a/tests/unit/utils/test_version.py b/tests/unit/utils/test_version.py index 879f84a1f..5e122a805 100644 --- a/tests/unit/utils/test_version.py +++ b/tests/unit/utils/test_version.py @@ -926,6 +926,25 @@ class TestWebEngineVersions: def test_str(self, version, expected): assert str(version) == expected + @pytest.mark.parametrize('version, expected', [ + ( + version.WebEngineVersions( + webengine=utils.VersionNumber(5, 15, 2), + chromium=None, + source='test'), + None, + ), + ( + version.WebEngineVersions( + webengine=utils.VersionNumber(5, 15, 2), + chromium='87.0.4280.144', + source='test'), + 87, + ), + ]) + def test_chromium_major(self, version, expected): + assert version.chromium_major == expected + def test_from_ua(self): ua = websettings.UserAgent( os_info='X11; Linux x86_64', -- cgit v1.2.3-54-g00ecf