summaryrefslogtreecommitdiffstats
path: root/src/core/render_widget_host_view_qt.cpp
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 /src/core/render_widget_host_view_qt.cpp
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>
Diffstat (limited to 'src/core/render_widget_host_view_qt.cpp')
-rw-r--r--src/core/render_widget_host_view_qt.cpp36
1 files changed, 34 insertions, 2 deletions
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.