From 69febf7ef05ca5cbec12417cde1d1c5013e064b5 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Fri, 18 Jul 2014 15:09:20 +0200 Subject: 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 --- src/core/qtwebengine_extras.gypi | 2 -- src/core/render_widget_host_view_qt.cpp | 36 +++++++++++++++++++++++++++++++-- 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(&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. -- cgit v1.2.3