summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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.