Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 3dfdbed8e4f07513f241af3aa56fac6a3d2b7810
https://github.com/WebKit/WebKit/commit/3dfdbed8e4f07513f241af3aa56fac6a3d2b7810
Author: Alex Christensen <[email protected]>
Date: 2026-08-20 (Thu, 20 Aug 2026)
Changed paths:
M Source/WTF/wtf/spi/cocoa/SecuritySPI.h
M Source/WebCore/html/LinkRelAttribute.cpp
M Source/WebCore/html/LinkRelAttribute.h
M Source/WebKit/Configurations/AllowedSPI.toml
M Source/WebKit/NetworkProcess/NetworkLoadParameters.h
M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
M Source/WebKit/NetworkProcess/NetworkResourceLoader.h
M Source/WebKit/NetworkProcess/NetworkSession.cpp
M Source/WebKit/NetworkProcess/NetworkSession.h
M Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h
M
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.serialization.in
A Source/WebKit/NetworkProcess/QualifiedServerTrustFetch.cpp
A Source/WebKit/NetworkProcess/QualifiedServerTrustFetch.h
A Source/WebKit/NetworkProcess/cocoa/SecuritySoftLink.h
A Source/WebKit/NetworkProcess/cocoa/SecuritySoftLink.mm
M Source/WebKit/PlatformCocoa.cmake
M Source/WebKit/Sources.txt
M Source/WebKit/SourcesCMakeCocoa.txt
M Source/WebKit/UIProcess/API/Cocoa/WKWebView.h
M Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h
M Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm
M Source/WebKit/UIProcess/API/Swift/WebPage.swift
M Source/WebKit/UIProcess/Cocoa/NavigationState.h
M Source/WebKit/UIProcess/Cocoa/NavigationState.mm
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.h
M Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in
M Source/WebKit/UIProcess/PageLoadState.cpp
M Source/WebKit/UIProcess/PageLoadState.h
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Source/WebKit/UIProcess/WebPageProxy.h
M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp
M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M Tools/TestWebKitAPI/Helpers/cocoa/HTTPServer.h
M Tools/TestWebKitAPI/Helpers/cocoa/HTTPServer.swift
M Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebViewServerTrustKVC.mm
M Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageTests.swift
Log Message:
-----------
Implement 2-QWAC fetching
https://bugs.webkit.org/show_bug.cgi?id=320945
rdar://166719636
Reviewed by Brady Eidson.
This is the beginning of the implementation of 2-QWACs.
See
https://www.etsi.org/deliver/etsi_ts/119400_119499/11941105/02.01.01_60/ts_11941105v020101p.pdf
This inspects the link header fields of the response to a main resource request,
and if there's a URL with a rel value of tls-certificate-binding we fetch it
and evaluate the response.
If the resposne is valid, we will populate WKWebView.qualifiedServerTrust.
Since the validity check isn't implemented yet, we just reuse the TLS trust for
now when testing, but as a
follow-up we'll need to do the check and populate
WKWebView.qualifiedServerTrust with a trust from the
fetched response data when testing.
Test: Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebViewServerTrustKVC.mm
* Source/WTF/wtf/spi/cocoa/SecuritySPI.h:
* Source/WebCore/html/LinkRelAttribute.cpp:
(WebCore::LinkRelAttribute::LinkRelAttribute):
(WebCore::LinkRelAttribute::isSupported):
* Source/WebCore/html/LinkRelAttribute.h:
* Source/WebKit/Configurations/AllowedSPI.toml:
* Source/WebKit/NetworkProcess/NetworkLoadParameters.h:
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didFinishLoading):
(WebKit::NetworkResourceLoader::checkForQualifiedServerTrust):
* Source/WebKit/NetworkProcess/NetworkResourceLoader.h:
* Source/WebKit/NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::NetworkSession):
* Source/WebKit/NetworkProcess/NetworkSession.h:
(WebKit::NetworkSession::qualifiedServerTrustDebugEnabledForTesting const):
* Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.h:
*
Source/WebKit/NetworkProcess/NetworkSessionCreationParameters.serialization.in:
* Source/WebKit/NetworkProcess/QualifiedServerTrustFetch.cpp: Added.
(WebKit::globalQualifiedServerTrustFetchMap):
(WebKit::QualifiedServerTrustFetch::keepAliveUntilCompletion):
(WebKit::QualifiedServerTrustFetch::didReachCompletion):
(WebKit::qualifiedServerTrustParameters):
(WebKit::QualifiedServerTrustFetch::QualifiedServerTrustFetch):
(WebKit::QualifiedServerTrustFetch::willSendRedirectedRequest):
(WebKit::QualifiedServerTrustFetch::didReceiveResponse):
(WebKit::QualifiedServerTrustFetch::didReceiveBuffer):
(WebKit::QualifiedServerTrustFetch::didFinishLoading):
(WebKit::QualifiedServerTrustFetch::didFailLoading):
(WebKit::QualifiedServerTrustFetch::cancel):
(WebKit::QualifiedServerTrustFetch::didSendData):
* Source/WebKit/NetworkProcess/QualifiedServerTrustFetch.h: Added.
* Source/WebKit/NetworkProcess/cocoa/SecuritySoftLink.h: Added.
* Source/WebKit/NetworkProcess/cocoa/SecuritySoftLink.mm: Added.
* Source/WebKit/PlatformCocoa.cmake:
* Source/WebKit/Sources.txt:
* Source/WebKit/SourcesCMakeCocoa.txt:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView valueForUndefinedKey:]):
(-[WKWebView qualifiedServerTrust]):
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:
(-[_WKWebsiteDataStoreConfiguration
qualifiedServerTrustDebugEnabledForTesting]):
(-[_WKWebsiteDataStoreConfiguration
setQualifiedServerTrustDebugEnabledForTesting:]):
* Source/WebKit/UIProcess/API/Swift/WebPage.swift:
(qualifiedServerTrust):
* Source/WebKit/UIProcess/Cocoa/NavigationState.h:
* Source/WebKit/UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::willChangeQualifiedServerTrust):
(WebKit::NavigationState::didChangeQualifiedServerTrust):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::receivedQualifiedServerTrust):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in:
* Source/WebKit/UIProcess/PageLoadState.cpp:
(WebKit::PageLoadState::commitChanges):
(WebKit::PageLoadState::didCommitLoad):
(WebKit::PageLoadState::receivedQualifiedServerTrust):
* Source/WebKit/UIProcess/PageLoadState.h:
(WebKit::PageLoadStateObserverBase::willChangeQualifiedServerTrust):
(WebKit::PageLoadStateObserverBase::didChangeQualifiedServerTrust):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedQualifiedServerTrust):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::parameters):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.cpp:
(WebKit::WebsiteDataStoreConfiguration::copy const):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStoreConfiguration.h:
(WebKit::WebsiteDataStoreConfiguration::qualifiedServerTrustDebugEnabledForTesting
const):
(WebKit::WebsiteDataStoreConfiguration::setQualifiedServerTrustDebugEnabledForTesting):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Helpers/cocoa/HTTPServer.h:
(TestWebKitAPI::HTTPResponse::setHeaderField):
* Tools/TestWebKitAPI/Helpers/cocoa/HTTPServer.swift:
* Tools/TestWebKitAPI/Tests/WebKit/WKWebView/WKWebViewServerTrustKVC.mm:
(-[QualifiedServerTrustObserver
observeValueForKeyPath:ofObject:change:context:]):
(-[QualifiedServerTrustObserver waitUntilQualifiedServerTrustChanged]):
(TEST(WKWebView, QualifiedServerTrustKVC)):
* Tools/TestWebKitAPI/Tests/WebKit/WebPage/WebPageTests.swift:
(WebPageTests.observableProperties):
(WebPageTests.qualifiedServerTrust):
Canonical link: https://commits.webkit.org/319551@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications