Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c9d191414e48debce0079e0ac65c704d1e69e1f2
      
https://github.com/WebKit/WebKit/commit/c9d191414e48debce0079e0ac65c704d1e69e1f2
  Author: Geoffrey Garen <[email protected]>
  Date:   2026-04-10 (Fri, 10 Apr 2026)

  Changed paths:
    M Source/WTF/wtf/Borrow.h
    M Source/WTF/wtf/CanBorrow.h
    M Source/WTF/wtf/Vector.h
    M Source/WebCore/accessibility/AXObjectCache.cpp
    M Source/WebCore/css/CSSFontFaceSet.cpp
    M Source/WebCore/dom/Document.cpp
    M Source/WebCore/dom/DocumentFontLoader.cpp
    M Source/WebCore/page/LocalDOMWindow.cpp
    M Source/WebCore/page/Page.cpp
    M Source/WebCore/page/PageOverlayController.cpp
    M Source/WebCore/svg/animation/SVGSMILElement.cpp
    M Source/WebCore/worklets/Worklet.cpp
    M Source/WebGPU/WebGPU/Buffer.mm
    M Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp
    M Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.cpp
    M Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkDataTaskBlob.cpp
    M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
    M Source/WebKit/NetworkProcess/PingLoad.cpp
    M Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.cpp
    M Source/WebKit/NetworkProcess/storage/CacheStorageManager.cpp
    M Source/WebKit/Platform/IPC/Connection.cpp
    M Source/WebKit/Platform/IPC/glib/ConnectionGLib.cpp
    M Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp
    M Source/WebKit/Shared/SharedStringHashStore.cpp
    M Source/WebKit/UIProcess/API/C/WKContext.cpp
    M Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm
    M Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp
    M Source/WebKit/UIProcess/Automation/BidiBrowsingContextAgent.cpp
    M Source/WebKit/UIProcess/Automation/BidiPermissionsAgent.cpp
    M Source/WebKit/UIProcess/Automation/BidiScriptAgent.cpp
    M Source/WebKit/UIProcess/Automation/BidiUserContext.cpp
    M Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp
    M Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm
    M 
Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionDynamicScriptsCocoa.mm
    M Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
    M Source/WebKit/UIProcess/Network/NetworkProcessProxyCocoa.mm
    M Source/WebKit/UIProcess/WebBackForwardList.cpp
    M Source/WebKit/UIProcess/WebProcessPool.cpp
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
    M Source/WebKit/WPEPlatform/wpe/wayland/WPEViewWayland.cpp
    M Source/WebKit/WebProcess/Inspector/WebInspectorBackend.cpp
    M Source/WebKit/WebProcess/Plugins/PDF/PDFIncrementalLoader.mm
    M Source/WebKit/WebProcess/WebPage/WebPage.cpp
    M Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm
    M Source/WebKit/WebProcess/WebPage/wc/DrawingAreaWC.cpp

  Log Message:
  -----------
  Adopt Borrow<T> for Vector<T> in Source/WebKit and Source/WebCore (Debug 
ASSERT only)
https://bugs.webkit.org/show_bug.cgi?id=311697
rdar://174283122

Reviewed by Ryosuke Niwa.

As dicated by a prototype SaferCPP checker for Vector<T> borrowing.

Documentation for Borrow<T>: 
https://github.com/WebKit/WebKit/wiki/SaferCPP:-Borrow-and-CanBorrow

* Source/WTF/wtf/Borrow.h:
(WTF::Borrow::Borrow): Removed the constructor that auto-converted pointer to
reference because the caller should decide if we have a non-null value or not.

Added an operator T&() and a template deduction guide to assist adoption
without too much boilerplate code.

(WTF::Borrow::~Borrow):
(WTF::borrow): Added a #pragma to disable -Wdangling on clang < 21 when a file
includes this header. This is pretty sad because -Wdangling is the whole point
of this work. But it's just broken and I can't think of any reasonable
workaround.

