summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qutebrowser/browser/webengine/interceptor.py44
-rw-r--r--qutebrowser/browser/webengine/webengineinspector.py5
-rw-r--r--qutebrowser/browser/webengine/webenginequtescheme.py24
-rw-r--r--qutebrowser/browser/webengine/webenginesettings.py83
-rw-r--r--qutebrowser/browser/webengine/webenginetab.py46
-rw-r--r--qutebrowser/browser/webengine/webview.py51
-rw-r--r--qutebrowser/browser/webkit/network/webkitqutescheme.py11
-rw-r--r--qutebrowser/browser/webkit/webpage.py19
-rw-r--r--qutebrowser/misc/earlyinit.py3
-rw-r--r--tests/unit/utils/test_qtutils.py4
10 files changed, 159 insertions, 131 deletions
diff --git a/qutebrowser/browser/webengine/interceptor.py b/qutebrowser/browser/webengine/interceptor.py
index 7f24eebd4..ad99f1eef 100644
--- a/qutebrowser/browser/webengine/interceptor.py
+++ b/qutebrowser/browser/webengine/interceptor.py
@@ -67,37 +67,39 @@ class RequestInterceptor(QtWebEngineCore.QWebEngineUrlRequestInterceptor):
def __init__(self, parent=None):
super().__init__(parent)
+ req_info = QtWebEngineCore.QWebEngineUrlRequestInfo
+ resource_type = interceptors.ResourceType
# This dict should be from QWebEngine Resource Types to qutebrowser
# extension ResourceTypes. If a ResourceType is added to Qt, this table
# should be updated too.
self._resource_types = {
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeMainFrame: interceptors.ResourceType.main_frame,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeSubFrame: interceptors.ResourceType.sub_frame,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeStylesheet: interceptors.ResourceType.stylesheet,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeScript: interceptors.ResourceType.script,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeImage: interceptors.ResourceType.image,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeFontResource: interceptors.ResourceType.font_resource,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeSubResource: interceptors.ResourceType.sub_resource,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeObject: interceptors.ResourceType.object,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeMedia: interceptors.ResourceType.media,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeWorker: interceptors.ResourceType.worker,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeSharedWorker: interceptors.ResourceType.shared_worker,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypePrefetch: interceptors.ResourceType.prefetch,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeFavicon: interceptors.ResourceType.favicon,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeXhr: interceptors.ResourceType.xhr,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypePing: interceptors.ResourceType.ping,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeServiceWorker: interceptors.ResourceType.service_worker,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeCspReport: interceptors.ResourceType.csp_report,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypePluginResource: interceptors.ResourceType.plugin_resource,
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeUnknown: interceptors.ResourceType.unknown,
+ req_info.ResourceTypeMainFrame: resource_type.main_frame,
+ req_info.ResourceTypeSubFrame: resource_type.sub_frame,
+ req_info.ResourceTypeStylesheet: resource_type.stylesheet,
+ req_info.ResourceTypeScript: resource_type.script,
+ req_info.ResourceTypeImage: resource_type.image,
+ req_info.ResourceTypeFontResource: resource_type.font_resource,
+ req_info.ResourceTypeSubResource: resource_type.sub_resource,
+ req_info.ResourceTypeObject: resource_type.object,
+ req_info.ResourceTypeMedia: resource_type.media,
+ req_info.ResourceTypeWorker: resource_type.worker,
+ req_info.ResourceTypeSharedWorker: resource_type.shared_worker,
+ req_info.ResourceTypePrefetch: resource_type.prefetch,
+ req_info.ResourceTypeFavicon: resource_type.favicon,
+ req_info.ResourceTypeXhr: resource_type.xhr,
+ req_info.ResourceTypePing: resource_type.ping,
+ req_info.ResourceTypeServiceWorker: resource_type.service_worker,
+ req_info.ResourceTypeCspReport: resource_type.csp_report,
+ req_info.ResourceTypePluginResource: resource_type.plugin_resource,
+ req_info.ResourceTypeUnknown: resource_type.unknown,
}
try:
preload_main_frame = (
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeNavigationPreloadMainFrame
+ req_info.ResourceTypeNavigationPreloadMainFrame
)
preload_sub_frame = (
- QtWebEngineCore.QWebEngineUrlRequestInfo.ResourceTypeNavigationPreloadSubFrame
+ req_info.ResourceTypeNavigationPreloadSubFrame
)
except AttributeError:
# Added in Qt 5.14
diff --git a/qutebrowser/browser/webengine/webengineinspector.py b/qutebrowser/browser/webengine/webengineinspector.py
index 4cdd564d8..3361ef19b 100644
--- a/qutebrowser/browser/webengine/webengineinspector.py
+++ b/qutebrowser/browser/webengine/webengineinspector.py
@@ -100,7 +100,10 @@ class WebEngineInspector(inspector.AbstractWebInspector):
"please install the qt5-qtwebengine-devtools "
"Fedora package.")
- def inspect(self, page: QtWebEngineWidgets.QWebEnginePage) -> None: # type: ignore[override]
+ def inspect(
+ self,
+ page: QtWebEngineWidgets.QWebEnginePage,
+ ) -> None: # type: ignore[override]
inspector_page = self._widget.page()
inspector_page.setInspectedPage(page)
self._settings.update_for_url(inspector_page.requestedUrl())
diff --git a/qutebrowser/browser/webengine/webenginequtescheme.py b/qutebrowser/browser/webengine/webenginequtescheme.py
index 8e15dd1ad..4fbbb1c55 100644
--- a/qutebrowser/browser/webengine/webenginequtescheme.py
+++ b/qutebrowser/browser/webengine/webenginequtescheme.py
@@ -92,12 +92,13 @@ class QuteSchemeHandler(QtWebEngineCore.QWebEngineUrlSchemeHandler):
try:
mimetype, data = qutescheme.data_for_url(url)
except qutescheme.Error as e:
+ url_request_job = QtWebEngineCore.QWebEngineUrlRequestJob
errors = {
- qutescheme.NotFoundError: QtWebEngineCore.QWebEngineUrlRequestJob.UrlNotFound,
- qutescheme.UrlInvalidError: QtWebEngineCore.QWebEngineUrlRequestJob.UrlInvalid,
- qutescheme.RequestDeniedError: QtWebEngineCore.QWebEngineUrlRequestJob.RequestDenied,
- qutescheme.SchemeOSError: QtWebEngineCore.QWebEngineUrlRequestJob.UrlNotFound,
- qutescheme.Error: QtWebEngineCore.QWebEngineUrlRequestJob.RequestFailed,
+ qutescheme.NotFoundError: url_request_job.UrlNotFound,
+ qutescheme.UrlInvalidError: url_request_job.UrlInvalid,
+ qutescheme.RequestDeniedError: url_request_job.RequestDenied,
+ qutescheme.SchemeOSError: url_request_job.UrlNotFound,
+ qutescheme.Error: url_request_job.RequestFailed,
}
exctype = type(e)
log.network.error(f"{exctype.__name__} while handling qute://* URL: {e}")
@@ -125,11 +126,12 @@ def init():
Note this needs to be called early, before constructing any QtWebEngine
classes.
"""
- if QtWebEngineCore.QWebEngineUrlScheme is not None:
- assert not QtWebEngineCore.QWebEngineUrlScheme.schemeByName(b'qute').name()
- scheme = QtWebEngineCore.QWebEngineUrlScheme(b'qute')
+ url_scheme = QtWebEngineCore.QWebEngineUrlScheme
+ if url_scheme is not None:
+ assert not url_scheme.schemeByName(b'qute').name()
+ scheme = url_scheme(b'qute')
scheme.setFlags(
- QtWebEngineCore.QWebEngineUrlScheme.LocalScheme
- | QtWebEngineCore.QWebEngineUrlScheme.LocalAccessAllowed # type: ignore[arg-type]
+ url_scheme.LocalScheme
+ | url_scheme.LocalAccessAllowed # type: ignore[arg-type]
)
- QtWebEngineCore.QWebEngineUrlScheme.registerScheme(scheme)
+ url_scheme.registerScheme(scheme)
diff --git a/qutebrowser/browser/webengine/webenginesettings.py b/qutebrowser/browser/webengine/webenginesettings.py
index ca544a67e..4eb4ce091 100644
--- a/qutebrowser/browser/webengine/webenginesettings.py
+++ b/qutebrowser/browser/webengine/webenginesettings.py
@@ -40,6 +40,10 @@ from qutebrowser.utils import (standarddir, qtutils, message, log,
if TYPE_CHECKING:
from qutebrowser.browser.webengine import interceptor
+
+QWebEngineSettings = QtWebEngineWidgets.QWebEngineSettings
+
+
# The default QWebEngineProfile
default_profile = cast(QtWebEngineWidgets.QWebEngineProfile, None)
# The QWebEngineProfile used for private (off-the-record) windows
@@ -108,93 +112,96 @@ class WebEngineSettings(websettings.AbstractSettings):
_ATTRIBUTES = {
'content.xss_auditing': Attr(
- QtWebEngineWidgets.QWebEngineSettings.XSSAuditingEnabled
+ QWebEngineSettings.XSSAuditingEnabled
),
- 'content.images': Attr(QtWebEngineWidgets.QWebEngineSettings.AutoLoadImages),
+ 'content.images': Attr(QWebEngineSettings.AutoLoadImages),
'content.javascript.enabled': Attr(
- QtWebEngineWidgets.QWebEngineSettings.JavascriptEnabled
+ QWebEngineSettings.JavascriptEnabled
),
'content.javascript.can_open_tabs_automatically': Attr(
- QtWebEngineWidgets.QWebEngineSettings.JavascriptCanOpenWindows
+ QWebEngineSettings.JavascriptCanOpenWindows
),
'content.javascript.can_access_clipboard': Attr(
- QtWebEngineWidgets.QWebEngineSettings.JavascriptCanAccessClipboard
+ QWebEngineSettings.JavascriptCanAccessClipboard
),
- 'content.plugins': Attr(QtWebEngineWidgets.QWebEngineSettings.PluginsEnabled),
+ 'content.plugins': Attr(QWebEngineSettings.PluginsEnabled),
'content.hyperlink_auditing': Attr(
- QtWebEngineWidgets.QWebEngineSettings.HyperlinkAuditingEnabled
+ QWebEngineSettings.HyperlinkAuditingEnabled
),
'content.local_content_can_access_remote_urls': Attr(
- QtWebEngineWidgets.QWebEngineSettings.LocalContentCanAccessRemoteUrls
+ QWebEngineSettings.LocalContentCanAccessRemoteUrls
),
'content.local_content_can_access_file_urls': Attr(
- QtWebEngineWidgets.QWebEngineSettings.LocalContentCanAccessFileUrls
+ QWebEngineSettings.LocalContentCanAccessFileUrls
),
- 'content.webgl': Attr(QtWebEngineWidgets.QWebEngineSettings.WebGLEnabled),
+ 'content.webgl': Attr(QWebEngineSettings.WebGLEnabled),
'content.local_storage': Attr(
- QtWebEngineWidgets.QWebEngineSettings.LocalStorageEnabled
+ QWebEngineSettings.LocalStorageEnabled
),
'content.desktop_capture': Attr(
- QtWebEngineWidgets.QWebEngineSettings.ScreenCaptureEnabled,
+ QWebEngineSettings.ScreenCaptureEnabled,
converter=lambda val: True if val == 'ask' else val,
),
# 'ask' is handled via the permission system
'input.spatial_navigation': Attr(
- QtWebEngineWidgets.QWebEngineSettings.SpatialNavigationEnabled
+ QWebEngineSettings.SpatialNavigationEnabled
),
'input.links_included_in_focus_chain': Attr(
- QtWebEngineWidgets.QWebEngineSettings.LinksIncludedInFocusChain
+ QWebEngineSettings.LinksIncludedInFocusChain
),
'scrolling.smooth': Attr(
- QtWebEngineWidgets.QWebEngineSettings.ScrollAnimatorEnabled
+ QWebEngineSettings.ScrollAnimatorEnabled
),
'content.print_element_backgrounds': Attr(
- QtWebEngineWidgets.QWebEngineSettings.PrintElementBackgrounds
+ QWebEngineSettings.PrintElementBackgrounds
),
'content.autoplay': Attr(
- QtWebEngineWidgets.QWebEngineSettings.PlaybackRequiresUserGesture,
+ QWebEngineSettings.PlaybackRequiresUserGesture,
converter=operator.not_,
),
'content.dns_prefetch': Attr(
- QtWebEngineWidgets.QWebEngineSettings.DnsPrefetchEnabled
+ QWebEngineSettings.DnsPrefetchEnabled
),
'tabs.favicons.show': Attr(
- QtWebEngineWidgets.QWebEngineSettings.AutoLoadIconsForPage,
+ QWebEngineSettings.AutoLoadIconsForPage,
converter=lambda val: val != 'never',
),
}
_FONT_SIZES = {
- 'fonts.web.size.minimum': QtWebEngineWidgets.QWebEngineSettings.MinimumFontSize,
- 'fonts.web.size.minimum_logical': QtWebEngineWidgets.QWebEngineSettings.MinimumLogicalFontSize,
- 'fonts.web.size.default': QtWebEngineWidgets.QWebEngineSettings.DefaultFontSize,
- 'fonts.web.size.default_fixed': QtWebEngineWidgets.QWebEngineSettings.DefaultFixedFontSize,
+ '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': QtWebEngineWidgets.QWebEngineSettings.StandardFont,
- 'fonts.web.family.fixed': QtWebEngineWidgets.QWebEngineSettings.FixedFont,
- 'fonts.web.family.serif': QtWebEngineWidgets.QWebEngineSettings.SerifFont,
- 'fonts.web.family.sans_serif': QtWebEngineWidgets.QWebEngineSettings.SansSerifFont,
- 'fonts.web.family.cursive': QtWebEngineWidgets.QWebEngineSettings.CursiveFont,
- 'fonts.web.family.fantasy': QtWebEngineWidgets.QWebEngineSettings.FantasyFont,
+ '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': QtWebEngineWidgets.QWebEngineSettings.DisallowUnknownUrlSchemes,
- 'allow-from-user-interaction': QtWebEngineWidgets.QWebEngineSettings.AllowUnknownUrlSchemesFromUserInteraction,
- 'allow-all': QtWebEngineWidgets.QWebEngineSettings.AllowAllUnknownUrlSchemes,
+ 'disallow': QWebEngineSettings.DisallowUnknownUrlSchemes,
+ 'allow-from-user-interaction': getattr( # noqa: B009
+ QWebEngineSettings,
+ "AllowUnknownUrlSchemesFromUserInteraction",
+ ),
+ 'allow-all': QWebEngineSettings.AllowAllUnknownUrlSchemes,
}
# Mapping from WebEngineSettings::initDefaults in
# qtwebengine/src/core/web_engine_settings.cpp
_FONT_TO_QFONT = {
- QtWebEngineWidgets.QWebEngineSettings.StandardFont: QtGui.QFont.Serif,
- QtWebEngineWidgets.QWebEngineSettings.FixedFont: QtGui.QFont.Monospace,
- QtWebEngineWidgets.QWebEngineSettings.SerifFont: QtGui.QFont.Serif,
- QtWebEngineWidgets.QWebEngineSettings.SansSerifFont: QtGui.QFont.SansSerif,
- QtWebEngineWidgets.QWebEngineSettings.CursiveFont: QtGui.QFont.Cursive,
- QtWebEngineWidgets.QWebEngineSettings.FantasyFont: QtGui.QFont.Fantasy,
+ QWebEngineSettings.StandardFont: QtGui.QFont.Serif,
+ QWebEngineSettings.FixedFont: QtGui.QFont.Monospace,
+ QWebEngineSettings.SerifFont: QtGui.QFont.Serif,
+ QWebEngineSettings.SansSerifFont: QtGui.QFont.SansSerif,
+ QWebEngineSettings.CursiveFont: QtGui.QFont.Cursive,
+ QWebEngineSettings.FantasyFont: QtGui.QFont.Fantasy,
}
def set_unknown_url_scheme_policy(
diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py
index fa8d9288f..8e9e51e5d 100644
--- a/qutebrowser/browser/webengine/webenginetab.py
+++ b/qutebrowser/browser/webengine/webenginetab.py
@@ -39,6 +39,9 @@ from qutebrowser.qt import QtCore, sip
from qutebrowser.misc import objects, miscwidgets
+QWebEnginePage = QtWebEngineWidgets.QWebEnginePage
+
+
# Mapping worlds from usertypes.JsWorld to QWebEngineScript world IDs.
_JS_WORLD_MAP = {
usertypes.JsWorld.main: QtWebEngineWidgets.QWebEngineScript.MainWorld,
@@ -191,7 +194,9 @@ class WebEngineSearch(browsertab.AbstractSearch):
self._wrap_handler = _WebEngineSearchWrapHandler()
def _empty_flags(self):
- return QtWebEngineWidgets.QWebEnginePage.FindFlags(0) # type: ignore[call-overload]
+ return QtWebEngineWidgets.QWebEnginePage.FindFlags(
+ 0
+ ) # type: ignore[call-overload]
def _args_to_flags(self, reverse, ignore_case):
flags = self._empty_flags()
@@ -874,24 +879,24 @@ class _WebEnginePermissions(QtCore.QObject):
_options = {
0: 'content.notifications.enabled',
- QtWebEngineWidgets.QWebEnginePage.Geolocation: 'content.geolocation',
- QtWebEngineWidgets.QWebEnginePage.MediaAudioCapture: 'content.media.audio_capture',
- QtWebEngineWidgets.QWebEnginePage.MediaVideoCapture: 'content.media.video_capture',
- QtWebEngineWidgets.QWebEnginePage.MediaAudioVideoCapture: 'content.media.audio_video_capture',
- QtWebEngineWidgets.QWebEnginePage.MouseLock: 'content.mouse_lock',
- QtWebEngineWidgets.QWebEnginePage.DesktopVideoCapture: 'content.desktop_capture',
- QtWebEngineWidgets.QWebEnginePage.DesktopAudioVideoCapture: 'content.desktop_capture',
+ QWebEnginePage.Geolocation: 'content.geolocation',
+ QWebEnginePage.MediaAudioCapture: 'content.media.audio_capture',
+ QWebEnginePage.MediaVideoCapture: 'content.media.video_capture',
+ QWebEnginePage.MediaAudioVideoCapture: 'content.media.audio_video_capture',
+ QWebEnginePage.MouseLock: 'content.mouse_lock',
+ QWebEnginePage.DesktopVideoCapture: 'content.desktop_capture',
+ QWebEnginePage.DesktopAudioVideoCapture: 'content.desktop_capture',
}
_messages = {
0: 'show notifications',
- QtWebEngineWidgets.QWebEnginePage.Geolocation: 'access your location',
- QtWebEngineWidgets.QWebEnginePage.MediaAudioCapture: 'record audio',
- QtWebEngineWidgets.QWebEnginePage.MediaVideoCapture: 'record video',
- QtWebEngineWidgets.QWebEnginePage.MediaAudioVideoCapture: 'record audio/video',
- QtWebEngineWidgets.QWebEnginePage.MouseLock: 'hide your mouse pointer',
- QtWebEngineWidgets.QWebEnginePage.DesktopVideoCapture: 'capture your desktop',
- QtWebEngineWidgets.QWebEnginePage.DesktopAudioVideoCapture: 'capture your desktop and audio',
+ QWebEnginePage.Geolocation: 'access your location',
+ QWebEnginePage.MediaAudioCapture: 'record audio',
+ QWebEnginePage.MediaVideoCapture: 'record video',
+ QWebEnginePage.MediaAudioVideoCapture: 'record audio/video',
+ QWebEnginePage.MouseLock: 'hide your mouse pointer',
+ QWebEnginePage.DesktopVideoCapture: 'capture your desktop',
+ QWebEnginePage.DesktopAudioVideoCapture: 'capture your desktop and audio',
}
def __init__(self, tab, parent=None):
@@ -1536,12 +1541,13 @@ class WebEngineTab(browsertab.AbstractTab):
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-58697
status = QtWebEngineWidgets.QWebEnginePage.CrashedTerminationStatus
+ term_status = browsertab.TerminationStatus
status_map = {
- QtWebEngineWidgets.QWebEnginePage.NormalTerminationStatus: browsertab.TerminationStatus.normal,
- QtWebEngineWidgets.QWebEnginePage.AbnormalTerminationStatus: browsertab.TerminationStatus.abnormal,
- QtWebEngineWidgets.QWebEnginePage.CrashedTerminationStatus: browsertab.TerminationStatus.crashed,
- QtWebEngineWidgets.QWebEnginePage.KilledTerminationStatus: browsertab.TerminationStatus.killed,
- -1: browsertab.TerminationStatus.unknown,
+ QWebEnginePage.NormalTerminationStatus: term_status.normal,
+ QWebEnginePage.AbnormalTerminationStatus: term_status.abnormal,
+ QWebEnginePage.CrashedTerminationStatus: term_status.crashed,
+ QWebEnginePage.KilledTerminationStatus: term_status.killed,
+ -1: term_status.unknown,
}
self.renderer_process_terminated.emit(status_map[status], exitcode)
diff --git a/qutebrowser/browser/webengine/webview.py b/qutebrowser/browser/webengine/webview.py
index f6e266523..fdcbb224d 100644
--- a/qutebrowser/browser/webengine/webview.py
+++ b/qutebrowser/browser/webengine/webview.py
@@ -29,9 +29,12 @@ from qutebrowser.utils import log, debug, usertypes
from qutebrowser.qt import QtCore
+QWebEnginePage = QtWebEngineWidgets.QWebEnginePage
+
+
_QB_FILESELECTION_MODES = {
- QtWebEngineWidgets.QWebEnginePage.FileSelectOpen: shared.FileSelectionMode.single_file,
- QtWebEngineWidgets.QWebEnginePage.FileSelectOpenMultiple: shared.FileSelectionMode.multiple_files,
+ QWebEnginePage.FileSelectOpen: shared.FileSelectionMode.single_file,
+ QWebEnginePage.FileSelectOpenMultiple: shared.FileSelectionMode.multiple_files,
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-91489
#
# QtWebEngine doesn't expose this value from its internal
@@ -39,7 +42,7 @@ _QB_FILESELECTION_MODES = {
# the public QWebEnginePage::FileSelectionMode enum).
# However, QWebEnginePage::chooseFiles is still called with the matching value
# (2) when a file input with "webkitdirectory" is used.
- QtWebEngineWidgets.QWebEnginePage.FileSelectionMode(
+ QWebEnginePage.FileSelectionMode(
2
): shared.FileSelectionMode.folder,
}
@@ -97,27 +100,27 @@ class WebEngineView(QtWebEngineWidgets.QWebEngineView):
Return:
The new QWebEngineView object.
"""
- debug_type = debug.qenum_key(QtWebEngineWidgets.QWebEnginePage, wintype)
+ debug_type = debug.qenum_key(QWebEnginePage, wintype)
background = config.val.tabs.background
log.webview.debug("createWindow with type {}, background {}".format(
debug_type, background))
- if wintype == QtWebEngineWidgets.QWebEnginePage.WebBrowserWindow:
+ if wintype == QWebEnginePage.WebBrowserWindow:
# Shift-Alt-Click
target = usertypes.ClickTarget.window
- elif wintype == QtWebEngineWidgets.QWebEnginePage.WebDialog:
+ elif wintype == QWebEnginePage.WebDialog:
log.webview.warning("{} requested, but we don't support "
"that!".format(debug_type))
target = usertypes.ClickTarget.tab
- elif wintype == QtWebEngineWidgets.QWebEnginePage.WebBrowserTab:
+ elif wintype == QWebEnginePage.WebBrowserTab:
# Middle-click / Ctrl-Click with Shift
# FIXME:qtwebengine this also affects target=_blank links...
if background:
target = usertypes.ClickTarget.tab
else:
target = usertypes.ClickTarget.tab_bg
- elif wintype == QtWebEngineWidgets.QWebEnginePage.WebBrowserBackgroundTab:
+ elif wintype == QWebEnginePage.WebBrowserBackgroundTab:
# Middle-click / Ctrl-Click
if background:
target = usertypes.ClickTarget.tab_bg
@@ -137,7 +140,7 @@ class WebEngineView(QtWebEngineWidgets.QWebEngineView):
super().contextMenuEvent(ev)
-class WebEnginePage(QtWebEngineWidgets.QWebEnginePage):
+class WebEnginePage(QWebEnginePage):
"""Custom QWebEnginePage subclass with qutebrowser-specific features.
@@ -214,46 +217,46 @@ class WebEnginePage(QtWebEngineWidgets.QWebEnginePage):
def javaScriptConsoleMessage(self, level, msg, line, source):
"""Log javascript messages to qutebrowser's log."""
level_map = {
- QtWebEngineWidgets.QWebEnginePage.InfoMessageLevel: usertypes.JsLogLevel.info,
- QtWebEngineWidgets.QWebEnginePage.WarningMessageLevel: usertypes.JsLogLevel.warning,
- QtWebEngineWidgets.QWebEnginePage.ErrorMessageLevel: usertypes.JsLogLevel.error,
+ QWebEnginePage.InfoMessageLevel: usertypes.JsLogLevel.info,
+ QWebEnginePage.WarningMessageLevel: usertypes.JsLogLevel.warning,
+ QWebEnginePage.ErrorMessageLevel: usertypes.JsLogLevel.error,
}
shared.javascript_log_message(level_map[level], source, line, msg)
def acceptNavigationRequest(
self,
url: QtCore.QUrl,
- typ: QtWebEngineWidgets.QWebEnginePage.NavigationType,
+ typ: QWebEnginePage.NavigationType,
is_main_frame: bool,
) -> bool:
"""Override acceptNavigationRequest to forward it to the tab API."""
+ nav_request_type = usertypes.NavigationRequest.Type
type_map = {
- QtWebEngineWidgets.QWebEnginePage.NavigationTypeLinkClicked: usertypes.NavigationRequest.Type.link_clicked,
- QtWebEngineWidgets.QWebEnginePage.NavigationTypeTyped: usertypes.NavigationRequest.Type.typed,
- QtWebEngineWidgets.QWebEnginePage.NavigationTypeFormSubmitted: usertypes.NavigationRequest.Type.form_submitted,
- QtWebEngineWidgets.QWebEnginePage.NavigationTypeBackForward: usertypes.NavigationRequest.Type.back_forward,
- QtWebEngineWidgets.QWebEnginePage.NavigationTypeReload: usertypes.NavigationRequest.Type.reloaded,
- QtWebEngineWidgets.QWebEnginePage.NavigationTypeOther: usertypes.NavigationRequest.Type.other,
+ QWebEnginePage.NavigationTypeLinkClicked: nav_request_type.link_clicked,
+ QWebEnginePage.NavigationTypeTyped: nav_request_type.typed,
+ QWebEnginePage.NavigationTypeFormSubmitted: nav_request_type.form_submitted,
+ QWebEnginePage.NavigationTypeBackForward: nav_request_type.back_forward,
+ QWebEnginePage.NavigationTypeReload: nav_request_type.reloaded,
+ QWebEnginePage.NavigationTypeOther: nav_request_type.other,
}
try:
type_map[
- QtWebEngineWidgets.QWebEnginePage.NavigationTypeRedirect
- ] = usertypes.NavigationRequest.Type.redirect
+ QWebEnginePage.NavigationTypeRedirect
+ ] = nav_request_type.redirect
except AttributeError:
# Added in Qt 5.14
pass
navigation = usertypes.NavigationRequest(
url=url,
- navigation_type=type_map.get(
- typ, usertypes.NavigationRequest.Type.other),
+ navigation_type=type_map.get(typ, nav_request_type.other),
is_main_frame=is_main_frame)
self.navigation_request.emit(navigation)
return navigation.accepted
def chooseFiles(
self,
- mode: QtWebEngineWidgets.QWebEnginePage.FileSelectionMode,
+ mode: QWebEnginePage.FileSelectionMode,
old_files: Iterable[str],
accepted_mimetypes: Iterable[str],
) -> List[str]:
diff --git a/qutebrowser/browser/webkit/network/webkitqutescheme.py b/qutebrowser/browser/webkit/network/webkitqutescheme.py
index cbd0baa18..fa9678ea7 100644
--- a/qutebrowser/browser/webkit/network/webkitqutescheme.py
+++ b/qutebrowser/browser/webkit/network/webkitqutescheme.py
@@ -61,12 +61,13 @@ def handler(request, operation, current_url):
try:
mimetype, data = qutescheme.data_for_url(url)
except qutescheme.Error as e:
+ qnet_reply = QtNetwork.QNetworkReply
errors = {
- qutescheme.NotFoundError: QtNetwork.QNetworkReply.ContentNotFoundError,
- qutescheme.UrlInvalidError: QtNetwork.QNetworkReply.ContentOperationNotPermittedError,
- qutescheme.RequestDeniedError: QtNetwork.QNetworkReply.ContentAccessDenied,
- qutescheme.SchemeOSError: QtNetwork.QNetworkReply.ContentNotFoundError,
- qutescheme.Error: QtNetwork.QNetworkReply.InternalServerError,
+ qutescheme.NotFoundError: qnet_reply.ContentNotFoundError,
+ qutescheme.UrlInvalidError: qnet_reply.ContentOperationNotPermittedError,
+ qutescheme.RequestDeniedError: qnet_reply.ContentAccessDenied,
+ qutescheme.SchemeOSError: qnet_reply.ContentNotFoundError,
+ qutescheme.Error: qnet_reply.InternalServerError,
}
exctype = type(e)
log.misc.error("{} while handling qute://* URL".format(
diff --git a/qutebrowser/browser/webkit/webpage.py b/qutebrowser/browser/webkit/webpage.py
index 3c732a2dd..fd41c701e 100644
--- a/qutebrowser/browser/webkit/webpage.py
+++ b/qutebrowser/browser/webkit/webpage.py
@@ -61,9 +61,10 @@ class BrowserPage(QtWebKitWidgets.QWebPage):
self._win_id = win_id
self._tabdata = tabdata
self._is_shutting_down = False
+ webpage = QtWebKitWidgets.QWebPage
self._extension_handlers = {
- QtWebKitWidgets.QWebPage.ErrorPageExtension: self._handle_errorpage,
- QtWebKitWidgets.QWebPage.ChooseMultipleFilesExtension: self._handle_multiple_files,
+ webpage.ErrorPageExtension: self._handle_errorpage,
+ webpage.ChooseMultipleFilesExtension: self._handle_multiple_files,
}
self._ignore_load_started = False
self.error_occurred = False
@@ -523,13 +524,15 @@ class BrowserPage(QtWebKitWidgets.QWebPage):
Checks if it should open it in a tab (middle-click or control) or not,
and then conditionally opens the URL here or in another tab/window.
"""
+ webpage = QtWebKitWidgets.QWebPage
+ nav_request = usertypes.NavigationRequest
type_map = {
- QtWebKitWidgets.QWebPage.NavigationTypeLinkClicked: usertypes.NavigationRequest.Type.link_clicked,
- QtWebKitWidgets.QWebPage.NavigationTypeFormSubmitted: usertypes.NavigationRequest.Type.form_submitted,
- QtWebKitWidgets.QWebPage.NavigationTypeFormResubmitted: usertypes.NavigationRequest.Type.form_resubmitted,
- QtWebKitWidgets.QWebPage.NavigationTypeBackOrForward: usertypes.NavigationRequest.Type.back_forward,
- QtWebKitWidgets.QWebPage.NavigationTypeReload: usertypes.NavigationRequest.Type.reloaded,
- QtWebKitWidgets.QWebPage.NavigationTypeOther: usertypes.NavigationRequest.Type.other,
+ webpage.NavigationTypeLinkClicked: nav_request.Type.link_clicked,
+ webpage.NavigationTypeFormSubmitted: nav_request.Type.form_submitted,
+ webpage.NavigationTypeFormResubmitted: nav_request.Type.form_resubmitted,
+ webpage.NavigationTypeBackOrForward: nav_request.Type.back_forward,
+ webpage.NavigationTypeReload: nav_request.Type.reloaded,
+ webpage.NavigationTypeOther: nav_request.Type.other,
}
is_main_frame = frame is self.mainFrame()
navigation = usertypes.NavigationRequest(url=request.url(),
diff --git a/qutebrowser/misc/earlyinit.py b/qutebrowser/misc/earlyinit.py
index 7ebe2c69f..1b4360156 100644
--- a/qutebrowser/misc/earlyinit.py
+++ b/qutebrowser/misc/earlyinit.py
@@ -186,7 +186,8 @@ def check_qt_version():
from qutebrowser.qt import QtCore
try:
qt_ver = QtCore.QLibraryInfo.version().normalized()
- recent_qt_runtime = qt_ver >= QtCore.QVersionNumber(5, 12) # type: ignore[operator]
+ qt_512_ver = QtCore.QVersionNumber(5, 12)
+ recent_qt_runtime = qt_ver >= qt_512_ver # type: ignore[operator]
except (ImportError, AttributeError):
# QVersionNumber was added in Qt 5.6, QLibraryInfo.version() in 5.8
recent_qt_runtime = False
diff --git a/tests/unit/utils/test_qtutils.py b/tests/unit/utils/test_qtutils.py
index 84084de33..8a0071970 100644
--- a/tests/unit/utils/test_qtutils.py
+++ b/tests/unit/utils/test_qtutils.py
@@ -216,12 +216,12 @@ def test_ensure_valid(obj, raising, exc_reason, exc_str):
(
QtCore.QDataStream.ReadCorruptData,
True,
- "The data stream has read corrupt " "data.",
+ "The data stream has read corrupt data.",
),
(
QtCore.QDataStream.WriteFailed,
True,
- "The data stream cannot write to the " "underlying device.",
+ "The data stream cannot write to the underlying device.",
),
],
)