From 88f165fd771daca404b8efc44106999602cbddcb Mon Sep 17 00:00:00 2001 From: toofar Date: Sun, 12 Nov 2023 12:17:35 +1300 Subject: Handle Optional page getters in webengineinspector With PyQt6-WebEngine 6.6.0 some pointer return types are now wrapped in Optionals[]. In practice they should never be none though so I'm sprinkling some low effort null checking in here. Another alternative is to move the inspector classes to be based off, and to work with, our overridden child classes of the view and page. But that's a whole other piece of work, we might have to deal with signals and such meant for web views that we don't want with the inspector. (On the other hand it might actually be good. The inspector sometimes is surprising in how it acts differently from the main views.) There's a bit later on where I changed a local variable name from `inspector_page` to `new_page`. The `inspector_page` variable is used later and the type checker was complaining. ref: https://github.com/qutebrowser/qutebrowser/pull/7990 --- qutebrowser/browser/webengine/webengineinspector.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/qutebrowser/browser/webengine/webengineinspector.py b/qutebrowser/browser/webengine/webengineinspector.py index 64ef24319..d37f41ba5 100644 --- a/qutebrowser/browser/webengine/webengineinspector.py +++ b/qutebrowser/browser/webengine/webengineinspector.py @@ -35,14 +35,19 @@ class WebEngineInspectorView(QWebEngineView): See WebEngineView.createWindow for details. """ - inspected_page = self.page().inspectedPage() + our_page = self.page() + assert our_page is not None + inspected_page = our_page.inspectedPage() + assert inspected_page is not None if machinery.IS_QT5: view = inspected_page.view() assert isinstance(view, QWebEngineView), view return view.createWindow(wintype) else: # Qt 6 newpage = inspected_page.createWindow(wintype) - return webview.WebEngineView.forPage(newpage) + ret = webview.WebEngineView.forPage(newpage) + assert ret is not None + return ret class WebEngineInspector(inspector.AbstractWebInspector): @@ -88,16 +93,17 @@ class WebEngineInspector(inspector.AbstractWebInspector): def inspect(self, page: QWebEnginePage) -> None: if not self._widget: view = WebEngineInspectorView() - inspector_page = QWebEnginePage( + new_page = QWebEnginePage( page.profile(), self ) - inspector_page.windowCloseRequested.connect(self._on_window_close_requested) - view.setPage(inspector_page) + new_page.windowCloseRequested.connect(self._on_window_close_requested) + view.setPage(new_page) self._settings = webenginesettings.WebEngineSettings(view.settings()) self._set_widget(view) inspector_page = self._widget.page() + assert inspector_page is not None assert inspector_page.profile() == page.profile() inspector_page.setInspectedPage(page) -- cgit v1.2.3-54-g00ecf