Index: ui/accessibility/platform/ax_platform_node_win.cc |
diff --git a/ui/accessibility/platform/ax_platform_node_win.cc b/ui/accessibility/platform/ax_platform_node_win.cc |
index 6dcdc91e23134602f6be614e7d9fd9f4f6b9761c..801758492f9abd52d3847f6d55d64538c39d0ae5 100644 |
--- a/ui/accessibility/platform/ax_platform_node_win.cc |
+++ b/ui/accessibility/platform/ax_platform_node_win.cc |
@@ -538,8 +538,6 @@ STDMETHODIMP AXPlatformNodeWin::put_accValue(VARIANT var_id, |
return E_FAIL; |
} |
-// IAccessible functions not supported. |
- |
STDMETHODIMP AXPlatformNodeWin::get_accSelection(VARIANT* selected) { |
COM_OBJECT_VALIDATE_1_ARG(selected); |
if (selected) |
@@ -549,7 +547,17 @@ STDMETHODIMP AXPlatformNodeWin::get_accSelection(VARIANT* selected) { |
STDMETHODIMP AXPlatformNodeWin::accSelect( |
LONG flagsSelect, VARIANT var_id) { |
- return E_NOTIMPL; |
+ AXPlatformNodeWin* target; |
+ COM_OBJECT_VALIDATE_VAR_ID_AND_GET_TARGET(var_id, target); |
+ |
+ if (flagsSelect & SELFLAG_TAKEFOCUS) { |
+ ui::AXActionData action_data; |
+ action_data.action = ui::AX_ACTION_FOCUS; |
+ target->delegate_->AccessibilityPerformAction(action_data); |
+ return S_OK; |
+ } |
+ |
+ return S_FALSE; |
} |
STDMETHODIMP AXPlatformNodeWin::get_accHelpTopic( |