Index: content/renderer/accessibility/renderer_accessibility_complete.cc |
diff --git a/content/renderer/accessibility/renderer_accessibility_complete.cc b/content/renderer/accessibility/renderer_accessibility_complete.cc |
index 28536b03649a14acd8ad1699150069d160bcf8b6..8cab05a1bfeb62dda8bde452b6d7f418e31fe838 100644 |
--- a/content/renderer/accessibility/renderer_accessibility_complete.cc |
+++ b/content/renderer/accessibility/renderer_accessibility_complete.cc |
@@ -8,6 +8,7 @@ |
#include "base/bind.h" |
#include "base/message_loop/message_loop.h" |
+#include "base/strings/utf_string_conversions.h" |
#include "content/renderer/accessibility/blink_ax_enum_conversion.h" |
#include "content/renderer/render_frame_impl.h" |
#include "content/renderer/render_view_impl.h" |
@@ -80,6 +81,7 @@ bool RendererAccessibilityComplete::OnMessageReceived( |
OnScrollToPoint) |
IPC_MESSAGE_HANDLER(AccessibilityMsg_SetTextSelection, |
OnSetTextSelection) |
+ IPC_MESSAGE_HANDLER(AccessibilityMsg_SetValue, OnSetValue) |
IPC_MESSAGE_HANDLER(AccessibilityMsg_HitTest, OnHitTest) |
IPC_MESSAGE_HANDLER(AccessibilityMsg_Reset, OnReset) |
IPC_MESSAGE_HANDLER(AccessibilityMsg_FatalError, OnFatalError) |
@@ -377,15 +379,24 @@ void RendererAccessibilityComplete::OnSetTextSelection( |
return; |
} |
- // TODO(dmazzoni): support elements other than <input>. |
- blink::WebNode node = obj.node(); |
- if (!node.isNull() && node.isElementNode()) { |
- blink::WebElement element = node.to<blink::WebElement>(); |
- blink::WebInputElement* input_element = |
- blink::toWebInputElement(&element); |
- if (input_element && input_element->isTextField()) |
- input_element->setSelectionRange(start_offset, end_offset); |
+ obj.setSelectedTextRange(start_offset, end_offset); |
+} |
+ |
+void RendererAccessibilityComplete::OnSetValue( |
+ int acc_obj_id, base::string16 value) { |
nasko
2014/10/27 17:18:25
Each parameter must be on its own line.
dmazzoni
2014/11/04 23:22:53
Done.
|
+ const WebDocument& document = GetMainDocument(); |
+ if (document.isNull()) |
+ return; |
+ |
+ WebAXObject obj = document.accessibilityObjectFromID(acc_obj_id); |
+ if (obj.isDetached()) { |
+#ifndef NDEBUG |
+ LOG(WARNING) << "SetTextSelection on invalid object id " << acc_obj_id; |
+#endif |
+ return; |
} |
+ |
+ obj.setValue(value); |
} |
void RendererAccessibilityComplete::OnHitTest(gfx::Point point) { |