Remove service workers based on QtWebEngine version

See https://bugreports.qt.io/browse/QTBUG-93744
This commit is contained in:
Florian Bruhin 2021-05-13 13:02:26 +02:00
parent 7a0118119e
commit b03b03bdf6
3 changed files with 36 additions and 2 deletions

View File

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

View File

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

View File

@ -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),