Pass tests

- Add types to pass mypy test
- Deal with the case that Qt<5.11 doesn't support UnknownUrlSchemePolicy
- pass flake8, pylint tests
- Limit UnknownUrlSchemePolicy to webengine
This commit is contained in:
Coiby Xu 2020-03-20 18:04:46 +08:00
parent 53ddeeddd5
commit e5ed72eb42
5 changed files with 16 additions and 73 deletions

View File

@ -3705,7 +3705,7 @@ Default: +pass:[true]+
[[unknown_url.scheme.policy]]
=== unknown_url.scheme.policy
Set UnknownUrlSchemePolicy.
Only valid for webengine backend. 1: DisallowUnknownUrlSchemes, 2: AllowUnknownUrlSchemesFromUserInteraction, 3: AllowAllUnknownUrlSchemes.
Only valid for webengine backend (Qt > 5.10). 1: DisallowUnknownUrlSchemes, 2: AllowUnknownUrlSchemesFromUserInteraction, 3: AllowAllUnknownUrlSchemes.
Type: <<types,Int>>

View File

@ -48,7 +48,7 @@ global_settings = typing.cast('WebEngineSettings', None)
parsed_user_agent = None
class _SettingsWrapper(websettings.AbstractSettingsWrapper):
class _SettingsWrapper:
"""Expose a QWebEngineSettings interface which acts on all profiles.
@ -95,6 +95,7 @@ class _SettingsWrapper(websettings.AbstractSettingsWrapper):
for settings in self._settings:
settings.setUnknownUrlSchemePolicy(policy)
class WebEngineSettings(websettings.AbstractSettings):
"""A wrapper for the config for QWebEngineSettings."""
@ -137,9 +138,9 @@ class WebEngineSettings(websettings.AbstractSettings):
Attr(QWebEngineSettings.ScrollAnimatorEnabled),
}
# 2: AllowUnknownUrlSchemesFromUserInteraction
_UnknownUrlSchemePolicy = {
'unknown_url.scheme.policy':
QWebEngineSettings.UnknownUrlSchemePolicy,
'unknown_url.scheme.policy': 2,
}
_FONT_SIZES = {

View File

@ -44,18 +44,6 @@ global_settings = typing.cast('WebKitSettings', None)
parsed_user_agent = None
class _SettingsWrapper(websettings.AbstractSettingsWrapper):
"""Expose a QWebSettings interface which acts on all profiles.
For read operations, the default profile value is always used.
"""
def __init__(self):
self._settings = [QWebSettings.globalSettings()]
class WebKitSettings(websettings.AbstractSettings):
"""A wrapper for the config for QWebSettings."""
@ -108,10 +96,6 @@ class WebKitSettings(websettings.AbstractSettings):
Attr(QWebSettings.ScrollAnimatorEnabled),
}
_UnknownUrlSchemePolicy = {
'unknown_url.scheme.policy': 0,
}
_FONT_SIZES = {
'fonts.web.size.minimum':
QWebSettings.MinimumFontSize,
@ -143,14 +127,6 @@ class WebKitSettings(websettings.AbstractSettings):
QWebSettings.FantasyFont: QFont.Fantasy,
}
def update_setting(self, setting: str) -> None:
"""Update the given setting."""
# QWebSettings doesn't provide interface for
# setting UnknownUrlSchemePolicy
if setting == 'unknown_url.scheme.policy':
return
value = config.instance.get(setting)
self._update_setting(setting, value)
def _set_user_stylesheet(settings):
"""Set the generated user-stylesheet."""
@ -219,7 +195,7 @@ def init(_args):
config.instance.changed.connect(_update_settings)
global global_settings
global_settings = WebKitSettings(_SettingsWrapper())
global_settings = WebKitSettings(QWebSettings.globalSettings())
global_settings.init_settings()

View File

@ -2523,7 +2523,7 @@ unknown_url.scheme.policy:
desc: >-
Set UnknownUrlSchemePolicy.
Only valid for webengine backend.
Only valid for webengine backend (Qt > 5.10).
1: DisallowUnknownUrlSchemes, 2: AllowUnknownUrlSchemesFromUserInteraction, 3: AllowAllUnknownUrlSchemes.

View File

@ -35,47 +35,6 @@ from qutebrowser.misc import objects, debugcachestats
UNSET = object()
class AbstractSettingsWrapper:
"""Expose a QWebEngineSettings interface which acts on all profiles.
For read operations, the default profile value is always used.
"""
def setAttribute(self, attribute, on):
for settings in self._settings:
settings.setAttribute(attribute, on)
def setFontFamily(self, which, family):
for settings in self._settings:
settings.setFontFamily(which, family)
def setFontSize(self, fonttype, size):
for settings in self._settings:
settings.setFontSize(fonttype, size)
def setDefaultTextEncoding(self, encoding):
for settings in self._settings:
settings.setDefaultTextEncoding(encoding)
def testAttribute(self, attribute):
return self._settings[0].testAttribute(attribute)
def fontSize(self, fonttype):
return self._settings[0].fontSize(fonttype)
def fontFamily(self, which):
return self._settings[0].fontFamily(which)
def defaultTextEncoding(self):
return self._settings[0].defaultTextEncoding()
def unknownUrlSchemePolicy(self):
return self._settings[0].unknownUrlSchemePolicy()
def setUnknownUrlSchemePolicy(self, policy):
for settings in self._settings:
settings.setUnknownUrlSchemePolicy(policy)
@attr.s
class UserAgent:
@ -138,9 +97,9 @@ class AbstractSettings:
_ATTRIBUTES = {} # type: typing.Dict[str, AttributeInfo]
_FONT_SIZES = {} # type: typing.Dict[str, typing.Any]
_UnknownUrlSchemePolicy = {} # type: typing.Dict[str, typing.Any]
_FONT_FAMILIES = {} # type: typing.Dict[str, typing.Any]
_FONT_TO_QFONT = {} # type: typing.Dict[typing.Any, QFont.StyleHint]
_UnknownUrlSchemePolicy = {} # type: typing.Dict[str, typing.Any]
def __init__(self, settings: typing.Any) -> None:
self._settings = settings
@ -247,7 +206,14 @@ class AbstractSettings:
elif setting == 'content.default_encoding':
return self.set_default_text_encoding(value)
elif setting == 'unknown_url.scheme.policy':
return self.set_unknown_url_scheme_policy(value)
# QtWebKit and QWebEngine < 5.11 doesn't provide interfaces
# for processing UnknownUrlSchemePolicy.
#
# AttributeError is expected for such cases.
try:
return self.set_unknown_url_scheme_policy(value)
except AttributeError:
pass
return False
def update_setting(self, setting: str) -> None: