[webkit-changes] [WebKit/WebKit] 9c20db: _WKHitTestResult should expose a frameInfo property

Jeff Miller noreply at github.com
Mon Nov 6 21:27:25 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 9c20db5a05181f63b0989b73da5faf057f0c2445
      https://github.com/WebKit/WebKit/commit/9c20db5a05181f63b0989b73da5faf057f0c2445
  Author: Jeff Miller <jeffm at apple.com>
  Date:   2023-11-06 (Mon, 06 Nov 2023)

  Changed paths:
    M Source/WebCore/rendering/HitTestResult.cpp
    M Source/WebCore/rendering/HitTestResult.h
    M Source/WebKit/Shared/API/Cocoa/_WKHitTestResult.h
    M Source/WebKit/Shared/API/Cocoa/_WKHitTestResult.mm
    M Source/WebKit/Shared/WebHitTestResultData.cpp
    M Source/WebKit/Shared/WebHitTestResultData.h
    M Source/WebKit/Shared/WebHitTestResultData.serialization.in
    M Source/WebKit/UIProcess/API/APIContextMenuElementInfoMac.h
    M Source/WebKit/UIProcess/API/APIHitTestResult.cpp
    M Source/WebKit/UIProcess/API/APIHitTestResult.h
    M Source/WebKit/UIProcess/API/C/WKPage.cpp
    M Source/WebKit/UIProcess/API/Cocoa/WKNavigationAction.mm
    M Source/WebKit/UIProcess/API/Cocoa/_WKContextMenuElementInfo.mm
    M Source/WebKit/UIProcess/Cocoa/UIDelegate.mm
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/mac/WKImmediateActionController.mm
    M Tools/TestWebKitAPI/Tests/mac/ContextMenuTests.mm

  Log Message:
  -----------
  _WKHitTestResult should expose a frameInfo property
https://bugs.webkit.org/show_bug.cgi?id=263729
rdar://116254673

Reviewed by Chris Dumez and Alex Christensen.

Add a frameInfo property to _WKHitTestResult and the plumbing to support it.

* Source/WebCore/rendering/HitTestResult.cpp:
(WebCore::HitTestResult::frame const):
Added, this is the same frame returned by WKBundleHitTestResultGetFrame().

* Source/WebCore/rendering/HitTestResult.h:
* Source/WebKit/Shared/API/Cocoa/_WKHitTestResult.h:
* Source/WebKit/Shared/API/Cocoa/_WKHitTestResult.mm:
(-[_WKHitTestResult frameInfo]):
Added. Note that we need the page in order to create the WKFrameInfo.

* Source/WebKit/Shared/WebHitTestResultData.cpp:
(WebKit::WebHitTestResultData::WebHitTestResultData):
(WebKit::WebHitTestResultData::frameInfoDataFromHitTestResult):
Added. Creates a WebFrame from a LocalFrame and uses it to get the FrameInfoData.

* Source/WebKit/Shared/WebHitTestResultData.h:
* Source/WebKit/Shared/WebHitTestResultData.serialization.in:
* Source/WebKit/UIProcess/API/APIContextMenuElementInfoMac.h:
ContextMenuElementInfoMac now keeps track of the page.

* Source/WebKit/UIProcess/API/APIHitTestResult.cpp:
(API::HitTestResult::create):
API::HitTestResult now keeps track of the page.

* Source/WebKit/UIProcess/API/APIHitTestResult.h:
(API::HitTestResult::page):
(API::HitTestResult::frameInfo const):
(API::HitTestResult::HitTestResult):
* Source/WebKit/UIProcess/API/C/WKPage.cpp:
(WKPageSetPageContextMenuClient):
(WKPageSetPageUIClient):
* Source/WebKit/UIProcess/API/Cocoa/WKNavigationAction.mm:
(-[WKNavigationAction _hitTestResult]):
We require a page to create an API::HitTestResult.

* Source/WebKit/UIProcess/API/Cocoa/_WKContextMenuElementInfo.mm:
(-[_WKContextMenuElementInfo hitTestResult]):
* Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::ContextMenuClient::menuFromProposedMenu):
(WebKit::UIDelegate::UIClient::mouseDidMoveOverElement):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::mouseDidMoveOverElement):
* Source/WebKit/UIProcess/mac/WKImmediateActionController.mm:
(-[WKImmediateActionController _webHitTestResult]):
* Tools/TestWebKitAPI/Tests/mac/ContextMenuTests.mm:
(TestWebKitAPI::TEST):'
Added a new HitTestResultWhenClickingInSubframe test. Verifies that right-clicking in an iframe
correctly sets frameInfo in _WKHitTestResult.

Canonical link: https://commits.webkit.org/270308@main




More information about the webkit-changes mailing list