Skip to content
  • hayato@chromium.org's avatar
    Allow ShadowContents in HitTests by default. · af1544e8
    hayato@chromium.org authored
    https://bugs.webkit.org/show_bug.cgi?id=113171
    
    Reviewed by Dimitri Glazkov.
    
    Source/WebCore:
    
    HitTestRequest is widely used in WebCore, but AllowShadowContents
    flag is not turned on by default.  In most places, we can set the
    flag on.
    
    This change makes HitTests allow shadow contents by default.
    
    To track all existing HitTests which do not allow shadow contents,
    and discourage such a HitTest in the future, I've introduced
    disallowShadowContenet flag so that callers must turn on this flag
    explicitly if they want to disallow shadow contents in their HitTests.
    
    This change should be refactoring and should not include any
    behavior changes.  After this change, we'll investigate each place
    where disallowShadowContents is used step by step and get rid of
    the flag if it is okay to remove.
    
    No new tests, no behavior change.
    
    * dom/Document.h:
    (Document):
    * dom/TreeScope.cpp:
    (WebCore::nodeFromPoint):
    * editing/FrameSelection.cpp:
    (WebCore::FrameSelection::contains):
    * page/DragController.cpp:
    (WebCore::elementUnderMouse):
    (WebCore::DragController::canProcessDrag):
    (WebCore::DragController::startDrag):
    * page/EventHandler.cpp:
    (WebCore::EventHandler::handleMouseDraggedEvent):
    (WebCore::EventHandler::eventMayStartDrag):
    (WebCore::EventHandler::updateSelectionForMouseDrag):
    (WebCore::EventHandler::hitTestResultAtPoint):
    (WebCore::EventHandler::handleMousePressEvent):
    (WebCore::EventHandler::handleMouseDoubleClickEvent):
    (WebCore::EventHandler::handleMouseMoveEvent):
    (WebCore::EventHandler::handleMouseReleaseEvent):
    (WebCore::EventHandler::updateDragAndDrop):
    (WebCore::EventHandler::isInsideScrollbar):
    (WebCore::EventHandler::handleWheelEvent):
    (WebCore::EventHandler::handleGestureEvent):
    (WebCore::EventHandler::handleGestureLongPress):
    (WebCore::EventHandler::handleGestureScrollBegin):
    (WebCore::EventHandler::bestClickableNodeForTouchPoint):
    (WebCore::EventHandler::bestContextMenuNodeForTouchPoint):
    (WebCore::EventHandler::bestZoomableAreaForTouchPoint):
    (WebCore::EventHandler::sendContextMenuEvent):
    (WebCore::EventHandler::sendContextMenuEventForKey):
    (WebCore::EventHandler::hoverTimerFired):
    (WebCore::EventHandler::dragSourceEndedAt):
    (WebCore::EventHandler::handleDrag):
    (WebCore::EventHandler::handleTouchEvent):
    (WebCore::EventHandler::dispatchSyntheticTouchEventIfEnabled):
    * page/EventHandler.h:
    (EventHandler):
    * page/FocusController.cpp:
    (WebCore::updateFocusCandidateIfNeeded):
    * page/Frame.cpp:
    (WebCore::Frame::visiblePositionForPoint):
    * page/TouchDisambiguation.cpp:
    (WebCore::findGoodTouchTargets):
    * rendering/HitTestRequest.h:
    (WebCore::HitTestRequest::disallowsShadowContent):
    * rendering/HitTestResult.cpp:
    (WebCore::HitTestResult::addNodeToRectBasedTestResult):
    * rendering/RenderFlowThread.cpp:
    (WebCore::RenderFlowThread::hitTestFlowThreadPortionInRegion):
    * rendering/svg/RenderSVGResourceClipper.cpp:
    (WebCore::RenderSVGResourceClipper::hitTestClipContent):
    * testing/Internals.cpp:
    (WebCore::Internals::nodesFromRect):
    
    Source/WebKit/blackberry:
    
    * Api/WebPage.cpp:
    (BlackBerry::WebKit::WebPagePrivate::hitTestResult):
    * WebKitSupport/FatFingers.cpp:
    (BlackBerry::WebKit::FatFingers::getNodesFromRect):
    * WebKitSupport/ProximityDetector.cpp:
    (BlackBerry::WebKit::ProximityDetector::findBestPoint):
    * WebKitSupport/SelectionHandler.cpp:
    (BlackBerry::WebKit::visiblePositionForPointIgnoringClipping):
    
    Source/WebKit/chromium:
    
    * src/ContextMenuClientImpl.cpp:
    (WebKit::selectMisspelledWord):
    * src/WebFrameImpl.cpp:
    (WebKit::WebFrameImpl::visiblePositionForWindowPoint):
    * src/WebPluginContainerImpl.cpp:
    (WebKit::WebPluginContainerImpl::isRectTopmost):
    * src/WebViewImpl.cpp:
    (WebKit::WebViewImpl::computeBlockBounds):
    (WebKit::WebViewImpl::bestTapNode):
    
    Source/WebKit/efl:
    
    * ewk/ewk_frame.cpp:
    (ewk_frame_hit_test_new):
    
    Source/WebKit/gtk:
    
    * webkit/webkitwebinspector.cpp:
    (webkit_web_inspector_inspect_coordinates):
    * webkit/webkitwebview.cpp:
    (prepareMouseEventForFrame):
    (webkit_web_view_get_hit_test_result):
    
    Source/WebKit/mac:
    
    * WebView/WebFrame.mm:
    (-[WebFrame elementAtPoint:]):
    * WebView/WebHTMLView.mm:
    (-[WebHTMLView elementAtPoint:allowShadowContent:]):
    
    Source/WebKit/qt:
    
    * WebCoreSupport/QWebFrameAdapter.cpp:
    (QWebFrameAdapter::hitTestContent):
    
    Source/WebKit/win:
    
    * WebView.cpp:
    (WebView::gestureNotify):
    
    Source/WebKit2:
    
    * WebProcess/WebPage/WebFrame.cpp:
    (WebKit::WebFrame::hitTest):
    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::highlightPotentialActivation):
    (WebKit::WebPage::findZoomableAreaForPoint):
    (WebKit::WebPage::determinePrimarySnapshottedPlugIn):
    * WebProcess/WebPage/mac/WebPageMac.mm:
    (WebKit::WebPage::shouldDelayWindowOrderingEvent):
    (WebKit::WebPage::acceptsFirstMouse):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146961 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    af1544e8