Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 083e757c062131512df62e1581725994699b419a
      
https://github.com/WebKit/WebKit/commit/083e757c062131512df62e1581725994699b419a
  Author: Alex Christensen <achristen...@apple.com>
  Date:   2025-08-21 (Thu, 21 Aug 2025)

  Changed paths:
    M Source/WebKit/Shared/API/Cocoa/_WKHitTestResult.mm
    M Source/WebKit/Shared/FrameInfoData.cpp
    M Source/WebKit/Shared/FrameInfoData.h
    M Source/WebKit/Shared/FrameInfoData.serialization.in
    M Source/WebKit/UIProcess/API/APIFrameInfo.cpp
    M Source/WebKit/UIProcess/API/APIFrameInfo.h
    M Source/WebKit/UIProcess/API/APINavigationResponse.cpp
    M Source/WebKit/UIProcess/API/C/WKPage.cpp
    M Source/WebKit/UIProcess/API/C/WKUserContentControllerRef.cpp
    M Source/WebKit/UIProcess/API/Cocoa/WKNavigation.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKUserContentController.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    M Source/WebKit/UIProcess/API/Cocoa/_WKFrameTreeNode.mm
    M Source/WebKit/UIProcess/API/Cocoa/_WKJSHandle.mm
    M Source/WebKit/UIProcess/Cocoa/NavigationState.mm
    M Source/WebKit/UIProcess/Cocoa/UIDelegate.mm
    M Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp
    M Source/WebKit/UIProcess/ProvisionalPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/WebURLSchemeTask.cpp
    M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
    M Source/WebKit/UIProcess/ios/WKGeolocationProviderIOS.mm
    M Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
    M Source/WebKit/WebProcess/WebPage/WebFrame.cpp
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/DecidePolicyForNavigationAction.mm

  Log Message:
  -----------
  Simplify WKFrameInfo construction
https://bugs.webkit.org/show_bug.cgi?id=297700
rdar://158813654

Reviewed by Brady Eidson.

WKFrameInfo.webView is marked as weak, so we don't need to keep the 
WebPageProxy or WKWebView alive.
Use a WebPageProxyIdentifier as effectively a weak pointer to a WebPageProxy so 
we don't need any
context other than the FrameInfoData to create a WKFrameInfo.  This has the 
side effect of reducing
the number of creative ways we need to come up with a page and hope it's the 
right one.

This corrected a case where, if a web view opens a new web view then is 
deallocated, the navigation
action's source frame's web view will not fall back to the opened web view, it 
will correctly be
null, indicating the web view that initiated the navigation has been 
deallocated.
This is seen in 
TestWebKitAPI.WebKit.DecidePolicyForNavigationActionOpenNewWindowAndDeallocSourceWebView.

* Source/WebKit/Shared/API/Cocoa/_WKHitTestResult.mm:
(-[_WKHitTestResult frameInfo]):
* Source/WebKit/Shared/FrameInfoData.cpp:
(WebKit::legacyEmptyFrameInfo):
* Source/WebKit/Shared/FrameInfoData.h:
* Source/WebKit/Shared/FrameInfoData.serialization.in:
* Source/WebKit/UIProcess/API/APIFrameInfo.cpp:
(API::FrameInfo::create):
(API::FrameInfo::FrameInfo):
(API::FrameInfo::title const):
(API::FrameInfo::page const):
(API::FrameInfo::page):
* Source/WebKit/UIProcess/API/APIFrameInfo.h:
* Source/WebKit/UIProcess/API/APINavigationResponse.cpp:
(API::NavigationResponse::navigationInitiatingFrame):
* Source/WebKit/UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
(WKPageSetPageNavigationClient):
* Source/WebKit/UIProcess/API/C/WKUserContentControllerRef.cpp:
* Source/WebKit/UIProcess/API/Cocoa/WKNavigation.mm:
(-[WKNavigation _initiatingFrame]):
* Source/WebKit/UIProcess/API/Cocoa/WKUserContentController.mm:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _frameInfoFromHandle:completionHandler:]):
(-[WKWebView _hitTestAtPoint:inFrameCoordinateSpace:completionHandler:]):
(-[WKWebView _setInputDelegate:]):
* Source/WebKit/UIProcess/API/Cocoa/_WKFrameTreeNode.mm:
(-[_WKFrameTreeNode info]):
* Source/WebKit/UIProcess/API/Cocoa/_WKJSHandle.mm:
(-[_WKJSHandle windowFrameInfo:]):
* Source/WebKit/UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::didStartProvisionalLoadForFrame):
(WebKit::NavigationState::NavigationClient::didFailProvisionalNavigationWithError):
(WebKit::NavigationState::NavigationClient::didFailProvisionalLoadWithErrorForFrame):
(WebKit::NavigationState::NavigationClient::didCommitLoadForFrame):
(WebKit::NavigationState::NavigationClient::didFinishLoadForFrame):
(WebKit::NavigationState::NavigationClient::didFailLoadWithErrorForFrame):
* Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::runJavaScriptAlert):
(WebKit::UIDelegate::UIClient::runJavaScriptConfirm):
(WebKit::UIDelegate::UIClient::runJavaScriptPrompt):
(WebKit::UIDelegate::UIClient::decidePolicyForGeolocationPermissionRequest):
(WebKit::UIDelegate::UIClient::runBeforeUnloadConfirmPanel):
(WebKit::UIDelegate::UIClient::runOpenPanel):
(WebKit::UIDelegate::UIClient::shouldAllowDeviceOrientationAndMotionAccess):
(WebKit::UIDelegate::UIClient::callDisplayCapturePermissionDelegate):
(WebKit::UIDelegate::UIClient::decidePolicyForUserMediaPermissionRequest):
(WebKit::UIDelegate::UIClient::decidePolicyForScreenCaptureUnmuting):
(WebKit::UIDelegate::UIClient::confirmPDFOpening):
(WebKit::UIDelegate::UIClient::runWebAuthenticationPanel):
* Source/WebKit/UIProcess/Downloads/DownloadProxy.cpp:
(WebKit::DownloadProxy::DownloadProxy):
* Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:
(WebKit::ProvisionalPageProxy::cancel):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::webPageProxyMap):
(WebKit::WebPageProxy::fromIdentifier):
(WebKit::m_pageForTesting):
(WebKit::WebPageProxy::~WebPageProxy):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponseShared):
(WebKit::WebPageProxy::createNewPage):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebURLSchemeTask.cpp:
(WebKit::WebURLSchemeTask::WebURLSchemeTask):
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKFocusedElementInfo 
initWithFocusedElementInformation:isUserInitiated:webView:userObject:]):
(-[WKContentView fileUploadPanelDestinationIsManaged:]):
* Source/WebKit/UIProcess/ios/WKGeolocationProviderIOS.mm:
(-[WKGeolocationProviderIOS geolocationAuthorizationGranted]):
* Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::navigationActionData const):
* Source/WebKit/WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::info const):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to