diff options
author | Peter Varga <pvarga@inf.u-szeged.hu> | 2020-02-20 10:57:37 +0100 |
---|---|---|
committer | Peter Varga <pvarga@inf.u-szeged.hu> | 2020-02-27 20:47:44 +0100 |
commit | a44d7aeef75c73ede4fb21df91f8e7d173d95c68 (patch) | |
tree | 6398141ebfd10c5d14c6b8e3a12eb9aa47190e21 /src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h | |
parent | c0db708f0876ede1f6feb0f3d87d05c2f32b729f (diff) |
Invalidate accessible interfaces on destruction of view or page
The RenderWidgetHostViewQtDelegate(Widget|Quick)Accessible interfaces
are forwarding their queries to the WebEngineView. In case of widget,
the view also forwards the query to the page.
The accessible interfaces may outlive the view and page. The interfaces
are not supposed to be used after the destruction of the underlying
objects. Thus, set the RenderWidgetHostViewQtDelegate and WebEngineView
accessible interfaces invalid if the corresponding pointers are null.
Also fix querying the root accessible interface of the web page when
the render frame host is not available.
This fixes crash when
QT_LOGGING_RULES="qt.accessibility.cache.debug=true"
is set and logger tries to pretty-print QAccessibleInterfaces during
destruction.
Task-number: QTBUG-78284
Change-Id: If18af0605061fcd82d019d0042dbf1c9d3a910be
Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
Diffstat (limited to 'src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h')
-rw-r--r-- | src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h index df1806b6f..c7783117a 100644 --- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h +++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.h @@ -50,6 +50,7 @@ QT_BEGIN_NAMESPACE class QWebEnginePage; class QWebEngineView; +class QWebEngineViewAccessible; class QWebEnginePagePrivate; QT_END_NAMESPACE @@ -123,11 +124,14 @@ class RenderWidgetHostViewQtDelegateWidgetAccessible : public QAccessibleWidget public: RenderWidgetHostViewQtDelegateWidgetAccessible(RenderWidgetHostViewQtDelegateWidget *o, QWebEngineView *view); + bool isValid() const override; QAccessibleInterface *focusChild() const override; int childCount() const override; QAccessibleInterface *child(int index) const override; int indexOfChild(const QAccessibleInterface *child) const override; + private: + QWebEngineViewAccessible *viewAccessible() const; QWebEngineView *m_view; }; #endif // QT_CONFIG(accessibility) |