Have CachedRawResourceClient and related networking actors use SharedBuffer.
https://bugs.webkit.org/show_bug.cgi?id=232424
rdar://84744687
Reviewed by Youenn Fablet.
Source/WebCore:
We modify all didReceiveData and related methods so that they no longer
use uint8_t*/int and instead use SharedBuffer.
We do the same for any intermediaries used by the various didReceiveData
implementations.
This will facilitate moving networking off the main thread in the GPU
process and allows to remove several memory allocations and copies at the
process boundaries.
We can now consider transfer the underlying SharedMemory created in
the network process all the way to the GPU process.
Fly-by fix: change FragmentedSharedBuffer type to SharedBuffer when appropriate.
No change in observable behaviour. Covered by all existing tests.
- Modules/fetch/FetchBodyConsumer.cpp:
(WebCore::FetchBodyConsumer::append):
- Modules/fetch/FetchBodyConsumer.h:
- Modules/fetch/FetchBodyOwner.cpp:
(WebCore::FetchBodyOwner::blobChunk):
- Modules/fetch/FetchBodyOwner.h:
- Modules/fetch/FetchLoader.cpp:
(WebCore::FetchLoader::didReceiveData):
- Modules/fetch/FetchLoader.h:
- Modules/fetch/FetchLoaderClient.h:
(WebCore::FetchLoaderClient::didReceiveData):
- Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::BodyLoader::didReceiveData):
(WebCore::FetchResponse::consumeChunk):
- Modules/fetch/FetchResponse.h:
- Modules/model-element/HTMLModelElement.cpp:
(WebCore::HTMLModelElement::dataReceived):
- Modules/model-element/HTMLModelElement.h:
- Modules/streams/ReadableStreamSink.h:
- fileapi/FileReaderLoader.cpp:
(WebCore::FileReaderLoader::didReceiveData):
- fileapi/FileReaderLoader.h:
- inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::didReceiveDataImpl):
- inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::didReceiveData):
- inspector/NetworkResourcesData.cpp:
(WebCore::NetworkResourcesData::ResourceData::appendData):
(WebCore::NetworkResourcesData::maybeAddResourceData):
- inspector/NetworkResourcesData.h:
- inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::didReceiveResponse):
(WebCore::InspectorNetworkAgent::didReceiveData):
(WebCore::InspectorNetworkAgent::interceptRequestWithResponse):
- inspector/agents/InspectorNetworkAgent.h:
- loader/ContentFilter.cpp:
(WebCore::ContentFilter::deliverResourceData):
- loader/ContentFilterClient.h:
- loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::finishedLoading):
(WebCore::DocumentLoader::continueAfterContentPolicy):
(WebCore::DocumentLoader::commitLoad):
(WebCore::DocumentLoader::commitData):
(WebCore::DocumentLoader::dataReceived):
(WebCore::DocumentLoader::maybeCreateArchive):
(WebCore::DocumentLoader::maybeFinishLoadingMultipartContent):
(WebCore::DocumentLoader::dataReceivedThroughContentFilter):
- loader/DocumentLoader.h:
- loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::dataReceived):
(WebCore::DocumentThreadableLoader::didReceiveData):
(WebCore::DocumentThreadableLoader::didFinishLoading):
(WebCore::DocumentThreadableLoader::loadRequest):
- loader/DocumentThreadableLoader.h:
- loader/DocumentWriter.cpp:
(WebCore::DocumentWriter::addData):
- loader/DocumentWriter.h:
- loader/EmptyClients.cpp:
(WebCore::EmptyFrameLoaderClient::committedLoad):
- loader/EmptyFrameLoaderClient.h:
- loader/FrameLoader.cpp:
(WebCore::FrameLoader::willLoadMediaElementURL):
(WebCore::FrameLoader::commitProvisionalLoad):
(WebCore::FrameLoader::loadResourceSynchronously):
(WebCore::FrameLoader::loadedResourceFromMemoryCache):
- loader/FrameLoaderClient.h:
- loader/MediaResourceLoader.cpp:
(WebCore::MediaResource::dataReceived):
- loader/MediaResourceLoader.h:
- loader/NetscapePlugInStreamLoader.cpp:
(WebCore::NetscapePlugInStreamLoader::didReceiveData):
- loader/NetscapePlugInStreamLoader.h:
- loader/ResourceLoadNotifier.cpp:
(WebCore::ResourceLoadNotifier::didReceiveData):
(WebCore::ResourceLoadNotifier::dispatchDidReceiveData):
(WebCore::ResourceLoadNotifier::sendRemainingDelegateMessages):
- loader/ResourceLoadNotifier.h:
- loader/ResourceLoader.cpp:
(WebCore::ResourceLoader::loadDataURL):
(WebCore::ResourceLoader::addBuffer):
(WebCore::ResourceLoader::didReceiveData):
(WebCore::ResourceLoader::didReceiveBuffer):
- loader/ResourceLoader.h:
- loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::didReceiveBuffer):
- loader/SubresourceLoader.h:
- loader/SubstituteResource.h:
(WebCore::SubstituteResource::append):
- loader/ThreadableLoaderClient.h:
(WebCore::ThreadableLoaderClient::didReceiveData):
- loader/ThreadableLoaderClientWrapper.h:
(WebCore::ThreadableLoaderClientWrapper::didReceiveData):
- loader/WorkerThreadableLoader.cpp:
(WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveData):
- loader/WorkerThreadableLoader.h:
- loader/appcache/ApplicationCacheHost.cpp:
(WebCore::ApplicationCacheHost::mainResourceDataReceived):
- loader/appcache/ApplicationCacheHost.h:
- loader/appcache/ApplicationCacheResource.cpp:
(WebCore::ApplicationCacheResource::deliver):
- loader/appcache/ApplicationCacheResourceLoader.cpp:
(WebCore::ApplicationCacheResourceLoader::dataReceived):
- loader/appcache/ApplicationCacheResourceLoader.h:
- loader/cache/CachedImage.cpp:
(WebCore::CachedImage::updateBufferInternal):
(WebCore::CachedImage::updateBuffer):
(WebCore::CachedImage::updateData):
- loader/cache/CachedImage.h:
- loader/cache/CachedRawResource.cpp:
(WebCore::CachedRawResource::calculateIncrementalDataChunk const):
(WebCore::CachedRawResource::updateBuffer):
(WebCore::CachedRawResource::updateData):
(WebCore::CachedRawResource::finishLoading):
(WebCore::CachedRawResource::notifyClientsDataWasReceived):
(WebCore::CachedRawResource::didAddClient):
- loader/cache/CachedRawResource.h:
- loader/cache/CachedRawResourceClient.h:
(WebCore::CachedRawResourceClient::dataReceived):
- loader/cache/CachedResource.cpp:
(WebCore::CachedResource::updateData):
- loader/cache/CachedResource.h:
- loader/ios/LegacyPreviewLoader.h:
- loader/ios/LegacyPreviewLoader.mm:
(WebCore::LegacyPreviewLoader::didReceiveData):
(WebCore::LegacyPreviewLoader::previewConverterDidReceiveData):
(WebCore::EventSource::didReceiveData):
- page/EventSource.h:
- platform/SharedBuffer.cpp:
(WebCore::FragmentedSharedBuffer::takeData): Update due to DataSegmentVectorEntry::segment being const
(WebCore::FragmentedSharedBuffer::forEachSegmentAsSharedBuffer const): Add convenience method.
(WebCore::SharedBuffer::SharedBuffer):
(WebCore::SharedBufferDataView::SharedBufferDataView):
(WebCore::SharedBufferDataView::createSharedBuffer const):
- platform/SharedBuffer.h: Make DataSegmentVectorEntry::segment const.
(WebCore::SharedBuffer::create):
(WebCore::SharedBuffer::SharedBuffer):
- platform/graphics/PlatformMediaResourceLoader.h:
(WebCore::PlatformMediaResourceClient::dataReceived):
- platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp:
(WebCore::WebCoreAVCFResourceLoader::dataReceived):
- platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.h:
- platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm:
(WebCore::CachedResourceMediaLoader::dataReceived):
(WebCore::PlatformResourceMediaLoader::dataReceived):
- platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(CachedResourceStreamingClient::dataReceived):
- platform/network/ResourceHandleClient.cpp:
(WebCore::ResourceHandleClient::didReceiveBuffer):
- platform/network/ResourceHandleClient.h:
(WebCore::ResourceHandleClient::didReceiveData):
- platform/network/SynchronousLoaderClient.cpp:
(WebCore::SynchronousLoaderClient::didReceiveData):
- platform/network/SynchronousLoaderClient.h:
- platform/network/cocoa/RangeResponseGenerator.mm:
(WebCore::RangeResponseGenerator::giveResponseToTaskIfBytesInRangeReceived):
- platform/network/cocoa/WebCoreNSURLSession.h:
- platform/network/cocoa/WebCoreNSURLSession.mm:
(WebCore::WebCoreNSURLSessionDataTaskClient::dataReceived):
(-[WebCoreNSURLSessionDataTask resource:receivedData:]):
- platform/network/curl/CurlCacheManager.cpp:
(WebCore::CurlCacheManager::didReceiveData):
- platform/network/curl/CurlCacheManager.h:
- platform/network/curl/CurlDownload.cpp:
(WebCore::CurlDownload::curlDidReceiveData):
- platform/network/curl/CurlDownload.h:
- platform/network/curl/CurlMultipartHandle.cpp:
(WebCore::CurlMultipartHandle::didReceiveData):
- platform/network/curl/CurlMultipartHandle.h:
- platform/network/curl/CurlMultipartHandleClient.h:
- platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::didReceiveData):
(WebCore::CurlRequest::didReceiveDataFromMultipart):
- platform/network/curl/CurlRequest.h:
- platform/network/curl/CurlRequestClient.h:
- platform/network/curl/CurlResourceHandleDelegate.cpp:
(WebCore::CurlResourceHandleDelegate::curlDidReceiveData):
- platform/network/curl/CurlResourceHandleDelegate.h:
- platform/network/curl/CurlStream.cpp:
(WebCore::CurlStream::tryToReceive):
- platform/network/curl/CurlStream.h:
- platform/network/curl/SocketStreamHandleImpl.h:
- platform/network/curl/SocketStreamHandleImplCurl.cpp:
(WebCore::SocketStreamHandleImpl::didReceiveData):
- platform/network/ios/LegacyPreviewLoaderClient.h:
(WebCore::LegacyPreviewLoaderClient::didReceiveData):
- platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveData:lengthReceived:]):
- svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::dataChanged):
- workers/WorkerFontLoadRequest.cpp:
(WebCore::WorkerFontLoadRequest::didReceiveData):
- workers/WorkerFontLoadRequest.h:
- workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::didReceiveData):
- workers/WorkerScriptLoader.h:
- workers/service/context/ServiceWorkerFetch.h:
- xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::didReceiveData):
Source/WebKit:
- GPUProcess/media/RemoteMediaResource.cpp:
(WebKit::RemoteMediaResource::dataReceived):
- GPUProcess/media/RemoteMediaResource.h:
- NetworkProcess/Downloads/PendingDownload.h:
- NetworkProcess/NetworkCORSPreflightChecker.cpp:
(WebKit::NetworkCORSPreflightChecker::didReceiveData):
- NetworkProcess/NetworkCORSPreflightChecker.h:
- NetworkProcess/NetworkDataTask.h:
- NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::didReceiveData):
- NetworkProcess/NetworkLoad.h:
- NetworkProcess/NetworkLoadClient.h:
- NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didReceiveBuffer):
(WebKit::NetworkResourceLoader::sendBuffer):
- NetworkProcess/NetworkResourceLoader.h:
- NetworkProcess/PingLoad.cpp:
(WebKit::PingLoad::didReceiveData):
- NetworkProcess/PingLoad.h:
- NetworkProcess/PreconnectTask.cpp:
(WebKit::PreconnectTask::didReceiveBuffer):
- NetworkProcess/PreconnectTask.h:
- NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.cpp:
(WebKit::ServiceWorkerDownloadTask::didReceiveData):
- NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.h:
- NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.messages.in:
- NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:
(WebKit::ServiceWorkerFetchTask::didReceiveData):
(WebKit::ServiceWorkerFetchTask::loadBodyFromPreloader):
- NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:
- NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.messages.in:
- NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp:
(WebKit::ServiceWorkerNavigationPreloader::didReceiveBuffer):
- NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.h:
- NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.cpp:
(WebKit::ServiceWorkerSoftUpdateLoader::didReceiveBuffer):
- NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.h:
- NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
(WebKit::NetworkCache::SpeculativeLoad::didReceiveBuffer):
- NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
- NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
- NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::didReceiveData):
- NetworkProcess/curl/NetworkDataTaskCurl.cpp:
(WebKit::NetworkDataTaskCurl::curlDidReceiveData):
- NetworkProcess/curl/NetworkDataTaskCurl.h:
- Platform/IPC/SharedBufferCopy.h:
- Shared/mac/MediaFormatReader/MediaFormatReader.cpp:
(WebKit::MediaFormatReader::didParseTracks):
- Shared/mac/MediaFormatReader/MediaFormatReader.h:
- UIProcess/WebURLSchemeTask.cpp:
(WebKit::WebURLSchemeTask::didReceiveData):
- UIProcess/WebURLSchemeTask.h:
- WebProcess/GPU/media/RemoteMediaResourceProxy.cpp:
(WebKit::RemoteMediaResourceProxy::dataReceived):
- WebProcess/GPU/media/RemoteMediaResourceProxy.h:
- WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::didReceiveData):
(WebKit::WebResourceLoader::didReceiveResource):
- WebProcess/Network/WebResourceLoader.h:
- WebProcess/Network/WebResourceLoader.messages.in:
- WebProcess/Plugins/PDF/PDFPlugin.h:
- WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didReceiveData):
(WebKit::PDFPlugin::streamDidReceiveData):
(WebKit::PDFPlugin::manualStreamDidReceiveData):
- WebProcess/Plugins/Plugin.h:
- WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::Stream::didReceiveData):
(WebKit::PluginView::manualLoadDidReceiveData):
(WebKit::PluginView::redeliverManualStream):
- WebProcess/Plugins/PluginView.h:
- WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveData):
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveBlobChunk):
(WebKit::WebServiceWorkerFetchTaskClient::continueDidReceiveResponse):
- WebProcess/Storage/WebServiceWorkerFetchTaskClient.h:
- WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::committedLoad):
- WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
- WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.cpp:
(WebKit::WebPreviewLoaderClient::didReceiveData):
- WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.h:
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::urlSchemeTaskDidReceiveData):
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp:
(WebKit::WebURLSchemeHandlerProxy::taskDidReceiveData):
- WebProcess/WebPage/WebURLSchemeHandlerProxy.h:
- WebProcess/WebPage/WebURLSchemeTaskProxy.cpp:
(WebKit::WebURLSchemeTaskProxy::didReceiveData):
- WebProcess/WebPage/WebURLSchemeTaskProxy.h:
Source/WebKitLegacy:
- WebCoreSupport/PingHandle.h:
Source/WebKitLegacy/mac:
- WebCoreSupport/WebFrameLoaderClient.h:
- WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::committedLoad):
(WebFrameLoaderClient::createPreviewLoaderClient):
(-[WebFrame _commitData:]):
Source/WebKitLegacy/win:
- WebCoreSupport/WebFrameLoaderClient.cpp:
(WebFrameLoaderClient::committedLoad):
- WebCoreSupport/WebFrameLoaderClient.h:
|