The good news is, the Apple Internal EWS bots already support clang 21, so we
do not lose EWS coverage. And the next bot upgrade cycle will upgrade all
Apple bots to clang 21.

* Source/WTF/wtf/CanBorrow.h:
(WTF::CanBorrow::~CanBorrow):
(WTF::CanBorrow::crashIfBorrowed): Downgraded to a debug assert to control
stability for now. We can upgrade after we have more experience.

(WTF::CanBorrow::setIsBorrowed const):
(WTF::CanBorrow::setIsBorrowed): Deleted. Make borrowing a const operation just
like reference counting -- the object itself isn't changing.

* Source/WTF/wtf/Vector.h:
(WTF::VectorBufferBase::setIsBorrowed const):
(WTF::VectorBufferBase::setIsBorrowed): Deleted. Same change for const.

The rest is a bunch of Borrow<T> where the tool though it was necessary:

* Source/WebCore/accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::performDeferredCacheUpdate):
* Source/WebCore/css/CSSFontFaceSet.cpp:
(WebCore::CSSFontFaceSet::~CSSFontFaceSet):
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::gatherResizeObservations):
* Source/WebCore/dom/DocumentFontLoader.cpp:
(WebCore::DocumentFontLoader::stopLoadingAndClearFonts):
* Source/WebCore/page/LocalDOMWindow.cpp:
(WebCore::LocalDOMWindow::finalizeAndQueueEventTimingEntries):
* Source/WebCore/page/Page.cpp:
(WebCore::Page::mainFrameDidChangeToNonInitialEmptyDocument):
(WebCore::Page::flushHardwareKeyboardAttachmentObservers):
* Source/WebCore/page/PageOverlayController.cpp:
(WebCore::PageOverlayController::handleMouseEvent):
(WebCore::PageOverlayController::copyAccessibilityAttributeStringValueForPoint):
(WebCore::PageOverlayController::copyAccessibilityAttributeBoolValueForPoint):
* Source/WebCore/svg/animation/SVGSMILElement.cpp:
(WebCore::SVGSMILElement::connectConditions):
(WebCore::SVGSMILElement::disconnectConditions):
* Source/WebCore/worklets/Worklet.cpp:
(WebCore::Worklet::addModule):
* Source/WebGPU/WebGPU/Buffer.mm:
(WebGPU::Buffer::takeSlowIndexValidationPath):
(WebGPU::Buffer::takeSlowIndirectIndexValidationPath):
(WebGPU::Buffer::takeSlowIndirectValidationPath):
* Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp:
(WebKit::RemoteMediaPlayerProxy::addRemoteAudioTrackProxy):
(WebKit::RemoteMediaPlayerProxy::audioTrackSetEnabled):
(WebKit::RemoteMediaPlayerProxy::addRemoteVideoTrackProxy):
(WebKit::RemoteMediaPlayerProxy::videoTrackSetSelected):
(WebKit::RemoteMediaPlayerProxy::addRemoteTextTrackProxy):
(WebKit::RemoteMediaPlayerProxy::textTrackSetMode):
* Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.cpp:
(WebKit::RemoteMediaSourceProxy::setMediaPlayers):
* Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::stopAllNetworkActivityTracking):
(WebKit::NetworkConnectionToWebProcess::stopAllNetworkActivityTrackingForPage):
* Source/WebKit/NetworkProcess/NetworkDataTaskBlob.cpp:
(WebKit::NetworkDataTaskBlob::NetworkDataTaskBlob):
(WebKit::NetworkDataTaskBlob::~NetworkDataTaskBlob):
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::consumeSandboxExtensions):
(WebKit::NetworkResourceLoader::invalidateSandboxExtensions):
* Source/WebKit/NetworkProcess/PingLoad.cpp:
(WebKit::m_blobFiles):
(WebKit::PingLoad::~PingLoad):
* Source/WebKit/NetworkProcess/curl/WebSocketTaskCurl.cpp:
(WebKit::WebSocketTask::receiveFrames):
* Source/WebKit/NetworkProcess/storage/CacheStorageManager.cpp:
(WebKit::CacheStorageManager::reset):
(WebKit::CacheStorageManager::allCaches):
(WebKit::CacheStorageManager::requestSpaceAfterInitializingSize):
(WebKit::CacheStorageManager::removeUnusedCache):
(WebKit::CacheStorageManager::representationString):
* Source/WebKit/Platform/IPC/Connection.cpp:
(IPC::Connection::sendMessageImpl):
(IPC::Connection::dispatchMessage):
* Source/WebKit/Platform/IPC/glib/ConnectionGLib.cpp:
(IPC::Connection::createMessageDecoder):
* Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp:
(IPC::Connection::processMessage):
* Source/WebKit/Shared/SharedStringHashStore.cpp:
(WebKit::SharedStringHashStore::resizeTable):
(WebKit::SharedStringHashStore::processPendingOperations):
* Source/WebKit/UIProcess/API/C/WKContext.cpp:
(WKContextSetHistoryClient):
* Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _requestWebProcessTermination:]):
(-[WKProcessPool _isWebProcessSuspended:]):
(-[WKProcessPool _hasPrewarmedWebProcess]):
(-[WKProcessPool _webProcessCountIgnoringPrewarmed]):
(-[WKProcessPool _webProcessCountIgnoringPrewarmedAndCached]):
(+[WKProcessPool _webContentProcessInfo]):
* Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp:
* Source/WebKit/UIProcess/Automation/BidiBrowsingContextAgent.cpp:
(WebKit::BidiBrowsingContextAgent::getTree):
* Source/WebKit/UIProcess/Automation/BidiPermissionsAgent.cpp:
(WebKit::allPageProxiesFor):
* Source/WebKit/UIProcess/Automation/BidiScriptAgent.cpp:
(WebKit::BidiScriptAgent::getRealms):
(WebKit::BidiScriptAgent::contextHandleForFrame):
* Source/WebKit/UIProcess/Automation/BidiUserContext.cpp:
(WebKit::BidiUserContext::allPages const):
* Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::getBrowsingContexts):
* Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::logProcessPoolState):
(WebKit::WebProcessPool::hardwareKeyboardAvailabilityChanged):
* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionDynamicScriptsCocoa.mm:
(WebKit::WebExtensionDynamicScripts::removeStyleSheets):
* Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:
* Source/WebKit/UIProcess/Network/NetworkProcessProxyCocoa.mm:
(WebKit::NetworkProcessProxy::XPCEventHandler::handleXPCEvent):
* Source/WebKit/UIProcess/WebBackForwardList.cpp:
(WebKit::WebBackForwardList::backForwardListState const):
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::setDomainsWithCrossPageStorageAccess):
(WebKit::WebProcessPool::seedResourceLoadStatisticsForTesting):
(WebKit::WebProcessPool::sendResourceLoadStatisticsDataImmediately):
(WebKit::WebProcessPool::updateWebProcessSuspensionDelay):
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::activeWebProcesses const):
* Source/WebKit/WPEPlatform/wpe/wayland/WPEViewWayland.cpp:
(PresentationFeedbackStatistics::~PresentationFeedbackStatistics):
* Source/WebKit/WebProcess/Inspector/WebInspectorBackend.cpp:
(WebKit::WebInspectorBackend::setFrontendConnection):
* Source/WebKit/WebProcess/Plugins/PDF/PDFIncrementalLoader.mm:
(WebKit::ByteRangeRequest::completeWithAccumulatedData):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didCommitLoad):
* Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::~TiledCoreAnimationDrawingArea):
* Source/WebKit/WebProcess/WebPage/wc/DrawingAreaWC.cpp:
(WebKit::DrawingAreaWC::updateRootLayers):
(WebKit::DrawingAreaWC::sendUpdateAC):

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



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

Reply via email to