-
bdakin authored
Reviewed by Darin. This is the WebCore half of pushing elementAtPoint and the backend of WebElementDictionary into WebCore. Most of the changes below are to accommodate one of the following: -NodeInfo is now a stand-alone class called HitTestResult. Previously it was defined in RenderObject.h, but not for any particular reason. The WebElementDictionary functionality that was pushed into WebCore has been pushed specifically into the this class. In fact, WebElementDictionary now keeps a HitTestResult as a member varibale. -The enumeration AccessPolicy is now called ClipboardAccessPolicy and is defined in its own header. It was previously defined in ClipboardMac.h, but is now defined independently to avoid including ClipboardMac.h from within FrameMac.h since FrameMac.h is now included in WebElementDictionary.m in WebKit. -Element now has a virtual target() for the sake of NodeInfo::targetFrame() * WebCore.exp: Several WebCore functions are newly called from WebKit, so they have been added here. * WebCore.xcodeproj/project.pbxproj: * bindings/objc/DOM.mm: Must include Image.h because of adjustments to ClipboardMac. * bridge/mac/FrameMac.h: Adjust to HitTestResult changes. * bridge/mac/FrameMac.mm: (WebCore::FrameMac::freeClipboard): Adjust to ClipboardAccessPolicy and HitTestResult changes. (WebCore::FrameMac::eventMayStartDrag): Same. (WebCore::FrameMac::handleMouseMoveEvent): Same. (WebCore::FrameMac::dispatchCPPEvent): Same. (WebCore::FrameMac::mayDHTMLCut): Same. (WebCore::FrameMac::mayDHTMLCopy): Same. (WebCore::FrameMac::mayDHTMLPaste): Same. (WebCore::FrameMac::tryDHTMLCut): Same (WebCore::FrameMac::tryDHTMLCopy): Same. (WebCore::FrameMac::tryDHTMLPaste): Same. * bridge/mac/WebCoreAXObject.mm: (-[WebCoreAXObject doAXTextMarkerForPosition:]): Adjust to HitTestResult changes. (-[WebCoreAXObject accessibilityHitTest:]): Same. * bridge/mac/WebCoreFrameBridge.h: Same. * bridge/mac/WebCoreFrameBridge.mm: (-[WebCoreFrameBridge dragOperationForDraggingInfo:]): Adjust for ClipboardAccessPolicy changes. (-[WebCoreFrameBridge dragExitedWithDraggingInfo:]): Same. (-[WebCoreFrameBridge concludeDragForDraggingInfo:]): Same. * dom/Document.cpp: (WebCore::Document::elementFromPoint): Adjust for HitTestResult changes. (WebCore::Document::prepareMouseEvent): Same. * dom/Element.h: (WebCore::Element::target): Now has a virtual target() * html/HTMLAnchorElement.h: Same. * html/HTMLAreaElement.cpp: (WebCore::HTMLAreaElement::mapMouseEvent): Adjust for HitTestResult changes. * html/HTMLAreaElement.h: Virtual target() * html/HTMLBaseElement.h: (WebCore::HTMLBaseElement::target): Same. * html/HTMLFormElement.h: Same. * html/HTMLLinkElement.h: Same. * html/HTMLMapElement.cpp: (WebCore::HTMLMapElement::mapMouseEvent): Adjust for HitTestResult changes. * html/HTMLMapElement.h: Same. * page/Frame.cpp: (WebCore::Frame::isPointInsideSelection): Same. (WebCore::Frame::hitTestResultAtPoint): Same. * page/Frame.h: Same. * page/FrameView.cpp: (WebCore::FrameView::handleWheelEvent): Same. * platform/mac/ClipboardAccessPolicy.h: Added. (WebCore::): * platform/mac/ClipboardMac.h: Remove definition of AccessPolicy, include ClipboardAccessPolicy.h, and rename AccessPolicy to ClipboardAccessPolicy. * platform/mac/ClipboardMac.mm: Rename ClipboardAccessPolicy. (WebCore::ClipboardMac::ClipboardMac): (WebCore::ClipboardMac::setAccessPolicy): (WebCore::ClipboardMac::clearData): (WebCore::ClipboardMac::clearAllData): (WebCore::ClipboardMac::getData): (WebCore::ClipboardMac::setData): (WebCore::ClipboardMac::types): (WebCore::ClipboardMac::setDragImage): (WebCore::ClipboardMac::setDropEffect): (WebCore::ClipboardMac::setEffectAllowed): * rendering/EllipsisBox.cpp: (WebCore::EllipsisBox::nodeAtPoint): Adjust for HitTestResult changes. * rendering/EllipsisBox.h: * rendering/HitTestResult.cpp: Added. (WebCore::HitTestResult::HitTestResult): (WebCore::HitTestResult::~HitTestResult): (WebCore::HitTestResult::operator=): (WebCore::HitTestResult::setInnerNode): (WebCore::HitTestResult::setInnerNonSharedNode): (WebCore::HitTestResult::setURLElement): (WebCore::HitTestResult::setScrollbar): (WebCore::HitTestResult::targetFrame): (WebCore::HitTestResult::boundingBox): (WebCore::HitTestResult::isSelected): (WebCore::HitTestResult::title): * rendering/HitTestResult.h: Added. (WebCore::HitTestResult::readonly): (WebCore::HitTestResult::active): (WebCore::HitTestResult::mouseMove): (WebCore::HitTestResult::innerNode): (WebCore::HitTestResult::innerNonSharedNode): (WebCore::HitTestResult::point): (WebCore::HitTestResult::URLElement): (WebCore::HitTestResult::scrollbar): (WebCore::HitTestResult::setPoint): (WebCore::HitTestResult::setReadonly): (WebCore::HitTestResult::setActive): (WebCore::HitTestResult::setMouseMove): * rendering/InlineBox.cpp: (WebCore::InlineBox::nodeAtPoint): Adjust to HitTestResult changes. * rendering/InlineBox.h: Same. * rendering/InlineFlowBox.cpp: (WebCore::InlineFlowBox::nodeAtPoint): Same. * rendering/InlineFlowBox.h: Same. * rendering/InlineTextBox.cpp: (WebCore::InlineTextBox::nodeAtPoint): Same. * rendering/InlineTextBox.h: Same. * rendering/RenderBlock.cpp: (WebCore::RenderBlock::isPointInScrollbar): Same. (WebCore::RenderBlock::nodeAtPoint): Same. * rendering/RenderBlock.h: Same. * rendering/RenderBox.cpp: (WebCore::RenderBox::nodeAtPoint): Same. * rendering/RenderBox.h: Same. * rendering/RenderFlow.cpp: (WebCore::RenderFlow::hitTestLines): Same. * rendering/RenderFlow.h: Same. * rendering/RenderForeignObject.cpp: (WebCore::RenderForeignObject::nodeAtPoint): Same. * rendering/RenderForeignObject.h: Same. * rendering/RenderFrameSet.cpp: (WebCore::RenderFrameSet::nodeAtPoint): Same. * rendering/RenderFrameSet.h: Same. * rendering/RenderImage.cpp: (WebCore::RenderImage::nodeAtPoint): Same. * rendering/RenderImage.h: Same. * rendering/RenderInline.cpp: (WebCore::RenderInline::nodeAtPoint): Same. * rendering/RenderInline.h: Same. * rendering/RenderLayer.cpp: (WebCore::RenderLayer::autoscroll): Same. (WebCore::RenderLayer::hitTest): Same. (WebCore::RenderLayer::hitTestLayer): Same. (WebCore::RenderLayer::updateHoverActiveState): Same. * rendering/RenderLayer.h: Same. * rendering/RenderListBox.cpp: (WebCore::RenderListBox::isPointInScrollbar): Same. * rendering/RenderListBox.h: Same. * rendering/RenderObject.cpp: (WebCore::RenderObject::hitTest): Same. (WebCore::RenderObject::setInnerNode): Same. (WebCore::RenderObject::nodeAtPoint): Same. * rendering/RenderObject.h: Remove NodeInfo class and forward declare HitTestResult. * rendering/RenderPath.cpp: (WebCore::RenderPath::nodeAtPoint): Adjust to HitTestResult changes. * rendering/RenderPath.h: Same. * rendering/RenderSVGImage.cpp: (WebCore::RenderSVGImage::nodeAtPoint): Same. * rendering/RenderSVGImage.h: Same * rendering/RenderSVGText.cpp: (WebCore::RenderSVGText::nodeAtPoint): Same. * rendering/RenderSVGText.h: Same. * rendering/RenderTableRow.cpp: (WebCore::RenderTableRow::nodeAtPoint): Same. * rendering/RenderTableRow.h: Same. * rendering/RenderTableSection.cpp: (WebCore::RenderTableSection::nodeAtPoint): Same. * rendering/RenderTableSection.h: Same. * rendering/RenderText.h: Same. (WebCore::RenderText::nodeAtPoint): Same. * rendering/RenderTextControl.cpp: (WebCore::RenderTextControl::nodeAtPoint): Same. * rendering/RenderTextControl.h: Same. * rendering/RootInlineBox.cpp: (WebCore::RootInlineBox::nodeAtPoint): Same. * rendering/RootInlineBox.h: Same. WebKit: Reviewed by Darin. This is the WebKit half of pushing the guts of elementAtPoint and WebElementDictionary into WebCore. Among other things, this patch makes WebElementDictionary.m and WebHTMLView.m Objective-C++ * MigrateHeaders.make: Add DOMElementInternal.h to the list of headers to migrate. * Misc/WebElementDictionary.h: Replaced DOMNode, DOMElement, and NSPoint member variables with a HitTestResult member variable. * Misc/WebElementDictionary.m: (addLookupKey): Formatting. (-[WebElementDictionary initWithHitTestResult:]): Constructor just takes a HitTestResult now and sets the member variable. (-[WebElementDictionary dealloc]): delete HitTestResult. (-[WebElementDictionary finalize]): Address HitTestResult. (-[WebElementDictionary _domNode]): Use HitTestResult and call into WebCore. (-[WebElementDictionary objectForKey:]): Same. (-[WebElementDictionary _webFrame]): Same. (-[WebElementDictionary _targetWebFrame]): Same. (-[WebElementDictionary _title]): Same. (-[WebElementDictionary _imageRect]): Same. (-[WebElementDictionary _isSelected]): Same. * WebKit.xcodeproj/project.pbxproj: * WebView/WebFrame.mm: (core): Convert from DOMNode* to Node* (kit): Convert from Node* to DOMNode* * WebView/WebFrameInternal.h: Support for the above. * WebView/WebHTMLView.m: (-[WebHTMLView elementAtPoint:allowShadowContent:]): Call directly into Frame.cpp to get HitTestResult. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@17399 268f45cc-cd09-0410-ab3c-d52691b4dbfc
c1a5a83b