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