summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-05-13 13:02:26 +0200
committerFlorian Bruhin <me@the-compiler.org>2021-05-13 13:04:01 +0200
commitb03b03bdf6e02e13b348689bf7b18196432f232b (patch)
treeb5a97d26622666c0d87e58ef9405d65f80ad1cea
parent7a0118119ef92adf1f68c6990ae5cac84aed3fec (diff)
downloadqutebrowser-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.py7
-rw-r--r--qutebrowser/misc/backendproblem.py3
-rw-r--r--tests/unit/config/test_configfiles.py28
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),