diff options
author | dmazzoni <dmazzoni@chromium.org> | 2014-11-04 21:16:29 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-11-05 05:17:50 +0000 |
commit | ab9f8645f966c4d01a8009ac6a67a7c7f082e273 (patch) | |
tree | bd9282e8bb000b5cf5ba0e1cd5382bc1e3d40cc3 /content/renderer | |
parent | fcffcb17a43f6d0ac30cc5b8260028ad6489d6e9 (diff) | |
download | chromium_src-ab9f8645f966c4d01a8009ac6a67a7c7f082e273.zip chromium_src-ab9f8645f966c4d01a8009ac6a67a7c7f082e273.tar.gz chromium_src-ab9f8645f966c4d01a8009ac6a67a7c7f082e273.tar.bz2 |
Add Android AX functions to set the value and selection of a text field.
BUG=414571
Review URL: https://codereview.chromium.org/681503002
Cr-Commit-Position: refs/heads/master@{#302756}
Diffstat (limited to 'content/renderer')
-rw-r--r-- | content/renderer/accessibility/renderer_accessibility.cc | 28 | ||||
-rw-r--r-- | content/renderer/accessibility/renderer_accessibility.h | 1 |
2 files changed, 21 insertions, 8 deletions
diff --git a/content/renderer/accessibility/renderer_accessibility.cc b/content/renderer/accessibility/renderer_accessibility.cc index 18fb07f..e8da448 100644 --- a/content/renderer/accessibility/renderer_accessibility.cc +++ b/content/renderer/accessibility/renderer_accessibility.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" @@ -71,6 +72,7 @@ bool RendererAccessibility::OnMessageReceived(const IPC::Message& message) { OnScrollToMakeVisible) IPC_MESSAGE_HANDLER(AccessibilityMsg_ScrollToPoint, 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) @@ -425,15 +427,25 @@ void RendererAccessibility::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 RendererAccessibility::OnSetValue( + int acc_obj_id, + base::string16 value) { + 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); } } // namespace content diff --git a/content/renderer/accessibility/renderer_accessibility.h b/content/renderer/accessibility/renderer_accessibility.h index d757c5a..6bac56e 100644 --- a/content/renderer/accessibility/renderer_accessibility.h +++ b/content/renderer/accessibility/renderer_accessibility.h @@ -92,6 +92,7 @@ class CONTENT_EXPORT RendererAccessibility : public RenderFrameObserver { void OnScrollToPoint(int acc_obj_id, gfx::Point point); void OnSetFocus(int acc_obj_id); void OnSetTextSelection(int acc_obj_id, int start_offset, int end_offset); + void OnSetValue(int acc_obj_id, base::string16 value); // Events from Blink are collected until they are ready to be // sent to the browser. |