Index: ui/views/accessibility/native_view_accessibility_win.cc |
diff --git a/ui/views/accessibility/native_view_accessibility_win.cc b/ui/views/accessibility/native_view_accessibility_win.cc |
index a0367fe1f1e32fa930a4799b3149ea597cd05e84..279c99d3d29061ef20511ede0a825f11bfc68dd6 100644 |
--- a/ui/views/accessibility/native_view_accessibility_win.cc |
+++ b/ui/views/accessibility/native_view_accessibility_win.cc |
@@ -582,8 +582,8 @@ STDMETHODIMP NativeViewAccessibilityWin::get_accState( |
return S_OK; |
} |
-STDMETHODIMP NativeViewAccessibilityWin::get_accValue( |
- VARIANT var_id, BSTR* value) { |
+STDMETHODIMP NativeViewAccessibilityWin::get_accValue(VARIANT var_id, |
+ BSTR* value) { |
if (!IsValidId(var_id) || !value) |
return E_INVALIDARG; |
@@ -607,6 +607,24 @@ STDMETHODIMP NativeViewAccessibilityWin::get_accValue( |
return S_OK; |
} |
+STDMETHODIMP NativeViewAccessibilityWin::put_accValue(VARIANT var_id, |
+ BSTR new_value) { |
+ if (!IsValidId(var_id) || !new_value) |
+ return E_INVALIDARG; |
+ |
+ if (!view_) |
+ return E_FAIL; |
+ |
+ // Return an error if the view can't set the value. |
+ ui::AccessibleViewState state; |
+ view_->GetAccessibleState(&state); |
+ if (state.set_value_callback.is_null()) |
+ return E_FAIL; |
+ |
+ state.set_value_callback.Run(new_value); |
+ return S_OK; |
+} |
+ |
// IAccessible functions not supported. |
STDMETHODIMP NativeViewAccessibilityWin::get_accSelection(VARIANT* selected) { |
@@ -644,12 +662,6 @@ STDMETHODIMP NativeViewAccessibilityWin::put_accName( |
return E_NOTIMPL; |
} |
-STDMETHODIMP NativeViewAccessibilityWin::put_accValue( |
- VARIANT var_id, BSTR put_val) { |
- // Deprecated. |
- return E_NOTIMPL; |
-} |
- |
// |
// IAccessible2 |
// |