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:
parent
53ddeeddd5
commit
e5ed72eb42
|
|
@ -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>>
|
||||
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Reference in New Issue