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 149a4ed46bff2259e2c1d4219d06d9afd876468c..a8bea1f16584294d7c7718cf115a0a38f4555fbc 100644 |
--- a/content/renderer/accessibility/renderer_accessibility_complete.cc |
+++ b/content/renderer/accessibility/renderer_accessibility_complete.cc |
@@ -73,6 +73,7 @@ bool RendererAccessibilityComplete::OnMessageReceived( |
OnScrollToPoint) |
IPC_MESSAGE_HANDLER(AccessibilityMsg_SetTextSelection, |
OnSetTextSelection) |
+ IPC_MESSAGE_HANDLER(AccessibilityMsg_HitTest, OnHitTest) |
IPC_MESSAGE_HANDLER(AccessibilityMsg_FatalError, OnFatalError) |
IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP() |
@@ -343,6 +344,19 @@ void RendererAccessibilityComplete::OnSetTextSelection( |
} |
} |
+void RendererAccessibilityComplete::OnHitTest(gfx::Point point) { |
+ const WebDocument& document = GetMainDocument(); |
+ if (document.isNull()) |
+ return; |
+ WebAXObject root_obj = document.accessibilityObject(); |
+ if (!root_obj.updateBackingStoreAndCheckValidity()) |
+ return; |
+ |
+ WebAXObject obj = root_obj.hitTest(point); |
+ if (!obj.isDetached()) |
+ HandleAXEvent(obj, ui::AX_EVENT_HOVER); |
+} |
+ |
void RendererAccessibilityComplete::OnEventsAck() { |
DCHECK(ack_pending_); |
ack_pending_ = false; |