From d95b9295c970401939d2779cbdc9e2a8c7965277 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Br=C3=BCning?= Date: Tue, 20 Jan 2015 16:20:42 +0100 Subject: Enable building Qt WebEngine without accessiblity enabled. This adds guards that for QT_NO_ACCESSIBILITY being not defined around the code that uses accessibility types. It disables the quicknanobrowser and quicktestbrowser examples which need Qt QuickControls, which has a hard dependency to accessibility being enabled. Task-number: QTBUG-43305 Change-Id: Ifa39e3ce447ebc2124f52e00b29b1d7d2231035e Reviewed-by: Andras Becsi --- examples/webengine/quicknanobrowser/quicknanobrowser.pro | 2 ++ src/core/browser_accessibility_manager_qt.cpp | 6 ++++++ src/core/browser_accessibility_manager_qt.h | 2 ++ src/core/browser_accessibility_qt.cpp | 3 +++ src/core/browser_accessibility_qt.h | 2 ++ src/core/render_widget_host_view_qt.cpp | 11 ++++++++++- src/core/render_widget_host_view_qt.h | 7 +++++-- src/core/web_contents_adapter.cpp | 2 ++ src/core/web_contents_adapter_client.h | 2 ++ src/webengine/api/qquickwebengineview.cpp | 12 ++++++++++++ src/webengine/api/qquickwebengineview_p.h | 2 ++ src/webengine/api/qquickwebengineview_p_p.h | 5 ++++- src/webenginewidgets/api/qwebenginepage.cpp | 2 ++ src/webenginewidgets/api/qwebenginepage.h | 2 ++ src/webenginewidgets/api/qwebenginepage_p.h | 2 ++ src/webenginewidgets/api/qwebengineview.cpp | 7 ++++++- src/webenginewidgets/api/qwebengineview_p.h | 3 ++- tests/quicktestbrowser/quicktestbrowser.pro | 2 ++ 18 files changed, 68 insertions(+), 6 deletions(-) diff --git a/examples/webengine/quicknanobrowser/quicknanobrowser.pro b/examples/webengine/quicknanobrowser/quicknanobrowser.pro index 3628b817e..a8e57b0a4 100644 --- a/examples/webengine/quicknanobrowser/quicknanobrowser.pro +++ b/examples/webengine/quicknanobrowser/quicknanobrowser.pro @@ -1,3 +1,5 @@ +requires(contains(QT_CONFIG, accessibility)) + TEMPLATE = app TARGET = quicknanobrowser diff --git a/src/core/browser_accessibility_manager_qt.cpp b/src/core/browser_accessibility_manager_qt.cpp index 1adb69be7..0157c8602 100644 --- a/src/core/browser_accessibility_manager_qt.cpp +++ b/src/core/browser_accessibility_manager_qt.cpp @@ -48,9 +48,14 @@ BrowserAccessibilityManager* BrowserAccessibilityManager::Create( BrowserAccessibilityDelegate* delegate, BrowserAccessibilityFactory* factory) { +#ifndef QT_NO_ACCESSIBILITY return new BrowserAccessibilityManagerQt(0, initial_tree, delegate); +#else + return 0; +#endif // QT_NO_ACCESSIBILITY } +#ifndef QT_NO_ACCESSIBILITY BrowserAccessibility *BrowserAccessibilityFactoryQt::Create() { return new BrowserAccessibilityQt(); @@ -128,5 +133,6 @@ void BrowserAccessibilityManagerQt::NotifyAccessibilityEvent(ui::AXEvent event_t break; } } +#endif // QT_NO_ACCESSIBILITY } diff --git a/src/core/browser_accessibility_manager_qt.h b/src/core/browser_accessibility_manager_qt.h index 5d8498d01..49b3af3b2 100644 --- a/src/core/browser_accessibility_manager_qt.h +++ b/src/core/browser_accessibility_manager_qt.h @@ -38,6 +38,7 @@ #define BROWSER_ACCESSIBILITY_MANAGER_QT_H #include "content/browser/accessibility/browser_accessibility_manager.h" +#ifndef QT_NO_ACCESSIBILITY #include QT_BEGIN_NAMESPACE @@ -74,4 +75,5 @@ private: } +#endif // QT_NO_ACCESSIBILITY #endif diff --git a/src/core/browser_accessibility_qt.cpp b/src/core/browser_accessibility_qt.cpp index 8f0dd0572..9d7dbe8d8 100644 --- a/src/core/browser_accessibility_qt.cpp +++ b/src/core/browser_accessibility_qt.cpp @@ -38,6 +38,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#ifndef QT_NO_ACCESSIBILITY #include "browser_accessibility_qt.h" #include "third_party/WebKit/public/web/WebAXEnums.h" @@ -896,3 +897,5 @@ void BrowserAccessibilityQt::modelChange(QAccessibleTableModelChangeEvent *) } } // namespace content + +#endif // QT_NO_ACCESSIBILITY diff --git a/src/core/browser_accessibility_qt.h b/src/core/browser_accessibility_qt.h index db190ffc4..6baab98b3 100644 --- a/src/core/browser_accessibility_qt.h +++ b/src/core/browser_accessibility_qt.h @@ -36,6 +36,7 @@ #ifndef BROWSER_ACCESSIBILITY_QT_H #define BROWSER_ACCESSIBILITY_QT_H +#ifndef QT_NO_ACCESSIBILITY #include #include "content/browser/accessibility/browser_accessibility.h" @@ -145,4 +146,5 @@ public: } +#endif // QT_NO_ACCESSIBILITY #endif diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp index e17459634..bf4d5bf37 100644 --- a/src/core/render_widget_host_view_qt.cpp +++ b/src/core/render_widget_host_view_qt.cpp @@ -245,15 +245,18 @@ RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost* widget , m_initPending(false) { m_host->SetView(this); - +#ifndef QT_NO_ACCESSIBILITY QAccessible::installActivationObserver(this); if (QAccessible::isActive()) content::BrowserAccessibilityStateImpl::GetInstance()->EnableAccessibility(); +#endif // QT_NO_ACCESSIBILITY } RenderWidgetHostViewQt::~RenderWidgetHostViewQt() { +#ifndef QT_NO_ACCESSIBILITY QAccessible::removeActivationObserver(this); +#endif // QT_NO_ACCESSIBILITY } void RenderWidgetHostViewQt::setDelegate(RenderWidgetHostViewQtDelegate* delegate) @@ -347,10 +350,14 @@ gfx::NativeViewAccessible RenderWidgetHostViewQt::GetNativeViewAccessible() content::BrowserAccessibilityManager* RenderWidgetHostViewQt::CreateBrowserAccessibilityManager(content::BrowserAccessibilityDelegate* delegate) { +#ifndef QT_NO_ACCESSIBILITY return new content::BrowserAccessibilityManagerQt( m_adapterClient->accessibilityParentObject(), content::BrowserAccessibilityManagerQt::GetEmptyDocument(), delegate); +#else + return 0; +#endif // QT_NO_ACCESSIBILITY } // Set focus to the associated View component. @@ -941,6 +948,7 @@ void RenderWidgetHostViewQt::handleInputMethodEvent(QInputMethodEvent *ev) } } +#ifndef QT_NO_ACCESSIBILITY void RenderWidgetHostViewQt::accessibilityActiveChanged(bool active) { if (active) @@ -948,6 +956,7 @@ void RenderWidgetHostViewQt::accessibilityActiveChanged(bool active) else content::BrowserAccessibilityStateImpl::GetInstance()->DisableAccessibility(); } +#endif // QT_NO_ACCESSIBILITY void RenderWidgetHostViewQt::handleWheelEvent(QWheelEvent *ev) { diff --git a/src/core/render_widget_host_view_qt.h b/src/core/render_widget_host_view_qt.h index ee11888ad..93e7e75b4 100644 --- a/src/core/render_widget_host_view_qt.h +++ b/src/core/render_widget_host_view_qt.h @@ -52,6 +52,7 @@ #include #include #include +#include #include "delegated_frame_node.h" @@ -61,7 +62,6 @@ class QFocusEvent; class QHoverEvent; class QKeyEvent; class QMouseEvent; -class QTouchEvent; class QVariant; class QWheelEvent; class QAccessibleInterface; @@ -94,7 +94,9 @@ class RenderWidgetHostViewQt , public ui::GestureProviderClient , public RenderWidgetHostViewQtDelegateClient , public base::SupportsWeakPtr +#ifndef QT_NO_ACCESSIBILITY , public QAccessible::ActivationObserver +#endif // QT_NO_ACCESSIBILITY { public: RenderWidgetHostViewQt(content::RenderWidgetHost* widget); @@ -198,8 +200,9 @@ public: // Overridden from content::BrowserAccessibilityDelegate virtual content::BrowserAccessibilityManager* CreateBrowserAccessibilityManager(content::BrowserAccessibilityDelegate* delegate) Q_DECL_OVERRIDE; +#ifndef QT_NO_ACCESSIBILITY virtual void accessibilityActiveChanged(bool active) Q_DECL_OVERRIDE; - +#endif // QT_NO_ACCESSIBILITY void didFirstVisuallyNonEmptyLayout(); private: diff --git a/src/core/web_contents_adapter.cpp b/src/core/web_contents_adapter.cpp index d7dfcb97c..38573d833 100644 --- a/src/core/web_contents_adapter.cpp +++ b/src/core/web_contents_adapter.cpp @@ -670,6 +670,7 @@ BrowserContextQt* WebContentsAdapter::browserContext() return d->browserContextAdapter->browserContext(); } +#ifndef QT_NO_ACCESSIBILITY QAccessibleInterface *WebContentsAdapter::browserAccessible() { Q_D(const WebContentsAdapter); @@ -680,6 +681,7 @@ QAccessibleInterface *WebContentsAdapter::browserAccessible() content::BrowserAccessibilityQt *accQt = static_cast(acc); return accQt; } +#endif // QT_NO_ACCESSIBILITY void WebContentsAdapter::runJavaScript(const QString &javaScript) { diff --git a/src/core/web_contents_adapter_client.h b/src/core/web_contents_adapter_client.h index f4e2c658f..8252a73ca 100644 --- a/src/core/web_contents_adapter_client.h +++ b/src/core/web_contents_adapter_client.h @@ -169,7 +169,9 @@ public: virtual void passOnFocus(bool reverse) = 0; // returns the last QObject (QWidget/QQuickItem) based object in the accessibility // hierarchy before going into the BrowserAccessibility tree +#ifndef QT_NO_ACCESSIBILITY virtual QObject *accessibilityParentObject() = 0; +#endif // QT_NO_ACCESSIBILITY virtual void javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, const QString& message, int lineNumber, const QString& sourceID) = 0; virtual void authenticationRequired(const QUrl &requestUrl, const QString &realm, bool isProxy, const QString &challengingHost, QString *outUser, QString *outPassword) = 0; virtual void runGeolocationPermissionRequest(const QUrl &securityOrigin) = 0; diff --git a/src/webengine/api/qquickwebengineview.cpp b/src/webengine/api/qquickwebengineview.cpp index 92807380f..a93cd7079 100644 --- a/src/webengine/api/qquickwebengineview.cpp +++ b/src/webengine/api/qquickwebengineview.cpp @@ -64,16 +64,20 @@ #include #include #include +#ifndef QT_NO_ACCESSIBILITY #include +#endif // QT_NO_ACCESSIBILITY QT_BEGIN_NAMESPACE +#ifndef QT_NO_ACCESSIBILITY static QAccessibleInterface *webAccessibleFactory(const QString &, QObject *object) { if (QQuickWebEngineView *v = qobject_cast(object)) return new QQuickWebEngineViewAccessible(v); return 0; } +#endif // QT_NO_ACCESSIBILITY QQuickWebEngineViewPrivate::QQuickWebEngineViewPrivate() : adapter(0) @@ -105,7 +109,9 @@ QQuickWebEngineViewPrivate::QQuickWebEngineViewPrivate() // 1x, 2x, 3x etc assets that fit an integral number of pixels. setDevicePixelRatio(qMax(1, qRound(webPixelRatio))); } +#ifndef QT_NO_ACCESSIBILITY QAccessible::installFactory(&webAccessibleFactory); +#endif // QT_NO_ACCESSIBILITY } QQuickWebEngineViewPrivate::~QQuickWebEngineViewPrivate() @@ -414,11 +420,13 @@ void QQuickWebEngineViewPrivate::runMouseLockPermissionRequest(const QUrl &secur adapter->grantMouseLockPermission(false); } +#ifndef QT_NO_ACCESSIBILITY QObject *QQuickWebEngineViewPrivate::accessibilityParentObject() { Q_Q(QQuickWebEngineView); return q; } +#endif // QT_NO_ACCESSIBILITY BrowserContextAdapter *QQuickWebEngineViewPrivate::browserContextAdapter() { @@ -438,6 +446,7 @@ void QQuickWebEngineViewPrivate::setDevicePixelRatio(qreal devicePixelRatio) m_dpiScale = devicePixelRatio / screen->devicePixelRatio(); } +#ifndef QT_NO_ACCESSIBILITY QQuickWebEngineViewAccessible::QQuickWebEngineViewAccessible(QQuickWebEngineView *o) : QAccessibleObject(o) {} @@ -484,6 +493,7 @@ QAccessible::State QQuickWebEngineViewAccessible::state() const QAccessible::State s; return s; } +#endif // QT_NO_ACCESSIBILITY void QQuickWebEngineViewPrivate::adoptWebContents(WebContentsAdapter *webContents) { @@ -520,8 +530,10 @@ QQuickWebEngineView::QQuickWebEngineView(QQuickItem *parent) this->setActiveFocusOnTab(true); this->setFlag(QQuickItem::ItemIsFocusScope); +#ifndef QT_NO_ACCESSIBILITY QQuickAccessibleAttached *accessible = QQuickAccessibleAttached::qmlAttachedProperties(this); accessible->setRole(QAccessible::Grouping); +#endif // QT_NO_ACCESSIBILITY } QQuickWebEngineView::~QQuickWebEngineView() diff --git a/src/webengine/api/qquickwebengineview_p.h b/src/webengine/api/qquickwebengineview_p.h index f3ef133ae..d625dbdd9 100644 --- a/src/webengine/api/qquickwebengineview_p.h +++ b/src/webengine/api/qquickwebengineview_p.h @@ -168,7 +168,9 @@ private: friend class QQuickWebEngineViewExperimental; friend class QQuickWebEngineViewExperimentalExtension; friend class QQuickWebEngineNewViewRequest; +#ifndef QT_NO_ACCESSIBILITY friend class QQuickWebEngineViewAccessible; +#endif // QT_NO_ACCESSIBILITY }; QT_END_NAMESPACE diff --git a/src/webengine/api/qquickwebengineview_p_p.h b/src/webengine/api/qquickwebengineview_p_p.h index f97f2a8cf..964a4f0d9 100644 --- a/src/webengine/api/qquickwebengineview_p_p.h +++ b/src/webengine/api/qquickwebengineview_p_p.h @@ -174,7 +174,9 @@ public: virtual void authenticationRequired(const QUrl&, const QString&, bool, const QString&, QString*, QString*) Q_DECL_OVERRIDE { } virtual void runMediaAccessPermissionRequest(const QUrl &securityOrigin, MediaRequestFlags requestFlags) Q_DECL_OVERRIDE; virtual void runMouseLockPermissionRequest(const QUrl &securityOrigin) Q_DECL_OVERRIDE; +#ifndef QT_NO_ACCESSIBILITY virtual QObject *accessibilityParentObject() Q_DECL_OVERRIDE; +#endif // QT_NO_ACCESSIBILITY virtual WebEngineSettings *webEngineSettings() const Q_DECL_OVERRIDE; virtual void allowCertificateError(const QExplicitlySharedDataPointer &errorController); virtual void runGeolocationPermissionRequest(QUrl const&) Q_DECL_OVERRIDE; @@ -206,6 +208,7 @@ private: qreal m_dpiScale; }; +#ifndef QT_NO_ACCESSIBILITY class QQuickWebEngineViewAccessible : public QAccessibleObject { public: @@ -221,7 +224,7 @@ public: private: QQuickWebEngineView *engineView() const { return static_cast(object()); } }; - +#endif // QT_NO_ACCESSIBILITY QT_END_NAMESPACE QML_DECLARE_TYPE(QQuickWebEngineViewExperimental) diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp index 991a17fe3..5f1c06d0b 100644 --- a/src/webenginewidgets/api/qwebenginepage.cpp +++ b/src/webenginewidgets/api/qwebenginepage.cpp @@ -358,10 +358,12 @@ void QWebEnginePagePrivate::runMouseLockPermissionRequest(const QUrl &securityOr Q_EMIT q->featurePermissionRequested(securityOrigin, QWebEnginePage::MouseLock); } +#ifndef QT_NO_ACCESSIBILITY QObject *QWebEnginePagePrivate::accessibilityParentObject() { return view; } +#endif // QT_NO_ACCESSIBILITY void QWebEnginePagePrivate::updateAction(QWebEnginePage::WebAction action) const { diff --git a/src/webenginewidgets/api/qwebenginepage.h b/src/webenginewidgets/api/qwebenginepage.h index 4b9208117..afc96c996 100644 --- a/src/webenginewidgets/api/qwebenginepage.h +++ b/src/webenginewidgets/api/qwebenginepage.h @@ -274,7 +274,9 @@ private: friend class QWebEngineView; friend class QWebEngineViewPrivate; +#ifndef QT_NO_ACCESSIBILITY friend class QWebEngineViewAccessible; +#endif // QT_NO_ACCESSIBILITY }; diff --git a/src/webenginewidgets/api/qwebenginepage_p.h b/src/webenginewidgets/api/qwebenginepage_p.h index a11c44ded..1f44b6124 100644 --- a/src/webenginewidgets/api/qwebenginepage_p.h +++ b/src/webenginewidgets/api/qwebenginepage_p.h @@ -138,7 +138,9 @@ public: virtual void runMediaAccessPermissionRequest(const QUrl &securityOrigin, MediaRequestFlags requestFlags) Q_DECL_OVERRIDE; virtual void runGeolocationPermissionRequest(const QUrl &securityOrigin) Q_DECL_OVERRIDE; virtual void runMouseLockPermissionRequest(const QUrl &securityOrigin) Q_DECL_OVERRIDE; +#ifndef QT_NO_ACCESSIBILITY virtual QObject *accessibilityParentObject() Q_DECL_OVERRIDE; +#endif // QT_NO_ACCESSIBILITY virtual WebEngineSettings *webEngineSettings() const Q_DECL_OVERRIDE; virtual void allowCertificateError(const QExplicitlySharedDataPointer &controller) Q_DECL_OVERRIDE; diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp index 8d2198998..63ac40571 100644 --- a/src/webenginewidgets/api/qwebengineview.cpp +++ b/src/webenginewidgets/api/qwebengineview.cpp @@ -85,19 +85,22 @@ void QWebEngineViewPrivate::bind(QWebEngineView *view, QWebEnginePage *page) } } - +#ifndef QT_NO_ACCESSIBILITY static QAccessibleInterface *webAccessibleFactory(const QString &, QObject *object) { if (QWebEngineView *v = qobject_cast(object)) return new QWebEngineViewAccessible(v); return Q_NULLPTR; } +#endif // QT_NO_ACCESSIBILITY QWebEngineViewPrivate::QWebEngineViewPrivate() : page(0) , m_pendingContextMenuEvent(false) { +#ifndef QT_NO_ACCESSIBILITY QAccessible::installFactory(&webAccessibleFactory); +#endif // QT_NO_ACCESSIBILITY } QWebEngineView::QWebEngineView(QWidget *parent) @@ -274,6 +277,7 @@ void QWebEngineView::contextMenuEvent(QContextMenuEvent *event) menu->popup(event->globalPos()); } +#ifndef QT_NO_ACCESSIBILITY int QWebEngineViewAccessible::childCount() const { if (view() && child(0)) @@ -294,6 +298,7 @@ int QWebEngineViewAccessible::indexOfChild(const QAccessibleInterface *c) const return 0; return -1; } +#endif // QT_NO_ACCESSIBILITY QT_END_NAMESPACE diff --git a/src/webenginewidgets/api/qwebengineview_p.h b/src/webenginewidgets/api/qwebengineview_p.h index 9db971f79..e0cc3f4ee 100644 --- a/src/webenginewidgets/api/qwebengineview_p.h +++ b/src/webenginewidgets/api/qwebengineview_p.h @@ -59,6 +59,7 @@ public: bool m_pendingContextMenuEvent; }; +#ifndef QT_NO_ACCESSIBILITY class QWebEngineViewAccessible : public QAccessibleWidget { public: @@ -72,7 +73,7 @@ public: private: QWebEngineView *view() const { return static_cast(object()); } }; - +#endif // QT_NO_ACCESSIBILITY QT_END_NAMESPACE diff --git a/tests/quicktestbrowser/quicktestbrowser.pro b/tests/quicktestbrowser/quicktestbrowser.pro index 1da197590..942a54c7d 100644 --- a/tests/quicktestbrowser/quicktestbrowser.pro +++ b/tests/quicktestbrowser/quicktestbrowser.pro @@ -1,3 +1,5 @@ +requires(contains(QT_CONFIG, accessibility)) + TEMPLATE = app TARGET = quicktestbrowser -- cgit v1.2.3