diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-07-18 15:09:20 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-07-23 16:50:35 +0200 |
commit | 69febf7ef05ca5cbec12417cde1d1c5013e064b5 (patch) | |
tree | 51e9f0018d30f2093af62fa7a6e4cd4f5332a593 /src/core | |
parent | a21db7a3b5e1300637ac5cfca299409afef1afa7 (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')
-rw-r--r-- | src/core/qtwebengine_extras.gypi | 2 | ||||
-rw-r--r-- | 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<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. |