Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 56d2552b3d1132533d25aa91eb2dbfe1f9cdbd74
      
https://github.com/WebKit/WebKit/commit/56d2552b3d1132533d25aa91eb2dbfe1f9cdbd74
  Author: Chris Dumez <[email protected]>
  Date:   2026-04-12 (Sun, 12 Apr 2026)

  Changed paths:
    M Source/WTF/wtf/URL.cpp
    M Source/WTF/wtf/URL.h
    M Source/WebKit/UIProcess/API/C/WKPage.cpp
    M Source/WebKit/UIProcess/API/C/mac/WKPagePrivateMac.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
    M Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
    M Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp
    M Source/WebKit/UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp
    M Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp
    M Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp
    M 
Source/WebKit/UIProcess/Cocoa/SOAuthorization/NavigationSOAuthorizationSession.h
    M Source/WebKit/UIProcess/Cocoa/UIDelegate.mm
    M Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm
    M 
Source/WebKit/UIProcess/Inspector/socket/RemoteInspectorProtocolHandler.cpp
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
    M Source/WebKit/UIProcess/PageLoadState.cpp
    M Source/WebKit/UIProcess/PageLoadState.h
    M Source/WebKit/UIProcess/RemotePageProxy.cpp
    M Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebProcessPool.cpp
    M 
Source/WebKit/UIProcess/WebsiteData/WebDeviceOrientationAndMotionAccessController.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
    M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKBackForwardListTests.mm
    M Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp

  Log Message:
  -----------
  WKWebView.URL should not need not parse the URL string every time it is called
https://bugs.webkit.org/show_bug.cgi?id=312009
rdar://174434204

Reviewed by Darin Adler.

Update PageLoadState to store urls as URL, not String. Otherwise, APIs
like WKWebView.URL have to keep re-parsing the URL string every thing
they're called.

* Source/WTF/wtf/URL.cpp:
(WTF::aboutBlankURL):
(WTF::aboutSrcDocURL):
* Source/WTF/wtf/URL.h:
* Source/WebKit/UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
(WKPageCopyPendingAPIRequestURL):
* Source/WebKit/UIProcess/API/C/mac/WKPagePrivateMac.mm:
(-[WKObservablePageState URL]):
(-[WKObservablePageState unreachableURL]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView URL]):
(-[WKWebView _unreachableURL]):
(-[WKWebView _committedURL]):
* Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h:
* Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:
(PageLoadStateObserver::didChangeActiveURL):
(webkitWebViewWillStartLoad):
(webkitWebViewLoadChanged):
(webkitWebViewGetLoadDecisionForIcons):
(webkitWebViewUpdatePageIcons):
(webkitWebViewSetIcon):
* Source/WebKit/UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp:
* Source/WebKit/UIProcess/API/gtk/WebKitWebViewGtk.cpp:
(webkitWebViewScriptDialog):
* Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::buildBrowsingContextForPage):
(WebKit::WebAutomationSession::addSingleCookie):
(WebKit::WebAutomationSession::deleteAllCookies):
* 
Source/WebKit/UIProcess/Cocoa/SOAuthorization/NavigationSOAuthorizationSession.h:
* Source/WebKit/UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::decidePolicyForGeolocationPermissionRequest):
(WebKit::UIDelegate::UIClient::shouldAllowDeviceOrientationAndMotionAccess):
* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::shouldAllowAutoFillForCellularIdentifiers const):
* Source/WebKit/UIProcess/Inspector/socket/RemoteInspectorProtocolHandler.cpp:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::deleteWebsiteDataInWebProcessesForOrigin):
* Source/WebKit/UIProcess/PageLoadState.cpp:
(WebKit::PageLoadState::reset):
(WebKit::PageLoadState::activeURL):
(WebKit::PageLoadState::hasOnlySecureContent):
(WebKit::PageLoadState::didExplicitOpen):
(WebKit::PageLoadState::didStartProvisionalLoad):
(WebKit::PageLoadState::didReceiveServerRedirectForProvisionalLoad):
(WebKit::PageLoadState::didFailProvisionalLoad):
(WebKit::PageLoadState::didCommitLoad):
(WebKit::PageLoadState::didSameDocumentNavigation):
(WebKit::PageLoadState::setUnreachableURL):
* Source/WebKit/UIProcess/PageLoadState.h:
(WebKit::PageLoadState::activeURL const):
* Source/WebKit/UIProcess/RemotePageProxy.cpp:
(WebKit::RemotePageProxy::injectPageIntoNewProcess):
(WebKit::RemotePageProxy::setDrawingArea):
* Source/WebKit/UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::decidePolicyForUserMediaPermissionRequest):
(WebKit::UserMediaPermissionRequestManagerProxy::checkUserMediaPermissionForSpeechRecognition):
(WebKit::UserMediaPermissionRequestManagerProxy::shouldChangeDeniedToPromptForCamera
 const):
(WebKit::UserMediaPermissionRequestManagerProxy::shouldChangeDeniedToPromptForMicrophone
 const):
(WebKit::UserMediaPermissionRequestManagerProxy::getUserMediaPermissionInfo):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::launchProcessForReload):
(WebKit::WebPageProxy::loadRequestWithNavigationShared):
(WebKit::WebPageProxy::loadFile):
(WebKit::WebPageProxy::loadDataWithNavigationShared):
(WebKit::WebPageProxy::loadSimulatedRequest):
(WebKit::WebPageProxy::loadAlternateHTML):
(WebKit::WebPageProxy::reload):
(WebKit::WebPageProxy::goToBackForwardItem):
(WebKit::WebPageProxy::receivedNavigationActionPolicyDecision):
(WebKit::WebPageProxy::continueNavigationInNewProcess):
(WebKit::WebPageProxy::sessionState const):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didExplicitOpenForFrame):
(WebKit::WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didChangeProvisionalURLForFrameShared):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrameViaJS):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForResponseShared):
(WebKit::WebPageProxy::currentURL const):
(WebKit::WebPageProxy::tryReloadAfterProcessTermination):
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::processForNavigationInternal):
* 
Source/WebKit/UIProcess/WebsiteData/WebDeviceOrientationAndMotionAccessController.cpp:
(WebKit::WebDeviceOrientationAndMotionAccessController::shouldAllowAccess):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::download):
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKBackForwardListTests.mm:
(TEST(WKBackForwardList, InteractionStateRestoration)):
(TEST(WKBackForwardList, InteractionStateRestorationNil)):
(TEST(WKBackForwardList, InteractionStateRestorationInvalid)):
(TEST(WKBackForwardList, InteractionStateRestorationMultipleItems)):
(TEST(WKBackForwardList, BackSwipeNavigationSkipsItemsWithoutUserGesture)):
(TEST(WKBackForwardList, BackSwipeNavigationDoesNotSkipItemsWithUserGesture)):
(runBackForwardNavigationSkipsItemsWithoutUserGestureTest):
(runBackForwardNavigationDoesNotSkipItemsWithUserGestureTest):
(TEST(WKBackForwardList, 
BackForwardNavigationDoesNotSkipUpdatedItemWithRecentUserGesture)):
(TEST(WKBackForwardList, BackNavigationHijacking)):
* Tools/TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:
(WebViewTest::loadURI):
(WebViewTest::loadHtml):
(WebViewTest::loadBytes):
(WebViewTest::loadRequest):
(WebViewTest::loadAlternateHTML):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to