Implement document.elementsFromPoint
https://bugs.webkit.org/show_bug.cgi?id=153137
Patch by Ali Juma <ajuma@chromium.org> on 2017-07-26
Reviewed by Simon Fraser.
LayoutTests/imported/w3c:
Add tests from upstream pull request https://github.com/w3c/web-platform-tests/pull/6568.
* web-platform-tests/cssom-view/elementsFromPoint-expected.txt: Added.
* web-platform-tests/cssom-view/elementsFromPoint-iframes-expected.txt: Added.
* web-platform-tests/cssom-view/elementsFromPoint-iframes.html: Added.
* web-platform-tests/cssom-view/elementsFromPoint-invalid-cases-expected.txt: Added.
* web-platform-tests/cssom-view/elementsFromPoint-invalid-cases.html: Added.
* web-platform-tests/cssom-view/elementsFromPoint-shadowroot-expected.txt: Added.
* web-platform-tests/cssom-view/elementsFromPoint-shadowroot.html: Added.
* web-platform-tests/cssom-view/elementsFromPoint-simple-expected.txt: Added.
* web-platform-tests/cssom-view/elementsFromPoint-simple.html: Added.
* web-platform-tests/cssom-view/elementsFromPoint-svg-expected.txt: Added.
* web-platform-tests/cssom-view/elementsFromPoint-svg.html: Added.
* web-platform-tests/cssom-view/elementsFromPoint-table-expected.txt: Added.
* web-platform-tests/cssom-view/elementsFromPoint-table.html: Added.
* web-platform-tests/cssom-view/negativeMargins-expected.txt:
* web-platform-tests/cssom-view/resources/elementsFromPoint.js: Added.
(nodeToString.prototype.else):
(nodeListToString):
(assertElementsFromPoint):
(checkElementsFromPointFourCorners):
* web-platform-tests/cssom-view/resources/iframe1.html: Added.
* web-platform-tests/cssom-view/resources/iframe2.html: Added.
Source/WebCore:
This ports Blink's implementation of elementsFromPoint, from the
following patches by Philip Rogers (pdr@chromium.org):
-https://src.chromium.org/viewvc/blink?revision=190686&view=revision
-https://src.chromium.org/viewvc/blink?revision=191240&view=revision
-https://src.chromium.org/viewvc/blink?revision=199214&view=revision
Tests: imported/w3c/web-platform-tests/cssom-view/elementsFromPoint-iframes.html
imported/w3c/web-platform-tests/cssom-view/elementsFromPoint-invalid-cases.html
imported/w3c/web-platform-tests/cssom-view/elementsFromPoint-shadowroot.html
imported/w3c/web-platform-tests/cssom-view/elementsFromPoint-simple.html
imported/w3c/web-platform-tests/cssom-view/elementsFromPoint-svg.html
imported/w3c/web-platform-tests/cssom-view/elementsFromPoint-table.html
* dom/DocumentOrShadowRoot.idl:
* dom/TreeScope.cpp:
(WebCore::absolutePointIfNotClipped):
(WebCore::TreeScope::nodeFromPoint):
(WebCore::TreeScope::elementFromPoint):
(WebCore::TreeScope::elementsFromPoint):
* dom/TreeScope.h:
* page/EventHandler.cpp:
(WebCore::EventHandler::hitTestResultAtPoint):
* rendering/EllipsisBox.cpp:
(WebCore::EllipsisBox::nodeAtPoint):
* rendering/HitTestRequest.h:
(WebCore::HitTestRequest::HitTestRequest):
(WebCore::HitTestRequest::resultIsElementList):
(WebCore::HitTestRequest::includesAllElementsUnderPoint):
* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::HitTestResult):
(WebCore::HitTestResult::operator=):
(WebCore::HitTestResult::addNodeToListBasedTestResult):
(WebCore::HitTestResult::append):
(WebCore::HitTestResult::listBasedTestResult):
(WebCore::HitTestResult::mutableListBasedTestResult):
(WebCore::HitTestResult::addNodeToRectBasedTestResult): Deleted.
(WebCore::HitTestResult::rectBasedTestResult): Deleted.
(WebCore::HitTestResult::mutableRectBasedTestResult): Deleted.
* rendering/HitTestResult.h:
* rendering/InlineFlowBox.cpp:
(WebCore::InlineFlowBox::nodeAtPoint):
* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::nodeAtPoint):
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::nodeAtPoint):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::nodeAtPoint):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::nodeAtPoint):
* rendering/RenderInline.cpp:
(WebCore::RenderInline::hitTestCulledInline):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::hitTestFixedLayersInNamedFlows):
(WebCore::RenderLayer::hitTestLayer):
(WebCore::RenderLayer::hitTestContents):
(WebCore::RenderLayer::hitTestList):
(WebCore::RenderLayer::calculateClipRects):
* rendering/RenderTable.cpp:
(WebCore::RenderTable::nodeAtPoint):
* rendering/RenderTableSection.cpp:
(WebCore::RenderTableSection::nodeAtPoint):
* rendering/RenderWidget.cpp:
(WebCore::RenderWidget::nodeAtPoint):
* rendering/SimpleLineLayoutFunctions.cpp:
(WebCore::SimpleLineLayout::hitTestFlow):
* rendering/svg/RenderSVGContainer.cpp:
(WebCore::RenderSVGContainer::nodeAtFloatPoint):
* rendering/svg/RenderSVGImage.cpp:
(WebCore::RenderSVGImage::nodeAtFloatPoint):
* rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::nodeAtPoint):
* rendering/svg/RenderSVGShape.cpp:
(WebCore::RenderSVGShape::nodeAtFloatPoint):
* rendering/svg/SVGInlineTextBox.cpp:
(WebCore::SVGInlineTextBox::nodeAtPoint):
* testing/Internals.cpp:
(WebCore::Internals::nodesFromRect):
LayoutTests:
* TestExpectations: Unskip a test.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@219961
268f45cc-cd09-0410-ab3c-
d52691b4dbfc