Index: third_party/WebKit/Source/web/WebViewImpl.cpp |
diff --git a/third_party/WebKit/Source/web/WebViewImpl.cpp b/third_party/WebKit/Source/web/WebViewImpl.cpp |
index a20c4c51ab3c0c1208d5c916a971d4eb0e729c4e..6f670d37d17c972cad3066e025735e459336c8ef 100644 |
--- a/third_party/WebKit/Source/web/WebViewImpl.cpp |
+++ b/third_party/WebKit/Source/web/WebViewImpl.cpp |
@@ -2086,6 +2086,29 @@ bool WebViewImpl::handleInputEvent(const WebInputEvent& inputEvent) |
return true; |
} |
+ if (inputEvent.modifiers & WebInputEvent::IsTouchAccessibility |
+ && WebInputEvent::isMouseEventType(inputEvent.type)) { |
+ PlatformMouseEventBuilder pme(mainFrameImpl()->frameView(), static_cast<const WebMouseEvent&>(inputEvent)); |
+ |
+ // Find the right target frame. See issue 1186900. |
+ HitTestResult result = hitTestResultForRootFramePos(pme.position()); |
+ Frame* targetFrame; |
+ if (result.innerNodeOrImageMapImage()) |
+ targetFrame = result.innerNodeOrImageMapImage()->document().frame(); |
+ else |
+ targetFrame = m_page->focusController().focusedOrMainFrame(); |
+ |
+ if (targetFrame->isLocalFrame()) { |
+ LocalFrame* targetLocalFrame = toLocalFrame(targetFrame); |
+ Document* document = targetLocalFrame->document(); |
+ if (document) { |
+ AXObjectCache* cache = document->existingAXObjectCache(); |
+ if (cache) |
+ cache->onTouchAccessibilityHover(pme.position()); |
+ } |
+ } |
+ } |
+ |
// Report the event to be NOT processed by WebKit, so that the browser can handle it appropriately. |
if (m_ignoreInputEvents) |
return false; |