def __init__(self, settings): super().__init__(settings) # Attributes which don't exist in all Qt versions. new_attributes = { # Qt 5.8 'content.print_element_backgrounds': ('PrintElementBackgrounds', None), # Qt 5.11 'content.autoplay': ('PlaybackRequiresUserGesture', lambda val: not val), } for name, (attribute, converter) in new_attributes.items(): try: value = getattr(QWebEngineSettings, attribute) except AttributeError: continue self._ATTRIBUTES[name] = Attr(value, converter=converter)
def __init__(self, settings): super().__init__(settings) # Attributes which don't exist in all Qt versions. new_attributes = { # Qt 5.8 'content.print_element_backgrounds': ('PrintElementBackgrounds', None), # Qt 5.11 'content.autoplay': ('PlaybackRequiresUserGesture', operator.not_), # Qt 5.12 'content.dns_prefetch': ('DnsPrefetchEnabled', None), # Qt 5.13 'content.pdf': ('PdfViewerEnabled', lambda val: val == 'pdfium'), } for name, (attribute, converter) in new_attributes.items(): try: value = getattr(QWebEngineSettings, attribute) except AttributeError: continue self._ATTRIBUTES[name] = Attr(value, converter=converter)
class WebEngineSettings(websettings.AbstractSettings): """A wrapper for the config for QWebEngineSettings.""" _ATTRIBUTES = { 'content.xss_auditing': Attr(QWebEngineSettings.XSSAuditingEnabled), 'content.images': Attr(QWebEngineSettings.AutoLoadImages), 'content.javascript.enabled': Attr(QWebEngineSettings.JavascriptEnabled), 'content.javascript.can_open_tabs_automatically': Attr(QWebEngineSettings.JavascriptCanOpenWindows), 'content.javascript.can_access_clipboard': Attr(QWebEngineSettings.JavascriptCanAccessClipboard), 'content.plugins': Attr(QWebEngineSettings.PluginsEnabled), 'content.hyperlink_auditing': Attr(QWebEngineSettings.HyperlinkAuditingEnabled), 'content.local_content_can_access_remote_urls': Attr(QWebEngineSettings.LocalContentCanAccessRemoteUrls), 'content.local_content_can_access_file_urls': Attr(QWebEngineSettings.LocalContentCanAccessFileUrls), 'content.webgl': Attr(QWebEngineSettings.WebGLEnabled), 'content.local_storage': Attr(QWebEngineSettings.LocalStorageEnabled), 'content.desktop_capture': Attr(QWebEngineSettings.ScreenCaptureEnabled, converter=lambda val: True if val == 'ask' else val), # 'ask' is handled via the permission system 'input.spatial_navigation': Attr(QWebEngineSettings.SpatialNavigationEnabled), 'input.links_included_in_focus_chain': Attr(QWebEngineSettings.LinksIncludedInFocusChain), 'scrolling.smooth': Attr(QWebEngineSettings.ScrollAnimatorEnabled), 'content.print_element_backgrounds': Attr(QWebEngineSettings.PrintElementBackgrounds), 'content.autoplay': Attr(QWebEngineSettings.PlaybackRequiresUserGesture, converter=operator.not_), 'content.dns_prefetch': Attr(QWebEngineSettings.DnsPrefetchEnabled), 'tabs.favicons.show': Attr(QWebEngineSettings.AutoLoadIconsForPage, converter=lambda val: val != 'never'), } _FONT_SIZES = { 'fonts.web.size.minimum': QWebEngineSettings.MinimumFontSize, 'fonts.web.size.minimum_logical': QWebEngineSettings.MinimumLogicalFontSize, 'fonts.web.size.default': QWebEngineSettings.DefaultFontSize, 'fonts.web.size.default_fixed': QWebEngineSettings.DefaultFixedFontSize, } _FONT_FAMILIES = { 'fonts.web.family.standard': QWebEngineSettings.StandardFont, 'fonts.web.family.fixed': QWebEngineSettings.FixedFont, 'fonts.web.family.serif': QWebEngineSettings.SerifFont, 'fonts.web.family.sans_serif': QWebEngineSettings.SansSerifFont, 'fonts.web.family.cursive': QWebEngineSettings.CursiveFont, 'fonts.web.family.fantasy': QWebEngineSettings.FantasyFont, } _UNKNOWN_URL_SCHEME_POLICY = { 'disallow': QWebEngineSettings.DisallowUnknownUrlSchemes, 'allow-from-user-interaction': QWebEngineSettings.AllowUnknownUrlSchemesFromUserInteraction, 'allow-all': QWebEngineSettings.AllowAllUnknownUrlSchemes, } # Mapping from WebEngineSettings::initDefaults in # qtwebengine/src/core/web_engine_settings.cpp _FONT_TO_QFONT = { QWebEngineSettings.StandardFont: QFont.Serif, QWebEngineSettings.FixedFont: QFont.Monospace, QWebEngineSettings.SerifFont: QFont.Serif, QWebEngineSettings.SansSerifFont: QFont.SansSerif, QWebEngineSettings.CursiveFont: QFont.Cursive, QWebEngineSettings.FantasyFont: QFont.Fantasy, } def set_unknown_url_scheme_policy( self, policy: Union[str, usertypes.Unset]) -> bool: """Set the UnknownUrlSchemePolicy to use. Return: True if there was a change, False otherwise. """ old_value = self._settings.unknownUrlSchemePolicy() if isinstance(policy, usertypes.Unset): self._settings.resetUnknownUrlSchemePolicy() new_value = self._settings.unknownUrlSchemePolicy() else: new_value = self._UNKNOWN_URL_SCHEME_POLICY[policy] self._settings.setUnknownUrlSchemePolicy(new_value) return old_value != new_value def _update_setting(self, setting, value): if setting == 'content.unknown_url_scheme_policy': return self.set_unknown_url_scheme_policy(value) return super()._update_setting(setting, value) def init_settings(self): super().init_settings() self.update_setting('content.unknown_url_scheme_policy')
class WebKitSettings(websettings.AbstractSettings): """A wrapper for the config for QWebSettings.""" _ATTRIBUTES = { 'content.images': Attr(QWebSettings.AutoLoadImages), 'content.javascript.enabled': Attr(QWebSettings.JavascriptEnabled), 'content.javascript.can_open_tabs_automatically': Attr(QWebSettings.JavascriptCanOpenWindows), 'content.javascript.can_close_tabs': Attr(QWebSettings.JavascriptCanCloseWindows), 'content.javascript.can_access_clipboard': Attr(QWebSettings.JavascriptCanAccessClipboard), 'content.plugins': Attr(QWebSettings.PluginsEnabled), 'content.webgl': Attr(QWebSettings.WebGLEnabled), 'content.hyperlink_auditing': Attr(QWebSettings.HyperlinkAuditingEnabled), 'content.local_content_can_access_remote_urls': Attr(QWebSettings.LocalContentCanAccessRemoteUrls), 'content.local_content_can_access_file_urls': Attr(QWebSettings.LocalContentCanAccessFileUrls), 'content.dns_prefetch': Attr(QWebSettings.DnsPrefetchEnabled), 'content.frame_flattening': Attr(QWebSettings.FrameFlatteningEnabled), 'content.cache.appcache': Attr(QWebSettings.OfflineWebApplicationCacheEnabled), 'content.local_storage': Attr(QWebSettings.LocalStorageEnabled, QWebSettings.OfflineStorageDatabaseEnabled), 'content.print_element_backgrounds': Attr(QWebSettings.PrintElementBackgrounds), 'content.xss_auditing': Attr(QWebSettings.XSSAuditingEnabled), 'input.spatial_navigation': Attr(QWebSettings.SpatialNavigationEnabled), 'input.links_included_in_focus_chain': Attr(QWebSettings.LinksIncludedInFocusChain), 'zoom.text_only': Attr(QWebSettings.ZoomTextOnly), 'scrolling.smooth': Attr(QWebSettings.ScrollAnimatorEnabled), } _FONT_SIZES = { 'fonts.web.size.minimum': QWebSettings.MinimumFontSize, 'fonts.web.size.minimum_logical': QWebSettings.MinimumLogicalFontSize, 'fonts.web.size.default': QWebSettings.DefaultFontSize, 'fonts.web.size.default_fixed': QWebSettings.DefaultFixedFontSize, } _FONT_FAMILIES = { 'fonts.web.family.standard': QWebSettings.StandardFont, 'fonts.web.family.fixed': QWebSettings.FixedFont, 'fonts.web.family.serif': QWebSettings.SerifFont, 'fonts.web.family.sans_serif': QWebSettings.SansSerifFont, 'fonts.web.family.cursive': QWebSettings.CursiveFont, 'fonts.web.family.fantasy': QWebSettings.FantasyFont, } # Mapping from QWebSettings::QWebSettings() in # qtwebkit/Source/WebKit/qt/Api/qwebsettings.cpp _FONT_TO_QFONT = { QWebSettings.StandardFont: QFont.Serif, QWebSettings.FixedFont: QFont.Monospace, QWebSettings.SerifFont: QFont.Serif, QWebSettings.SansSerifFont: QFont.SansSerif, QWebSettings.CursiveFont: QFont.Cursive, QWebSettings.FantasyFont: QFont.Fantasy, }
class WebEngineSettings(websettings.AbstractSettings): """A wrapper for the config for QWebEngineSettings.""" _ATTRIBUTES = { 'content.xss_auditing': Attr(QWebEngineSettings.XSSAuditingEnabled), 'content.images': Attr(QWebEngineSettings.AutoLoadImages), 'content.javascript.enabled': Attr(QWebEngineSettings.JavascriptEnabled), 'content.javascript.can_open_tabs_automatically': Attr(QWebEngineSettings.JavascriptCanOpenWindows), 'content.javascript.can_access_clipboard': Attr(QWebEngineSettings.JavascriptCanAccessClipboard), 'content.plugins': Attr(QWebEngineSettings.PluginsEnabled), 'content.hyperlink_auditing': Attr(QWebEngineSettings.HyperlinkAuditingEnabled), 'content.local_content_can_access_remote_urls': Attr(QWebEngineSettings.LocalContentCanAccessRemoteUrls), 'content.local_content_can_access_file_urls': Attr(QWebEngineSettings.LocalContentCanAccessFileUrls), 'content.webgl': Attr(QWebEngineSettings.WebGLEnabled), 'content.local_storage': Attr(QWebEngineSettings.LocalStorageEnabled), 'content.desktop_capture': Attr(QWebEngineSettings.ScreenCaptureEnabled, converter=lambda val: True if val == 'ask' else val), # 'ask' is handled via the permission system, # or a hardcoded dialog on Qt < 5.10 'input.spatial_navigation': Attr(QWebEngineSettings.SpatialNavigationEnabled), 'input.links_included_in_focus_chain': Attr(QWebEngineSettings.LinksIncludedInFocusChain), 'scrolling.smooth': Attr(QWebEngineSettings.ScrollAnimatorEnabled), } _FONT_SIZES = { 'fonts.web.size.minimum': QWebEngineSettings.MinimumFontSize, 'fonts.web.size.minimum_logical': QWebEngineSettings.MinimumLogicalFontSize, 'fonts.web.size.default': QWebEngineSettings.DefaultFontSize, 'fonts.web.size.default_fixed': QWebEngineSettings.DefaultFixedFontSize, } _FONT_FAMILIES = { 'fonts.web.family.standard': QWebEngineSettings.StandardFont, 'fonts.web.family.fixed': QWebEngineSettings.FixedFont, 'fonts.web.family.serif': QWebEngineSettings.SerifFont, 'fonts.web.family.sans_serif': QWebEngineSettings.SansSerifFont, 'fonts.web.family.cursive': QWebEngineSettings.CursiveFont, 'fonts.web.family.fantasy': QWebEngineSettings.FantasyFont, } # Mapping from WebEngineSettings::initDefaults in # qtwebengine/src/core/web_engine_settings.cpp _FONT_TO_QFONT = { QWebEngineSettings.StandardFont: QFont.Serif, QWebEngineSettings.FixedFont: QFont.Monospace, QWebEngineSettings.SerifFont: QFont.Serif, QWebEngineSettings.SansSerifFont: QFont.SansSerif, QWebEngineSettings.CursiveFont: QFont.Cursive, QWebEngineSettings.FantasyFont: QFont.Fantasy, } def __init__(self, settings): super().__init__(settings) # Attributes which don't exist in all Qt versions. new_attributes = { # Qt 5.8 'content.print_element_backgrounds': ('PrintElementBackgrounds', None), # Qt 5.11 'content.autoplay': ('PlaybackRequiresUserGesture', operator.not_), # Qt 5.12 'content.dns_prefetch': ('DnsPrefetchEnabled', None), } for name, (attribute, converter) in new_attributes.items(): try: value = getattr(QWebEngineSettings, attribute) except AttributeError: continue self._ATTRIBUTES[name] = Attr(value, converter=converter)