summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-07-18 15:09:20 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2014-07-23 16:50:35 +0200
commit69febf7ef05ca5cbec12417cde1d1c5013e064b5 (patch)
tree51e9f0018d30f2093af62fa7a6e4cd4f5332a593
parenta21db7a3b5e1300637ac5cfca299409afef1afa7 (diff)
On windows use blink's accessibility implementation
This fixes the windows build after the initial a11y patches landed. In addition blink a11y works well on this platform so there is no reason to map it to the Qt one. Since it's based on window handles they mix well. Change-Id: I4441541864bbdab126cd9412a3640c7284b98193 Reviewed-by: Michael Bruning <michael.bruning@digia.com>
-rw-r--r--src/core/qtwebengine_extras.gypi2
-rw-r--r--src/core/render_widget_host_view_qt.cpp36
2 files changed, 34 insertions, 4 deletions
diff --git a/src/core/qtwebengine_extras.gypi b/src/core/qtwebengine_extras.gypi
index c0f4ce231..d6c116bf3 100644
--- a/src/core/qtwebengine_extras.gypi
+++ b/src/core/qtwebengine_extras.gypi
@@ -37,11 +37,9 @@
['exclude', 'browser/accessibility/browser_accessibility_cocoa\\.(cc|h)$'],
['exclude', 'browser/accessibility/browser_accessibility_gtk\\.(cc|h)$'],
['exclude', 'browser/accessibility/browser_accessibility_mac\\.(cc|h)$'],
- ['exclude', 'browser/accessibility/browser_accessibility_win\\.(cc|h)$'],
['exclude', 'browser/accessibility/browser_accessibility_manager_android\\.(cc|h)$'],
['exclude', 'browser/accessibility/browser_accessibility_manager_gtk\\.(cc|h)$'],
['exclude', 'browser/accessibility/browser_accessibility_manager_mac\\.(cc|h)$'],
- ['exclude', 'browser/accessibility/browser_accessibility_manager_win\\.(cc|h)$'],
],
'defines': [
'TOOLKIT_QT',
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index 76d599ea2..6b52e9314 100644
--- a/src/core/render_widget_host_view_qt.cpp
+++ b/src/core/render_widget_host_view_qt.cpp
@@ -41,8 +41,13 @@
#include "render_widget_host_view_qt.h"
+#ifdef OS_WIN
+#include "content/browser/accessibility/browser_accessibility_manager_win.h"
+#include "content/browser/accessibility/browser_accessibility_win.h"
+#else
#include "browser_accessibility_manager_qt.h"
#include "browser_accessibility_qt.h"
+#endif
#include "chromium_overrides.h"
#include "delegated_frame_node.h"
#include "render_widget_host_view_qt_delegate.h"
@@ -264,8 +269,21 @@ gfx::NativeViewId RenderWidgetHostViewQt::GetNativeViewId() const
gfx::NativeViewAccessible RenderWidgetHostViewQt::GetNativeViewAccessible()
{
- CreateBrowserAccessibilityManagerIfNeeded();
- return GetBrowserAccessibilityManager()->GetRoot();
+#ifdef OS_WIN
+ // keep in sync with render_widget_host_view_win.cpp
+ if (render_widget_host_ &&
+ !BrowserAccessibilityState::GetInstance()->IsAccessibleBrowser()) {
+ // Attempt to detect screen readers by sending an event with our custom id.
+ NotifyWinEvent(EVENT_SYSTEM_ALERT, m_hWnd, kIdCustom, CHILDID_SELF);
+ }
+
+ CreateBrowserAccessibilityManagerIfNeeded();
+
+ return GetBrowserAccessibilityManager()->GetRoot()->
+ ToBrowserAccessibilityWin();
+#else
+ return 0;
+#endif
}
void RenderWidgetHostViewQt::CreateBrowserAccessibilityManagerIfNeeded()
@@ -273,10 +291,24 @@ void RenderWidgetHostViewQt::CreateBrowserAccessibilityManagerIfNeeded()
if (GetBrowserAccessibilityManager())
return;
+#ifdef OS_WIN
+ HRESULT hr = ::CreateStdAccessibleObject(
+ m_hWnd, OBJID_WINDOW, IID_IAccessible,
+ reinterpret_cast<void **>(&window_iaccessible_));
+ DCHECK(SUCCEEDED(hr));
+
+ SetBrowserAccessibilityManager(
+ new BrowserAccessibilityManagerWin(
+ m_hWnd,
+ window_iaccessible_.get(),
+ BrowserAccessibilityManagerWin::GetEmptyDocument(),
+ this));
+#else
SetBrowserAccessibilityManager(new content::BrowserAccessibilityManagerQt(
m_adapterClient->accessibilityParentObject(),
content::BrowserAccessibilityManagerQt::GetEmptyDocument(),
this));
+#endif
}
// Set focus to the associated View component.