diff options
Diffstat (limited to 'qutebrowser/browser/webengine')
-rw-r--r-- | qutebrowser/browser/webengine/notification.py | 6 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/webenginedownloads.py | 8 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/webengineelem.py | 4 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/webengineinspector.py | 11 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/webenginequtescheme.py | 2 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/webenginesettings.py | 7 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/webenginetab.py | 34 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/webview.py | 4 |
8 files changed, 52 insertions, 24 deletions
diff --git a/qutebrowser/browser/webengine/notification.py b/qutebrowser/browser/webengine/notification.py index 2b77a5ac4..57b593ce1 100644 --- a/qutebrowser/browser/webengine/notification.py +++ b/qutebrowser/browser/webengine/notification.py @@ -288,7 +288,7 @@ class NotificationBridgePresenter(QObject): qt_notification.show() self._active_notifications[notification_id] = qt_notification - qt_notification.closed.connect( # type: ignore[attr-defined] + qt_notification.closed.connect( functools.partial(self._adapter.on_web_closed, notification_id)) def _find_replaces_id( @@ -632,6 +632,7 @@ class HerbeNotificationAdapter(AbstractNotificationAdapter): self.close_id.emit(pid) else: proc = self.sender() + assert isinstance(proc, QProcess), proc stderr = proc.readAllStandardError() raise Error(f'herbe exited with status {code}: {stderr}') @@ -757,8 +758,7 @@ class DBusNotificationAdapter(AbstractNotificationAdapter): QDBusServiceWatcher.WatchForUnregistration, self, ) - self._watcher.serviceUnregistered.connect( # type: ignore[attr-defined] - self._on_service_unregistered) + self._watcher.serviceUnregistered.connect(self._on_service_unregistered) test_service = 'test-notification-service' in objects.debug_flags service = self.TEST_SERVICE if test_service else self.SERVICE diff --git a/qutebrowser/browser/webengine/webenginedownloads.py b/qutebrowser/browser/webengine/webenginedownloads.py index a6a2a1b93..a96f49d6b 100644 --- a/qutebrowser/browser/webengine/webenginedownloads.py +++ b/qutebrowser/browser/webengine/webenginedownloads.py @@ -44,10 +44,8 @@ class DownloadItem(downloads.AbstractDownloadItem): parent: QObject = None) -> None: super().__init__(manager=manager, parent=manager) self._qt_item = qt_item - qt_item.downloadProgress.connect( # type: ignore[attr-defined] - self.stats.on_download_progress) - qt_item.stateChanged.connect( # type: ignore[attr-defined] - self._on_state_changed) + qt_item.downloadProgress.connect(self.stats.on_download_progress) + qt_item.stateChanged.connect(self._on_state_changed) # Ensure wrapped qt_item is deleted manually when the wrapper object # is deleted. See https://github.com/qutebrowser/qutebrowser/issues/3373 @@ -92,7 +90,7 @@ class DownloadItem(downloads.AbstractDownloadItem): def _do_die(self): progress_signal = self._qt_item.downloadProgress - progress_signal.disconnect() # type: ignore[attr-defined] + progress_signal.disconnect() if self._qt_item.state() != QWebEngineDownloadItem.DownloadInterrupted: self._qt_item.cancel() diff --git a/qutebrowser/browser/webengine/webengineelem.py b/qutebrowser/browser/webengine/webengineelem.py index 5d4c6ad9a..75b7a51ba 100644 --- a/qutebrowser/browser/webengine/webengineelem.py +++ b/qutebrowser/browser/webengine/webengineelem.py @@ -37,6 +37,8 @@ class WebEngineElement(webelem.AbstractWebElement): """A web element for QtWebEngine, using JS under the hood.""" + _tab: "webenginetab.WebEngineTab" + def __init__(self, js_dict: Dict[str, Any], tab: 'webenginetab.WebEngineTab') -> None: super().__init__(tab) @@ -248,7 +250,7 @@ class WebEngineElement(webelem.AbstractWebElement): # (it does so with a 0ms QTimer...) # This is also used in Qt's tests: # https://github.com/qt/qtwebengine/commit/5e572e88efa7ba7c2b9138ec19e606d3e345ac90 - QApplication.processEvents( # type: ignore[call-overload] + QApplication.processEvents( QEventLoop.ExcludeSocketNotifiers | QEventLoop.ExcludeUserInputEvents) diff --git a/qutebrowser/browser/webengine/webengineinspector.py b/qutebrowser/browser/webengine/webengineinspector.py index ae31c0bee..d30a716de 100644 --- a/qutebrowser/browser/webengine/webengineinspector.py +++ b/qutebrowser/browser/webengine/webengineinspector.py @@ -49,13 +49,17 @@ class WebEngineInspectorView(QWebEngineView): See WebEngineView.createWindow for details. """ - return self.page().inspectedPage().view().createWindow(wintype) + view = self.page().inspectedPage().view() + assert isinstance(view, QWebEngineView) + return view.createWindow(wintype) class WebEngineInspector(inspector.AbstractWebInspector): """A web inspector for QtWebEngine with Qt API support.""" + _widget: WebEngineInspectorView + def __init__(self, splitter: miscwidgets.InspectorSplitter, win_id: int, parent: QWidget = None) -> None: @@ -66,8 +70,7 @@ class WebEngineInspector(inspector.AbstractWebInspector): self._settings = webenginesettings.WebEngineSettings(view.settings()) self._set_widget(view) page = view.page() - page.windowCloseRequested.connect( # type: ignore[attr-defined] - self._on_window_close_requested) + page.windowCloseRequested.connect(self._on_window_close_requested) def _on_window_close_requested(self) -> None: """Called when the 'x' was clicked in the devtools.""" @@ -96,7 +99,7 @@ class WebEngineInspector(inspector.AbstractWebInspector): "please install the qt5-qtwebengine-devtools " "Fedora package.") - def inspect(self, page: QWebEnginePage) -> None: # type: ignore[override] + def inspect(self, page: QWebEnginePage) -> None: 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 64361f7c4..9e073951a 100644 --- a/qutebrowser/browser/webengine/webenginequtescheme.py +++ b/qutebrowser/browser/webengine/webenginequtescheme.py @@ -138,6 +138,6 @@ def init(): assert not QWebEngineUrlScheme.schemeByName(b'qute').name() scheme = QWebEngineUrlScheme(b'qute') scheme.setFlags( - QWebEngineUrlScheme.LocalScheme | # type: ignore[arg-type] + QWebEngineUrlScheme.LocalScheme | QWebEngineUrlScheme.LocalAccessAllowed) QWebEngineUrlScheme.registerScheme(scheme) diff --git a/qutebrowser/browser/webengine/webenginesettings.py b/qutebrowser/browser/webengine/webenginesettings.py index 5430cec77..0b25726c0 100644 --- a/qutebrowser/browser/webengine/webenginesettings.py +++ b/qutebrowser/browser/webengine/webenginesettings.py @@ -332,9 +332,9 @@ class ProfileSetter: def _update_settings(option): """Update global settings when qwebsettings changed.""" _global_settings.update_setting(option) - default_profile.setter.update_setting(option) + default_profile.setter.update_setting(option) # type: ignore[attr-defined] if private_profile: - private_profile.setter.update_setting(option) + private_profile.setter.update_setting(option) # type: ignore[attr-defined] def _init_user_agent_str(ua): @@ -352,8 +352,9 @@ def _init_profile(profile: QWebEngineProfile) -> None: This currently only contains the steps which are shared between a private and a non-private profile (at the moment, only the default profile). """ + # FIXME:mypy subclass QWebEngineProfile instead? profile.setter = ProfileSetter(profile) # type: ignore[attr-defined] - profile.setter.init_profile() + profile.setter.init_profile() # type: ignore[attr-defined] _qute_scheme_handler.install(profile) _req_interceptor.install(profile) diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index 7d355d10e..28182d1b6 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -30,7 +30,7 @@ from PyQt5.QtCore import (pyqtSignal, pyqtSlot, Qt, QPoint, QPointF, QTimer, QUr QObject) from PyQt5.QtNetwork import QAuthenticator from PyQt5.QtWidgets import QWidget -from PyQt5.QtWebEngineWidgets import QWebEnginePage, QWebEngineScript, QWebEngineHistory +from PyQt5.QtWebEngineWidgets import QWebEnginePage, QWebEngineView, QWebEngineScript, QWebEngineHistory from qutebrowser.config import config from qutebrowser.browser import browsertab, eventfilter, shared, webelem, greasemonkey @@ -57,6 +57,8 @@ class WebEngineAction(browsertab.AbstractAction): """QtWebEngine implementations related to web actions.""" + _widget: webview.WebEngineView + action_class = QWebEnginePage action_base = QWebEnginePage.WebAction @@ -79,6 +81,8 @@ class WebEnginePrinting(browsertab.AbstractPrinting): """QtWebEngine implementations related to printing.""" + _widget: webview.WebEngineView + def check_pdf_support(self): pass @@ -190,6 +194,8 @@ class WebEngineSearch(browsertab.AbstractSearch): _pending_searches: How many searches have been started but not called back yet. """ + + _widget: webview.WebEngineView def __init__(self, tab, parent=None): super().__init__(tab, parent) @@ -199,7 +205,7 @@ class WebEngineSearch(browsertab.AbstractSearch): self._wrap_handler = _WebEngineSearchWrapHandler() def _empty_flags(self): - return QWebEnginePage.FindFlags(0) # type: ignore[call-overload] + return QWebEnginePage.FindFlags(0) def _args_to_flags(self, reverse, ignore_case): flags = self._empty_flags() @@ -275,8 +281,7 @@ class WebEngineSearch(browsertab.AbstractSearch): def prev_result(self, *, result_cb=None): # The int() here makes sure we get a copy of the flags. - flags = QWebEnginePage.FindFlags( - int(self._flags)) # type: ignore[call-overload] + flags = QWebEnginePage.FindFlags(int(self._flags)) if flags & QWebEnginePage.FindBackward: if self._wrap_handler.prevent_wrapping(going_up=False): return @@ -493,6 +498,8 @@ class WebEngineScroller(browsertab.AbstractScroller): """QtWebEngine implementations related to scrolling.""" + _widget: webview.WebEngineView + def __init__(self, tab, parent=None): super().__init__(tab, parent) self._pos_perc = (0, 0) @@ -713,6 +720,8 @@ class WebEngineZoom(browsertab.AbstractZoom): """QtWebEngine implementations related to zooming.""" + _widget: webview.WebEngineView + def _set_factor_internal(self, factor): self._widget.setZoomFactor(factor) @@ -799,6 +808,8 @@ class WebEngineAudio(browsertab.AbstractAudio): If that's the case, we leave it alone. """ + _widget: webview.WebEngineView + def __init__(self, tab, parent=None): super().__init__(tab, parent) self._overridden = False @@ -870,6 +881,8 @@ class _WebEnginePermissions(QObject): """Handling of various permission-related signals.""" + _widget: webview.WebEngineView + # Using 0 as WORKAROUND for: # https://www.riverbankcomputing.com/pipermail/pyqt/2019-July/041903.html @@ -898,7 +911,7 @@ class _WebEnginePermissions(QObject): def __init__(self, tab, parent=None): super().__init__(parent) self._tab = tab - self._widget = cast(QWidget, None) + self._widget = cast(webview.WebEngineView, None) assert self._options.keys() == self._messages.keys() def connect_signals(self): @@ -1033,10 +1046,12 @@ class _Quirk: class _WebEngineScripts(QObject): + _widget: webview.WebEngineView + def __init__(self, tab, parent=None): super().__init__(parent) self._tab = tab - self._widget = cast(QWidget, None) + self._widget = cast(webview.WebEngineView, None) self._greasemonkey = greasemonkey.gm_manager def connect_signals(self): @@ -1240,6 +1255,8 @@ class WebEngineTabPrivate(browsertab.AbstractTabPrivate): """QtWebEngine-related methods which aren't part of the public API.""" + _widget: webview.WebEngineView + def networkaccessmanager(self): return None @@ -1275,6 +1292,10 @@ class WebEngineTab(browsertab.AbstractTab): abort_questions = pyqtSignal() + _widget: QWebEngineView + search: WebEngineSearch + audio: WebEngineAudio + def __init__(self, *, win_id, mode_manager, private, parent=None): super().__init__(win_id=win_id, mode_manager=mode_manager, @@ -1685,6 +1706,7 @@ class WebEngineTab(browsertab.AbstractTab): def _connect_signals(self): view = self._widget page = view.page() + assert isinstance(page, webview.WebEnginePage) page.windowCloseRequested.connect(self.window_close_requested) page.linkHovered.connect(self.link_hovered) diff --git a/qutebrowser/browser/webengine/webview.py b/qutebrowser/browser/webengine/webview.py index 76ce1a42e..6e72df014 100644 --- a/qutebrowser/browser/webengine/webview.py +++ b/qutebrowser/browser/webengine/webview.py @@ -70,7 +70,9 @@ class WebEngineView(QWebEngineView): return self.focusProxy() def shutdown(self): - self.page().shutdown() + page = self.page() + assert isinstance(page, WebEnginePage) + page.shutdown() def createWindow(self, wintype): """Called by Qt when a page wants to create a new window. |