Index: third_party/WebKit/Source/core/input/EventHandlingUtil.cpp |
diff --git a/third_party/WebKit/Source/core/input/EventHandlingUtil.cpp b/third_party/WebKit/Source/core/input/EventHandlingUtil.cpp |
index 01231c1ead02de6c96e69bcd60ed4bd8a7f881b7..ad8c383f1480331435709331a8c09a5a55684fb2 100644 |
--- a/third_party/WebKit/Source/core/input/EventHandlingUtil.cpp |
+++ b/third_party/WebKit/Source/core/input/EventHandlingUtil.cpp |
@@ -59,5 +59,58 @@ WebInputEventResult toWebInputEventResult( |
} |
} |
+PaintLayer* layerForNode(Node* node) |
+{ |
+ if (!node) |
+ return nullptr; |
+ |
+ LayoutObject* layoutObject = node->layoutObject(); |
+ if (!layoutObject) |
+ return nullptr; |
+ |
+ PaintLayer* layer = layoutObject->enclosingLayer(); |
+ if (!layer) |
+ return nullptr; |
+ |
+ return layer; |
+} |
+ |
+ScrollableArea* associatedScrollableArea(const PaintLayer* layer) |
+{ |
+ if (PaintLayerScrollableArea* scrollableArea = layer->getScrollableArea()) { |
+ if (scrollableArea->scrollsOverflow()) |
+ return scrollableArea; |
+ } |
+ |
+ return nullptr; |
+} |
+ |
+ContainerNode* parentForClickEvent(const Node& node) |
+{ |
+ // IE doesn't dispatch click events for mousedown/mouseup events across form |
+ // controls. |
+ if (node.isHTMLElement() && toHTMLElement(node).isInteractiveContent()) |
+ return nullptr; |
+ |
+ return FlatTreeTraversal::parent(node); |
+} |
+ |
+LayoutPoint contentPointFromRootFrame(LocalFrame* frame, const IntPoint& pointInRootFrame) |
+{ |
+ FrameView* view = frame->view(); |
+ // FIXME: Is it really OK to use the wrong coordinates here when view is 0? |
+ // Historically the code would just crash; this is clearly no worse than that. |
+ return view ? view->rootFrameToContents(pointInRootFrame) : pointInRootFrame; |
+} |
+ |
+MouseEventWithHitTestResults performMouseEventHitTest(LocalFrame* frame, |
+ const HitTestRequest& request, const PlatformMouseEvent& mev) |
+{ |
+ DCHECK(frame); |
+ DCHECK(frame->document()); |
+ |
+ return frame->document()->performMouseEventHitTest(request, contentPointFromRootFrame(frame, mev.position()), mev); |
+} |
+ |
} // namespace EventHandlingUtil |
} // namespace blink |