diff options
author | Florian Bruhin <me@the-compiler.org> | 2021-05-13 13:02:26 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2021-05-13 13:04:01 +0200 |
commit | b03b03bdf6e02e13b348689bf7b18196432f232b (patch) | |
tree | b5a97d26622666c0d87e58ef9405d65f80ad1cea | |
parent | 7a0118119ef92adf1f68c6990ae5cac84aed3fec (diff) | |
download | qutebrowser-b03b03bdf6e02e13b348689bf7b18196432f232b.tar.gz qutebrowser-b03b03bdf6e02e13b348689bf7b18196432f232b.zip |
Remove service workers based on QtWebEngine version
See https://bugreports.qt.io/browse/QTBUG-93744
-rw-r--r-- | qutebrowser/config/configfiles.py | 7 | ||||
-rw-r--r-- | qutebrowser/misc/backendproblem.py | 3 | ||||
-rw-r--r-- | tests/unit/config/test_configfiles.py | 28 |
3 files changed, 36 insertions, 2 deletions
diff --git a/qutebrowser/config/configfiles.py b/qutebrowser/config/configfiles.py index f8566e2d0..79b0bd396 100644 --- a/qutebrowser/config/configfiles.py +++ b/qutebrowser/config/configfiles.py @@ -39,7 +39,7 @@ import qutebrowser from qutebrowser.config import (configexc, config, configdata, configutils, configtypes) from qutebrowser.keyinput import keyutils -from qutebrowser.utils import standarddir, utils, qtutils, log, urlmatch +from qutebrowser.utils import standarddir, utils, qtutils, log, urlmatch, version if TYPE_CHECKING: from qutebrowser.misc import savemanager @@ -89,6 +89,7 @@ class StateConfig(configparser.ConfigParser): self.read(self._filename, encoding='utf-8') self.qt_version_changed = False + self.qtwe_version_changed = False self.qutebrowser_version_changed = VersionChange.unknown self._set_changed_attributes() @@ -123,6 +124,10 @@ class StateConfig(configparser.ConfigParser): old_qt_version = self['general'].get('qt_version', None) self.qt_version_changed = old_qt_version != qVersion() + old_qtwe_version = self['general'].get('qtwe_version', None) + qtwe_version = str(version.qtwebengine_versions(avoid_init=True).webengine) + self.qtwe_version_changed = old_qtwe_version != qtwe_version + old_qutebrowser_version = self['general'].get('version', None) if old_qutebrowser_version is None: # https://github.com/python/typeshed/issues/2093 diff --git a/qutebrowser/misc/backendproblem.py b/qutebrowser/misc/backendproblem.py index 001aa3047..3e14719e0 100644 --- a/qutebrowser/misc/backendproblem.py +++ b/qutebrowser/misc/backendproblem.py @@ -389,6 +389,7 @@ class _BackendProblemChecker: WORKAROUND for: https://bugreports.qt.io/browse/QTBUG-72532 https://bugreports.qt.io/browse/QTBUG-82105 + https://bugreports.qt.io/browse/QTBUG-93744 """ if ('serviceworker_workaround' not in configfiles.state['general'] and qtutils.version_check('5.14', compiled=False)): @@ -398,6 +399,8 @@ class _BackendProblemChecker: reason = 'Qt 5.14' elif configfiles.state.qt_version_changed: reason = 'Qt version changed' + elif configfiles.state.qtwe_version_changed: + reason = 'QtWebEngine version changed' elif config.val.qt.workarounds.remove_service_workers: reason = 'Explicitly enabled' else: diff --git a/tests/unit/config/test_configfiles.py b/tests/unit/config/test_configfiles.py index e0d64bffc..f48c17f1c 100644 --- a/tests/unit/config/test_configfiles.py +++ b/tests/unit/config/test_configfiles.py @@ -29,7 +29,7 @@ from PyQt5.QtCore import QSettings from qutebrowser.config import (config, configfiles, configexc, configdata, configtypes) -from qutebrowser.utils import utils, usertypes, urlmatch, standarddir +from qutebrowser.utils import utils, usertypes, urlmatch, standarddir, version from qutebrowser.keyinput import keyutils @@ -176,6 +176,32 @@ def test_qt_version_changed(state_writer, monkeypatch, assert state.qt_version_changed == changed +@pytest.mark.parametrize('old_version, new_version, changed', [ + (None, '5.15.1', False), + ('5.15.1', '5.15.1', False), + ('5.15.1', '5.15.2', True), + ('5.14.0', '5.15.2', True), +]) +def test_qtwe_version_changed(state_writer, monkeypatch, + old_version, new_version, changed): + monkeypatch.setattr( + configfiles.version, + 'qtwebengine_versions', + lambda avoid_init=False: + version.WebEngineVersions( + webengine=utils.VersionNumber.parse(new_version), + chromium=None, + source='test', + ) + ) + + if old_version is not None: + state_writer('qtwe_version', old_version) + + state = configfiles.StateConfig() + assert state.qtwe_version_changed == changed + + @pytest.mark.parametrize('old_version, new_version, expected', [ (None, '2.0.0', configfiles.VersionChange.unknown), ('1.14.1', '1.14.1', configfiles.VersionChange.equal), |