Changeset 287684 in webkit
- Timestamp:
- Jan 6, 2022, 7:31:46 AM (5 years ago)
- Location:
- trunk/Source
- Files:
-
- 173 edited
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/Modules/fetch/FetchBodyConsumer.cpp (modified) (1 diff)
-
WebCore/Modules/fetch/FetchBodyConsumer.h (modified) (1 diff)
-
WebCore/Modules/fetch/FetchBodyOwner.cpp (modified) (1 diff)
-
WebCore/Modules/fetch/FetchBodyOwner.h (modified) (3 diffs)
-
WebCore/Modules/fetch/FetchLoader.cpp (modified) (1 diff)
-
WebCore/Modules/fetch/FetchLoader.h (modified) (1 diff)
-
WebCore/Modules/fetch/FetchLoaderClient.h (modified) (1 diff)
-
WebCore/Modules/fetch/FetchResponse.cpp (modified) (4 diffs)
-
WebCore/Modules/fetch/FetchResponse.h (modified) (1 diff)
-
WebCore/Modules/model-element/HTMLModelElement.cpp (modified) (1 diff)
-
WebCore/Modules/model-element/HTMLModelElement.h (modified) (1 diff)
-
WebCore/Modules/streams/ReadableStreamSink.h (modified) (1 diff)
-
WebCore/fileapi/FileReaderLoader.cpp (modified) (5 diffs)
-
WebCore/fileapi/FileReaderLoader.h (modified) (1 diff)
-
WebCore/inspector/InspectorInstrumentation.cpp (modified) (1 diff)
-
WebCore/inspector/InspectorInstrumentation.h (modified) (4 diffs)
-
WebCore/inspector/NetworkResourcesData.cpp (modified) (3 diffs)
-
WebCore/inspector/NetworkResourcesData.h (modified) (2 diffs)
-
WebCore/inspector/agents/InspectorNetworkAgent.cpp (modified) (7 diffs)
-
WebCore/inspector/agents/InspectorNetworkAgent.h (modified) (1 diff)
-
WebCore/loader/ContentFilter.cpp (modified) (1 diff)
-
WebCore/loader/ContentFilterClient.h (modified) (2 diffs)
-
WebCore/loader/DocumentLoader.cpp (modified) (10 diffs)
-
WebCore/loader/DocumentLoader.h (modified) (6 diffs)
-
WebCore/loader/DocumentThreadableLoader.cpp (modified) (4 diffs)
-
WebCore/loader/DocumentThreadableLoader.h (modified) (2 diffs)
-
WebCore/loader/DocumentWriter.cpp (modified) (2 diffs)
-
WebCore/loader/DocumentWriter.h (modified) (2 diffs)
-
WebCore/loader/EmptyClients.cpp (modified) (1 diff)
-
WebCore/loader/EmptyFrameLoaderClient.h (modified) (1 diff)
-
WebCore/loader/FrameLoader.cpp (modified) (5 diffs)
-
WebCore/loader/FrameLoaderClient.h (modified) (7 diffs)
-
WebCore/loader/MediaResourceLoader.cpp (modified) (1 diff)
-
WebCore/loader/MediaResourceLoader.h (modified) (1 diff)
-
WebCore/loader/NetscapePlugInStreamLoader.cpp (modified) (1 diff)
-
WebCore/loader/NetscapePlugInStreamLoader.h (modified) (4 diffs)
-
WebCore/loader/ResourceLoadNotifier.cpp (modified) (5 diffs)
-
WebCore/loader/ResourceLoadNotifier.h (modified) (3 diffs)
-
WebCore/loader/ResourceLoader.cpp (modified) (7 diffs)
-
WebCore/loader/ResourceLoader.h (modified) (4 diffs)
-
WebCore/loader/SubresourceLoader.cpp (modified) (3 diffs)
-
WebCore/loader/SubresourceLoader.h (modified) (2 diffs)
-
WebCore/loader/SubstituteResource.h (modified) (1 diff)
-
WebCore/loader/ThreadableLoaderClient.h (modified) (2 diffs)
-
WebCore/loader/ThreadableLoaderClientWrapper.h (modified) (1 diff)
-
WebCore/loader/WorkerThreadableLoader.cpp (modified) (1 diff)
-
WebCore/loader/WorkerThreadableLoader.h (modified) (1 diff)
-
WebCore/loader/appcache/ApplicationCacheHost.cpp (modified) (1 diff)
-
WebCore/loader/appcache/ApplicationCacheHost.h (modified) (1 diff)
-
WebCore/loader/appcache/ApplicationCacheResource.cpp (modified) (1 diff)
-
WebCore/loader/appcache/ApplicationCacheResourceLoader.cpp (modified) (1 diff)
-
WebCore/loader/appcache/ApplicationCacheResourceLoader.h (modified) (1 diff)
-
WebCore/loader/cache/CachedImage.cpp (modified) (2 diffs)
-
WebCore/loader/cache/CachedImage.h (modified) (2 diffs)
-
WebCore/loader/cache/CachedRawResource.cpp (modified) (7 diffs)
-
WebCore/loader/cache/CachedRawResource.h (modified) (3 diffs)
-
WebCore/loader/cache/CachedRawResourceClient.h (modified) (2 diffs)
-
WebCore/loader/cache/CachedResource.cpp (modified) (1 diff)
-
WebCore/loader/cache/CachedResource.h (modified) (1 diff)
-
WebCore/loader/ios/LegacyPreviewLoader.h (modified) (1 diff)
-
WebCore/loader/ios/LegacyPreviewLoader.mm (modified) (4 diffs)
-
WebCore/page/EventSource.cpp (modified) (3 diffs)
-
WebCore/page/EventSource.h (modified) (1 diff)
-
WebCore/platform/SharedBuffer.cpp (modified) (5 diffs)
-
WebCore/platform/SharedBuffer.h (modified) (6 diffs)
-
WebCore/platform/graphics/PlatformMediaResourceLoader.h (modified) (1 diff)
-
WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp (modified) (1 diff)
-
WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.h (modified) (1 diff)
-
WebCore/platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm (modified) (4 diffs)
-
WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp (modified) (4 diffs)
-
WebCore/platform/network/ResourceHandleClient.cpp (modified) (1 diff)
-
WebCore/platform/network/ResourceHandleClient.h (modified) (3 diffs)
-
WebCore/platform/network/SynchronousLoaderClient.cpp (modified) (1 diff)
-
WebCore/platform/network/SynchronousLoaderClient.h (modified) (2 diffs)
-
WebCore/platform/network/cocoa/RangeResponseGenerator.mm (modified) (3 diffs)
-
WebCore/platform/network/cocoa/WebCoreNSURLSession.h (modified) (1 diff)
-
WebCore/platform/network/cocoa/WebCoreNSURLSession.mm (modified) (4 diffs)
-
WebCore/platform/network/curl/CurlCacheManager.cpp (modified) (2 diffs)
-
WebCore/platform/network/curl/CurlCacheManager.h (modified) (1 diff)
-
WebCore/platform/network/curl/CurlDownload.cpp (modified) (1 diff)
-
WebCore/platform/network/curl/CurlDownload.h (modified) (2 diffs)
-
WebCore/platform/network/curl/CurlMultipartHandle.cpp (modified) (1 diff)
-
WebCore/platform/network/curl/CurlMultipartHandle.h (modified) (2 diffs)
-
WebCore/platform/network/curl/CurlMultipartHandleClient.h (modified) (1 diff)
-
WebCore/platform/network/curl/CurlRequest.cpp (modified) (4 diffs)
-
WebCore/platform/network/curl/CurlRequest.h (modified) (1 diff)
-
WebCore/platform/network/curl/CurlRequestClient.h (modified) (2 diffs)
-
WebCore/platform/network/curl/CurlResourceHandleDelegate.cpp (modified) (2 diffs)
-
WebCore/platform/network/curl/CurlResourceHandleDelegate.h (modified) (2 diffs)
-
WebCore/platform/network/curl/CurlStream.cpp (modified) (4 diffs)
-
WebCore/platform/network/curl/CurlStream.h (modified) (3 diffs)
-
WebCore/platform/network/curl/SocketStreamHandleImpl.h (modified) (1 diff)
-
WebCore/platform/network/curl/SocketStreamHandleImplCurl.cpp (modified) (2 diffs)
-
WebCore/platform/network/ios/LegacyPreviewLoaderClient.h (modified) (1 diff)
-
WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm (modified) (1 diff)
-
WebCore/svg/graphics/SVGImage.cpp (modified) (1 diff)
-
WebCore/workers/WorkerFontLoadRequest.cpp (modified) (1 diff)
-
WebCore/workers/WorkerFontLoadRequest.h (modified) (1 diff)
-
WebCore/workers/WorkerScriptLoader.cpp (modified) (2 diffs)
-
WebCore/workers/WorkerScriptLoader.h (modified) (1 diff)
-
WebCore/workers/service/context/ServiceWorkerFetch.h (modified) (1 diff)
-
WebCore/xml/XMLHttpRequest.cpp (modified) (2 diffs)
-
WebCore/xml/XMLHttpRequest.h (modified) (1 diff)
-
WebKit/ChangeLog (modified) (1 diff)
-
WebKit/GPUProcess/media/RemoteMediaResource.cpp (modified) (2 diffs)
-
WebKit/GPUProcess/media/RemoteMediaResource.h (modified) (2 diffs)
-
WebKit/NetworkProcess/Downloads/PendingDownload.h (modified) (1 diff)
-
WebKit/NetworkProcess/NetworkCORSPreflightChecker.cpp (modified) (1 diff)
-
WebKit/NetworkProcess/NetworkCORSPreflightChecker.h (modified) (2 diffs)
-
WebKit/NetworkProcess/NetworkDataTask.h (modified) (2 diffs)
-
WebKit/NetworkProcess/NetworkLoad.cpp (modified) (1 diff)
-
WebKit/NetworkProcess/NetworkLoad.h (modified) (1 diff)
-
WebKit/NetworkProcess/NetworkLoadClient.h (modified) (1 diff)
-
WebKit/NetworkProcess/NetworkResourceLoader.cpp (modified) (4 diffs)
-
WebKit/NetworkProcess/NetworkResourceLoader.h (modified) (2 diffs)
-
WebKit/NetworkProcess/PingLoad.cpp (modified) (1 diff)
-
WebKit/NetworkProcess/PingLoad.h (modified) (1 diff)
-
WebKit/NetworkProcess/PreconnectTask.cpp (modified) (1 diff)
-
WebKit/NetworkProcess/PreconnectTask.h (modified) (1 diff)
-
WebKit/NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.cpp (modified) (2 diffs)
-
WebKit/NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.h (modified) (2 diffs)
-
WebKit/NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.messages.in (modified) (1 diff)
-
WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp (modified) (3 diffs)
-
WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h (modified) (2 diffs)
-
WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.messages.in (modified) (1 diff)
-
WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp (modified) (1 diff)
-
WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.h (modified) (3 diffs)
-
WebKit/NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.cpp (modified) (2 diffs)
-
WebKit/NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.h (modified) (1 diff)
-
WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp (modified) (2 diffs)
-
WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.h (modified) (1 diff)
-
WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h (modified) (2 diffs)
-
WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm (modified) (1 diff)
-
WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp (modified) (3 diffs)
-
WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h (modified) (2 diffs)
-
WebKit/Platform/IPC/SharedBufferCopy.h (modified) (1 diff)
-
WebKit/Shared/mac/MediaFormatReader/MediaFormatReader.cpp (modified) (2 diffs)
-
WebKit/Shared/mac/MediaFormatReader/MediaFormatReader.h (modified) (1 diff)
-
WebKit/UIProcess/WebURLSchemeTask.cpp (modified) (2 diffs)
-
WebKit/UIProcess/WebURLSchemeTask.h (modified) (1 diff)
-
WebKit/WebProcess/GPU/media/RemoteMediaResourceProxy.cpp (modified) (2 diffs)
-
WebKit/WebProcess/GPU/media/RemoteMediaResourceProxy.h (modified) (1 diff)
-
WebKit/WebProcess/Network/WebResourceLoader.cpp (modified) (6 diffs)
-
WebKit/WebProcess/Network/WebResourceLoader.h (modified) (2 diffs)
-
WebKit/WebProcess/Network/WebResourceLoader.messages.in (modified) (1 diff)
-
WebKit/WebProcess/Plugins/PDF/PDFPlugin.h (modified) (3 diffs)
-
WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm (modified) (6 diffs)
-
WebKit/WebProcess/Plugins/Plugin.h (modified) (4 diffs)
-
WebKit/WebProcess/Plugins/PluginView.cpp (modified) (5 diffs)
-
WebKit/WebProcess/Plugins/PluginView.h (modified) (1 diff)
-
WebKit/WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp (modified) (4 diffs)
-
WebKit/WebProcess/Storage/WebServiceWorkerFetchTaskClient.h (modified) (3 diffs)
-
WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp (modified) (2 diffs)
-
WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h (modified) (1 diff)
-
WebKit/WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.cpp (modified) (1 diff)
-
WebKit/WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.h (modified) (1 diff)
-
WebKit/WebProcess/WebPage/WebPage.cpp (modified) (1 diff)
-
WebKit/WebProcess/WebPage/WebPage.h (modified) (2 diffs)
-
WebKit/WebProcess/WebPage/WebPage.messages.in (modified) (1 diff)
-
WebKit/WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp (modified) (2 diffs)
-
WebKit/WebProcess/WebPage/WebURLSchemeHandlerProxy.h (modified) (2 diffs)
-
WebKit/WebProcess/WebPage/WebURLSchemeTaskProxy.cpp (modified) (3 diffs)
-
WebKit/WebProcess/WebPage/WebURLSchemeTaskProxy.h (modified) (2 diffs)
-
WebKitLegacy/ChangeLog (modified) (1 diff)
-
WebKitLegacy/WebCoreSupport/PingHandle.h (modified) (2 diffs)
-
WebKitLegacy/mac/ChangeLog (modified) (1 diff)
-
WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h (modified) (2 diffs)
-
WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm (modified) (2 diffs)
-
WebKitLegacy/mac/WebView/WebFrame.mm (modified) (1 diff)
-
WebKitLegacy/win/ChangeLog (modified) (1 diff)
-
WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.cpp (modified) (1 diff)
-
WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r287683 r287684 1 2022-01-06 Jean-Yves Avenard <jya@apple.com> 2 3 Have CachedRawResourceClient and related networking actors use SharedBuffer. 4 https://bugs.webkit.org/show_bug.cgi?id=232424 5 rdar://84744687 6 7 Reviewed by Youenn Fablet. 8 9 We modify all didReceiveData and related methods so that they no longer 10 use uint8_t*/int and instead use SharedBuffer. 11 We do the same for any intermediaries used by the various didReceiveData 12 implementations. 13 This will facilitate moving networking off the main thread in the GPU 14 process and allows to remove several memory allocations and copies at the 15 process boundaries. 16 We can now consider transfer the underlying SharedMemory created in 17 the network process all the way to the GPU process. 18 19 Fly-by fix: change FragmentedSharedBuffer type to SharedBuffer when appropriate. 20 21 No change in observable behaviour. Covered by all existing tests. 22 23 * Modules/fetch/FetchBodyConsumer.cpp: 24 (WebCore::FetchBodyConsumer::append): 25 * Modules/fetch/FetchBodyConsumer.h: 26 * Modules/fetch/FetchBodyOwner.cpp: 27 (WebCore::FetchBodyOwner::blobChunk): 28 * Modules/fetch/FetchBodyOwner.h: 29 * Modules/fetch/FetchLoader.cpp: 30 (WebCore::FetchLoader::didReceiveData): 31 * Modules/fetch/FetchLoader.h: 32 * Modules/fetch/FetchLoaderClient.h: 33 (WebCore::FetchLoaderClient::didReceiveData): 34 * Modules/fetch/FetchResponse.cpp: 35 (WebCore::FetchResponse::BodyLoader::didReceiveData): 36 (WebCore::FetchResponse::consumeChunk): 37 * Modules/fetch/FetchResponse.h: 38 * Modules/model-element/HTMLModelElement.cpp: 39 (WebCore::HTMLModelElement::dataReceived): 40 * Modules/model-element/HTMLModelElement.h: 41 * Modules/streams/ReadableStreamSink.h: 42 * fileapi/FileReaderLoader.cpp: 43 (WebCore::FileReaderLoader::didReceiveData): 44 * fileapi/FileReaderLoader.h: 45 * inspector/InspectorInstrumentation.cpp: 46 (WebCore::InspectorInstrumentation::didReceiveDataImpl): 47 * inspector/InspectorInstrumentation.h: 48 (WebCore::InspectorInstrumentation::didReceiveData): 49 * inspector/NetworkResourcesData.cpp: 50 (WebCore::NetworkResourcesData::ResourceData::appendData): 51 (WebCore::NetworkResourcesData::maybeAddResourceData): 52 * inspector/NetworkResourcesData.h: 53 * inspector/agents/InspectorNetworkAgent.cpp: 54 (WebCore::InspectorNetworkAgent::didReceiveResponse): 55 (WebCore::InspectorNetworkAgent::didReceiveData): 56 (WebCore::InspectorNetworkAgent::interceptRequestWithResponse): 57 * inspector/agents/InspectorNetworkAgent.h: 58 * loader/ContentFilter.cpp: 59 (WebCore::ContentFilter::deliverResourceData): 60 * loader/ContentFilterClient.h: 61 * loader/DocumentLoader.cpp: 62 (WebCore::DocumentLoader::finishedLoading): 63 (WebCore::DocumentLoader::continueAfterContentPolicy): 64 (WebCore::DocumentLoader::commitLoad): 65 (WebCore::DocumentLoader::commitData): 66 (WebCore::DocumentLoader::dataReceived): 67 (WebCore::DocumentLoader::maybeCreateArchive): 68 (WebCore::DocumentLoader::maybeFinishLoadingMultipartContent): 69 (WebCore::DocumentLoader::dataReceivedThroughContentFilter): 70 * loader/DocumentLoader.h: 71 * loader/DocumentThreadableLoader.cpp: 72 (WebCore::DocumentThreadableLoader::dataReceived): 73 (WebCore::DocumentThreadableLoader::didReceiveData): 74 (WebCore::DocumentThreadableLoader::didFinishLoading): 75 (WebCore::DocumentThreadableLoader::loadRequest): 76 * loader/DocumentThreadableLoader.h: 77 * loader/DocumentWriter.cpp: 78 (WebCore::DocumentWriter::addData): 79 * loader/DocumentWriter.h: 80 * loader/EmptyClients.cpp: 81 (WebCore::EmptyFrameLoaderClient::committedLoad): 82 * loader/EmptyFrameLoaderClient.h: 83 * loader/FrameLoader.cpp: 84 (WebCore::FrameLoader::willLoadMediaElementURL): 85 (WebCore::FrameLoader::commitProvisionalLoad): 86 (WebCore::FrameLoader::loadResourceSynchronously): 87 (WebCore::FrameLoader::loadedResourceFromMemoryCache): 88 * loader/FrameLoaderClient.h: 89 * loader/MediaResourceLoader.cpp: 90 (WebCore::MediaResource::dataReceived): 91 * loader/MediaResourceLoader.h: 92 * loader/NetscapePlugInStreamLoader.cpp: 93 (WebCore::NetscapePlugInStreamLoader::didReceiveData): 94 * loader/NetscapePlugInStreamLoader.h: 95 * loader/ResourceLoadNotifier.cpp: 96 (WebCore::ResourceLoadNotifier::didReceiveData): 97 (WebCore::ResourceLoadNotifier::dispatchDidReceiveData): 98 (WebCore::ResourceLoadNotifier::sendRemainingDelegateMessages): 99 * loader/ResourceLoadNotifier.h: 100 * loader/ResourceLoader.cpp: 101 (WebCore::ResourceLoader::loadDataURL): 102 (WebCore::ResourceLoader::addBuffer): 103 (WebCore::ResourceLoader::didReceiveData): 104 (WebCore::ResourceLoader::didReceiveBuffer): 105 * loader/ResourceLoader.h: 106 * loader/SubresourceLoader.cpp: 107 (WebCore::SubresourceLoader::didReceiveBuffer): 108 * loader/SubresourceLoader.h: 109 * loader/SubstituteResource.h: 110 (WebCore::SubstituteResource::append): 111 * loader/ThreadableLoaderClient.h: 112 (WebCore::ThreadableLoaderClient::didReceiveData): 113 * loader/ThreadableLoaderClientWrapper.h: 114 (WebCore::ThreadableLoaderClientWrapper::didReceiveData): 115 * loader/WorkerThreadableLoader.cpp: 116 (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveData): 117 * loader/WorkerThreadableLoader.h: 118 * loader/appcache/ApplicationCacheHost.cpp: 119 (WebCore::ApplicationCacheHost::mainResourceDataReceived): 120 * loader/appcache/ApplicationCacheHost.h: 121 * loader/appcache/ApplicationCacheResource.cpp: 122 (WebCore::ApplicationCacheResource::deliver): 123 * loader/appcache/ApplicationCacheResourceLoader.cpp: 124 (WebCore::ApplicationCacheResourceLoader::dataReceived): 125 * loader/appcache/ApplicationCacheResourceLoader.h: 126 * loader/cache/CachedImage.cpp: 127 (WebCore::CachedImage::updateBufferInternal): 128 (WebCore::CachedImage::updateBuffer): 129 (WebCore::CachedImage::updateData): 130 * loader/cache/CachedImage.h: 131 * loader/cache/CachedRawResource.cpp: 132 (WebCore::CachedRawResource::calculateIncrementalDataChunk const): 133 (WebCore::CachedRawResource::updateBuffer): 134 (WebCore::CachedRawResource::updateData): 135 (WebCore::CachedRawResource::finishLoading): 136 (WebCore::CachedRawResource::notifyClientsDataWasReceived): 137 (WebCore::CachedRawResource::didAddClient): 138 * loader/cache/CachedRawResource.h: 139 * loader/cache/CachedRawResourceClient.h: 140 (WebCore::CachedRawResourceClient::dataReceived): 141 * loader/cache/CachedResource.cpp: 142 (WebCore::CachedResource::updateData): 143 * loader/cache/CachedResource.h: 144 * loader/ios/LegacyPreviewLoader.h: 145 * loader/ios/LegacyPreviewLoader.mm: 146 (WebCore::LegacyPreviewLoader::didReceiveData): 147 (WebCore::LegacyPreviewLoader::previewConverterDidReceiveData): 148 * page/EventSource.cpp: 149 (WebCore::EventSource::didReceiveData): 150 * page/EventSource.h: 151 * platform/SharedBuffer.cpp: 152 (WebCore::FragmentedSharedBuffer::takeData): Update due to DataSegmentVectorEntry::segment being const 153 (WebCore::FragmentedSharedBuffer::forEachSegmentAsSharedBuffer const): Add convenience method. 154 (WebCore::SharedBuffer::SharedBuffer): 155 (WebCore::SharedBufferDataView::SharedBufferDataView): 156 (WebCore::SharedBufferDataView::createSharedBuffer const): 157 * platform/SharedBuffer.h: Make DataSegmentVectorEntry::segment const. 158 (WebCore::SharedBuffer::create): 159 (WebCore::SharedBuffer::SharedBuffer): 160 * platform/graphics/PlatformMediaResourceLoader.h: 161 (WebCore::PlatformMediaResourceClient::dataReceived): 162 * platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp: 163 (WebCore::WebCoreAVCFResourceLoader::dataReceived): 164 * platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.h: 165 * platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm: 166 (WebCore::CachedResourceMediaLoader::dataReceived): 167 (WebCore::PlatformResourceMediaLoader::dataReceived): 168 * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp: 169 (CachedResourceStreamingClient::dataReceived): 170 * platform/network/ResourceHandleClient.cpp: 171 (WebCore::ResourceHandleClient::didReceiveBuffer): 172 * platform/network/ResourceHandleClient.h: 173 (WebCore::ResourceHandleClient::didReceiveData): 174 * platform/network/SynchronousLoaderClient.cpp: 175 (WebCore::SynchronousLoaderClient::didReceiveData): 176 * platform/network/SynchronousLoaderClient.h: 177 * platform/network/cocoa/RangeResponseGenerator.mm: 178 (WebCore::RangeResponseGenerator::giveResponseToTaskIfBytesInRangeReceived): 179 * platform/network/cocoa/WebCoreNSURLSession.h: 180 * platform/network/cocoa/WebCoreNSURLSession.mm: 181 (WebCore::WebCoreNSURLSessionDataTaskClient::dataReceived): 182 (-[WebCoreNSURLSessionDataTask resource:receivedData:]): 183 * platform/network/curl/CurlCacheManager.cpp: 184 (WebCore::CurlCacheManager::didReceiveData): 185 * platform/network/curl/CurlCacheManager.h: 186 * platform/network/curl/CurlDownload.cpp: 187 (WebCore::CurlDownload::curlDidReceiveData): 188 * platform/network/curl/CurlDownload.h: 189 * platform/network/curl/CurlMultipartHandle.cpp: 190 (WebCore::CurlMultipartHandle::didReceiveData): 191 * platform/network/curl/CurlMultipartHandle.h: 192 * platform/network/curl/CurlMultipartHandleClient.h: 193 * platform/network/curl/CurlRequest.cpp: 194 (WebCore::CurlRequest::didReceiveData): 195 (WebCore::CurlRequest::didReceiveDataFromMultipart): 196 * platform/network/curl/CurlRequest.h: 197 * platform/network/curl/CurlRequestClient.h: 198 * platform/network/curl/CurlResourceHandleDelegate.cpp: 199 (WebCore::CurlResourceHandleDelegate::curlDidReceiveData): 200 * platform/network/curl/CurlResourceHandleDelegate.h: 201 * platform/network/curl/CurlStream.cpp: 202 (WebCore::CurlStream::tryToReceive): 203 * platform/network/curl/CurlStream.h: 204 * platform/network/curl/SocketStreamHandleImpl.h: 205 * platform/network/curl/SocketStreamHandleImplCurl.cpp: 206 (WebCore::SocketStreamHandleImpl::didReceiveData): 207 * platform/network/ios/LegacyPreviewLoaderClient.h: 208 (WebCore::LegacyPreviewLoaderClient::didReceiveData): 209 * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm: 210 (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveData:lengthReceived:]): 211 * svg/graphics/SVGImage.cpp: 212 (WebCore::SVGImage::dataChanged): 213 * workers/WorkerFontLoadRequest.cpp: 214 (WebCore::WorkerFontLoadRequest::didReceiveData): 215 * workers/WorkerFontLoadRequest.h: 216 * workers/WorkerScriptLoader.cpp: 217 (WebCore::WorkerScriptLoader::didReceiveData): 218 * workers/WorkerScriptLoader.h: 219 * workers/service/context/ServiceWorkerFetch.h: 220 * xml/XMLHttpRequest.cpp: 221 (WebCore::XMLHttpRequest::didReceiveData): 222 * xml/XMLHttpRequest.h: 223 1 224 2022-01-06 Alan Bujtas <zalan@apple.com> 2 225 -
trunk/Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp
r287612 r287684 379 379 } 380 380 381 void FetchBodyConsumer::append(const uint8_t* data, unsigned size)381 void FetchBodyConsumer::append(const SharedBuffer& buffer) 382 382 { 383 383 if (m_source) { 384 m_source->enqueue( ArrayBuffer::tryCreate(data, size));385 return; 386 } 387 m_buffer.append( data, size);384 m_source->enqueue(buffer.tryCreateArrayBuffer()); 385 return; 386 } 387 m_buffer.append(buffer); 388 388 } 389 389 -
trunk/Source/WebCore/Modules/fetch/FetchBodyConsumer.h
r287612 r287684 53 53 FetchBodyConsumer clone(); 54 54 55 void append(const uint8_t* data, unsigned);55 void append(const SharedBuffer&); 56 56 57 57 bool hasData() const { return !!m_buffer; } -
trunk/Source/WebCore/Modules/fetch/FetchBodyOwner.cpp
r287532 r287684 299 299 } 300 300 301 void FetchBodyOwner::blobChunk(const uint8_t* data, size_t size) 302 { 303 ASSERT(data); 301 void FetchBodyOwner::blobChunk(const SharedBuffer& buffer) 302 { 304 303 ASSERT(m_readableStreamSource); 305 if (!m_readableStreamSource->enqueue( ArrayBuffer::tryCreate(data, size)))304 if (!m_readableStreamSource->enqueue(buffer.tryCreateArrayBuffer())) 306 305 stop(); 307 306 } -
trunk/Source/WebCore/Modules/fetch/FetchBodyOwner.h
r287675 r287684 38 38 #include "FetchLoaderClient.h" 39 39 #include "ResourceError.h" 40 #include "SharedBuffer.h" 40 41 41 42 namespace WebCore { … … 102 103 private: 103 104 // Blob loading routines 104 void blobChunk(const uint8_t*, size_t);105 void blobChunk(const SharedBuffer&); 105 106 void blobLoadingSucceeded(); 106 107 void blobLoadingFailed(); … … 115 116 // FetchLoaderClient API 116 117 void didReceiveResponse(const ResourceResponse&) final; 117 void didReceiveData(const uint8_t* data, size_t size) final { owner.blobChunk(data, size); }118 void didReceiveData(const SharedBuffer& buffer) final { owner.blobChunk(buffer); } 118 119 void didFail(const ResourceError&) final; 119 120 void didSucceed() final { owner.blobLoadingSucceeded(); } -
trunk/Source/WebCore/Modules/fetch/FetchLoader.cpp
r287021 r287684 149 149 } 150 150 151 void FetchLoader::didReceiveData(const uint8_t* value, int size)151 void FetchLoader::didReceiveData(const SharedBuffer& buffer) 152 152 { 153 153 if (!m_consumer) { 154 m_client.didReceiveData( value, size);154 m_client.didReceiveData(buffer); 155 155 return; 156 156 } 157 m_consumer->append( value, size);157 m_consumer->append(buffer); 158 158 } 159 159 -
trunk/Source/WebCore/Modules/fetch/FetchLoader.h
r287021 r287684 59 59 // ThreadableLoaderClient API. 60 60 void didReceiveResponse(ResourceLoaderIdentifier, const ResourceResponse&) final; 61 void didReceiveData(const uint8_t*, int) final;61 void didReceiveData(const SharedBuffer&) final; 62 62 void didFinishLoading(ResourceLoaderIdentifier) final; 63 63 void didFail(const ResourceError&) final; -
trunk/Source/WebCore/Modules/fetch/FetchLoaderClient.h
r278516 r287684 42 42 virtual void didReceiveResponse(const ResourceResponse&) { } 43 43 44 virtual void didReceiveData(const uint8_t*, size_t) { }44 virtual void didReceiveData(const SharedBuffer&) { } 45 45 46 46 virtual void didSucceed() = 0; -
trunk/Source/WebCore/Modules/fetch/FetchResponse.cpp
r287675 r287684 359 359 } 360 360 361 void FetchResponse::BodyLoader::didReceiveData(const uint8_t* data, size_t size)361 void FetchResponse::BodyLoader::didReceiveData(const SharedBuffer& buffer) 362 362 { 363 363 ASSERT(m_response.m_readableStreamSource || m_consumeDataCallback); 364 364 365 365 if (m_consumeDataCallback) { 366 Span chunk { data, size};366 Span chunk { buffer.data(), buffer.size() }; 367 367 m_consumeDataCallback(&chunk); 368 368 return; … … 372 372 373 373 if (!source.isPulling()) { 374 m_response.body().consumer().append( data, size);374 m_response.body().consumer().append(buffer); 375 375 return; 376 376 } … … 380 380 return; 381 381 } 382 if (!source.enqueue( ArrayBuffer::tryCreate(data, size))) {382 if (!source.enqueue(buffer.tryCreateArrayBuffer())) { 383 383 stop(); 384 384 return; … … 464 464 void FetchResponse::consumeChunk(Ref<JSC::Uint8Array>&& chunk) 465 465 { 466 body().consumer().append( chunk->data(), chunk->byteLength());466 body().consumer().append(SharedBuffer::create(chunk->data(), chunk->byteLength())); 467 467 } 468 468 -
trunk/Source/WebCore/Modules/fetch/FetchResponse.h
r287532 r287684 144 144 void didFail(const ResourceError&) final; 145 145 void didReceiveResponse(const ResourceResponse&) final; 146 void didReceiveData(const uint8_t*, size_t) final;146 void didReceiveData(const SharedBuffer&) final; 147 147 148 148 FetchResponse& m_response; -
trunk/Source/WebCore/Modules/model-element/HTMLModelElement.cpp
r286983 r287684 178 178 // MARK: - CachedRawResourceClient 179 179 180 void HTMLModelElement::dataReceived(CachedResource& resource, const uint8_t* data, int dataLength)180 void HTMLModelElement::dataReceived(CachedResource& resource, const SharedBuffer& buffer) 181 181 { 182 182 ASSERT_UNUSED(resource, &resource == m_resource); 183 m_data.append( data, dataLength);183 m_data.append(buffer); 184 184 } 185 185 -
trunk/Source/WebCore/Modules/model-element/HTMLModelElement.h
r286983 r287684 117 117 118 118 // CachedRawResourceClient overrides. 119 void dataReceived(CachedResource&, const uint8_t* data, int dataLength) final;119 void dataReceived(CachedResource&, const SharedBuffer&) final; 120 120 void notifyFinished(CachedResource&, const NetworkLoadMetrics&) final; 121 121 -
trunk/Source/WebCore/Modules/streams/ReadableStreamSink.h
r287021 r287684 36 36 class BufferSource; 37 37 class ReadableStream; 38 class FragmentedSharedBuffer;39 38 40 39 class ReadableStreamSink : public RefCounted<ReadableStreamSink> { -
trunk/Source/WebCore/fileapi/FileReaderLoader.cpp
r287612 r287684 42 42 #include "ResourceResponse.h" 43 43 #include "ScriptExecutionContext.h" 44 #include "SharedBuffer.h" 44 45 #include "TextResourceDecoder.h" 45 46 #include "ThreadableBlobRegistry.h" … … 169 170 } 170 171 171 void FileReaderLoader::didReceiveData(const uint8_t* data, int dataLength) 172 { 173 ASSERT(data); 174 ASSERT(dataLength > 0); 172 void FileReaderLoader::didReceiveData(const SharedBuffer& buffer) 173 { 174 ASSERT(buffer.size()); 175 175 176 176 // Bail out if we already encountered an error. … … 178 178 return; 179 179 180 int length = dataLength;180 int length = buffer.size(); 181 181 unsigned remainingBufferSpace = m_totalBytes - m_bytesLoaded; 182 182 if (length > static_cast<long long>(remainingBufferSpace)) { … … 187 187 } 188 188 if (m_variableLength) { 189 unsigned newLength = m_totalBytes + static_cast<unsigned>(dataLength);189 unsigned newLength = m_totalBytes + buffer.size(); 190 190 if (newLength < m_totalBytes) { 191 191 failed(NotReadableError); … … 212 212 return; 213 213 214 memcpy(static_cast<char*>(m_rawData->data()) + m_bytesLoaded, data, length);214 memcpy(static_cast<char*>(m_rawData->data()) + m_bytesLoaded, buffer.data(), length); 215 215 m_bytesLoaded += length; 216 216 -
trunk/Source/WebCore/fileapi/FileReaderLoader.h
r287612 r287684 72 72 // ThreadableLoaderClient 73 73 void didReceiveResponse(ResourceLoaderIdentifier, const ResourceResponse&) override; 74 void didReceiveData(const uint8_t*, int) override;74 void didReceiveData(const SharedBuffer&) override; 75 75 void didFinishLoading(ResourceLoaderIdentifier) override; 76 76 void didFail(const ResourceError&) override; -
trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp
r287327 r287684 617 617 } 618 618 619 void InspectorInstrumentation::didReceiveDataImpl(InstrumentingAgents& instrumentingAgents, ResourceLoaderIdentifier identifier, const uint8_t* data, int dataLength, int encodedDataLength)620 { 621 if (auto* networkAgent = instrumentingAgents.enabledNetworkAgent()) 622 networkAgent->didReceiveData(identifier, data, dataLength, encodedDataLength);619 void InspectorInstrumentation::didReceiveDataImpl(InstrumentingAgents& instrumentingAgents, ResourceLoaderIdentifier identifier, const SharedBuffer& buffer, int encodedDataLength) 620 { 621 if (auto* networkAgent = instrumentingAgents.enabledNetworkAgent()) 622 networkAgent->didReceiveData(identifier, &buffer, buffer.size(), encodedDataLength); 623 623 } 624 624 -
trunk/Source/WebCore/inspector/InspectorInstrumentation.h
r287021 r287684 194 194 static void didReceiveResourceResponse(Frame&, ResourceLoaderIdentifier, DocumentLoader*, const ResourceResponse&, ResourceLoader*); 195 195 static void didReceiveThreadableLoaderResponse(DocumentThreadableLoader&, ResourceLoaderIdentifier); 196 static void didReceiveData(Frame*, ResourceLoaderIdentifier, const uint8_t* data, int dataLength, int encodedDataLength);196 static void didReceiveData(Frame*, ResourceLoaderIdentifier, const SharedBuffer&, int encodedDataLength); 197 197 static void didFinishLoading(Frame*, DocumentLoader*, ResourceLoaderIdentifier, const NetworkLoadMetrics&, ResourceLoader*); 198 198 static void didFailLoading(Frame*, DocumentLoader*, ResourceLoaderIdentifier, const ResourceError&); … … 200 200 static void willSendRequest(WorkerOrWorkletGlobalScope&, ResourceLoaderIdentifier, ResourceRequest&); 201 201 static void didReceiveResourceResponse(WorkerOrWorkletGlobalScope&, ResourceLoaderIdentifier, const ResourceResponse&); 202 static void didReceiveData(WorkerOrWorkletGlobalScope&, ResourceLoaderIdentifier, const uint8_t* data, int dataLength);202 static void didReceiveData(WorkerOrWorkletGlobalScope&, ResourceLoaderIdentifier, const SharedBuffer&); 203 203 static void didFinishLoading(WorkerOrWorkletGlobalScope&, ResourceLoaderIdentifier, const NetworkLoadMetrics&); 204 204 static void didFailLoading(WorkerOrWorkletGlobalScope&, ResourceLoaderIdentifier, const ResourceError&); … … 415 415 static void didReceiveResourceResponseImpl(InstrumentingAgents&, ResourceLoaderIdentifier, DocumentLoader*, const ResourceResponse&, ResourceLoader*); 416 416 static void didReceiveThreadableLoaderResponseImpl(InstrumentingAgents&, DocumentThreadableLoader&, ResourceLoaderIdentifier); 417 static void didReceiveDataImpl(InstrumentingAgents&, ResourceLoaderIdentifier, const uint8_t* data, int dataLength, int encodedDataLength);417 static void didReceiveDataImpl(InstrumentingAgents&, ResourceLoaderIdentifier, const SharedBuffer&, int encodedDataLength); 418 418 static void didFinishLoadingImpl(InstrumentingAgents&, ResourceLoaderIdentifier, DocumentLoader*, const NetworkLoadMetrics&, ResourceLoader*); 419 419 static void didFailLoadingImpl(InstrumentingAgents&, ResourceLoaderIdentifier, DocumentLoader*, const ResourceError&); … … 1083 1083 } 1084 1084 1085 inline void InspectorInstrumentation::didReceiveData(Frame* frame, ResourceLoaderIdentifier identifier, const uint8_t* data, int dataLength, int encodedDataLength)1086 { 1087 FAST_RETURN_IF_NO_FRONTENDS(void()); 1088 if (auto* agents = instrumentingAgents(frame)) 1089 didReceiveDataImpl(*agents, identifier, data, dataLength, encodedDataLength);1090 } 1091 1092 inline void InspectorInstrumentation::didReceiveData(WorkerOrWorkletGlobalScope& globalScope, ResourceLoaderIdentifier identifier, const uint8_t* data, int dataLength)1093 { 1094 FAST_RETURN_IF_NO_FRONTENDS(void()); 1095 didReceiveDataImpl(instrumentingAgents(globalScope), identifier, data, dataLength, dataLength);1085 inline void InspectorInstrumentation::didReceiveData(Frame* frame, ResourceLoaderIdentifier identifier, const SharedBuffer& buffer, int encodedDataLength) 1086 { 1087 FAST_RETURN_IF_NO_FRONTENDS(void()); 1088 if (auto* agents = instrumentingAgents(frame)) 1089 didReceiveDataImpl(*agents, identifier, buffer, encodedDataLength); 1090 } 1091 1092 inline void InspectorInstrumentation::didReceiveData(WorkerOrWorkletGlobalScope& globalScope, ResourceLoaderIdentifier identifier, const SharedBuffer& buffer) 1093 { 1094 FAST_RETURN_IF_NO_FRONTENDS(void()); 1095 didReceiveDataImpl(instrumentingAgents(globalScope), identifier, buffer, buffer.size()); 1096 1096 } 1097 1097 -
trunk/Source/WebCore/inspector/NetworkResourcesData.cpp
r287021 r287684 91 91 } 92 92 93 void NetworkResourcesData::ResourceData::appendData(const uint8_t* data, size_t dataLength)93 void NetworkResourcesData::ResourceData::appendData(const SharedBuffer& data) 94 94 { 95 95 ASSERT(!hasContent()); 96 m_dataBuffer.append(data , dataLength);96 m_dataBuffer.append(data); 97 97 } 98 98 … … 222 222 } 223 223 224 NetworkResourcesData::ResourceData const* NetworkResourcesData::maybeAddResourceData(const String& requestId, const uint8_t* data, size_t dataLength)224 NetworkResourcesData::ResourceData const* NetworkResourcesData::maybeAddResourceData(const String& requestId, const SharedBuffer& data) 225 225 { 226 226 ResourceData* resourceData = resourceDataForRequestId(requestId); … … 231 231 return resourceData; 232 232 233 if (resourceData->dataLength() + data Length> m_maximumSingleResourceContentSize)233 if (resourceData->dataLength() + data.size() > m_maximumSingleResourceContentSize) 234 234 m_contentSize -= resourceData->evictContent(); 235 235 if (resourceData->isContentEvicted()) 236 236 return resourceData; 237 237 238 if (ensureFreeSpace(data Length) && !resourceData->isContentEvicted()) {238 if (ensureFreeSpace(data.size()) && !resourceData->isContentEvicted()) { 239 239 m_requestIdsDeque.append(requestId); 240 resourceData->appendData(data , dataLength);241 m_contentSize += data Length;240 resourceData->appendData(data); 241 m_contentSize += data.size(); 242 242 } 243 243 -
trunk/Source/WebCore/inspector/NetworkResourcesData.h
r287021 r287684 109 109 bool hasData() const; 110 110 size_t dataLength() const; 111 void appendData(const uint8_t* data, size_t dataLength);111 void appendData(const SharedBuffer&); 112 112 unsigned decodeDataToContent(); 113 113 … … 142 142 InspectorPageAgent::ResourceType resourceType(const String& requestId); 143 143 void setResourceContent(const String& requestId, const String& content, bool base64Encoded = false); 144 ResourceData const* maybeAddResourceData(const String& requestId, const uint8_t* data, size_t dataLength);144 ResourceData const* maybeAddResourceData(const String& requestId, const SharedBuffer&); 145 145 void maybeDecodeDataToContent(const String& requestId); 146 146 void addCachedResource(const String& requestId, CachedResource*); -
trunk/Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp
r287681 r287684 125 125 } 126 126 127 void didReceiveData(const uint8_t* data, int dataLength) override127 void didReceiveData(const SharedBuffer& buffer) override 128 128 { 129 if ( !dataLength)129 if (buffer.isEmpty()) 130 130 return; 131 131 132 m_responseText.append(m_decoder->decode( data, dataLength));132 m_responseText.append(m_decoder->decode(buffer.data(), buffer.size())); 133 133 } 134 134 … … 547 547 m_resourcesData->setResourceContent(requestId, previousResourceData->content(), previousResourceData->base64Encoded()); 548 548 else if (previousResourceData->hasBufferedData()) { 549 auto previousBuffer = previousResourceData->buffer(); 550 previousBuffer->forEachSegment([&](auto& segment) { 551 m_resourcesData->maybeAddResourceData(requestId, segment.data(), segment.size()); 549 previousResourceData->buffer()->forEachSegmentAsSharedBuffer([&](auto&& buffer) { 550 m_resourcesData->maybeAddResourceData(requestId, buffer); 552 551 }); 553 552 } … … 575 574 } 576 575 577 void InspectorNetworkAgent::didReceiveData(ResourceLoaderIdentifier identifier, const uint8_t* data, int dataLength, int encodedDataLength)576 void InspectorNetworkAgent::didReceiveData(ResourceLoaderIdentifier identifier, const SharedBuffer* data, int expectedDataLength, int encodedDataLength) 578 577 { 579 578 if (m_hiddenRequestIdentifiers.contains(identifier)) … … 583 582 584 583 if (data) { 585 NetworkResourcesData::ResourceData const* resourceData = m_resourcesData->maybeAddResourceData(requestId, data, dataLength);584 NetworkResourcesData::ResourceData const* resourceData = m_resourcesData->maybeAddResourceData(requestId, *data); 586 585 587 586 // For a synchronous XHR, if we didn't add data then we can apply it here as base64 encoded content. … … 589 588 // Sync XHRs may not have a cached resource, while non-sync XHRs usually transfer data over on completion. 590 589 if (m_loadingXHRSynchronously && resourceData && !resourceData->hasBufferedData() && !resourceData->cachedResource()) 591 m_resourcesData->setResourceContent(requestId, base64EncodeToString(data , dataLength), true);592 } 593 594 m_frontendDispatcher->dataReceived(requestId, timestamp(), dataLength, encodedDataLength);590 m_resourcesData->setResourceContent(requestId, base64EncodeToString(data->data(), data->size()), true); 591 } 592 593 m_frontendDispatcher->dataReceived(requestId, timestamp(), expectedDataLength, encodedDataLength); 595 594 } 596 595 … … 1269 1268 return makeUnexpected("Unable to fulfill request, it has already been processed"_s); 1270 1269 1271 RefPtr< FragmentedSharedBuffer> data;1270 RefPtr<SharedBuffer> data; 1272 1271 if (base64Encoded) { 1273 1272 auto buffer = base64Decode(content); … … 1294 1293 response.setHTTPHeaderFields(WTFMove(explicitHeaders)); 1295 1294 response.setHTTPHeaderField(HTTPHeaderName::ContentType, response.mimeType()); 1296 loader->didReceiveResponse(response, [loader, buffer = data.releaseNonNull()]() mutable{1295 loader->didReceiveResponse(response, [loader, buffer = data.releaseNonNull()]() { 1297 1296 if (buffer->size()) 1298 loader->didReceive Buffer(WTFMove(buffer), buffer->size(), DataPayloadWholeResource);1297 loader->didReceiveData(buffer, buffer->size(), DataPayloadWholeResource); 1299 1298 loader->didFinishLoading(NetworkLoadMetrics()); 1300 1299 }); -
trunk/Source/WebCore/inspector/agents/InspectorNetworkAgent.h
r287021 r287684 102 102 void willSendRequestOfType(ResourceLoaderIdentifier, DocumentLoader*, ResourceRequest&, InspectorInstrumentation::LoadType); 103 103 void didReceiveResponse(ResourceLoaderIdentifier, DocumentLoader*, const ResourceResponse&, ResourceLoader*); 104 void didReceiveData(ResourceLoaderIdentifier, const uint8_t* data, int dataLength, int encodedDataLength);104 void didReceiveData(ResourceLoaderIdentifier, const SharedBuffer*, int expectedDataLength, int encodedDataLength); 105 105 void didFinishLoading(ResourceLoaderIdentifier, DocumentLoader*, const NetworkLoadMetrics&, ResourceLoader*); 106 106 void didFailLoading(ResourceLoaderIdentifier, DocumentLoader*, const ResourceError&); -
trunk/Source/WebCore/loader/ContentFilter.cpp
r287138 r287684 234 234 ASSERT(resource.dataBufferingPolicy() == DataBufferingPolicy::BufferData); 235 235 if (auto* resourceBuffer = resource.resourceBuffer()) 236 m_client.dataReceivedThroughContentFilter(resourceBuffer->makeContiguous() ->data(), resourceBuffer->size());236 m_client.dataReceivedThroughContentFilter(resourceBuffer->makeContiguous()); 237 237 } 238 238 -
trunk/Source/WebCore/loader/ContentFilterClient.h
r278516 r287684 34 34 class ContentFilterUnblockHandler; 35 35 class ResourceError; 36 class SharedBuffer; 36 37 class SubstituteData; 37 38 … … 42 43 virtual void deref() const = 0; 43 44 44 virtual void dataReceivedThroughContentFilter(const uint8_t*, int) = 0;45 virtual void dataReceivedThroughContentFilter(const SharedBuffer&) = 0; 45 46 virtual ResourceError contentFilterDidBlock(ContentFilterUnblockHandler, String&& unblockRequestDeniedScript) = 0; 46 47 virtual void cancelMainResourceLoadForContentFilter(const ResourceError&) = 0; -
trunk/Source/WebCore/loader/DocumentLoader.cpp
r287030 r287684 484 484 // DocumentWriter::begin() gets called and creates the Document. 485 485 if (!m_gotFirstByte) 486 commitData( 0, 0);487 486 commitData(SharedBuffer::create()); 487 488 488 if (!frameLoader()) 489 489 return; … … 1158 1158 auto content = m_substituteData.content(); 1159 1159 if (content && content->size()) { 1160 content->forEachSegment ([&](auto& segment) {1161 dataReceived( segment.data(), segment.size());1160 content->forEachSegmentAsSharedBuffer([&](auto&& buffer) { 1161 dataReceived(buffer); 1162 1162 }); 1163 1163 } … … 1172 1172 } 1173 1173 1174 void DocumentLoader::commitLoad(const uint8_t* data, int length)1174 void DocumentLoader::commitLoad(const SharedBuffer& data) 1175 1175 { 1176 1176 // Both unloading the old page and parsing the new page may execute JavaScript which destroys the datasource … … 1187 1187 return; 1188 1188 #endif 1189 frameLoader->client().committedLoad(this, data , length);1189 frameLoader->client().committedLoad(this, data); 1190 1190 1191 1191 if (isMultipartReplacingLoad()) … … 1216 1216 #endif 1217 1217 1218 void DocumentLoader::commitData(const uint8_t* bytes, size_t length)1218 void DocumentLoader::commitData(const SharedBuffer& data) 1219 1219 { 1220 1220 if (!m_gotFirstByte) { … … 1314 1314 1315 1315 ASSERT(m_frame->document()->parsing()); 1316 m_writer.addData( bytes, length);1317 } 1318 1319 void DocumentLoader::dataReceived(CachedResource& resource, const uint8_t* data, int length)1316 m_writer.addData(data); 1317 } 1318 1319 void DocumentLoader::dataReceived(CachedResource& resource, const SharedBuffer& buffer) 1320 1320 { 1321 1321 ASSERT_UNUSED(resource, &resource == m_mainResource); 1322 dataReceived( data, length);1323 } 1324 1325 void DocumentLoader::dataReceived(const uint8_t* data, int length)1322 dataReceived(buffer); 1323 } 1324 1325 void DocumentLoader::dataReceived(const SharedBuffer& buffer) 1326 1326 { 1327 1327 #if ENABLE(CONTENT_FILTERING) 1328 if (m_contentFilter && !m_contentFilter->continueAfterDataReceived( data, length))1329 return; 1330 #endif 1331 1332 ASSERT( data);1333 ASSERT( length);1328 if (m_contentFilter && !m_contentFilter->continueAfterDataReceived(buffer.data(), buffer.size())) 1329 return; 1330 #endif 1331 1332 ASSERT(buffer.data()); 1333 ASSERT(buffer.size()); 1334 1334 ASSERT(!m_response.isNull()); 1335 1335 … … 1341 1341 1342 1342 if (m_identifierForLoadWithoutResourceLoader) 1343 frameLoader()->notifier().dispatchDidReceiveData(this, m_identifierForLoadWithoutResourceLoader, data, length, -1);1344 1345 m_applicationCacheHost->mainResourceDataReceived( data, length, -1, false);1343 frameLoader()->notifier().dispatchDidReceiveData(this, m_identifierForLoadWithoutResourceLoader, &buffer, buffer.size(), -1); 1344 1345 m_applicationCacheHost->mainResourceDataReceived(buffer, -1, false); 1346 1346 1347 1347 if (!isMultipartReplacingLoad()) 1348 commitLoad( data, length);1348 commitLoad(buffer); 1349 1349 } 1350 1350 … … 1615 1615 1616 1616 ASSERT(m_frame->document()); 1617 commitData( m_parsedArchiveData->data(), mainResource.data().size());1617 commitData(*m_parsedArchiveData); 1618 1618 return true; 1619 1619 #endif … … 2258 2258 frameLoader()->setupForReplace(); 2259 2259 m_committed = false; 2260 RefPtr<FragmentedSharedBuffer> resourceData = mainResourceData(); 2261 commitLoad(resourceData->makeContiguous()->data(), resourceData->size()); 2260 commitLoad(mainResourceData()->makeContiguous()); 2262 2261 } 2263 2262 … … 2411 2410 2412 2411 #if ENABLE(CONTENT_FILTERING) 2413 void DocumentLoader::dataReceivedThroughContentFilter(const uint8_t* data, int size)2414 { 2415 dataReceived( data, size);2412 void DocumentLoader::dataReceivedThroughContentFilter(const SharedBuffer& buffer) 2413 { 2414 dataReceived(buffer); 2416 2415 } 2417 2416 -
trunk/Source/WebCore/loader/DocumentLoader.h
r287321 r287684 87 87 class FragmentedSharedBuffer; 88 88 class SWClientConnection; 89 class SharedBuffer; 89 90 class SubresourceLoader; 90 91 class SubstituteResource; … … 378 379 379 380 // The WebKit layer calls this function when it's ready for the data to actually be added to the document. 380 WEBCORE_EXPORT void commitData(const uint8_t* bytes, size_t length);381 WEBCORE_EXPORT void commitData(const SharedBuffer&); 381 382 382 383 ApplicationCacheHost& applicationCacheHost() const; … … 478 479 void commitIfReady(); 479 480 void setMainDocumentError(const ResourceError&); 480 void commitLoad(const uint8_t*, int);481 void commitLoad(const SharedBuffer&); 481 482 void clearMainResourceLoader(); 482 483 … … 494 495 WEBCORE_EXPORT void redirectReceived(CachedResource&, ResourceRequest&&, const ResourceResponse&, CompletionHandler<void(ResourceRequest&&)>&&) override; 495 496 WEBCORE_EXPORT void responseReceived(CachedResource&, const ResourceResponse&, CompletionHandler<void()>&&) override; 496 WEBCORE_EXPORT void dataReceived(CachedResource&, const uint8_t* data, int length) override;497 WEBCORE_EXPORT void dataReceived(CachedResource&, const SharedBuffer&) override; 497 498 WEBCORE_EXPORT void notifyFinished(CachedResource&, const NetworkLoadMetrics&) override; 498 499 #if USE(QUICK_LOOK) … … 504 505 #if ENABLE(CONTENT_FILTERING) 505 506 // ContentFilterClient 506 WEBCORE_EXPORT void dataReceivedThroughContentFilter(const uint8_t*, int) final;507 WEBCORE_EXPORT void dataReceivedThroughContentFilter(const SharedBuffer&) final; 507 508 WEBCORE_EXPORT ResourceError contentFilterDidBlock(ContentFilterUnblockHandler, String&& unblockRequestDeniedScript) final; 508 509 WEBCORE_EXPORT void cancelMainResourceLoadForContentFilter(const ResourceError&) final; … … 510 511 #endif 511 512 512 void dataReceived(const uint8_t* data, int length);513 void dataReceived(const SharedBuffer&); 513 514 514 515 bool maybeLoadEmpty(); -
trunk/Source/WebCore/loader/DocumentThreadableLoader.cpp
r287653 r287684 439 439 } 440 440 441 void DocumentThreadableLoader::dataReceived(CachedResource& resource, const uint8_t* data, int dataLength)441 void DocumentThreadableLoader::dataReceived(CachedResource& resource, const SharedBuffer& buffer) 442 442 { 443 443 ASSERT_UNUSED(resource, &resource == m_resource); 444 didReceiveData(m_resource->identifier(), data, dataLength);445 } 446 447 void DocumentThreadableLoader::didReceiveData(ResourceLoaderIdentifier, const uint8_t* data, int dataLength)444 didReceiveData(m_resource->identifier(), buffer); 445 } 446 447 void DocumentThreadableLoader::didReceiveData(ResourceLoaderIdentifier, const SharedBuffer& buffer) 448 448 { 449 449 ASSERT(m_client); … … 452 452 return; 453 453 454 m_client->didReceiveData( data, dataLength);454 m_client->didReceiveData(buffer); 455 455 } 456 456 … … 495 495 if (options().filteringPolicy == ResponseFilteringPolicy::Disable) { 496 496 m_client->didReceiveResponse(identifier, response); 497 if (auto* buffer = m_resource->resourceBuffer()) { 498 buffer->forEachSegment([&](auto& segment) { 499 m_client->didReceiveData(segment.data(), segment.size()); 500 }); 501 } 497 if (auto* buffer = m_resource->resourceBuffer()) 498 m_client->didReceiveData(*buffer); 502 499 } else { 503 500 ASSERT(response.type() == ResourceResponse::Type::Default); 504 501 505 502 m_client->didReceiveResponse(identifier, ResourceResponse::filter(response, m_options.credentials == FetchOptions::Credentials::Include ? ResourceResponse::PerformExposeAllHeadersCheck::No : ResourceResponse::PerformExposeAllHeadersCheck::Yes)); 506 if (auto* buffer = m_resource->resourceBuffer()) { 507 buffer->forEachSegment([&](auto& segment) { 508 m_client->didReceiveData(segment.data(), segment.size()); 509 }); 510 } 503 if (auto* buffer = m_resource->resourceBuffer()) 504 m_client->didReceiveData(*buffer); 511 505 } 512 506 } … … 669 663 didReceiveResponse(identifier, response); 670 664 671 if (data) { 672 data->forEachSegment([&](auto& segment) { 673 didReceiveData(identifier, segment.data(), segment.size()); 674 }); 675 } 665 if (data) 666 didReceiveData(identifier, *data); 676 667 677 668 const auto* timing = response.deprecatedNetworkLoadMetricsOrNull(); -
trunk/Source/WebCore/loader/DocumentThreadableLoader.h
r286940 r287684 87 87 void dataSent(CachedResource&, unsigned long long bytesSent, unsigned long long totalBytesToBeSent) override; 88 88 void responseReceived(CachedResource&, const ResourceResponse&, CompletionHandler<void()>&&) override; 89 void dataReceived(CachedResource&, const uint8_t* data, int dataLength) override;89 void dataReceived(CachedResource&, const SharedBuffer&) override; 90 90 void redirectReceived(CachedResource&, ResourceRequest&&, const ResourceResponse&, CompletionHandler<void(ResourceRequest&&)>&&) override; 91 91 void finishedTimingForWorkerLoad(CachedResource&, const ResourceTiming&) override; … … 94 94 95 95 void didReceiveResponse(ResourceLoaderIdentifier, const ResourceResponse&); 96 void didReceiveData(ResourceLoaderIdentifier, const uint8_t* data, int dataLength);96 void didReceiveData(ResourceLoaderIdentifier, const SharedBuffer&); 97 97 void didFinishLoading(ResourceLoaderIdentifier); 98 98 void didFail(ResourceLoaderIdentifier, const ResourceError&); -
trunk/Source/WebCore/loader/DocumentWriter.cpp
r284934 r287684 265 265 } 266 266 267 void DocumentWriter::addData(const uint8_t* bytes, size_t length)267 void DocumentWriter::addData(const SharedBuffer& data) 268 268 { 269 269 // FIXME: Change these to ASSERT once https://bugs.webkit.org/show_bug.cgi?id=80427 has been resolved. … … 274 274 } 275 275 ASSERT(m_parser); 276 m_parser->appendBytes(*this, bytes, length);276 m_parser->appendBytes(*this, data.data(), data.size()); 277 277 } 278 278 -
trunk/Source/WebCore/loader/DocumentWriter.h
r284934 r287684 37 37 class DocumentParser; 38 38 class Frame; 39 class SharedBuffer; 39 40 class TextResourceDecoder; 40 41 … … 48 49 bool begin(); 49 50 bool begin(const URL&, bool dispatchWindowObjectAvailable = true, Document* ownerDocument = nullptr); 50 void addData(const uint8_t* bytes, size_t length);51 void addData(const SharedBuffer&); 51 52 void insertDataSynchronously(const String&); // For an internal use only to prevent the parser from yielding. 52 53 WEBCORE_EXPORT void end(); -
trunk/Source/WebCore/loader/EmptyClients.cpp
r287321 r287684 871 871 } 872 872 873 void EmptyFrameLoaderClient::committedLoad(DocumentLoader*, const uint8_t*, int)873 void EmptyFrameLoaderClient::committedLoad(DocumentLoader*, const SharedBuffer&) 874 874 { 875 875 } -
trunk/Source/WebCore/loader/EmptyFrameLoaderClient.h
r283179 r287684 120 120 void didReplaceMultipartContent() final; 121 121 122 void committedLoad(DocumentLoader*, const uint8_t*, int) final;122 void committedLoad(DocumentLoader*, const SharedBuffer&) final; 123 123 void finishedLoading(DocumentLoader*) final; 124 124 -
trunk/Source/WebCore/loader/FrameLoader.cpp
r287353 r287684 1688 1688 ResourceError error; 1689 1689 requestFromDelegate(request, identifier, error); 1690 notifier().sendRemainingDelegateMessages(m_documentLoader.get(), identifier, request, ResourceResponse(url, String(), -1, String()), 0, -1, -1, error);1690 notifier().sendRemainingDelegateMessages(m_documentLoader.get(), identifier, request, ResourceResponse(url, String(), -1, String()), nullptr, -1, -1, error); 1691 1691 1692 1692 url = request.url(); … … 2088 2088 2089 2089 // Send remaining notifications for the main resource. 2090 notifier().sendRemainingDelegateMessages(m_documentLoader.get(), mainResourceIdentifier, mainResourceRequest, ResourceResponse(), 2091 nullptr, static_cast<int>(m_documentLoader->response().expectedContentLength()), 0, mainResouceError); 2090 notifier().sendRemainingDelegateMessages(m_documentLoader.get(), mainResourceIdentifier, mainResourceRequest, ResourceResponse(), nullptr, static_cast<int>(m_documentLoader->response().expectedContentLength()), 0, mainResouceError); 2092 2091 2093 2092 Vector<Ref<Frame>> targetFrames; … … 2137 2136 // However, with today's computers and networking speeds, this won't happen in practice. 2138 2137 // Could be an issue with a giant local file. 2139 notifier().sendRemainingDelegateMessages(m_documentLoader.get(), identifier, request, response, 0, static_cast<int>(response.expectedContentLength()), 0, error);2138 notifier().sendRemainingDelegateMessages(m_documentLoader.get(), identifier, request, response, nullptr, static_cast<int>(response.expectedContentLength()), 0, error); 2140 2139 } 2141 2140 … … 3167 3166 } 3168 3167 } 3169 notifier().sendRemainingDelegateMessages(m_documentLoader.get(), identifier, request, response, data ? data->data() : nullptr, data ? data->size() : 0, -1, error); 3168 3169 notifier().sendRemainingDelegateMessages(m_documentLoader.get(), identifier, request, response, data.get(), data ? data->size() : 0, -1, error); 3170 3170 return identifier; 3171 3171 } … … 3648 3648 ResourceResponse response = resource.response(); 3649 3649 response.setSource(ResourceResponse::Source::MemoryCache); 3650 notifier().sendRemainingDelegateMessages(m_documentLoader.get(), identifier, newRequest, response, 0, resource.encodedSize(), 0, error);3650 notifier().sendRemainingDelegateMessages(m_documentLoader.get(), identifier, newRequest, response, nullptr, resource.encodedSize(), 0, error); 3651 3651 } 3652 3652 -
trunk/Source/WebCore/loader/FrameLoaderClient.h
r287021 r287684 8 8 * 9 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer. 11 11 * 2. Redistributions in binary form must reproduce the above copyright 12 12 * notice, this list of conditions and the following disclaimer in the … … 51 51 52 52 #if PLATFORM(COCOA) 53 #ifdef __OBJC__ 53 #ifdef __OBJC__ 54 54 #import <Foundation/Foundation.h> 55 55 typedef id RemoteAXObjectRef; … … 99 99 class ResourceResponse; 100 100 class SecurityOrigin; 101 class FragmentedSharedBuffer;101 class SharedBuffer; 102 102 class SubstituteData; 103 103 class Widget; … … 215 215 virtual void didReplaceMultipartContent() = 0; 216 216 217 virtual void committedLoad(DocumentLoader*, const uint8_t*, int) = 0;217 virtual void committedLoad(DocumentLoader*, const SharedBuffer&) = 0; 218 218 virtual void finishedLoading(DocumentLoader*) = 0; 219 219 220 220 virtual void updateGlobalHistory() = 0; 221 221 virtual void updateGlobalHistoryRedirectLinks() = 0; … … 273 273 274 274 virtual String overrideContentSecurityPolicy() const { return String(); } 275 275 276 276 virtual void savePlatformDataToCachedFrame(CachedFrame*) = 0; 277 277 virtual void transitionToCommittedFromCachedFrame(CachedFrame*) = 0; … … 382 382 383 383 virtual AllowsContentJavaScript allowsContentJavaScriptFromMostRecentNavigation() const { return AllowsContentJavaScript::Yes; } 384 384 385 385 #if ENABLE(APP_BOUND_DOMAINS) 386 386 virtual bool shouldEnableInAppBrowserPrivacyProtections() const { return false; } … … 391 391 virtual bool shouldUsePDFPlugin(const String&, StringView) const { return false; } 392 392 #endif 393 393 394 394 virtual bool isParentProcessAFullWebBrowser() const { return false; } 395 395 }; -
trunk/Source/WebCore/loader/MediaResourceLoader.cpp
r284093 r287684 232 232 } 233 233 234 void MediaResource::dataReceived(CachedResource& resource, const uint8_t* data, int dataLength)235 { 236 ASSERT_UNUSED(resource, &resource == m_resource); 237 238 RefPtr<MediaResource> protectedThis(this); 239 if (m_client) 240 m_client->dataReceived(*this, data, dataLength);234 void MediaResource::dataReceived(CachedResource& resource, const SharedBuffer& buffer) 235 { 236 ASSERT_UNUSED(resource, &resource == m_resource); 237 238 RefPtr<MediaResource> protectedThis(this); 239 if (m_client) 240 m_client->dataReceived(*this, buffer); 241 241 } 242 242 -
trunk/Source/WebCore/loader/MediaResourceLoader.h
r278516 r287684 87 87 bool shouldCacheResponse(CachedResource&, const ResourceResponse&) override; 88 88 void dataSent(CachedResource&, unsigned long long, unsigned long long) override; 89 void dataReceived(CachedResource&, const uint8_t*, int) override;89 void dataReceived(CachedResource&, const SharedBuffer&) override; 90 90 void notifyFinished(CachedResource&, const NetworkLoadMetrics&) override; 91 91 -
trunk/Source/WebCore/loader/NetscapePlugInStreamLoader.cpp
r287021 r287684 142 142 } 143 143 144 void NetscapePlugInStreamLoader::didReceiveData(const uint8_t* data, unsigned length, long long encodedDataLength, DataPayloadType dataPayloadType) 145 { 146 didReceiveDataOrBuffer(data, length, nullptr, encodedDataLength, dataPayloadType); 147 } 148 149 void NetscapePlugInStreamLoader::didReceiveBuffer(Ref<FragmentedSharedBuffer>&& buffer, long long encodedDataLength, DataPayloadType dataPayloadType) 150 { 151 didReceiveDataOrBuffer(nullptr, 0, WTFMove(buffer), encodedDataLength, dataPayloadType); 152 } 153 154 void NetscapePlugInStreamLoader::didReceiveDataOrBuffer(const uint8_t* data, int length, RefPtr<FragmentedSharedBuffer>&& buffer, long long encodedDataLength, DataPayloadType dataPayloadType) 144 void NetscapePlugInStreamLoader::didReceiveData(const SharedBuffer& buffer, long long encodedDataLength, DataPayloadType dataPayloadType) 155 145 { 156 146 Ref<NetscapePlugInStreamLoader> protectedThis(*this); 157 147 158 if (m_client) { 159 if (buffer) { 160 buffer->forEachSegment([&](auto& segment) { 161 m_client->didReceiveData(this, segment.data(), segment.size()); 162 }); 163 } else 164 m_client->didReceiveData(this, data, length); 165 } 148 if (m_client) 149 m_client->didReceiveData(this, buffer); 166 150 167 ResourceLoader::didReceiveData OrBuffer(data, length, WTFMove(buffer), encodedDataLength, dataPayloadType);151 ResourceLoader::didReceiveData(buffer, encodedDataLength, dataPayloadType); 168 152 } 169 153 -
trunk/Source/WebCore/loader/NetscapePlugInStreamLoader.h
r287021 r287684 37 37 38 38 class NetscapePlugInStreamLoader; 39 class SharedBuffer; 39 40 40 41 class NetscapePlugInStreamLoaderClient : public CanMakeWeakPtr<NetscapePlugInStreamLoaderClient> { … … 42 43 virtual void willSendRequest(NetscapePlugInStreamLoader*, ResourceRequest&&, const ResourceResponse& redirectResponse, CompletionHandler<void(ResourceRequest&&)>&&) = 0; 43 44 virtual void didReceiveResponse(NetscapePlugInStreamLoader*, const ResourceResponse&) = 0; 44 virtual void didReceiveData(NetscapePlugInStreamLoader*, const uint8_t*, int) = 0;45 virtual void didReceiveData(NetscapePlugInStreamLoader*, const SharedBuffer&) = 0; 45 46 virtual void didFail(NetscapePlugInStreamLoader*, const ResourceError&) = 0; 46 47 virtual void didFinishLoading(NetscapePlugInStreamLoader*) { } … … 63 64 void willSendRequest(ResourceRequest&&, const ResourceResponse& redirectResponse, CompletionHandler<void(ResourceRequest&&)>&& callback) override; 64 65 void didReceiveResponse(const ResourceResponse&, CompletionHandler<void()>&& policyCompletionHandler) override; 65 void didReceiveData(const uint8_t*, unsigned, long long encodedDataLength, DataPayloadType) override; 66 void didReceiveBuffer(Ref<FragmentedSharedBuffer>&&, long long encodedDataLength, DataPayloadType) override; 66 void didReceiveData(const SharedBuffer&, long long encodedDataLength, DataPayloadType) override; 67 67 void didFinishLoading(const NetworkLoadMetrics&) override; 68 68 void didFail(const ResourceError&) override; … … 75 75 void didCancel(const ResourceError&) override; 76 76 77 void didReceiveDataOrBuffer(const uint8_t*, int, RefPtr<FragmentedSharedBuffer>&&, long long encodedDataLength, DataPayloadType);78 79 77 void notifyDone(); 80 78 -
trunk/Source/WebCore/loader/ResourceLoadNotifier.cpp
r287414 r287684 40 40 #include "ProgressTracker.h" 41 41 #include "ResourceLoader.h" 42 #include "SharedBuffer.h" 42 43 43 44 #if USE(QUICK_LOOK) … … 79 80 } 80 81 81 void ResourceLoadNotifier::didReceiveData(ResourceLoader* loader, const uint8_t* data, int dataLength, int encodedDataLength)82 { 83 if (Page* page = m_frame.page()) 84 page->progress().incrementProgress(loader->identifier(), dataLength);85 86 dispatchDidReceiveData(loader->documentLoader(), loader->identifier(), data, dataLength, encodedDataLength);82 void ResourceLoadNotifier::didReceiveData(ResourceLoader* loader, const SharedBuffer& buffer, int encodedDataLength) 83 { 84 if (Page* page = m_frame.page()) 85 page->progress().incrementProgress(loader->identifier(), buffer.size()); 86 87 dispatchDidReceiveData(loader->documentLoader(), loader->identifier(), &buffer, buffer.size(), encodedDataLength); 87 88 } 88 89 … … 154 155 } 155 156 156 void ResourceLoadNotifier::dispatchDidReceiveData(DocumentLoader* loader, ResourceLoaderIdentifier identifier, const uint8_t* data, int dataLength, int encodedDataLength)157 { 158 // Notifying the FrameLoaderClient may cause the frame to be destroyed. 159 Ref<Frame> protect(m_frame); 160 m_frame.loader().client().dispatchDidReceiveContentLength(loader, identifier, dataLength);161 162 InspectorInstrumentation::didReceiveData(&m_frame, identifier, data, dataLength, encodedDataLength);157 void ResourceLoadNotifier::dispatchDidReceiveData(DocumentLoader* loader, ResourceLoaderIdentifier identifier, const SharedBuffer* buffer, int expectedDataLength, int encodedDataLength) 158 { 159 // Notifying the FrameLoaderClient may cause the frame to be destroyed. 160 Ref<Frame> protect(m_frame); 161 m_frame.loader().client().dispatchDidReceiveContentLength(loader, identifier, expectedDataLength); 162 163 InspectorInstrumentation::didReceiveData(&m_frame, identifier, buffer ? *buffer : SharedBuffer::create(), encodedDataLength); 163 164 } 164 165 … … 181 182 } 182 183 183 void ResourceLoadNotifier::sendRemainingDelegateMessages(DocumentLoader* loader, ResourceLoaderIdentifier identifier, const ResourceRequest& request, const ResourceResponse& response, const uint8_t* data, int dataLength, int encodedDataLength, const ResourceError& error)184 void ResourceLoadNotifier::sendRemainingDelegateMessages(DocumentLoader* loader, ResourceLoaderIdentifier identifier, const ResourceRequest& request, const ResourceResponse& response, const SharedBuffer* buffer, int expectedDataLength, int encodedDataLength, const ResourceError& error) 184 185 { 185 186 // If the request is null, willSendRequest cancelled the load. We should … … 194 195 dispatchDidReceiveResponse(loader, identifier, response); 195 196 196 if ( dataLength > 0)197 dispatchDidReceiveData(loader, identifier, data, dataLength, encodedDataLength);197 if (expectedDataLength > 0) 198 dispatchDidReceiveData(loader, identifier, buffer, expectedDataLength, encodedDataLength); 198 199 199 200 if (error.isNull()) { -
trunk/Source/WebCore/loader/ResourceLoadNotifier.h
r287414 r287684 45 45 class ResourceRequest; 46 46 class ResourceResponse; 47 class SharedBuffer; 47 48 48 49 class ResourceLoadNotifier { … … 56 57 void willSendRequest(ResourceLoader*, ResourceRequest&, const ResourceResponse& redirectResponse); 57 58 void didReceiveResponse(ResourceLoader*, const ResourceResponse&); 58 void didReceiveData(ResourceLoader*, const uint8_t*, int dataLength, int encodedDataLength);59 void didReceiveData(ResourceLoader*, const SharedBuffer&, int encodedDataLength); 59 60 void didFinishLoad(ResourceLoader*, const NetworkLoadMetrics&); 60 61 void didFailToLoad(ResourceLoader*, const ResourceError&); … … 63 64 void dispatchWillSendRequest(DocumentLoader*, ResourceLoaderIdentifier, ResourceRequest&, const ResourceResponse& redirectResponse, const CachedResource*); 64 65 void dispatchDidReceiveResponse(DocumentLoader*, ResourceLoaderIdentifier, const ResourceResponse&, ResourceLoader* = nullptr); 65 void dispatchDidReceiveData(DocumentLoader*, ResourceLoaderIdentifier, const uint8_t* data, int dataLength, int encodedDataLength);66 void dispatchDidReceiveData(DocumentLoader*, ResourceLoaderIdentifier, const SharedBuffer*, int expectedDataLength, int encodedDataLength); 66 67 void dispatchDidFinishLoading(DocumentLoader*, ResourceLoaderIdentifier, const NetworkLoadMetrics&, ResourceLoader*); 67 68 void dispatchDidFailLoading(DocumentLoader*, ResourceLoaderIdentifier, const ResourceError&); 68 69 69 void sendRemainingDelegateMessages(DocumentLoader*, ResourceLoaderIdentifier, const ResourceRequest&, const ResourceResponse&, const uint8_t* data, int dataLength, int encodedDataLength, const ResourceError&);70 void sendRemainingDelegateMessages(DocumentLoader*, ResourceLoaderIdentifier, const ResourceRequest&, const ResourceResponse&, const SharedBuffer*, int expectedDataLength, int encodedDataLength, const ResourceError&); 70 71 71 72 bool isInitialRequestIdentifier(ResourceLoaderIdentifier identifier) -
trunk/Source/WebCore/loader/ResourceLoader.cpp
r287021 r287684 300 300 auto dataSize = decodeResult->data.size(); 301 301 ResourceResponse dataResponse = ResourceResponse::dataURLResponse(url, decodeResult.value()); 302 this->didReceiveResponse(dataResponse, [this, protectedThis = WTFMove(protectedThis), dataSize, data = SharedBuffer::create(WTFMove(decodeResult->data))]() mutable{302 this->didReceiveResponse(dataResponse, [this, protectedThis = WTFMove(protectedThis), dataSize, data = SharedBuffer::create(WTFMove(decodeResult->data))]() { 303 303 if (!this->reachedTerminalState() && dataSize && m_request.httpMethod() != "HEAD") 304 this->didReceiveBuffer( WTFMove(data), dataSize, DataPayloadWholeResource);304 this->didReceiveBuffer(data, dataSize, DataPayloadWholeResource); 305 305 306 306 if (!this->reachedTerminalState()) { … … 329 329 } 330 330 331 void ResourceLoader::add DataOrBuffer(const uint8_t* data, unsigned length, FragmentedSharedBuffer*buffer, DataPayloadType dataPayloadType)331 void ResourceLoader::addBuffer(const FragmentedSharedBuffer& buffer, DataPayloadType dataPayloadType) 332 332 { 333 333 if (m_options.dataBufferingPolicy == DataBufferingPolicy::DoNotBufferData) … … 337 337 m_resourceData.reset(); 338 338 339 if (buffer) 340 m_resourceData.append(*buffer); 341 else 342 m_resourceData.append(data, length); 339 m_resourceData.append(buffer); 343 340 } 344 341 … … 540 537 } 541 538 542 void ResourceLoader::didReceiveData(const uint8_t* data, unsigned length, long long encodedDataLength, DataPayloadType dataPayloadType)539 void ResourceLoader::didReceiveData(const SharedBuffer& buffer, long long encodedDataLength, DataPayloadType dataPayloadType) 543 540 { 544 541 // The following assertions are not quite valid here, since a subclass … … 548 545 // ASSERT(!m_reachedTerminalState); 549 546 550 didReceiveDataOrBuffer(data, length, nullptr, encodedDataLength, dataPayloadType); 551 } 552 553 void ResourceLoader::didReceiveBuffer(Ref<FragmentedSharedBuffer>&& buffer, long long encodedDataLength, DataPayloadType dataPayloadType) 554 { 555 didReceiveDataOrBuffer(nullptr, 0, WTFMove(buffer), encodedDataLength, dataPayloadType); 556 } 557 558 void ResourceLoader::didReceiveDataOrBuffer(const uint8_t* data, unsigned length, RefPtr<FragmentedSharedBuffer>&& buffer, long long encodedDataLength, DataPayloadType dataPayloadType) 559 { 560 // This method should only get data+length *OR* a FragmentedSharedBuffer. 561 ASSERT(!buffer || (!data && !length)); 562 547 didReceiveBuffer(buffer, encodedDataLength, dataPayloadType); 548 } 549 550 void ResourceLoader::didReceiveBuffer(const FragmentedSharedBuffer& buffer, long long encodedDataLength, DataPayloadType dataPayloadType) 551 { 563 552 // Protect this in this delegate method since the additional processing can do 564 553 // anything including possibly derefing this; one example of this is Radar 3266216. 565 554 Ref<ResourceLoader> protectedThis(*this); 566 555 567 add DataOrBuffer(data, length, buffer.get(), dataPayloadType);556 addBuffer(buffer, dataPayloadType); 568 557 569 558 // FIXME: If we get a resource with more than 2B bytes, this code won't do the right thing. … … 571 560 // Could be an issue with a giant local file. 572 561 if (m_options.sendLoadCallbacks == SendCallbackPolicy::SendCallbacks && m_frame) 573 frameLoader()->notifier().didReceiveData(this, buffer ? buffer->makeContiguous()->data() : data, buffer ? buffer->size() : length, static_cast<int>(encodedDataLength));562 frameLoader()->notifier().didReceiveData(this, buffer.makeContiguous(), static_cast<int>(encodedDataLength)); 574 563 } 575 564 … … 730 719 } 731 720 732 void ResourceLoader::didReceiveData(ResourceHandle*, const uint8_t* data, unsigned length, int encodedDataLength)733 { 734 didReceiveData( data, length, encodedDataLength, DataPayloadBytes);735 } 736 737 void ResourceLoader::didReceiveBuffer(ResourceHandle*, Ref<FragmentedSharedBuffer>&& buffer, int encodedDataLength)738 { 739 didReceiveBuffer( WTFMove(buffer), encodedDataLength, DataPayloadBytes);721 void ResourceLoader::didReceiveData(ResourceHandle*, const SharedBuffer& buffer, int encodedDataLength) 722 { 723 didReceiveData(buffer, encodedDataLength, DataPayloadBytes); 724 } 725 726 void ResourceLoader::didReceiveBuffer(ResourceHandle*, const FragmentedSharedBuffer& buffer, int encodedDataLength) 727 { 728 didReceiveBuffer(buffer, encodedDataLength, DataPayloadBytes); 740 729 } 741 730 -
trunk/Source/WebCore/loader/ResourceLoader.h
r287414 r287684 108 108 virtual void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent); 109 109 virtual void didReceiveResponse(const ResourceResponse&, CompletionHandler<void()>&& policyCompletionHandler); 110 virtual void didReceiveData(const uint8_t*, unsigned, long long encodedDataLength, DataPayloadType);111 virtual void didReceiveBuffer( Ref<FragmentedSharedBuffer>&&, long long encodedDataLength, DataPayloadType);110 virtual void didReceiveData(const SharedBuffer&, long long encodedDataLength, DataPayloadType); 111 virtual void didReceiveBuffer(const FragmentedSharedBuffer&, long long encodedDataLength, DataPayloadType); 112 112 virtual void didFinishLoading(const NetworkLoadMetrics&); 113 113 virtual void didFail(const ResourceError&); … … 168 168 bool wasCancelled() const { return m_cancellationStatus >= Cancelled; } 169 169 170 void didReceiveDataOrBuffer(const uint8_t*, unsigned, RefPtr<FragmentedSharedBuffer>&&, long long encodedDataLength, DataPayloadType);171 172 170 void setReferrerPolicy(ReferrerPolicy referrerPolicy) { m_options.referrerPolicy = referrerPolicy; } 173 171 ReferrerPolicy referrerPolicy() const { return m_options.referrerPolicy; } … … 193 191 virtual void didCancel(const ResourceError&) = 0; 194 192 195 void add DataOrBuffer(const uint8_t*, unsigned, FragmentedSharedBuffer*, DataPayloadType);193 void addBuffer(const FragmentedSharedBuffer&, DataPayloadType); 196 194 void loadDataURL(); 197 195 void finishNetworkLoad(); … … 203 201 void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&, CompletionHandler<void()>&&) override; 204 202 void willSendRequestAsync(ResourceHandle*, ResourceRequest&&, ResourceResponse&&, CompletionHandler<void(ResourceRequest&&)>&&) override; 205 void didReceiveData(ResourceHandle*, const uint8_t*, unsigned, int encodedDataLength) override;206 void didReceiveBuffer(ResourceHandle*, Ref<FragmentedSharedBuffer>&&, int encodedDataLength) override;203 void didReceiveData(ResourceHandle*, const SharedBuffer&, int encodedDataLength) override; 204 void didReceiveBuffer(ResourceHandle*, const FragmentedSharedBuffer&, int encodedDataLength) override; 207 205 void didFinishLoading(ResourceHandle*, const NetworkLoadMetrics&) override; 208 206 void didFail(ResourceHandle*, const ResourceError&) override; -
trunk/Source/WebCore/loader/SubresourceLoader.cpp
r287021 r287684 519 519 } 520 520 521 void SubresourceLoader::didReceive Data(const uint8_t* data, unsigned length, long long encodedDataLength, DataPayloadType dataPayloadType)521 void SubresourceLoader::didReceiveBuffer(const FragmentedSharedBuffer& buffer, long long encodedDataLength, DataPayloadType dataPayloadType) 522 522 { 523 523 #if USE(QUICK_LOOK) 524 524 if (auto previewLoader = m_previewLoader.get()) { 525 if (previewLoader->didReceiveData( data, length))525 if (previewLoader->didReceiveData(buffer.makeContiguous())) 526 526 return; 527 527 } 528 528 #endif 529 529 530 didReceiveDataOrBuffer(data, length, nullptr, encodedDataLength, dataPayloadType);531 }532 533 void SubresourceLoader::didReceiveBuffer(Ref<FragmentedSharedBuffer>&& buffer, long long encodedDataLength, DataPayloadType dataPayloadType)534 {535 #if USE(QUICK_LOOK)536 if (auto previewLoader = m_previewLoader.get()) {537 if (previewLoader->didReceiveBuffer(buffer.get()))538 return;539 }540 #endif541 542 didReceiveDataOrBuffer(nullptr, 0, WTFMove(buffer), encodedDataLength, dataPayloadType);543 }544 545 void SubresourceLoader::didReceiveDataOrBuffer(const uint8_t* data, int length, RefPtr<FragmentedSharedBuffer>&& buffer, long long encodedDataLength, DataPayloadType dataPayloadType)546 {547 530 ASSERT(m_resource); 548 531 … … 556 539 Ref<SubresourceLoader> protectedThis(*this); 557 540 558 ResourceLoader::didReceive DataOrBuffer(data, length, buffer.copyRef(), encodedDataLength, dataPayloadType);541 ResourceLoader::didReceiveBuffer(buffer, encodedDataLength, dataPayloadType); 559 542 560 543 if (!m_loadingMultipartContent) { … … 562 545 m_resource->updateBuffer(*resourceData); 563 546 else 564 m_resource->updateData(buffer ? buffer->makeContiguous()->data() : data, buffer ? buffer->size() : length);547 m_resource->updateData(buffer.makeContiguous()); 565 548 } 566 549 } -
trunk/Source/WebCore/loader/SubresourceLoader.h
r287021 r287684 74 74 void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent) override; 75 75 void didReceiveResponse(const ResourceResponse&, CompletionHandler<void()>&& policyCompletionHandler) override; 76 void didReceiveData(const uint8_t*, unsigned, long long encodedDataLength, DataPayloadType) override; 77 void didReceiveBuffer(Ref<FragmentedSharedBuffer>&&, long long encodedDataLength, DataPayloadType) override; 76 void didReceiveBuffer(const FragmentedSharedBuffer&, long long encodedDataLength, DataPayloadType) override; 78 77 void didFinishLoading(const NetworkLoadMetrics&) override; 79 78 void didFail(const ResourceError&) override; … … 93 92 Expected<void, String> checkRedirectionCrossOriginAccessControl(const ResourceRequest& previousRequest, const ResourceResponse&, ResourceRequest& newRequest); 94 93 95 void didReceiveDataOrBuffer(const uint8_t*, int, RefPtr<FragmentedSharedBuffer>&&, long long encodedDataLength, DataPayloadType);94 void didReceiveDataOrBuffer(const FragmentedSharedBuffer&, long long encodedDataLength, DataPayloadType); 96 95 97 96 void notifyDone(LoadCompletionType); -
trunk/Source/WebCore/loader/SubstituteResource.h
r287021 r287684 39 39 const ResourceResponse& response() const { return m_response; } 40 40 FragmentedSharedBuffer& data() const { return static_reference_cast<FragmentedSharedBuffer>(Ref { *m_data.get() }); } 41 void append(const uint8_t* data, int length) { m_data.append(data, length); }41 void append(const SharedBuffer& buffer) { m_data.append(buffer); } 42 42 void clear() { m_data.empty(); } 43 43 -
trunk/Source/WebCore/loader/ThreadableLoaderClient.h
r282712 r287684 38 38 class ResourceResponse; 39 39 class ResourceTiming; 40 class SharedBuffer; 40 41 41 42 class ThreadableLoaderClient { … … 45 46 46 47 virtual void didReceiveResponse(ResourceLoaderIdentifier, const ResourceResponse&) { } 47 virtual void didReceiveData(const uint8_t*, int /*dataLength*/) { }48 virtual void didReceiveData(const SharedBuffer&) { } 48 49 virtual void didFinishLoading(ResourceLoaderIdentifier) { } 49 50 virtual void didFail(const ResourceError&) { } -
trunk/Source/WebCore/loader/ThreadableLoaderClientWrapper.h
r282712 r287684 67 67 } 68 68 69 void didReceiveData(const uint8_t* data, int dataLength)69 void didReceiveData(const SharedBuffer& buffer) 70 70 { 71 71 if (m_client) 72 m_client->didReceiveData( data, dataLength);72 m_client->didReceiveData(buffer); 73 73 } 74 74 -
trunk/Source/WebCore/loader/WorkerThreadableLoader.cpp
r283295 r287684 232 232 } 233 233 234 void WorkerThreadableLoader::MainThreadBridge::didReceiveData(const uint8_t* data, int dataLength) 235 { 236 Vector<uint8_t> buffer(data, dataLength); 237 m_loaderProxy.postTaskForModeToWorkerOrWorkletGlobalScope([protectedWorkerClientWrapper = Ref { *m_workerClientWrapper }, workerRequestIdentifier = m_workerRequestIdentifier, buffer = WTFMove(buffer)] (ScriptExecutionContext& context) mutable { 238 ASSERT(context.isWorkerGlobalScope() || context.isWorkletGlobalScope()); 239 protectedWorkerClientWrapper->didReceiveData(buffer.data(), buffer.size()); 240 if (is<WorkerGlobalScope>(context)) 241 InspectorInstrumentation::didReceiveData(downcast<WorkerGlobalScope>(context), workerRequestIdentifier, buffer.data(), buffer.size()); 234 void WorkerThreadableLoader::MainThreadBridge::didReceiveData(const SharedBuffer& data) 235 { 236 m_loaderProxy.postTaskForModeToWorkerOrWorkletGlobalScope([protectedWorkerClientWrapper = Ref { *m_workerClientWrapper }, workerRequestIdentifier = m_workerRequestIdentifier, buffer = Ref { data }] (ScriptExecutionContext& context) { 237 ASSERT(context.isWorkerGlobalScope() || context.isWorkletGlobalScope()); 238 protectedWorkerClientWrapper->didReceiveData(buffer); 239 if (is<WorkerGlobalScope>(context)) 240 InspectorInstrumentation::didReceiveData(downcast<WorkerGlobalScope>(context), workerRequestIdentifier, buffer); 242 241 }, m_taskMode); 243 242 } -
trunk/Source/WebCore/loader/WorkerThreadableLoader.h
r282712 r287684 106 106 void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent) override; 107 107 void didReceiveResponse(ResourceLoaderIdentifier, const ResourceResponse&) override; 108 void didReceiveData(const uint8_t*, int dataLength) override;108 void didReceiveData(const SharedBuffer&) override; 109 109 void didFinishLoading(ResourceLoaderIdentifier) override; 110 110 void didFail(const ResourceError&) override; -
trunk/Source/WebCore/loader/appcache/ApplicationCacheHost.cpp
r287021 r287684 150 150 } 151 151 152 void ApplicationCacheHost::mainResourceDataReceived(const uint8_t*, int, long long, bool)152 void ApplicationCacheHost::mainResourceDataReceived(const SharedBuffer&, long long, bool) 153 153 { 154 154 } -
trunk/Source/WebCore/loader/appcache/ApplicationCacheHost.h
r287021 r287684 96 96 void maybeLoadMainResourceForRedirect(const ResourceRequest&, SubstituteData&); 97 97 bool maybeLoadFallbackForMainResponse(const ResourceRequest&, const ResourceResponse&); 98 void mainResourceDataReceived(const uint8_t* data, int length, long long encodedDataLength, bool allAtOnce);98 void mainResourceDataReceived(const SharedBuffer&, long long encodedDataLength, bool allAtOnce); 99 99 void finishedLoadingMainResource(); 100 100 void failedLoadingMainResource(); -
trunk/Source/WebCore/loader/appcache/ApplicationCacheResource.cpp
r287021 r287684 52 52 void ApplicationCacheResource::deliver(ResourceLoader& loader) 53 53 { 54 loader.deliverResponseAndData(response(), m_path.isEmpty() ? data().makeContiguous() : SharedBuffer::createWithContentsOfFile(m_path)); 54 if (m_path.isEmpty()) 55 loader.deliverResponseAndData(response(), RefPtr { &data() }); 56 else 57 loader.deliverResponseAndData(response(), SharedBuffer::createWithContentsOfFile(m_path)); 55 58 } 56 59 -
trunk/Source/WebCore/loader/appcache/ApplicationCacheResourceLoader.cpp
r286983 r287684 100 100 } 101 101 102 void ApplicationCacheResourceLoader::dataReceived(CachedResource&, const uint8_t* data, int length)102 void ApplicationCacheResourceLoader::dataReceived(CachedResource&, const SharedBuffer& buffer) 103 103 { 104 m_applicationCacheResource->append( data, length);104 m_applicationCacheResource->append(buffer); 105 105 } 106 106 -
trunk/Source/WebCore/loader/appcache/ApplicationCacheResourceLoader.h
r278516 r287684 57 57 // CachedRawResourceClient 58 58 void responseReceived(CachedResource&, const ResourceResponse&, CompletionHandler<void()>&&) final; 59 void dataReceived(CachedResource&, const uint8_t* data, int dataLength) final;59 void dataReceived(CachedResource&, const SharedBuffer&) final; 60 60 void redirectReceived(CachedResource&, ResourceRequest&&, const ResourceResponse&, CompletionHandler<void(ResourceRequest&&)>&&) final; 61 61 void notifyFinished(CachedResource&, const NetworkLoadMetrics&) final; -
trunk/Source/WebCore/loader/cache/CachedImage.cpp
r287286 r287684 469 469 } 470 470 471 void CachedImage::updateBufferInternal(const FragmentedSharedBuffer& data)471 void CachedImage::updateBufferInternal(const SharedBuffer& data) 472 472 { 473 473 m_data = data.makeContiguous(); … … 556 556 } 557 557 558 void CachedImage::updateBuffer(const FragmentedSharedBuffer& data)558 void CachedImage::updateBuffer(const FragmentedSharedBuffer& buffer) 559 559 { 560 560 ASSERT(dataBufferingPolicy() == DataBufferingPolicy::BufferData); 561 updateBufferInternal(buffer.makeContiguous()); 562 CachedResource::updateBuffer(buffer); 563 } 564 565 void CachedImage::updateData(const SharedBuffer& data) 566 { 567 ASSERT(dataBufferingPolicy() == DataBufferingPolicy::DoNotBufferData); 561 568 updateBufferInternal(data); 562 CachedResource::updateBuffer(data); 563 } 564 565 void CachedImage::updateData(const uint8_t* data, unsigned length) 566 { 567 ASSERT(dataBufferingPolicy() == DataBufferingPolicy::DoNotBufferData); 568 updateBufferInternal(SharedBuffer::create(data, length)); 569 CachedResource::updateData(data, length); 569 CachedResource::updateData(data); 570 570 } 571 571 -
trunk/Source/WebCore/loader/cache/CachedImage.h
r287286 r287684 129 129 void didUpdateImageData(); 130 130 EncodedDataStatus updateImageData(bool allDataReceived); 131 void updateData(const uint8_t* data, unsigned length) override;131 void updateData(const SharedBuffer&) override; 132 132 void error(CachedResource::Status) override; 133 133 void responseReceived(const ResourceResponse&) override; … … 170 170 void scheduleRenderingUpdate(const Image&); 171 171 172 void updateBufferInternal(const FragmentedSharedBuffer&);172 void updateBufferInternal(const SharedBuffer&); 173 173 174 174 void didReplaceSharedBufferContents() override; -
trunk/Source/WebCore/loader/cache/CachedRawResource.cpp
r287021 r287684 49 49 } 50 50 51 std::optional<SharedBufferDataView> CachedRawResource::calculateIncrementalDataChunk(const FragmentedSharedBuffer*data) const51 std::optional<SharedBufferDataView> CachedRawResource::calculateIncrementalDataChunk(const SharedBuffer& data) const 52 52 { 53 53 size_t previousDataLength = encodedSize(); 54 if ( !data || data->size() <= previousDataLength)54 if (data.size() <= previousDataLength) 55 55 return std::nullopt; 56 return data ->getSomeData(previousDataLength);56 return data.getSomeData(previousDataLength); 57 57 } 58 58 … … 73 73 74 74 SetForScope<bool> notifyScope(m_inIncrementalDataNotify, true); 75 notifyClientsDataWasReceived(incrementalData. data(), incrementalData.size());75 notifyClientsDataWasReceived(incrementalData.createSharedBuffer()); 76 76 } 77 77 setEncodedSize(m_data->size()); … … 90 90 } 91 91 92 void CachedRawResource::updateData(const uint8_t* data, unsigned length)92 void CachedRawResource::updateData(const SharedBuffer& buffer) 93 93 { 94 94 ASSERT(dataBufferingPolicy() == DataBufferingPolicy::DoNotBufferData); 95 notifyClientsDataWasReceived( data, length);96 CachedResource::updateData( data, length);95 notifyClientsDataWasReceived(buffer); 96 CachedResource::updateData(buffer); 97 97 } 98 98 … … 111 111 if (data != m_data.get()) 112 112 m_data = data->makeContiguous(); 113 if (auto incrementalData = calculateIncrementalDataChunk( data)) {113 if (auto incrementalData = calculateIncrementalDataChunk(*m_data)) { 114 114 setEncodedSize(data->size()); 115 notifyClientsDataWasReceived(incrementalData-> data(), incrementalData->size());115 notifyClientsDataWasReceived(incrementalData->createSharedBuffer()); 116 116 } 117 117 } else … … 131 131 } 132 132 133 void CachedRawResource::notifyClientsDataWasReceived(const uint8_t* data, unsigned length)134 { 135 if ( !length)133 void CachedRawResource::notifyClientsDataWasReceived(const SharedBuffer& buffer) 134 { 135 if (buffer.isEmpty()) 136 136 return; 137 137 … … 139 139 CachedResourceClientWalker<CachedRawResourceClient> w(m_clients); 140 140 while (CachedRawResourceClient* c = w.next()) 141 c->dataReceived(*this, data, length);141 c->dataReceived(*this, buffer); 142 142 } 143 143 … … 171 171 return; 172 172 if (m_data) { 173 m_data->forEachSegment ([&](auto& segment) {173 m_data->forEachSegmentAsSharedBuffer([&](auto&& buffer) { 174 174 if (hasClient(*client)) 175 client->dataReceived(*this, segment.data(), segment.size());175 client->dataReceived(*this, buffer); 176 176 }); 177 177 } -
trunk/Source/WebCore/loader/cache/CachedRawResource.h
r287021 r287684 29 29 class CachedResourceClient; 30 30 class ResourceTiming; 31 class SharedBuffer; 31 32 class SharedBufferDataView; 32 33 … … 53 54 void didAddClient(CachedResourceClient&) final; 54 55 void updateBuffer(const FragmentedSharedBuffer&) final; 55 void updateData(const uint8_t* data, unsigned length) final;56 void updateData(const SharedBuffer&) final; 56 57 void finishLoading(const FragmentedSharedBuffer*, const NetworkLoadMetrics&) final; 57 58 … … 67 68 bool mayTryReplaceEncodedData() const override { return m_allowEncodedDataReplacement; } 68 69 69 std::optional<SharedBufferDataView> calculateIncrementalDataChunk(const FragmentedSharedBuffer*) const;70 void notifyClientsDataWasReceived(const uint8_t* data, unsigned length);70 std::optional<SharedBufferDataView> calculateIncrementalDataChunk(const SharedBuffer&) const; 71 void notifyClientsDataWasReceived(const SharedBuffer&); 71 72 72 73 #if USE(QUICK_LOOK) -
trunk/Source/WebCore/loader/cache/CachedRawResourceClient.h
r278516 r287684 32 32 class ResourceResponse; 33 33 class ResourceTiming; 34 class SharedBuffer; 34 35 35 36 class CachedRawResourceClient : public CachedResourceClient { … … 47 48 48 49 virtual bool shouldCacheResponse(CachedResource&, const ResourceResponse&) { return true; } 49 virtual void dataReceived(CachedResource&, const uint8_t* /* data */, int /* length */) { }50 virtual void dataReceived(CachedResource&, const SharedBuffer&) { } 50 51 virtual void redirectReceived(CachedResource&, ResourceRequest&& request, const ResourceResponse&, CompletionHandler<void(ResourceRequest&&)>&& completionHandler) { completionHandler(WTFMove(request)); } 51 52 virtual void finishedTimingForWorkerLoad(CachedResource&, const ResourceTiming&) { } -
trunk/Source/WebCore/loader/cache/CachedResource.cpp
r287021 r287684 342 342 } 343 343 344 void CachedResource::updateData(const uint8_t*, unsigned)344 void CachedResource::updateData(const SharedBuffer&) 345 345 { 346 346 ASSERT(dataBufferingPolicy() == DataBufferingPolicy::DoNotBufferData); -
trunk/Source/WebCore/loader/cache/CachedResource.h
r287021 r287684 114 114 virtual const TextResourceDecoder* textResourceDecoder() const { return nullptr; } 115 115 virtual void updateBuffer(const FragmentedSharedBuffer&); 116 virtual void updateData(const uint8_t* data, unsigned length);116 virtual void updateData(const SharedBuffer&); 117 117 virtual void finishLoading(const FragmentedSharedBuffer*, const NetworkLoadMetrics&); 118 118 virtual void error(CachedResource::Status); -
trunk/Source/WebCore/loader/ios/LegacyPreviewLoader.h
r287053 r287684 48 48 49 49 bool didReceiveResponse(const ResourceResponse&); 50 bool didReceiveData(const uint8_t* data, unsigned length); 51 bool didReceiveBuffer(const FragmentedSharedBuffer&); 50 bool didReceiveData(const SharedBuffer&); 52 51 bool didFinishLoading(); 53 52 void didFail(); -
trunk/Source/WebCore/loader/ios/LegacyPreviewLoader.mm
r287053 r287684 64 64 } 65 65 66 bool LegacyPreviewLoader::didReceive Buffer(const FragmentedSharedBuffer& buffer)66 bool LegacyPreviewLoader::didReceiveData(const SharedBuffer& buffer) 67 67 { 68 68 if (m_finishedLoadingDataIntoConverter) … … 72 72 m_originalData.append(buffer); 73 73 m_converter->updateMainResource(); 74 m_client->didReceive Buffer(buffer);74 m_client->didReceiveData(buffer); 75 75 return true; 76 76 } … … 163 163 return; 164 164 165 auto dataCopy = data.copy(); 166 resourceLoader->didReceiveBuffer(WTFMove(dataCopy), dataCopy->size(), DataPayloadBytes); 165 resourceLoader->didReceiveBuffer(data, data.size(), DataPayloadBytes); 167 166 } 168 167 … … 244 243 } 245 244 246 bool LegacyPreviewLoader::didReceiveData(const uint8_t* data, unsigned length)247 {248 return didReceiveBuffer(SharedBuffer::create(data, length).get());249 }250 251 245 bool LegacyPreviewLoader::didReceiveResponse(const ResourceResponse&) 252 246 { -
trunk/Source/WebCore/page/EventSource.cpp
r282712 r287684 43 43 #include "ScriptExecutionContext.h" 44 44 #include "SecurityOrigin.h" 45 #include "SharedBuffer.h" 45 46 #include "TextResourceDecoder.h" 46 47 #include "ThreadableLoader.h" … … 211 212 } 212 213 213 void EventSource::didReceiveData(const uint8_t* data, int length)214 void EventSource::didReceiveData(const SharedBuffer& buffer) 214 215 { 215 216 ASSERT(m_state == OPEN); … … 217 218 RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(!m_isSuspendedForBackForwardCache); 218 219 219 append(m_receiveBuffer, m_decoder->decode( data, length));220 append(m_receiveBuffer, m_decoder->decode(buffer.data(), buffer.size())); 220 221 parseEventStream(); 221 222 } -
trunk/Source/WebCore/page/EventSource.h
r282712 r287684 85 85 // ThreadableLoaderClient 86 86 void didReceiveResponse(ResourceLoaderIdentifier, const ResourceResponse&) final; 87 void didReceiveData(const uint8_t*, int) final;87 void didReceiveData(const SharedBuffer&) final; 88 88 void didFinishLoading(ResourceLoaderIdentifier) final; 89 89 void didFail(const ResourceError&) final; -
trunk/Source/WebCore/platform/SharedBuffer.cpp
r287506 r287684 139 139 Vector<uint8_t> combinedData; 140 140 if (hasOneSegment() && std::holds_alternative<Vector<uint8_t>>(m_segments[0].segment->m_immutableData) && m_segments[0].segment->hasOneRef()) 141 combinedData = std::exchange(std::get<Vector<uint8_t>>( m_segments[0].segment->m_immutableData), Vector<uint8_t>());141 combinedData = std::exchange(std::get<Vector<uint8_t>>(const_cast<DataSegment&>(m_segments[0].segment.get()).m_immutableData), Vector<uint8_t>()); 142 142 else 143 143 combinedData = combineSegmentsData(m_segments, m_size); … … 251 251 } 252 252 253 void FragmentedSharedBuffer::forEachSegmentAsSharedBuffer(const Function<void(Ref<SharedBuffer>&&)>& apply) const 254 { 255 auto protectedThis = Ref { *this }; 256 for (auto& segment : m_segments) 257 apply(SharedBuffer::create(segment.segment.copyRef())); 258 } 259 253 260 bool FragmentedSharedBuffer::startsWith(const Span<const uint8_t>& prefix) const 254 261 { … … 416 423 } 417 424 418 SharedBuffer::SharedBuffer(Ref< DataSegment>&& segment)425 SharedBuffer::SharedBuffer(Ref<const DataSegment>&& segment) 419 426 { 420 427 m_size = segment->size(); … … 604 611 } 605 612 606 SharedBufferDataView::SharedBufferDataView(Ref< DataSegment>&& segment, size_t positionWithinSegment, std::optional<size_t> size)613 SharedBufferDataView::SharedBufferDataView(Ref<const DataSegment>&& segment, size_t positionWithinSegment, std::optional<size_t> size) 607 614 : m_segment(WTFMove(segment)) 608 615 , m_positionWithinSegment(positionWithinSegment) … … 620 627 Ref<SharedBuffer> SharedBufferDataView::createSharedBuffer() const 621 628 { 622 const Ref< DataSegment> segment = m_segment;629 const Ref<const DataSegment> segment = m_segment; 623 630 return SharedBuffer::create(DataSegment::Provider { 624 631 [segment, data = data()]() { return data; }, -
trunk/Source/WebCore/platform/SharedBuffer.h
r287612 r287684 179 179 WEBCORE_EXPORT void forEachSegment(const Function<void(const Span<const uint8_t>&)>&) const; 180 180 WEBCORE_EXPORT bool startsWith(const Span<const uint8_t>& prefix) const; 181 WEBCORE_EXPORT void forEachSegmentAsSharedBuffer(const Function<void(Ref<SharedBuffer>&&)>&) const; 181 182 182 183 using DataSegment = WebCore::DataSegment; // To keep backward compatibility when using FragmentedSharedBuffer::DataSegment … … 184 185 struct DataSegmentVectorEntry { 185 186 size_t beginPosition; 186 Ref<DataSegment> segment;187 const Ref<const DataSegment> segment; 187 188 }; 188 189 using DataSegmentVector = Vector<DataSegmentVectorEntry, 1>; … … 261 262 return adoptRef(*new SharedBuffer()); 262 263 else if constexpr (sizeof...(Args) == 1 263 && (std::is_same_v<Args, Ref<DataSegment>> &&...)) 264 && (std::is_same_v<Args, Ref<const DataSegment>> &&...)) 265 return adoptRef(*new SharedBuffer(std::forward<Args>(args)...)); 266 else if constexpr (sizeof...(Args) == 1 267 && (std::is_same_v<std::remove_const_t<std::remove_reference_t<Args>>, DataSegment> &&...)) 264 268 return adoptRef(*new SharedBuffer(std::forward<Args>(args)...)); 265 269 else { … … 288 292 private: 289 293 WEBCORE_EXPORT SharedBuffer(); 294 SharedBuffer(const DataSegment& segment) 295 : SharedBuffer(Ref<const DataSegment> { segment }) { } 290 296 WEBCORE_EXPORT explicit SharedBuffer(FileSystem::MappedFileData&&); 291 WEBCORE_EXPORT explicit SharedBuffer(Ref< DataSegment>&&);297 WEBCORE_EXPORT explicit SharedBuffer(Ref<const DataSegment>&&); 292 298 WEBCORE_EXPORT explicit SharedBuffer(Ref<FragmentedSharedBuffer>&&); 293 299 … … 361 367 class SharedBufferDataView { 362 368 public: 363 WEBCORE_EXPORT SharedBufferDataView(Ref< DataSegment>&&, size_t positionWithinSegment, std::optional<size_t> newSize = std::nullopt);369 WEBCORE_EXPORT SharedBufferDataView(Ref<const DataSegment>&&, size_t positionWithinSegment, std::optional<size_t> newSize = std::nullopt); 364 370 WEBCORE_EXPORT SharedBufferDataView(const SharedBufferDataView&, size_t newSize); 365 371 size_t size() const { return m_size; } … … 372 378 #endif 373 379 private: 374 const Ref< DataSegment> m_segment;380 const Ref<const DataSegment> m_segment; 375 381 const size_t m_positionWithinSegment; 376 382 const size_t m_size; -
trunk/Source/WebCore/platform/graphics/PlatformMediaResourceLoader.h
r287021 r287684 52 52 virtual bool shouldCacheResponse(PlatformMediaResource&, const ResourceResponse&) { return true; } 53 53 virtual void dataSent(PlatformMediaResource&, unsigned long long, unsigned long long) { } 54 virtual void dataReceived(PlatformMediaResource&, Ref<FragmentedSharedBuffer>&&) { RELEASE_ASSERT_NOT_REACHED(); } 55 // This method should be removed once CachedRawResourceClient uses FragmentedSharedBuffer. 56 virtual void dataReceived(PlatformMediaResource& platform, const uint8_t* data, int length) { dataReceived(platform, SharedBuffer::create(data, length)); } 54 virtual void dataReceived(PlatformMediaResource&, const SharedBuffer&) { RELEASE_ASSERT_NOT_REACHED(); } 57 55 virtual void accessControlCheckFailed(PlatformMediaResource&, const ResourceError&) { } 58 56 virtual void loadFailed(PlatformMediaResource&, const ResourceError&) { } -
trunk/Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp
r282755 r287684 139 139 } 140 140 141 void WebCoreAVCFResourceLoader::dataReceived(CachedResource& resource, const uint8_t*, int)141 void WebCoreAVCFResourceLoader::dataReceived(CachedResource& resource, const SharedBuffer&) 142 142 { 143 143 fulfillRequestWithResource(resource); -
trunk/Source/WebCore/platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.h
r278518 r287684 58 58 // CachedRawResourceClient 59 59 void responseReceived(CachedResource&, const ResourceResponse&, CompletionHandler<void()>&&) override; 60 void dataReceived(CachedResource&, const uint8_t*, int) override;60 void dataReceived(CachedResource&, const SharedBuffer&) override; 61 61 void notifyFinished(CachedResource&, const NetworkLoadMetrics&) override; 62 62 -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm
r287021 r287684 62 62 // CachedRawResourceClient 63 63 void responseReceived(CachedResource&, const ResourceResponse&, CompletionHandler<void()>&&) final; 64 void dataReceived(CachedResource&, const uint8_t*, int) final;64 void dataReceived(CachedResource&, const SharedBuffer&) final; 65 65 void notifyFinished(CachedResource&, const NetworkLoadMetrics&) final; 66 66 … … 131 131 } 132 132 133 void CachedResourceMediaLoader::dataReceived(CachedResource& resource, const uint8_t*, int)133 void CachedResourceMediaLoader::dataReceived(CachedResource& resource, const SharedBuffer&) 134 134 { 135 135 ASSERT(&resource == m_resource); … … 157 157 bool shouldCacheResponse(PlatformMediaResource&, const ResourceResponse&) final { return false; } 158 158 void dataSent(PlatformMediaResource&, unsigned long long, unsigned long long) final { } 159 void dataReceived(PlatformMediaResource&, Ref<FragmentedSharedBuffer>&&) final;159 void dataReceived(PlatformMediaResource&, const SharedBuffer&) final; 160 160 void accessControlCheckFailed(PlatformMediaResource&, const ResourceError& error) final { loadFailed(error); } 161 161 void loadFailed(PlatformMediaResource&, const ResourceError& error) final { loadFailed(error); } … … 212 212 } 213 213 214 void PlatformResourceMediaLoader::dataReceived(PlatformMediaResource&, Ref<FragmentedSharedBuffer>&& buffer)215 { 216 m_buffer.append( WTFMove(buffer));214 void PlatformResourceMediaLoader::dataReceived(PlatformMediaResource&, const SharedBuffer& buffer) 215 { 216 m_buffer.append(buffer); 217 217 m_parent.newDataStoredInSharedBuffer(*m_buffer.get()); 218 218 } -
trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp
r287021 r287684 72 72 // PlatformMediaResourceClient virtual methods. 73 73 void responseReceived(PlatformMediaResource&, const ResourceResponse&, CompletionHandler<void(ShouldContinuePolicyCheck)>&&) override; 74 void dataReceived(PlatformMediaResource&, Ref<FragmentedSharedBuffer>&&) override;74 void dataReceived(PlatformMediaResource&, const SharedBuffer&) override; 75 75 void accessControlCheckFailed(PlatformMediaResource&, const ResourceError&) override; 76 76 void loadFailed(PlatformMediaResource&, const ResourceError&) override; … … 1094 1094 } 1095 1095 1096 void CachedResourceStreamingClient::dataReceived(PlatformMediaResource&, Ref<FragmentedSharedBuffer>&& buffer)1096 void CachedResourceStreamingClient::dataReceived(PlatformMediaResource&, const SharedBuffer& data) 1097 1097 { 1098 1098 ASSERT(isMainThread()); … … 1108 1108 // sending time from the receiving time, it is better to ignore it. 1109 1109 if (!std::isnan(members->downloadStartTime)) { 1110 members->totalDownloadedBytes += buffer->size();1110 members->totalDownloadedBytes += data.size(); 1111 1111 double timeSinceStart = (WallTime::now() - members->downloadStartTime).seconds(); 1112 1112 GST_TRACE_OBJECT(src, "R%u: downloaded %" G_GUINT64_FORMAT " bytes in %f seconds =~ %1.0f bytes/second", m_requestNumber, members->totalDownloadedBytes, timeSinceStart … … 1116 1116 } 1117 1117 1118 buffer->forEachSegment([&](auto& segment) { 1119 int length = segment.size(); 1120 GST_LOG_OBJECT(src, "R%u: Have %d bytes of data", m_requestNumber, length); 1121 1122 members->readPosition += length; 1123 ASSERT(!members->haveSize || members->readPosition <= members->size); 1124 1125 gst_element_post_message(GST_ELEMENT_CAST(src), gst_message_new_element(GST_OBJECT_CAST(src), 1126 gst_structure_new("webkit-network-statistics", "read-position", G_TYPE_UINT64, members->readPosition, "size", G_TYPE_UINT64, members->size, nullptr))); 1127 1128 checkUpdateBlocksize(length); 1129 GstBuffer* buffer = gstBufferNewWrappedFast(fastMemDup(segment.data(), length), length); 1130 gst_adapter_push(members->adapter.get(), buffer); 1131 }); 1118 int length = data.size(); 1119 GST_LOG_OBJECT(src, "R%u: Have %d bytes of data", m_requestNumber, length); 1120 1121 members->readPosition += length; 1122 ASSERT(!members->haveSize || members->readPosition <= members->size); 1123 1124 gst_element_post_message(GST_ELEMENT_CAST(src), gst_message_new_element(GST_OBJECT_CAST(src), 1125 gst_structure_new("webkit-network-statistics", "read-position", G_TYPE_UINT64, members->readPosition, "size", G_TYPE_UINT64, members->size, nullptr))); 1126 1127 checkUpdateBlocksize(length); 1128 GstBuffer* buffer = gstBufferNewWrappedFast(fastMemDup(data.data(), length), length); 1129 gst_adapter_push(members->adapter.get(), buffer); 1130 1132 1131 stopLoaderIfNeeded(src, members); 1133 1132 members->responseCondition.notifyOne(); -
trunk/Source/WebCore/platform/network/ResourceHandleClient.cpp
r287021 r287684 37 37 ResourceHandleClient::~ResourceHandleClient() = default; 38 38 39 void ResourceHandleClient::didReceiveBuffer(ResourceHandle* handle, Ref<FragmentedSharedBuffer>&& buffer, int encodedDataLength)39 void ResourceHandleClient::didReceiveBuffer(ResourceHandle* handle, const FragmentedSharedBuffer& buffer, int encodedDataLength) 40 40 { 41 didReceiveData(handle, buffer->makeContiguous()->data(), buffer->size(), encodedDataLength); 41 buffer.forEachSegmentAsSharedBuffer([&](auto&& buffer) { 42 didReceiveData(handle, buffer, encodedDataLength); 43 }); 42 44 } 43 45 -
trunk/Source/WebCore/platform/network/ResourceHandleClient.h
r287021 r287684 45 45 class AuthenticationChallenge; 46 46 class Credential; 47 class FragmentedSharedBuffer; 47 48 class NetworkLoadMetrics; 48 49 class ProtectionSpace; … … 51 52 class ResourceRequest; 52 53 class ResourceResponse; 53 class FragmentedSharedBuffer;54 class SharedBuffer; 54 55 55 56 enum CacheStoragePolicy { … … 66 67 virtual void didSendData(ResourceHandle*, unsigned long long /*bytesSent*/, unsigned long long /*totalBytesToBeSent*/) { } 67 68 68 virtual void didReceiveData(ResourceHandle*, const uint8_t*, unsigned, int /*encodedDataLength*/) { }69 WEBCORE_EXPORT virtual void didReceiveBuffer(ResourceHandle*, Ref<FragmentedSharedBuffer>&&, int encodedDataLength);70 69 virtual void didReceiveData(ResourceHandle*, const SharedBuffer&, int /*encodedDataLength*/) { } 70 WEBCORE_EXPORT virtual void didReceiveBuffer(ResourceHandle*, const FragmentedSharedBuffer&, int encodedDataLength); 71 71 72 virtual void didFinishLoading(ResourceHandle*, const NetworkLoadMetrics&) { } 72 73 virtual void didFail(ResourceHandle*, const ResourceError&) { } -
trunk/Source/WebCore/platform/network/SynchronousLoaderClient.cpp
r278516 r287684 72 72 } 73 73 74 void SynchronousLoaderClient::didReceiveData(ResourceHandle*, const uint8_t* data, unsigned length, int /*encodedDataLength*/)74 void SynchronousLoaderClient::didReceiveData(ResourceHandle*, const SharedBuffer& buffer, int /*encodedDataLength*/) 75 75 { 76 m_data.append( data, length);76 m_data.append(buffer.data(), buffer.size()); 77 77 } 78 78 -
trunk/Source/WebCore/platform/network/SynchronousLoaderClient.h
r278516 r287684 35 35 namespace WebCore { 36 36 37 class SharedBuffer; 38 37 39 class SynchronousLoaderMessageQueue : public ThreadSafeRefCounted<SynchronousLoaderMessageQueue> { 38 40 public: … … 67 69 void didReceiveAuthenticationChallenge(ResourceHandle*, const AuthenticationChallenge&) override; 68 70 void didReceiveResponseAsync(ResourceHandle*, ResourceResponse&&, CompletionHandler<void()>&&) override; 69 void didReceiveData(ResourceHandle*, const uint8_t*, unsigned, int /*encodedDataLength*/) override;71 void didReceiveData(ResourceHandle*, const SharedBuffer&, int /*encodedDataLength*/) override; 70 72 void didFinishLoading(ResourceHandle*, const NetworkLoadMetrics&) override; 71 73 void didFail(ResourceHandle*, const ResourceError&) override; -
trunk/Source/WebCore/platform/network/cocoa/RangeResponseGenerator.mm
r287049 r287684 133 133 size_t bytesFromThisViewToDeliver = std::min(bufferView.size(), range.end - byteIndex + 1); 134 134 byteIndex += bytesFromThisViewToDeliver; 135 [task resource:nullptr receivedData:SharedBufferDataView(bufferView, bytesFromThisViewToDeliver).createSharedBuffer() ];135 [task resource:nullptr receivedData:SharedBufferDataView(bufferView, bytesFromThisViewToDeliver).createSharedBuffer()->createNSData()]; 136 136 } 137 137 if (byteIndex >= range.end) { … … 239 239 } 240 240 241 void dataReceived(PlatformMediaResource&, Ref<FragmentedSharedBuffer>&& buffer) final241 void dataReceived(PlatformMediaResource&, const SharedBuffer& buffer) final 242 242 { 243 243 ASSERT(isMainThread()); … … 247 247 if (!data) 248 248 return; 249 data->buffer.append( WTFMove(buffer));249 data->buffer.append(buffer); 250 250 m_generator->giveResponseToTasksWithFinishedRanges(*data); 251 251 } -
trunk/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.h
r287230 r287684 159 159 - (void)resource:(nullable WebCore::PlatformMediaResource*)resource receivedResponse:(const WebCore::ResourceResponse&)response completionHandler:(CompletionHandler<void(WebCore::ShouldContinuePolicyCheck)>&&)completionHandler; 160 160 - (BOOL)resource:(nullable WebCore::PlatformMediaResource*)resource shouldCacheResponse:(const WebCore::ResourceResponse&)response; 161 - (void)resource:(nullable WebCore::PlatformMediaResource*)resource receivedData:(Re f<WebCore::FragmentedSharedBuffer>&&)data;161 - (void)resource:(nullable WebCore::PlatformMediaResource*)resource receivedData:(RetainPtr<NSData>&&)data; 162 162 - (void)resource:(nullable WebCore::PlatformMediaResource*)resource receivedRedirect:(const WebCore::ResourceResponse&)response request:(WebCore::ResourceRequest&&)request completionHandler:(CompletionHandler<void(WebCore::ResourceRequest&&)>&&)completionHandler; 163 163 - (void)resource:(nullable WebCore::PlatformMediaResource*)resource accessControlCheckFailedWithError:(const WebCore::ResourceError&)error; -
trunk/Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm
r287230 r287684 609 609 bool shouldCacheResponse(PlatformMediaResource&, const ResourceResponse&) override; 610 610 void dataSent(PlatformMediaResource&, unsigned long long, unsigned long long) override; 611 void dataReceived(PlatformMediaResource&, Ref<FragmentedSharedBuffer>&&) override;611 void dataReceived(PlatformMediaResource&, const SharedBuffer&) override; 612 612 void accessControlCheckFailed(PlatformMediaResource&, const ResourceError&) override; 613 613 void loadFailed(PlatformMediaResource&, const ResourceError&) override; … … 653 653 } 654 654 655 void WebCoreNSURLSessionDataTaskClient::dataReceived(PlatformMediaResource& resource, Ref<FragmentedSharedBuffer>&& buffer)655 void WebCoreNSURLSessionDataTaskClient::dataReceived(PlatformMediaResource& resource, const SharedBuffer& buffer) 656 656 { 657 657 Locker locker { m_taskLock }; … … 659 659 return; 660 660 661 [m_task resource:&resource receivedData: WTFMove(buffer)];661 [m_task resource:&resource receivedData:buffer.createNSData()]; 662 662 } 663 663 … … 932 932 } 933 933 934 - (void)resource:(PlatformMediaResource*)resource receivedData:(Re f<WebCore::FragmentedSharedBuffer>&&)data934 - (void)resource:(PlatformMediaResource*)resource receivedData:(RetainPtr<NSData>&&)data 935 935 { 936 936 ASSERT_UNUSED(resource, !resource || resource == _resource); 937 937 [self.session addDelegateOperation:[strongSelf = RetainPtr { self }, data = WTFMove(data)] { 938 auto nsData = data->makeContiguous()->createNSData(); 939 strongSelf.get().countOfBytesReceived += data->size(); 938 strongSelf.get().countOfBytesReceived += [data length]; 940 939 id<NSURLSessionDataDelegate> dataDelegate = (id<NSURLSessionDataDelegate>)strongSelf.get().session.delegate; 941 940 if ([dataDelegate respondsToSelector:@selector(URLSession:dataTask:didReceiveData:)]) 942 [dataDelegate URLSession:(NSURLSession *)strongSelf.get().session dataTask:(NSURLSessionDataTask *)strongSelf.get() didReceiveData: nsData.get()];941 [dataDelegate URLSession:(NSURLSession *)strongSelf.get().session dataTask:(NSURLSessionDataTask *)strongSelf.get() didReceiveData:data.get()]; 943 942 }]; 944 943 } -
trunk/Source/WebCore/platform/network/curl/CurlCacheManager.cpp
r286883 r287684 244 244 } 245 245 246 void CurlCacheManager::didReceiveData(ResourceHandle& job, const uint8_t* data, size_t size)246 void CurlCacheManager::didReceiveData(ResourceHandle& job, const SharedBuffer& data) 247 247 { 248 248 if (m_disabled) … … 256 256 return; 257 257 258 if (!it->value->saveCachedData(data , size))258 if (!it->value->saveCachedData(data.data(), data.size())) 259 259 invalidateCacheEntry(url); 260 260 261 261 else { 262 m_currentStorageSize += size;262 m_currentStorageSize += data.size(); 263 263 m_LRUEntryList.prependOrMoveToFirst(url); 264 264 makeRoomForNewEntry(); -
trunk/Source/WebCore/platform/network/curl/CurlCacheManager.h
r278532 r287684 50 50 51 51 void didReceiveResponse(ResourceHandle&, ResourceResponse&); 52 void didReceiveData(ResourceHandle&, const uint8_t*, size_t); // Save data52 void didReceiveData(ResourceHandle&, const SharedBuffer&); // Save data 53 53 void didFinishLoading(ResourceHandle&); 54 54 void didFail(ResourceHandle&); -
trunk/Source/WebCore/platform/network/curl/CurlDownload.cpp
r287021 r287684 104 104 105 105 106 void CurlDownload::curlDidReceive Buffer(CurlRequest&, Ref<FragmentedSharedBuffer>&& buffer)107 { 108 ASSERT(isMainThread()); 109 110 if (m_isCancelled) 111 return; 112 113 if (m_listener) 114 m_listener->didReceiveDataOfLength(buffer ->size());106 void CurlDownload::curlDidReceiveData(CurlRequest&, const SharedBuffer& buffer) 107 { 108 ASSERT(isMainThread()); 109 110 if (m_isCancelled) 111 return; 112 113 if (m_listener) 114 m_listener->didReceiveDataOfLength(buffer.size()); 115 115 } 116 116 -
trunk/Source/WebCore/platform/network/curl/CurlDownload.h
r287021 r287684 39 39 class CurlRequest; 40 40 class ResourceHandle; 41 class SharedBuffer; 41 42 42 43 class CurlDownloadListener { … … 73 74 void curlDidSendData(CurlRequest&, unsigned long long, unsigned long long) override { } 74 75 void curlDidReceiveResponse(CurlRequest&, CurlResponse&&) override; 75 void curlDidReceive Buffer(CurlRequest&, Ref<FragmentedSharedBuffer>&&) override;76 void curlDidReceiveData(CurlRequest&, const SharedBuffer&) override; 76 77 void curlDidComplete(CurlRequest&, NetworkLoadMetrics&&) override; 77 78 void curlDidFailWithError(CurlRequest&, ResourceError&&, CertificateInfo&&) override; -
trunk/Source/WebCore/platform/network/curl/CurlMultipartHandle.cpp
r287021 r287684 120 120 } 121 121 122 void CurlMultipartHandle::didReceiveData(const FragmentedSharedBuffer& buffer)122 void CurlMultipartHandle::didReceiveData(const SharedBuffer& buffer) 123 123 { 124 124 if (m_state == State::End) 125 125 return; // The handler is closed down so ignore everything. 126 126 127 m_buffer.append(buffer. makeContiguous()->data(), buffer.size());127 m_buffer.append(buffer.data(), buffer.size()); 128 128 129 129 while (processContent()) { } -
trunk/Source/WebCore/platform/network/curl/CurlMultipartHandle.h
r287021 r287684 35 35 class CurlMultipartHandleClient; 36 36 class CurlResponse; 37 class FragmentedSharedBuffer;37 class SharedBuffer; 38 38 39 39 class CurlMultipartHandle { … … 45 45 ~CurlMultipartHandle() { } 46 46 47 void didReceiveData(const FragmentedSharedBuffer&);47 void didReceiveData(const SharedBuffer&); 48 48 void didComplete(); 49 49 -
trunk/Source/WebCore/platform/network/curl/CurlMultipartHandleClient.h
r287021 r287684 34 34 public: 35 35 virtual void didReceiveHeaderFromMultipart(const Vector<String>&) = 0; 36 virtual void didReceiveDataFromMultipart( Ref<FragmentedSharedBuffer>&&) = 0;36 virtual void didReceiveDataFromMultipart(const SharedBuffer&) = 0; 37 37 38 38 protected: -
trunk/Source/WebCore/platform/network/curl/CurlRequest.cpp
r287224 r287684 397 397 // called with data after all headers have been processed via headerCallback 398 398 399 size_t CurlRequest::didReceiveData( Ref<FragmentedSharedBuffer>&& buffer)399 size_t CurlRequest::didReceiveData(const SharedBuffer& buffer) 400 400 { 401 401 if (isCompletedOrCancelled()) … … 412 412 } 413 413 414 auto receiveBytes = buffer ->size();414 auto receiveBytes = buffer.size(); 415 415 m_totalReceivedSize += receiveBytes; 416 416 … … 421 421 m_multipartHandle->didReceiveData(buffer); 422 422 else { 423 callClient([buffer = WTFMove(buffer)](CurlRequest& request, CurlRequestClient& client) mutable{424 client.curlDidReceive Buffer(request, WTFMove(buffer));423 callClient([buffer = Ref { buffer }](CurlRequest& request, CurlRequestClient& client) { 424 client.curlDidReceiveData(request, buffer); 425 425 }); 426 426 } … … 445 445 } 446 446 447 void CurlRequest::didReceiveDataFromMultipart( Ref<FragmentedSharedBuffer>&& buffer)447 void CurlRequest::didReceiveDataFromMultipart(const SharedBuffer& buffer) 448 448 { 449 449 if (isCompletedOrCancelled()) 450 450 return; 451 451 452 auto receiveBytes = buffer ->size();452 auto receiveBytes = buffer.size(); 453 453 454 454 if (receiveBytes) { 455 callClient([buffer = WTFMove(buffer)](CurlRequest& request, CurlRequestClient& client) mutable{456 client.curlDidReceive Buffer(request, WTFMove(buffer));455 callClient([buffer = Ref { buffer }](CurlRequest& request, CurlRequestClient& client) { 456 client.curlDidReceiveData(request, buffer); 457 457 }); 458 458 } -
trunk/Source/WebCore/platform/network/curl/CurlRequest.h
r287224 r287684 123 123 size_t willSendData(char*, size_t, size_t); 124 124 size_t didReceiveHeader(String&&); 125 size_t didReceiveData( Ref<FragmentedSharedBuffer>&&);125 size_t didReceiveData(const SharedBuffer&); 126 126 void didReceiveHeaderFromMultipart(const Vector<String>&) override; 127 void didReceiveDataFromMultipart( Ref<FragmentedSharedBuffer>&&) override;127 void didReceiveDataFromMultipart(const SharedBuffer&) override; 128 128 void didCompleteTransfer(CURLcode) override; 129 129 void didCancelTransfer() override; -
trunk/Source/WebCore/platform/network/curl/CurlRequestClient.h
r287021 r287684 35 35 class NetworkLoadMetrics; 36 36 class ResourceError; 37 class FragmentedSharedBuffer;37 class SharedBuffer; 38 38 39 39 class CurlRequestClient { … … 44 44 virtual void curlDidSendData(CurlRequest&, unsigned long long bytesSent, unsigned long long totalBytesToBeSent) = 0; 45 45 virtual void curlDidReceiveResponse(CurlRequest&, CurlResponse&&) = 0; 46 virtual void curlDidReceive Buffer(CurlRequest&, Ref<FragmentedSharedBuffer>&&) = 0;46 virtual void curlDidReceiveData(CurlRequest&, const SharedBuffer&) = 0; 47 47 virtual void curlDidComplete(CurlRequest&, NetworkLoadMetrics&&) = 0; 48 48 virtual void curlDidFailWithError(CurlRequest&, ResourceError&&, CertificateInfo&&) = 0; -
trunk/Source/WebCore/platform/network/curl/CurlResourceHandleDelegate.cpp
r287021 r287684 143 143 } 144 144 145 void CurlResourceHandleDelegate::curlDidReceive Buffer(CurlRequest&, Ref<FragmentedSharedBuffer>&& buffer)145 void CurlResourceHandleDelegate::curlDidReceiveData(CurlRequest&, const SharedBuffer& buffer) 146 146 { 147 147 ASSERT(isMainThread()); … … 150 150 return; 151 151 152 auto contiguousBuffer = buffer->makeContiguous(); 153 CurlCacheManager::singleton().didReceiveData(m_handle, contiguousBuffer->data(), buffer->size()); 154 client()->didReceiveBuffer(&m_handle, WTFMove(contiguousBuffer), buffer->size()); 152 CurlCacheManager::singleton().didReceiveData(m_handle, buffer); 153 client()->didReceiveBuffer(&m_handle, buffer, buffer.size()); 155 154 } 156 155 -
trunk/Source/WebCore/platform/network/curl/CurlResourceHandleDelegate.h
r287021 r287684 39 39 class ResourceHandleClient; 40 40 class ResourceHandleInternal; 41 class SharedBuffer; 41 42 42 43 class CurlResourceHandleDelegate final : public CurlRequestClient { … … 54 55 void curlDidSendData(CurlRequest&, unsigned long long bytesSent, unsigned long long totalBytesToBeSent) final; 55 56 void curlDidReceiveResponse(CurlRequest&, CurlResponse&&) final; 56 void curlDidReceive Buffer(CurlRequest&, Ref<FragmentedSharedBuffer>&&) final;57 void curlDidReceiveData(CurlRequest&, const SharedBuffer&) final; 57 58 void curlDidComplete(CurlRequest&, NetworkLoadMetrics&&) final; 58 59 void curlDidFailWithError(CurlRequest&, ResourceError&&, CertificateInfo&&) final; -
trunk/Source/WebCore/platform/network/curl/CurlStream.cpp
r284857 r287684 10 10 * notice, this list of conditions and the following disclaimer in the 11 11 * documentation and/or other materials provided with the distribution. 12 * 12 * 13 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 14 14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, … … 28 28 29 29 #include "CurlStreamScheduler.h" 30 #include "SharedBuffer.h" 30 31 #include "SocketStreamError.h" 31 32 … … 130 131 return; 131 132 132 auto receiveBuffer = makeUniqueArray<uint8_t>(kReceiveBufferSize);133 Vector<uint8_t> receiveBuffer(kReceiveBufferSize); 133 134 size_t bytesReceived = 0; 134 135 135 auto errorCode = m_curlHandle->receive(receiveBuffer. get(), kReceiveBufferSize, bytesReceived);136 auto errorCode = m_curlHandle->receive(receiveBuffer.data(), kReceiveBufferSize, bytesReceived); 136 137 if (errorCode != CURLE_OK) { 137 138 if (errorCode != CURLE_AGAIN) … … 144 145 destroyHandle(); 145 146 146 m_scheduler.callClientOnMainThread(m_streamID, [streamID = m_streamID, buffer = WTFMove(receiveBuffer), length = bytesReceived](Client& client) mutable { 147 client.didReceiveData(streamID, buffer.get(), length); 147 receiveBuffer.resize(bytesReceived); 148 m_scheduler.callClientOnMainThread(m_streamID, [streamID = m_streamID, buffer = SharedBuffer::create(WTFMove(receiveBuffer))](Client& client) { 149 client.didReceiveData(streamID, buffer); 148 150 }); 149 151 } -
trunk/Source/WebCore/platform/network/curl/CurlStream.h
r284857 r287684 10 10 * notice, this list of conditions and the following disclaimer in the 11 11 * documentation and/or other materials provided with the distribution. 12 * 12 * 13 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 14 14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, … … 34 34 35 35 class CurlStreamScheduler; 36 class SharedBuffer; 36 37 class SocketStreamError; 37 38 … … 47 48 virtual void didOpen(CurlStreamID) = 0; 48 49 virtual void didSendData(CurlStreamID, size_t) = 0; 49 virtual void didReceiveData(CurlStreamID, const uint8_t*, size_t) = 0;50 virtual void didReceiveData(CurlStreamID, const SharedBuffer&) = 0; 50 51 virtual void didFail(CurlStreamID, CURLcode) = 0; 51 52 }; -
trunk/Source/WebCore/platform/network/curl/SocketStreamHandleImpl.h
r278532 r287684 60 60 bool sendPendingData(); 61 61 62 // CurlStream::Client 62 63 void didOpen(CurlStreamID) final; 63 64 void didSendData(CurlStreamID, size_t) final; 64 void didReceiveData(CurlStreamID, const uint8_t*, size_t) final;65 void didReceiveData(CurlStreamID, const SharedBuffer&) final; 65 66 void didFail(CurlStreamID, CURLcode) final; 66 67 -
trunk/Source/WebCore/platform/network/curl/SocketStreamHandleImplCurl.cpp
r278532 r287684 38 38 #include "CurlStreamScheduler.h" 39 39 #include "DeprecatedGlobalSettings.h" 40 #include "SharedBuffer.h" 40 41 #include "SocketStreamError.h" 41 42 #include "SocketStreamHandleClient.h" … … 105 106 } 106 107 107 void SocketStreamHandleImpl::didReceiveData(CurlStreamID, const uint8_t* data, size_t length)108 void SocketStreamHandleImpl::didReceiveData(CurlStreamID, const SharedBuffer& data) 108 109 { 109 110 if (m_state != Open) 110 111 return; 111 112 112 m_client.didReceiveSocketStreamData(*this, data , length);113 m_client.didReceiveSocketStreamData(*this, data.data(), data.size()); 113 114 } 114 115 -
trunk/Source/WebCore/platform/network/ios/LegacyPreviewLoaderClient.h
r287021 r287684 32 32 namespace WebCore { 33 33 34 class FragmentedSharedBuffer;34 class SharedBuffer; 35 35 36 36 class LegacyPreviewLoaderClient : public RefCounted<LegacyPreviewLoaderClient> { 37 37 public: 38 38 virtual ~LegacyPreviewLoaderClient() = default; 39 virtual void didReceive Buffer(const FragmentedSharedBuffer&) { }39 virtual void didReceiveData(const SharedBuffer&) { } 40 40 virtual void didFinishLoading() { } 41 41 virtual void didFail() { } -
trunk/Source/WebCore/platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm
r287021 r287684 301 301 // -1 means we do not provide any data about transfer size to inspector so it would use 302 302 // Content-Length headers or content size to show transfer size. 303 m_handle->client()->didReceive Buffer(m_handle, SharedBuffer::create(data.get()), -1);303 m_handle->client()->didReceiveData(m_handle, SharedBuffer::create(data.get()), -1); 304 304 }; 305 305 -
trunk/Source/WebCore/svg/graphics/SVGImage.cpp
r286392 r287684 547 547 loader.activeDocumentLoader()->writer().setMIMEType("image/svg+xml"); 548 548 loader.activeDocumentLoader()->writer().begin(URL()); // create the empty document 549 data()->forEachSegment ([&](auto& segment) {550 loader.activeDocumentLoader()->writer().addData( segment.data(), segment.size());549 data()->forEachSegmentAsSharedBuffer([&](auto&& buffer) { 550 loader.activeDocumentLoader()->writer().addData(buffer); 551 551 }); 552 552 loader.activeDocumentLoader()->writer().end(); -
trunk/Source/WebCore/workers/WorkerFontLoadRequest.cpp
r287021 r287684 116 116 } 117 117 118 void WorkerFontLoadRequest::didReceiveData(const uint8_t* data, int dataLength)118 void WorkerFontLoadRequest::didReceiveData(const SharedBuffer& buffer) 119 119 { 120 120 if (m_errorOccurred) 121 121 return; 122 122 123 m_data.append( data, dataLength);123 m_data.append(buffer); 124 124 } 125 125 -
trunk/Source/WebCore/workers/WorkerFontLoadRequest.h
r286983 r287684 64 64 65 65 void didReceiveResponse(ResourceLoaderIdentifier, const ResourceResponse&) final; 66 void didReceiveData(const uint8_t* data, int dataLength) final;66 void didReceiveData(const SharedBuffer&) final; 67 67 void didFinishLoading(ResourceLoaderIdentifier) final; 68 68 void didFail(const ResourceError&) final; -
trunk/Source/WebCore/workers/WorkerScriptLoader.cpp
r287681 r287684 201 201 } 202 202 203 void WorkerScriptLoader::didReceiveData(const uint8_t* data, int len)203 void WorkerScriptLoader::didReceiveData(const SharedBuffer& buffer) 204 204 { 205 205 if (m_failed) … … 213 213 } 214 214 215 if ( !len)216 return; 217 218 m_script.append(m_decoder->decode( data, len));215 if (buffer.isEmpty()) 216 return; 217 218 m_script.append(m_decoder->decode(buffer.data(), buffer.size())); 219 219 } 220 220 -
trunk/Source/WebCore/workers/WorkerScriptLoader.h
r284857 r287684 80 80 81 81 void didReceiveResponse(ResourceLoaderIdentifier, const ResourceResponse&) override; 82 void didReceiveData(const uint8_t* data, int dataLength) override;82 void didReceiveData(const SharedBuffer&) override; 83 83 void didFinishLoading(ResourceLoaderIdentifier) override; 84 84 void didFail(const ResourceError&) override; -
trunk/Source/WebCore/workers/service/context/ServiceWorkerFetch.h
r287021 r287684 52 52 virtual void didReceiveRedirection(const ResourceResponse&) = 0; 53 53 virtual void didReceiveResponse(const ResourceResponse&) = 0; 54 virtual void didReceiveData( Ref<FragmentedSharedBuffer>&&) = 0;54 virtual void didReceiveData(const SharedBuffer&) = 0; 55 55 virtual void didReceiveFormDataAndFinish(Ref<FormData>&&) = 0; 56 56 virtual void didFail(const ResourceError&) = 0; -
trunk/Source/WebCore/xml/XMLHttpRequest.cpp
r287681 r287684 1035 1035 } 1036 1036 1037 void XMLHttpRequest::didReceiveData(const uint8_t* data, int len)1037 void XMLHttpRequest::didReceiveData(const SharedBuffer& buffer) 1038 1038 { 1039 1039 if (m_error) … … 1053 1053 m_decoder = createDecoder(); 1054 1054 1055 if ( !len)1055 if (buffer.isEmpty()) 1056 1056 return; 1057 1057 1058 1058 if (useDecoder) 1059 m_responseBuilder.append(m_decoder->decode( data, len));1059 m_responseBuilder.append(m_decoder->decode(buffer.data(), buffer.size())); 1060 1060 else { 1061 1061 // Buffer binary data. 1062 m_binaryResponseBuilder.append( data, len);1062 m_binaryResponseBuilder.append(buffer); 1063 1063 } 1064 1064 1065 1065 if (!m_error) { 1066 m_receivedLength += len;1066 m_receivedLength += buffer.size(); 1067 1067 1068 1068 if (readyState() != LOADING) -
trunk/Source/WebCore/xml/XMLHttpRequest.h
r286983 r287684 163 163 void didSendData(unsigned long long bytesSent, unsigned long long totalBytesToBeSent) override; 164 164 void didReceiveResponse(ResourceLoaderIdentifier, const ResourceResponse&) override; 165 void didReceiveData(const uint8_t* data, int dataLength) override;165 void didReceiveData(const SharedBuffer&) override; 166 166 void didFinishLoading(ResourceLoaderIdentifier) override; 167 167 void didFail(const ResourceError&) override; -
trunk/Source/WebKit/ChangeLog
r287676 r287684 1 2022-01-06 Jean-Yves Avenard <jya@apple.com> 2 3 Have CachedRawResourceClient and related networking actors use SharedBuffer. 4 https://bugs.webkit.org/show_bug.cgi?id=232424 5 rdar://84744687 6 7 Reviewed by Youenn Fablet. 8 9 * GPUProcess/media/RemoteMediaResource.cpp: 10 (WebKit::RemoteMediaResource::dataReceived): 11 * GPUProcess/media/RemoteMediaResource.h: 12 * NetworkProcess/Downloads/PendingDownload.h: 13 * NetworkProcess/NetworkCORSPreflightChecker.cpp: 14 (WebKit::NetworkCORSPreflightChecker::didReceiveData): 15 * NetworkProcess/NetworkCORSPreflightChecker.h: 16 * NetworkProcess/NetworkDataTask.h: 17 * NetworkProcess/NetworkLoad.cpp: 18 (WebKit::NetworkLoad::didReceiveData): 19 * NetworkProcess/NetworkLoad.h: 20 * NetworkProcess/NetworkLoadClient.h: 21 * NetworkProcess/NetworkResourceLoader.cpp: 22 (WebKit::NetworkResourceLoader::didReceiveBuffer): 23 (WebKit::NetworkResourceLoader::sendBuffer): 24 * NetworkProcess/NetworkResourceLoader.h: 25 * NetworkProcess/PingLoad.cpp: 26 (WebKit::PingLoad::didReceiveData): 27 * NetworkProcess/PingLoad.h: 28 * NetworkProcess/PreconnectTask.cpp: 29 (WebKit::PreconnectTask::didReceiveBuffer): 30 * NetworkProcess/PreconnectTask.h: 31 * NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.cpp: 32 (WebKit::ServiceWorkerDownloadTask::didReceiveData): 33 * NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.h: 34 * NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.messages.in: 35 * NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp: 36 (WebKit::ServiceWorkerFetchTask::didReceiveData): 37 (WebKit::ServiceWorkerFetchTask::loadBodyFromPreloader): 38 * NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h: 39 * NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.messages.in: 40 * NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp: 41 (WebKit::ServiceWorkerNavigationPreloader::didReceiveBuffer): 42 * NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.h: 43 * NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.cpp: 44 (WebKit::ServiceWorkerSoftUpdateLoader::didReceiveBuffer): 45 * NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.h: 46 * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp: 47 (WebKit::NetworkCache::SpeculativeLoad::didReceiveBuffer): 48 * NetworkProcess/cache/NetworkCacheSpeculativeLoad.h: 49 * NetworkProcess/cocoa/NetworkDataTaskCocoa.h: 50 * NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: 51 (WebKit::NetworkDataTaskCocoa::didReceiveData): 52 * NetworkProcess/curl/NetworkDataTaskCurl.cpp: 53 (WebKit::NetworkDataTaskCurl::curlDidReceiveData): 54 * NetworkProcess/curl/NetworkDataTaskCurl.h: 55 * Platform/IPC/SharedBufferCopy.h: 56 * Shared/mac/MediaFormatReader/MediaFormatReader.cpp: 57 (WebKit::MediaFormatReader::didParseTracks): 58 * Shared/mac/MediaFormatReader/MediaFormatReader.h: 59 * UIProcess/WebURLSchemeTask.cpp: 60 (WebKit::WebURLSchemeTask::didReceiveData): 61 * UIProcess/WebURLSchemeTask.h: 62 * WebProcess/GPU/media/RemoteMediaResourceProxy.cpp: 63 (WebKit::RemoteMediaResourceProxy::dataReceived): 64 * WebProcess/GPU/media/RemoteMediaResourceProxy.h: 65 * WebProcess/Network/WebResourceLoader.cpp: 66 (WebKit::WebResourceLoader::didReceiveData): 67 (WebKit::WebResourceLoader::didReceiveResource): 68 * WebProcess/Network/WebResourceLoader.h: 69 * WebProcess/Network/WebResourceLoader.messages.in: 70 * WebProcess/Plugins/PDF/PDFPlugin.h: 71 * WebProcess/Plugins/PDF/PDFPlugin.mm: 72 (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didReceiveData): 73 (WebKit::PDFPlugin::streamDidReceiveData): 74 (WebKit::PDFPlugin::manualStreamDidReceiveData): 75 * WebProcess/Plugins/Plugin.h: 76 * WebProcess/Plugins/PluginView.cpp: 77 (WebKit::PluginView::Stream::didReceiveData): 78 (WebKit::PluginView::manualLoadDidReceiveData): 79 (WebKit::PluginView::redeliverManualStream): 80 * WebProcess/Plugins/PluginView.h: 81 * WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp: 82 (WebKit::WebServiceWorkerFetchTaskClient::didReceiveData): 83 (WebKit::WebServiceWorkerFetchTaskClient::didReceiveBlobChunk): 84 (WebKit::WebServiceWorkerFetchTaskClient::continueDidReceiveResponse): 85 * WebProcess/Storage/WebServiceWorkerFetchTaskClient.h: 86 * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: 87 (WebKit::WebFrameLoaderClient::committedLoad): 88 * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: 89 * WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.cpp: 90 (WebKit::WebPreviewLoaderClient::didReceiveData): 91 * WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.h: 92 * WebProcess/WebPage/WebPage.cpp: 93 (WebKit::WebPage::urlSchemeTaskDidReceiveData): 94 * WebProcess/WebPage/WebPage.h: 95 * WebProcess/WebPage/WebPage.messages.in: 96 * WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp: 97 (WebKit::WebURLSchemeHandlerProxy::taskDidReceiveData): 98 * WebProcess/WebPage/WebURLSchemeHandlerProxy.h: 99 * WebProcess/WebPage/WebURLSchemeTaskProxy.cpp: 100 (WebKit::WebURLSchemeTaskProxy::didReceiveData): 101 * WebProcess/WebPage/WebURLSchemeTaskProxy.h: 102 1 103 2022-01-06 Youenn Fablet <youenn@apple.com> 2 104 -
trunk/Source/WebKit/GPUProcess/media/RemoteMediaResource.cpp
r287021 r287684 32 32 #include "RemoteMediaResourceManager.h" 33 33 #include <WebCore/ResourceResponse.h> 34 #include <WebCore/SharedBuffer.h> 34 35 35 36 namespace WebKit { … … 97 98 } 98 99 99 void RemoteMediaResource::dataReceived( Ref<FragmentedSharedBuffer>&& data)100 void RemoteMediaResource::dataReceived(const SharedBuffer& data) 100 101 { 101 102 if (m_client) 102 m_client->dataReceived(*this, WTFMove(data));103 m_client->dataReceived(*this, data); 103 104 } 104 105 -
trunk/Source/WebKit/GPUProcess/media/RemoteMediaResource.h
r287021 r287684 36 36 class NetworkLoadMetrics; 37 37 class FragmentedSharedBuffer; 38 class SharedBuffer; 38 39 } 39 40 … … 58 59 void redirectReceived(WebCore::ResourceRequest&&, const WebCore::ResourceResponse&, CompletionHandler<void(WebCore::ResourceRequest&&)>&&); 59 60 void dataSent(uint64_t, uint64_t); 60 void dataReceived( Ref<WebCore::FragmentedSharedBuffer>&&);61 void dataReceived(const WebCore::SharedBuffer&); 61 62 void accessControlCheckFailed(const WebCore::ResourceError&); 62 63 void loadFailed(const WebCore::ResourceError&); -
trunk/Source/WebKit/NetworkProcess/Downloads/PendingDownload.h
r287021 r287684 69 69 void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse) override; 70 70 void didReceiveResponse(WebCore::ResourceResponse&&, ResponseCompletionHandler&&) override; 71 void didReceiveBuffer( Ref<WebCore::FragmentedSharedBuffer>&&, int reportedEncodedDataLength) override { };71 void didReceiveBuffer(const WebCore::FragmentedSharedBuffer&, int reportedEncodedDataLength) override { }; 72 72 void didFinishLoading(const WebCore::NetworkLoadMetrics&) override { }; 73 73 void didFailLoading(const WebCore::ResourceError&) override; -
trunk/Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.cpp
r287224 r287684 121 121 } 122 122 123 void NetworkCORSPreflightChecker::didReceiveData( Ref<WebCore::FragmentedSharedBuffer>&&)123 void NetworkCORSPreflightChecker::didReceiveData(const WebCore::SharedBuffer&) 124 124 { 125 125 CORS_CHECKER_RELEASE_LOG("didReceiveData"); -
trunk/Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.h
r287039 r287684 38 38 class ResourceError; 39 39 class SecurityOrigin; 40 class SharedBuffer; 40 41 } 41 42 … … 72 73 void didReceiveChallenge(WebCore::AuthenticationChallenge&&, NegotiatedLegacyTLS, ChallengeCompletionHandler&&) final; 73 74 void didReceiveResponse(WebCore::ResourceResponse&&, NegotiatedLegacyTLS, ResponseCompletionHandler&&) final; 74 void didReceiveData( Ref<WebCore::FragmentedSharedBuffer>&&) final;75 void didReceiveData(const WebCore::SharedBuffer&) final; 75 76 void didCompleteWithError(const WebCore::ResourceError&, const WebCore::NetworkLoadMetrics&) final; 76 77 void didSendData(uint64_t totalBytesSent, uint64_t totalBytesExpectedToSend) final; -
trunk/Source/WebKit/NetworkProcess/NetworkDataTask.h
r287039 r287684 44 44 class ResourceError; 45 45 class ResourceResponse; 46 class FragmentedSharedBuffer;46 class SharedBuffer; 47 47 } 48 48 … … 64 64 virtual void didReceiveChallenge(WebCore::AuthenticationChallenge&&, NegotiatedLegacyTLS, ChallengeCompletionHandler&&) = 0; 65 65 virtual void didReceiveResponse(WebCore::ResourceResponse&&, NegotiatedLegacyTLS, ResponseCompletionHandler&&) = 0; 66 virtual void didReceiveData( Ref<WebCore::FragmentedSharedBuffer>&&) = 0;66 virtual void didReceiveData(const WebCore::SharedBuffer&) = 0; 67 67 virtual void didCompleteWithError(const WebCore::ResourceError&, const WebCore::NetworkLoadMetrics&) = 0; 68 68 virtual void didSendData(uint64_t totalBytesSent, uint64_t totalBytesExpectedToSend) = 0; -
trunk/Source/WebKit/NetworkProcess/NetworkLoad.cpp
r287224 r287684 255 255 } 256 256 257 void NetworkLoad::didReceiveData( Ref<FragmentedSharedBuffer>&& buffer)257 void NetworkLoad::didReceiveData(const WebCore::SharedBuffer& buffer) 258 258 { 259 259 // FIXME: This should be the encoded data length, not the decoded data length. 260 auto size = buffer->size(); 261 m_client.get().didReceiveBuffer(WTFMove(buffer), size); 260 m_client.get().didReceiveBuffer(buffer, buffer.size()); 262 261 } 263 262 -
trunk/Source/WebKit/NetworkProcess/NetworkLoad.h
r287039 r287684 82 82 void didReceiveChallenge(WebCore::AuthenticationChallenge&&, NegotiatedLegacyTLS, ChallengeCompletionHandler&&) final; 83 83 void didReceiveResponse(WebCore::ResourceResponse&&, NegotiatedLegacyTLS, ResponseCompletionHandler&&) final; 84 void didReceiveData( Ref<WebCore::FragmentedSharedBuffer>&&) final;84 void didReceiveData(const WebCore::SharedBuffer&) final; 85 85 void didCompleteWithError(const WebCore::ResourceError&, const WebCore::NetworkLoadMetrics&) final; 86 86 void didSendData(uint64_t totalBytesSent, uint64_t totalBytesExpectedToSend) final; -
trunk/Source/WebKit/NetworkProcess/NetworkLoadClient.h
r287021 r287684 52 52 virtual void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse) = 0; 53 53 virtual void didReceiveResponse(WebCore::ResourceResponse&&, ResponseCompletionHandler&&) = 0; 54 virtual void didReceiveBuffer( Ref<WebCore::FragmentedSharedBuffer>&&, int reportedEncodedDataLength) = 0;54 virtual void didReceiveBuffer(const WebCore::FragmentedSharedBuffer&, int reportedEncodedDataLength) = 0; 55 55 virtual void didFinishLoading(const WebCore::NetworkLoadMetrics&) = 0; 56 56 virtual void didFailLoading(const WebCore::ResourceError&) = 0; -
trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
r287021 r287684 864 864 } 865 865 866 void NetworkResourceLoader::didReceiveBuffer( Ref<FragmentedSharedBuffer>&& buffer, int reportedEncodedDataLength)866 void NetworkResourceLoader::didReceiveBuffer(const WebCore::FragmentedSharedBuffer& buffer, int reportedEncodedDataLength) 867 867 { 868 868 if (!m_numBytesReceived) 869 LOADER_RELEASE_LOG("didReceive Buffer: Started receiving data (reportedEncodedDataLength=%d)", reportedEncodedDataLength);870 m_numBytesReceived += buffer ->size();869 LOADER_RELEASE_LOG("didReceiveData: Started receiving data (reportedEncodedDataLength=%d)", reportedEncodedDataLength); 870 m_numBytesReceived += buffer.size(); 871 871 872 872 ASSERT(!m_cacheEntryForValidation); … … 875 875 // Prevent memory growth in case of streaming data and limit size of entries in the cache. 876 876 const size_t maximumCacheBufferSize = m_cache->capacity() / 8; 877 if (m_bufferedDataForCache.size() + buffer ->size() <= maximumCacheBufferSize)878 m_bufferedDataForCache.append(buffer .get());877 if (m_bufferedDataForCache.size() + buffer.size() <= maximumCacheBufferSize) 878 m_bufferedDataForCache.append(buffer); 879 879 else 880 880 m_bufferedDataForCache.reset(); … … 883 883 return; 884 884 // FIXME: At least on OS X Yosemite we always get -1 from the resource handle. 885 unsigned encodedDataLength = reportedEncodedDataLength >= 0 ? reportedEncodedDataLength : buffer ->size();885 unsigned encodedDataLength = reportedEncodedDataLength >= 0 ? reportedEncodedDataLength : buffer.size(); 886 886 887 887 if (m_bufferedData) { 888 m_bufferedData.append(buffer .get());888 m_bufferedData.append(buffer); 889 889 m_bufferedDataEncodedDataLength += encodedDataLength; 890 890 startBufferingTimerIfNeeded(); … … 1274 1274 } 1275 1275 1276 void NetworkResourceLoader::sendBuffer( FragmentedSharedBuffer& buffer, size_t encodedDataLength)1276 void NetworkResourceLoader::sendBuffer(const FragmentedSharedBuffer& buffer, size_t encodedDataLength) 1277 1277 { 1278 1278 ASSERT(!isSynchronous()); -
trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.h
r287021 r287684 116 116 void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&&) final; 117 117 void didReceiveResponse(WebCore::ResourceResponse&&, ResponseCompletionHandler&&) final; 118 void didReceiveBuffer( Ref<WebCore::FragmentedSharedBuffer>&&, int reportedEncodedDataLength) final;118 void didReceiveBuffer(const WebCore::FragmentedSharedBuffer&, int reportedEncodedDataLength) final; 119 119 void didFinishLoading(const WebCore::NetworkLoadMetrics&) final; 120 120 void didFailLoading(const WebCore::ResourceError&) final; … … 194 194 void startBufferingTimerIfNeeded(); 195 195 void bufferingTimerFired(); 196 void sendBuffer( WebCore::FragmentedSharedBuffer&, size_t encodedDataLength);196 void sendBuffer(const WebCore::FragmentedSharedBuffer&, size_t encodedDataLength); 197 197 198 198 void consumeSandboxExtensions(); -
trunk/Source/WebKit/NetworkProcess/PingLoad.cpp
r287224 r287684 173 173 } 174 174 175 void PingLoad::didReceiveData( Ref<FragmentedSharedBuffer>&&)175 void PingLoad::didReceiveData(const SharedBuffer&) 176 176 { 177 177 PING_RELEASE_LOG("didReceiveData"); -
trunk/Source/WebKit/NetworkProcess/PingLoad.h
r287039 r287684 55 55 void didReceiveChallenge(WebCore::AuthenticationChallenge&&, NegotiatedLegacyTLS, ChallengeCompletionHandler&&) final; 56 56 void didReceiveResponse(WebCore::ResourceResponse&&, NegotiatedLegacyTLS, ResponseCompletionHandler&&) final; 57 void didReceiveData( Ref<WebCore::FragmentedSharedBuffer>&&) final;57 void didReceiveData(const WebCore::SharedBuffer&) final; 58 58 void didCompleteWithError(const WebCore::ResourceError&, const WebCore::NetworkLoadMetrics&) final; 59 59 void didSendData(uint64_t totalBytesSent, uint64_t totalBytesExpectedToSend) final; -
trunk/Source/WebKit/NetworkProcess/PreconnectTask.cpp
r287021 r287684 80 80 } 81 81 82 void PreconnectTask::didReceiveBuffer( Ref<FragmentedSharedBuffer>&&, int reportedEncodedDataLength)82 void PreconnectTask::didReceiveBuffer(const FragmentedSharedBuffer&, int reportedEncodedDataLength) 83 83 { 84 84 ASSERT_NOT_REACHED(); -
trunk/Source/WebKit/NetworkProcess/PreconnectTask.h
r287021 r287684 56 56 void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse) final; 57 57 void didReceiveResponse(WebCore::ResourceResponse&&, ResponseCompletionHandler&&) final; 58 void didReceiveBuffer( Ref<WebCore::FragmentedSharedBuffer>&&, int reportedEncodedDataLength) final;58 void didReceiveBuffer(const WebCore::FragmentedSharedBuffer&, int reportedEncodedDataLength) final; 59 59 void didFinishLoading(const WebCore::NetworkLoadMetrics&) final; 60 60 void didFailLoading(const WebCore::ResourceError&) final; -
trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.cpp
r286944 r287684 32 32 #include "Logging.h" 33 33 #include "NetworkProcess.h" 34 #include "SharedBufferCopy.h" 34 35 #include "WebErrors.h" 35 36 #include "WebSWContextManagerConnectionMessages.h" … … 174 175 } 175 176 176 void ServiceWorkerDownloadTask::didReceiveData(const IPC:: DataReference& data, int64_t encodedDataLength)177 void ServiceWorkerDownloadTask::didReceiveData(const IPC::SharedBufferCopy& data, int64_t encodedDataLength) 177 178 { 178 179 ASSERT(!isMainRunLoop()); -
trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.h
r286944 r287684 38 38 namespace IPC { 39 39 class FormDataReference; 40 class SharedBufferCopy; 40 41 } 41 42 … … 67 68 68 69 // IPC Message 69 void didReceiveData(const IPC:: DataReference&, int64_t encodedDataLength);70 void didReceiveData(const IPC::SharedBufferCopy&, int64_t encodedDataLength); 70 71 void didReceiveFormData(const IPC::FormDataReference&); 71 72 void didFinish(); -
trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.messages.in
r286944 r287684 25 25 messages -> ServiceWorkerDownloadTask NotRefCounted { 26 26 DidFail(WebCore::ResourceError error) 27 DidReceiveData(IPC::SharedBuffer DataReferencedata, int64_t encodedDataLength)27 DidReceiveData(IPC::SharedBufferCopy data, int64_t encodedDataLength) 28 28 DidReceiveFormData(IPC::FormDataReference data) 29 29 DidFinish() -
trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp
r286944 r287684 37 37 #include "NetworkSession.h" 38 38 #include "ServiceWorkerNavigationPreloader.h" 39 #include "SharedBuffer DataReference.h"39 #include "SharedBufferCopy.h" 40 40 #include "WebCoreArgumentCoders.h" 41 41 #include "WebResourceLoaderMessages.h" … … 226 226 } 227 227 228 void ServiceWorkerFetchTask::didReceiveData(const IPC:: DataReference& data, int64_t encodedDataLength)228 void ServiceWorkerFetchTask::didReceiveData(const IPC::SharedBufferCopy& data, int64_t encodedDataLength) 229 229 { 230 230 if (m_isDone) … … 402 402 return; 403 403 } 404 didReceiveData( IPC::DataReference { chunk->data(), chunk->size() }, length);404 didReceiveData(Ref { const_cast<WebCore::FragmentedSharedBuffer&>(*chunk) }, length); 405 405 }); 406 406 } -
trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h
r286944 r287684 49 49 class Decoder; 50 50 class FormDataReference; 51 class SharedBufferCopy; 51 52 } 52 53 … … 94 95 void didReceiveRedirectResponse(WebCore::ResourceResponse&&); 95 96 void didReceiveResponse(WebCore::ResourceResponse&&, bool needsContinueDidReceiveResponseMessage); 96 void didReceiveData(const IPC:: DataReference&, int64_t encodedDataLength);97 void didReceiveData(const IPC::SharedBufferCopy&, int64_t encodedDataLength); 97 98 void didReceiveFormData(const IPC::FormDataReference&); 98 99 void didFinish(); -
trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.messages.in
r266003 r287684 28 28 DidReceiveRedirectResponse(WebCore::ResourceResponse response) 29 29 DidReceiveResponse(WebCore::ResourceResponse response, bool needsContinueDidReceiveResponseMessage) 30 DidReceiveData(IPC::SharedBuffer DataReferencedata, int64_t encodedDataLength)30 DidReceiveData(IPC::SharedBufferCopy data, int64_t encodedDataLength) 31 31 DidReceiveFormData(IPC::FormDataReference data) 32 32 DidFinish() -
trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp
r287676 r287684 176 176 } 177 177 178 void ServiceWorkerNavigationPreloader::didReceiveBuffer( Ref<FragmentedSharedBuffer>&& buffer, int reportedEncodedDataLength)178 void ServiceWorkerNavigationPreloader::didReceiveBuffer(const FragmentedSharedBuffer& buffer, int reportedEncodedDataLength) 179 179 { 180 180 if (m_bodyCallback) 181 m_bodyCallback( buffer->makeContiguous(), reportedEncodedDataLength);181 m_bodyCallback(RefPtr { &buffer }, reportedEncodedDataLength); 182 182 } 183 183 -
trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.h
r287021 r287684 37 37 namespace WebCore { 38 38 class NetworkLoadMetrics; 39 class FragmentedSharedBuffer; 39 40 } 40 41 … … 55 56 using ResponseCallback = Function<void()>; 56 57 void waitForResponse(ResponseCallback&&); 57 using BodyCallback = Function<void(RefPtr< WebCore::SharedBuffer>&&, int reportedEncodedDataLength)>;58 using BodyCallback = Function<void(RefPtr<const WebCore::FragmentedSharedBuffer>&&, int reportedEncodedDataLength)>; 58 59 void waitForBody(BodyCallback&&); 59 60 … … 72 73 void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse) final; 73 74 void didReceiveResponse(WebCore::ResourceResponse&&, ResponseCompletionHandler&&) final; 74 void didReceiveBuffer( Ref<WebCore::FragmentedSharedBuffer>&&, int reportedEncodedDataLength) final;75 void didReceiveBuffer(const WebCore::FragmentedSharedBuffer&, int reportedEncodedDataLength) final; 75 76 void didFinishLoading(const WebCore::NetworkLoadMetrics&) final; 76 77 void didFailLoading(const WebCore::ResourceError&) final; -
trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.cpp
r287021 r287684 178 178 } 179 179 180 void ServiceWorkerSoftUpdateLoader::didReceiveBuffer( Ref<FragmentedSharedBuffer>&& buffer, int reportedEncodedDataLength)180 void ServiceWorkerSoftUpdateLoader::didReceiveBuffer(const WebCore::FragmentedSharedBuffer& buffer, int reportedEncodedDataLength) 181 181 { 182 182 if (!m_decoder) { … … 187 187 } 188 188 189 if (auto size = buffer->size()) 190 m_script.append(m_decoder->decode(buffer->makeContiguous()->data(), size)); 189 buffer.forEachSegment([&](auto& segment) { 190 if (segment.size()) 191 m_script.append(m_decoder->decode(segment.data(), segment.size())); 192 }); 191 193 } 192 194 -
trunk/Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.h
r287021 r287684 65 65 void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse) final; 66 66 void didReceiveResponse(WebCore::ResourceResponse&&, ResponseCompletionHandler&&) final; 67 void didReceiveBuffer( Ref<WebCore::FragmentedSharedBuffer>&&, int reportedEncodedDataLength) final;67 void didReceiveBuffer(const WebCore::FragmentedSharedBuffer&, int reportedEncodedDataLength) final; 68 68 void didFinishLoading(const WebCore::NetworkLoadMetrics&) final; 69 69 void didFailLoading(const WebCore::ResourceError&) final; -
trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp
r287021 r287684 121 121 } 122 122 123 void SpeculativeLoad::didReceiveBuffer( Ref<FragmentedSharedBuffer>&& buffer, int reportedEncodedDataLength)123 void SpeculativeLoad::didReceiveBuffer(const WebCore::FragmentedSharedBuffer& buffer, int reportedEncodedDataLength) 124 124 { 125 125 ASSERT(!m_cacheEntry); … … 128 128 // Prevent memory growth in case of streaming data. 129 129 const size_t maximumCacheBufferSize = 10 * 1024 * 1024; 130 if (m_bufferedDataForCache.size() + buffer ->size() <= maximumCacheBufferSize)131 m_bufferedDataForCache.append(buffer .get());130 if (m_bufferedDataForCache.size() + buffer.size() <= maximumCacheBufferSize) 131 m_bufferedDataForCache.append(buffer); 132 132 else 133 133 m_bufferedDataForCache.reset(); -
trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.h
r287021 r287684 62 62 void willSendRedirectedRequest(WebCore::ResourceRequest&&, WebCore::ResourceRequest&& redirectRequest, WebCore::ResourceResponse&& redirectResponse) override; 63 63 void didReceiveResponse(WebCore::ResourceResponse&&, ResponseCompletionHandler&&) override; 64 void didReceiveBuffer( Ref<WebCore::FragmentedSharedBuffer>&&, int reportedEncodedDataLength) override;64 void didReceiveBuffer(const WebCore::FragmentedSharedBuffer&, int reportedEncodedDataLength) override; 65 65 void didFinishLoading(const WebCore::NetworkLoadMetrics&) override; 66 66 void didFailLoading(const WebCore::ResourceError&) override; -
trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h
r287021 r287684 39 39 namespace WebCore { 40 40 class RegistrableDomain; 41 class SharedBuffer; 41 42 } 42 43 … … 63 64 void didCompleteWithError(const WebCore::ResourceError&, const WebCore::NetworkLoadMetrics&); 64 65 void didReceiveResponse(WebCore::ResourceResponse&&, NegotiatedLegacyTLS, ResponseCompletionHandler&&); 65 void didReceiveData( Ref<WebCore::FragmentedSharedBuffer>&&);66 void didReceiveData(const WebCore::SharedBuffer&); 66 67 67 68 void willPerformHTTPRedirection(WebCore::ResourceResponse&&, WebCore::ResourceRequest&&, RedirectCompletionHandler&&); -
trunk/Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
r287039 r287684 444 444 } 445 445 446 void NetworkDataTaskCocoa::didReceiveData( Ref<WebCore::FragmentedSharedBuffer>&& data)447 { 448 WTFEmitSignpost(m_task.get(), "DataTask", "received %zd bytes", data ->size());446 void NetworkDataTaskCocoa::didReceiveData(const WebCore::SharedBuffer& data) 447 { 448 WTFEmitSignpost(m_task.get(), "DataTask", "received %zd bytes", data.size()); 449 449 450 450 if (m_client) 451 m_client->didReceiveData( WTFMove(data));451 m_client->didReceiveData(data); 452 452 } 453 453 -
trunk/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp
r287224 r287684 38 38 #include <WebCore/ResourceError.h> 39 39 #include <WebCore/SameSiteInfo.h> 40 #include <WebCore/SharedBuffer.h> 40 41 #include <WebCore/ShouldRelaxThirdPartyCookieBlocking.h> 41 42 #include <WebCore/SynchronousLoaderClient.h> … … 173 174 } 174 175 175 void NetworkDataTaskCurl::curlDidReceive Buffer(CurlRequest&, Ref<FragmentedSharedBuffer>&& buffer)176 void NetworkDataTaskCurl::curlDidReceiveData(CurlRequest&, const SharedBuffer& buffer) 176 177 { 177 178 Ref protectedThis { *this }; … … 179 180 return; 180 181 181 m_client->didReceiveData( WTFMove(buffer));182 m_client->didReceiveData(buffer); 182 183 } 183 184 -
trunk/Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.h
r287021 r287684 37 37 namespace WebCore { 38 38 class CurlRequest; 39 class SharedBuffer; 39 40 } 40 41 … … 69 70 void curlDidSendData(WebCore::CurlRequest&, unsigned long long, unsigned long long) override; 70 71 void curlDidReceiveResponse(WebCore::CurlRequest&, WebCore::CurlResponse&&) override; 71 void curlDidReceive Buffer(WebCore::CurlRequest&, Ref<WebCore::FragmentedSharedBuffer>&&) override;72 void curlDidReceiveData(WebCore::CurlRequest&, const WebCore::SharedBuffer&) override; 72 73 void curlDidComplete(WebCore::CurlRequest&, WebCore::NetworkLoadMetrics&&) override; 73 74 void curlDidFailWithError(WebCore::CurlRequest&, WebCore::ResourceError&&, WebCore::CertificateInfo&&) override; -
trunk/Source/WebKit/Platform/IPC/SharedBufferCopy.h
r287021 r287684 29 29 #pragma once 30 30 31 #include "DataReference.h" 31 32 #include <WebCore/SharedBuffer.h> 32 33 -
trunk/Source/WebKit/Shared/mac/MediaFormatReader/MediaFormatReader.cpp
r286816 r287684 186 186 187 187 Locker locker { m_parseTracksLock }; 188 ASSERT(!m_parseTracksStatus );189 ASSERT(m_duration.isInvalid() );190 ASSERT(m_trackReaders.isEmpty() );188 ASSERT(!m_parseTracksStatus || (m_init && errorCode)); 189 ASSERT(m_duration.isInvalid() || (m_init && errorCode)); 190 ASSERT(m_trackReaders.isEmpty() || (m_init && errorCode)); 191 191 192 192 ALWAYS_LOG_IF_POSSIBLE(LOGIDENTIFIER); … … 222 222 223 223 m_parseTracksCondition.notifyAll(); 224 m_init = true; 224 225 } 225 226 -
trunk/Source/WebKit/Shared/mac/MediaFormatReader/MediaFormatReader.h
r278253 r287684 88 88 RefPtr<const Logger> m_logger; 89 89 const void* m_logIdentifier; 90 bool m_init { false }; 90 91 }; 91 92 -
trunk/Source/WebKit/UIProcess/WebURLSchemeTask.cpp
r287021 r287684 169 169 } 170 170 171 auto WebURLSchemeTask::didReceiveData( Ref<FragmentedSharedBuffer>&& buffer) -> ExceptionType171 auto WebURLSchemeTask::didReceiveData(const SharedBuffer& buffer) -> ExceptionType 172 172 { 173 173 ASSERT(RunLoop::isMain()); … … 188 188 189 189 if (isSync()) { 190 m_syncData.append( WTFMove(buffer));190 m_syncData.append(buffer); 191 191 return ExceptionType::None; 192 192 } 193 193 194 m_process->send(Messages::WebPage::URLSchemeTaskDidReceiveData(m_urlSchemeHandler->identifier(), m_resourceLoaderID, buffer .get()), m_webPageID);194 m_process->send(Messages::WebPage::URLSchemeTaskDidReceiveData(m_urlSchemeHandler->identifier(), m_resourceLoaderID, buffer), m_webPageID); 195 195 return ExceptionType::None; 196 196 } -
trunk/Source/WebKit/UIProcess/WebURLSchemeTask.h
r287021 r287684 84 84 ExceptionType didPerformRedirection(WebCore::ResourceResponse&&, WebCore::ResourceRequest&&); 85 85 ExceptionType didReceiveResponse(const WebCore::ResourceResponse&); 86 ExceptionType didReceiveData( Ref<WebCore::FragmentedSharedBuffer>&&);86 ExceptionType didReceiveData(const WebCore::SharedBuffer&); 87 87 ExceptionType didComplete(const WebCore::ResourceError&); 88 88 -
trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaResourceProxy.cpp
r285335 r287684 73 73 } 74 74 75 void RemoteMediaResourceProxy::dataReceived(WebCore::PlatformMediaResource&, const uint8_t* data, int length)75 void RemoteMediaResourceProxy::dataReceived(WebCore::PlatformMediaResource&, const WebCore::SharedBuffer& buffer) 76 76 { 77 auto sharedMemory = SharedMemory:: allocate(length);77 auto sharedMemory = SharedMemory::copyBuffer(buffer); 78 78 if (!sharedMemory) 79 79 return; 80 81 auto sharedMemoryPtr = static_cast<char*>(sharedMemory->data());82 memcpy(sharedMemoryPtr, data, length);83 80 84 81 SharedMemory::Handle handle; … … 86 83 // Take ownership of shared memory and mark it as media-related memory. 87 84 handle.takeOwnershipOfMemory(MemoryLedger::Media); 88 m_connection->send(Messages::RemoteMediaResourceManager::DataReceived(m_id, SharedMemory::IPCHandle { WTFMove(handle), static_cast<uint64_t>(length) }), 0);85 m_connection->send(Messages::RemoteMediaResourceManager::DataReceived(m_id, SharedMemory::IPCHandle { WTFMove(handle), buffer.size() }), 0); 89 86 } 90 87 -
trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaResourceProxy.h
r278516 r287684 48 48 bool shouldCacheResponse(WebCore::PlatformMediaResource&, const WebCore::ResourceResponse&) final; 49 49 void dataSent(WebCore::PlatformMediaResource&, unsigned long long, unsigned long long) final; 50 void dataReceived(WebCore::PlatformMediaResource&, const uint8_t*, int) final;50 void dataReceived(WebCore::PlatformMediaResource&, const WebCore::SharedBuffer&) final; 51 51 void accessControlCheckFailed(WebCore::PlatformMediaResource&, const WebCore::ResourceError&) final; 52 52 void loadFailed(WebCore::PlatformMediaResource&, const WebCore::ResourceError&) final; -
trunk/Source/WebKit/WebProcess/Network/WebResourceLoader.cpp
r287414 r287684 31 31 #include "NetworkProcessConnection.h" 32 32 #include "NetworkResourceLoaderMessages.h" 33 #include "SharedBufferCopy.h" 33 34 #include "WebCoreArgumentCoders.h" 34 35 #include "WebErrors.h" … … 201 202 } 202 203 203 void WebResourceLoader::didReceiveData(const IPC:: DataReference& data, int64_t encodedDataLength)204 void WebResourceLoader::didReceiveData(const IPC::SharedBufferCopy& data, int64_t encodedDataLength) 204 205 { 205 206 LOG(Network, "(WebProcess) WebResourceLoader::didReceiveData of size %lu for '%s'", data.size(), m_coreLoader->url().string().latin1().data()); … … 207 208 208 209 if (UNLIKELY(m_interceptController.isIntercepting(m_coreLoader->identifier()))) { 209 auto buffer = SharedBuffer::create(data.data(), data.size()); 210 m_interceptController.defer(m_coreLoader->identifier(), [this, protectedThis = Ref { *this }, buffer = WTFMove(buffer), encodedDataLength]() mutable { 210 m_interceptController.defer(m_coreLoader->identifier(), [this, protectedThis = Ref { *this }, buffer = data.buffer(), encodedDataLength]() mutable { 211 211 if (m_coreLoader) 212 didReceiveData( { buffer->data(), buffer->size() }, encodedDataLength);212 didReceiveData(WTFMove(buffer), encodedDataLength); 213 213 }); 214 214 return; … … 219 219 m_numBytesReceived += data.size(); 220 220 221 m_coreLoader->didReceiveData(data.data(), data.size(), encodedDataLength, DataPayloadBytes); 221 auto buffer = data.buffer() ? Ref { *data.buffer() } : SharedBuffer::create(); 222 m_coreLoader->didReceiveData(buffer, encodedDataLength, DataPayloadBytes); 222 223 } 223 224 … … 307 308 WEBRESOURCELOADER_RELEASE_LOG("didReceiveResource:"); 308 309 309 RefPtr< FragmentedSharedBuffer> buffer = handle.tryWrapInSharedBuffer();310 RefPtr<SharedBuffer> buffer = handle.tryWrapInSharedBuffer(); 310 311 311 312 if (!buffer) { … … 324 325 // Only send data to the didReceiveData callback if it exists. 325 326 if (unsigned bufferSize = buffer->size()) 326 m_coreLoader->didReceive Buffer(buffer.releaseNonNull(), bufferSize, DataPayloadWholeResource);327 m_coreLoader->didReceiveData(buffer.releaseNonNull(), bufferSize, DataPayloadWholeResource); 327 328 328 329 if (!m_coreLoader) -
trunk/Source/WebKit/WebProcess/Network/WebResourceLoader.h
r282712 r287684 40 40 namespace IPC { 41 41 class FormDataReference; 42 class SharedBufferCopy; 42 43 } 43 44 … … 81 82 void didSendData(uint64_t bytesSent, uint64_t totalBytesToBeSent); 82 83 void didReceiveResponse(const WebCore::ResourceResponse&, bool needsContinueDidReceiveResponseMessage); 83 void didReceiveData(const IPC:: DataReference&, int64_t encodedDataLength);84 void didReceiveData(const IPC::SharedBufferCopy& data, int64_t encodedDataLength); 84 85 void didFinishResourceLoad(const WebCore::NetworkLoadMetrics&); 85 86 void didFailResourceLoad(const WebCore::ResourceError&); -
trunk/Source/WebKit/WebProcess/Network/WebResourceLoader.messages.in
r266003 r287684 25 25 DidSendData(uint64_t bytesSent, uint64_t totalBytesToBeSent) 26 26 DidReceiveResponse(WebCore::ResourceResponse response, bool needsContinueDidReceiveResponseMessage) 27 DidReceiveData(IPC::SharedBuffer DataReferencedata, int64_t encodedDataLength)27 DidReceiveData(IPC::SharedBufferCopy data, int64_t encodedDataLength) 28 28 DidFinishResourceLoad(WebCore::NetworkLoadMetrics networkLoadMetrics) 29 29 DidFailResourceLoad(WebCore::ResourceError error) -
trunk/Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h
r287163 r287684 66 66 class Element; 67 67 struct PluginInfo; 68 class SharedBuffer; 68 69 } 69 70 … … 177 178 void streamWillSendRequest(uint64_t streamID, const URL& requestURL, const URL& responseURL, int responseStatus) final { } 178 179 void streamDidReceiveResponse(uint64_t streamID, const URL& responseURL, uint32_t streamLength, uint32_t lastModifiedTime, const String& mimeType, const String& headers, const String& suggestedFileName) final; 179 void streamDidReceiveData(uint64_t streamID, const uint8_t* bytes, int length) final;180 void streamDidReceiveData(uint64_t streamID, const WebCore::SharedBuffer&) final; 180 181 void streamDidFinishLoading(uint64_t streamID) final; 181 182 void streamDidFail(uint64_t streamID, bool wasCancelled) final; 182 183 void manualStreamDidReceiveResponse(const URL& responseURL, uint32_t streamLength, uint32_t lastModifiedTime, const WTF::String& mimeType, const WTF::String& headers, const String& suggestedFileName) final; 183 void manualStreamDidReceiveData(const uint8_t* bytes, int length) final;184 void manualStreamDidReceiveData(const WebCore::SharedBuffer&) final; 184 185 void manualStreamDidFinishLoading() final; 185 186 void manualStreamDidFail(bool wasCancelled) final; … … 363 364 void willSendRequest(WebCore::NetscapePlugInStreamLoader*, WebCore::ResourceRequest&&, const WebCore::ResourceResponse& redirectResponse, CompletionHandler<void(WebCore::ResourceRequest&&)>&&) final; 364 365 void didReceiveResponse(WebCore::NetscapePlugInStreamLoader*, const WebCore::ResourceResponse&) final; 365 void didReceiveData(WebCore::NetscapePlugInStreamLoader*, const uint8_t*, int) final;366 void didReceiveData(WebCore::NetscapePlugInStreamLoader*, const WebCore::SharedBuffer&) final; 366 367 void didFail(WebCore::NetscapePlugInStreamLoader*, const WebCore::ResourceError&) final; 367 368 void didFinishLoading(WebCore::NetscapePlugInStreamLoader*) final; -
trunk/Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm
r287452 r287684 95 95 #import <WebCore/ScrollbarTheme.h> 96 96 #import <WebCore/Settings.h> 97 #import <WebCore/SharedBuffer.h> 97 98 #import <WebCore/WebAccessibilityObjectWrapperMac.h> 98 99 #import <WebCore/WheelEventTestMonitor.h> … … 1192 1193 } 1193 1194 1194 void PDFPlugin::PDFPluginStreamLoaderClient::didReceiveData(NetscapePlugInStreamLoader* loader, const uint8_t* data, int count)1195 void PDFPlugin::PDFPluginStreamLoaderClient::didReceiveData(NetscapePlugInStreamLoader* loader, const SharedBuffer& data) 1195 1196 { 1196 1197 if (!m_pdfPlugin) … … 1201 1202 return; 1202 1203 1203 request->addData(data , count);1204 request->addData(data.data(), data.size()); 1204 1205 } 1205 1206 … … 1719 1720 } 1720 1721 1721 void PDFPlugin::streamDidReceiveData(uint64_t streamID, const uint8_t* bytes, int length)1722 void PDFPlugin::streamDidReceiveData(uint64_t streamID, const SharedBuffer& buffer) 1722 1723 { 1723 1724 ASSERT_UNUSED(streamID, streamID == pdfDocumentRequestID); … … 1726 1727 m_data = adoptCF(CFDataCreateMutable(0, 0)); 1727 1728 1728 CFDataAppendBytes(m_data.get(), b ytes, length);1729 m_streamedBytes += length;1729 CFDataAppendBytes(m_data.get(), buffer.data(), buffer.size()); 1730 m_streamedBytes += buffer.size(); 1730 1731 } 1731 1732 … … 1764 1765 } 1765 1766 1766 void PDFPlugin::manualStreamDidReceiveData(const uint8_t* bytes, int length)1767 void PDFPlugin::manualStreamDidReceiveData(const SharedBuffer& buffer) 1767 1768 { 1768 1769 if (!m_data) 1769 1770 m_data = adoptCF(CFDataCreateMutable(0, 0)); 1770 1771 1771 ensureDataBufferLength(m_streamedBytes + length);1772 memcpy(CFDataGetMutableBytePtr(m_data.get()) + m_streamedBytes, b ytes, length);1773 m_streamedBytes += length;1772 ensureDataBufferLength(m_streamedBytes + buffer.size()); 1773 memcpy(CFDataGetMutableBytePtr(m_data.get()) + m_streamedBytes, buffer.data(), buffer.size()); 1774 m_streamedBytes += buffer.size(); 1774 1775 1775 1776 #if HAVE(INCREMENTAL_PDF_APIS) -
trunk/Source/WebKit/WebProcess/Plugins/Plugin.h
r287163 r287684 55 55 class FloatPoint; 56 56 class FloatSize; 57 class FragmentedSharedBuffer; 57 58 class GraphicsContext; 58 59 class IntPoint; … … 60 61 class IntSize; 61 62 class Scrollbar; 62 class FragmentedSharedBuffer;63 class SharedBuffer; 63 64 } 64 65 … … 161 162 162 163 // Tells the plug-in that a stream did receive data. 163 virtual void streamDidReceiveData(uint64_t streamID, const uint8_t* bytes, int length) = 0;164 virtual void streamDidReceiveData(uint64_t streamID, const WebCore::SharedBuffer&) = 0; 164 165 165 166 // Tells the plug-in that a stream has finished loading. … … 174 175 175 176 // Tells the plug-in that the manual stream did receive data. 176 virtual void manualStreamDidReceiveData(const uint8_t* bytes, int length) = 0;177 virtual void manualStreamDidReceiveData(const WebCore::SharedBuffer&) = 0; 177 178 178 179 // Tells the plug-in that a stream has finished loading. -
trunk/Source/WebKit/WebProcess/Plugins/PluginView.cpp
r287163 r287684 128 128 void willSendRequest(NetscapePlugInStreamLoader*, ResourceRequest&&, const ResourceResponse& redirectResponse, CompletionHandler<void(ResourceRequest&&)>&&) override; 129 129 void didReceiveResponse(NetscapePlugInStreamLoader*, const ResourceResponse&) override; 130 void didReceiveData(NetscapePlugInStreamLoader*, const uint8_t*, int) override;130 void didReceiveData(NetscapePlugInStreamLoader*, const SharedBuffer&) override; 131 131 void didFail(NetscapePlugInStreamLoader*, const ResourceError&) override; 132 132 void didFinishLoading(NetscapePlugInStreamLoader*) override; … … 236 236 } 237 237 238 void PluginView::Stream::didReceiveData(NetscapePlugInStreamLoader*, const uint8_t* bytes, int length)239 { 240 m_pluginView->m_plugin->streamDidReceiveData(m_streamID, b ytes, length);238 void PluginView::Stream::didReceiveData(NetscapePlugInStreamLoader*, const SharedBuffer& buffer) 239 { 240 m_pluginView->m_plugin->streamDidReceiveData(m_streamID, buffer); 241 241 } 242 242 … … 375 375 } 376 376 377 void PluginView::manualLoadDidReceiveData(const uint8_t* bytes, int length)377 void PluginView::manualLoadDidReceiveData(const SharedBuffer& buffer) 378 378 { 379 379 // The plug-in can be null here if it failed to initialize. … … 383 383 if (!m_isInitialized) { 384 384 ASSERT(m_manualStreamState == ManualStreamState::HasReceivedResponse); 385 m_manualStreamData.append(b ytes, length);386 return; 387 } 388 389 m_plugin->manualStreamDidReceiveData(b ytes, length);385 m_manualStreamData.append(buffer); 386 return; 387 } 388 389 m_plugin->manualStreamDidReceiveData(buffer); 390 390 } 391 391 … … 1172 1172 // Deliver the data. 1173 1173 if (m_manualStreamData) { 1174 auto buffer = m_manualStreamData.take();1175 for (const auto& element : buffer.get())1176 manualLoadDidReceiveData(element.segment->data(), element.segment->size());1174 m_manualStreamData.take()->forEachSegmentAsSharedBuffer([&](auto&& buffer) { 1175 manualLoadDidReceiveData(buffer); 1176 }); 1177 1177 } 1178 1178 -
trunk/Source/WebKit/WebProcess/Plugins/PluginView.h
r287163 r287684 74 74 75 75 void manualLoadDidReceiveResponse(const WebCore::ResourceResponse&); 76 void manualLoadDidReceiveData(const uint8_t* bytes, int length);76 void manualLoadDidReceiveData(const WebCore::SharedBuffer&); 77 77 void manualLoadDidFinishLoading(); 78 78 void manualLoadDidFail(const WebCore::ResourceError&); -
trunk/Source/WebKit/WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp
r287021 r287684 73 73 } 74 74 75 void WebServiceWorkerFetchTaskClient::didReceiveData( Ref<FragmentedSharedBuffer>&& buffer)75 void WebServiceWorkerFetchTaskClient::didReceiveData(const SharedBuffer& buffer) 76 76 { 77 77 if (!m_connection) … … 81 81 if (!std::holds_alternative<SharedBufferBuilder>(m_responseData)) 82 82 m_responseData = SharedBufferBuilder(); 83 std::get<SharedBufferBuilder>(m_responseData).append( WTFMove(buffer));84 return; 85 } 86 87 if (m_isDownload) 88 m_connection->send(Messages::ServiceWorkerDownloadTask::DidReceiveData { buffer .get(), static_cast<int64_t>(buffer->size()) }, m_fetchIdentifier);89 else 90 m_connection->send(Messages::ServiceWorkerFetchTask::DidReceiveData { buffer .get(), static_cast<int64_t>(buffer->size()) }, m_fetchIdentifier);83 std::get<SharedBufferBuilder>(m_responseData).append(buffer); 84 return; 85 } 86 87 if (m_isDownload) 88 m_connection->send(Messages::ServiceWorkerDownloadTask::DidReceiveData { buffer, static_cast<int64_t>(buffer.size()) }, m_fetchIdentifier); 89 else 90 m_connection->send(Messages::ServiceWorkerFetchTask::DidReceiveData { buffer, static_cast<int64_t>(buffer.size()) }, m_fetchIdentifier); 91 91 } 92 92 … … 137 137 } 138 138 139 void WebServiceWorkerFetchTaskClient::didReceiveBlobChunk(const uint8_t* data, size_t size)140 { 141 if (!m_connection) 142 return; 143 144 if (m_isDownload) 145 m_connection->send(Messages::ServiceWorkerDownloadTask::DidReceiveData { { data, size }, static_cast<int64_t>(size) }, m_fetchIdentifier);146 else 147 m_connection->send(Messages::ServiceWorkerFetchTask::DidReceiveData { { data, size }, static_cast<int64_t>(size) }, m_fetchIdentifier);139 void WebServiceWorkerFetchTaskClient::didReceiveBlobChunk(const SharedBuffer& buffer) 140 { 141 if (!m_connection) 142 return; 143 144 if (m_isDownload) 145 m_connection->send(Messages::ServiceWorkerDownloadTask::DidReceiveData { buffer, static_cast<int64_t>(buffer.size()) }, m_fetchIdentifier); 146 else 147 m_connection->send(Messages::ServiceWorkerFetchTask::DidReceiveData { buffer , static_cast<int64_t>(buffer.size()) }, m_fetchIdentifier); 148 148 } 149 149 … … 229 229 didFinish(); 230 230 }, [this](const SharedBufferBuilder& buffer) { 231 didReceiveData( *buffer.get());231 didReceiveData(buffer.copy()->makeContiguous()); 232 232 if (m_didFinish) 233 233 didFinish(); -
trunk/Source/WebKit/WebProcess/Storage/WebServiceWorkerFetchTaskClient.h
r287021 r287684 51 51 void didReceiveResponse(const WebCore::ResourceResponse&) final; 52 52 void didReceiveRedirection(const WebCore::ResourceResponse&) final; 53 void didReceiveData( Ref<WebCore::FragmentedSharedBuffer>&&) final;53 void didReceiveData(const WebCore::SharedBuffer&) final; 54 54 void didReceiveFormDataAndFinish(Ref<WebCore::FormData>&&) final; 55 55 void didFail(const WebCore::ResourceError&) final; … … 61 61 62 62 void cleanup(); 63 64 void didReceiveBlobChunk(const uint8_t* data, size_t);63 64 void didReceiveBlobChunk(const WebCore::SharedBuffer&); 65 65 void didFinishBlobLoading(); 66 66 … … 70 70 // FetchLoaderClient API 71 71 void didReceiveResponse(const WebCore::ResourceResponse&) final { } 72 void didReceiveData(const uint8_t* data, size_t size) final { client->didReceiveBlobChunk(data, size); }72 void didReceiveData(const WebCore::SharedBuffer& data) final { client->didReceiveBlobChunk(data); } 73 73 void didFail(const WebCore::ResourceError& error) final { client->didFail(error); } 74 74 void didSucceed() final { client->didFinishBlobLoading(); } -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
r287021 r287684 1153 1153 } 1154 1154 1155 void WebFrameLoaderClient::committedLoad(DocumentLoader* loader, const uint8_t* data, int length)1155 void WebFrameLoaderClient::committedLoad(DocumentLoader* loader, const SharedBuffer& data) 1156 1156 { 1157 1157 if (!m_pluginView) 1158 loader->commitData(data , length);1158 loader->commitData(data); 1159 1159 1160 1160 // If the document is a stand-alone media document, now is the right time to cancel the WebKit load. … … 1178 1178 m_hasSentResponseToPluginView = true; 1179 1179 } 1180 m_pluginView->manualLoadDidReceiveData(data , length);1180 m_pluginView->manualLoadDidReceiveData(data); 1181 1181 } 1182 1182 -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h
r284406 r287684 153 153 void didReplaceMultipartContent() final; 154 154 155 void committedLoad(WebCore::DocumentLoader*, const uint8_t*, int) final;155 void committedLoad(WebCore::DocumentLoader*, const WebCore::SharedBuffer&) final; 156 156 void finishedLoading(WebCore::DocumentLoader*) final; 157 157 -
trunk/Source/WebKit/WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.cpp
r287021 r287684 50 50 WebPreviewLoaderClient::~WebPreviewLoaderClient() = default; 51 51 52 void WebPreviewLoaderClient::didReceive Buffer(const FragmentedSharedBuffer& buffer)52 void WebPreviewLoaderClient::didReceiveData(const SharedBuffer& buffer) 53 53 { 54 54 auto webPage = WebProcess::singleton().webPage(m_pageID); -
trunk/Source/WebKit/WebProcess/WebCoreSupport/ios/WebPreviewLoaderClient.h
r287021 r287684 47 47 private: 48 48 WebPreviewLoaderClient(const String& fileName, const String& uti, WebCore::PageIdentifier); 49 void didReceive Buffer(const WebCore::FragmentedSharedBuffer&) override;49 void didReceiveData(const WebCore::SharedBuffer&) override; 50 50 void didFinishLoading() override; 51 51 void didFail() override; -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp
r287121 r287684 7058 7058 } 7059 7059 7060 void WebPage::urlSchemeTaskDidReceiveData(WebURLSchemeHandlerIdentifier handlerIdentifier, WebCore::ResourceLoaderIdentifier taskIdentifier, const IPC:: DataReference& data)7060 void WebPage::urlSchemeTaskDidReceiveData(WebURLSchemeHandlerIdentifier handlerIdentifier, WebCore::ResourceLoaderIdentifier taskIdentifier, const IPC::SharedBufferCopy& data) 7061 7061 { 7062 7062 auto* handler = m_identifierToURLSchemeHandlerProxyMap.get(handlerIdentifier); 7063 7063 ASSERT(handler); 7064 7064 7065 handler->taskDidReceiveData(taskIdentifier, data. size(), data.data());7065 handler->taskDidReceiveData(taskIdentifier, data.buffer() ? *data.buffer() : SharedBuffer::create().get()); 7066 7066 } 7067 7067 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.h
r287163 r287684 185 185 class Decoder; 186 186 class FormDataReference; 187 class SharedBufferCopy; 187 188 } 188 189 … … 1897 1898 void urlSchemeTaskDidPerformRedirection(WebURLSchemeHandlerIdentifier, WebCore::ResourceLoaderIdentifier taskIdentifier, WebCore::ResourceResponse&&, WebCore::ResourceRequest&&); 1898 1899 void urlSchemeTaskDidReceiveResponse(WebURLSchemeHandlerIdentifier, WebCore::ResourceLoaderIdentifier taskIdentifier, const WebCore::ResourceResponse&); 1899 void urlSchemeTaskDidReceiveData(WebURLSchemeHandlerIdentifier, WebCore::ResourceLoaderIdentifier taskIdentifier, const IPC:: DataReference&);1900 void urlSchemeTaskDidReceiveData(WebURLSchemeHandlerIdentifier, WebCore::ResourceLoaderIdentifier taskIdentifier, const IPC::SharedBufferCopy&); 1900 1901 void urlSchemeTaskDidComplete(WebURLSchemeHandlerIdentifier, WebCore::ResourceLoaderIdentifier taskIdentifier, const WebCore::ResourceError&); 1901 1902 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in
r287163 r287684 565 565 URLSchemeTaskDidPerformRedirection(WebKit::WebURLSchemeHandlerIdentifier handlerIdentifier, WebCore::ResourceLoaderIdentifier taskIdentifier, WebCore::ResourceResponse response, WebCore::ResourceRequest proposedRequest) 566 566 URLSchemeTaskDidReceiveResponse(WebKit::WebURLSchemeHandlerIdentifier handlerIdentifier, WebCore::ResourceLoaderIdentifier taskIdentifier, WebCore::ResourceResponse response) 567 URLSchemeTaskDidReceiveData(WebKit::WebURLSchemeHandlerIdentifier handlerIdentifier, WebCore::ResourceLoaderIdentifier taskIdentifier, IPC::SharedBuffer DataReferencedata)567 URLSchemeTaskDidReceiveData(WebKit::WebURLSchemeHandlerIdentifier handlerIdentifier, WebCore::ResourceLoaderIdentifier taskIdentifier, IPC::SharedBufferCopy data) 568 568 URLSchemeTaskDidComplete(WebKit::WebURLSchemeHandlerIdentifier handlerIdentifier, WebCore::ResourceLoaderIdentifier taskIdentifier, WebCore::ResourceError error) 569 569 -
trunk/Source/WebKit/WebProcess/WebPage/WebURLSchemeHandlerProxy.cpp
r282756 r287684 97 97 } 98 98 99 void WebURLSchemeHandlerProxy::taskDidReceiveData(WebCore::ResourceLoaderIdentifier taskIdentifier, size_t size, const uint8_t*data)99 void WebURLSchemeHandlerProxy::taskDidReceiveData(WebCore::ResourceLoaderIdentifier taskIdentifier, const SharedBuffer& data) 100 100 { 101 101 auto* task = m_tasks.get(taskIdentifier); … … 103 103 return; 104 104 105 task->didReceiveData( size,data);105 task->didReceiveData(data); 106 106 } 107 107 -
trunk/Source/WebKit/WebProcess/WebPage/WebURLSchemeHandlerProxy.h
r282756 r287684 36 36 class ResourceResponse; 37 37 class ResourceRequest; 38 class SharedBuffer; 38 39 } 39 40 … … 60 61 void taskDidPerformRedirection(WebCore::ResourceLoaderIdentifier, WebCore::ResourceResponse&&, WebCore::ResourceRequest&&, CompletionHandler<void(WebCore::ResourceRequest&&)>&&); 61 62 void taskDidReceiveResponse(WebCore::ResourceLoaderIdentifier, const WebCore::ResourceResponse&); 62 void taskDidReceiveData(WebCore::ResourceLoaderIdentifier, size_t, const uint8_t* data);63 void taskDidReceiveData(WebCore::ResourceLoaderIdentifier, const WebCore::SharedBuffer&); 63 64 void taskDidComplete(WebCore::ResourceLoaderIdentifier, const WebCore::ResourceError&); 64 65 void taskDidStopLoading(WebURLSchemeTaskProxy&); -
trunk/Source/WebKit/WebProcess/WebPage/WebURLSchemeTaskProxy.cpp
r282756 r287684 141 141 } 142 142 143 void WebURLSchemeTaskProxy::didReceiveData( size_t size, const uint8_t*data)143 void WebURLSchemeTaskProxy::didReceiveData(const WebCore::SharedBuffer& data) 144 144 { 145 145 if (!hasLoader()) … … 148 148 if (m_waitingForCompletionHandler) { 149 149 WEBURLSCHEMETASKPROXY_RELEASE_LOG("didReceiveData: Received data during response processing, queuing it."); 150 queueTask([this, protectedThis = Ref { *this }, data Vector = Vector { data, size}] {151 didReceiveData(data Vector.size(), dataVector.data());150 queueTask([this, protectedThis = Ref { *this }, data = Ref { data }] { 151 didReceiveData(data); 152 152 }); 153 153 return; … … 155 155 156 156 Ref protectedThis { *this }; 157 m_coreLoader->didReceiveData(data, size,0, DataPayloadType::DataPayloadBytes);157 m_coreLoader->didReceiveData(data, 0, DataPayloadType::DataPayloadBytes); 158 158 processNextPendingTask(); 159 159 } -
trunk/Source/WebKit/WebProcess/WebPage/WebURLSchemeTaskProxy.h
r282712 r287684 35 35 class ResourceLoader; 36 36 class ResourceResponse; 37 class SharedBuffer; 37 38 } 38 39 … … 56 57 void didPerformRedirection(WebCore::ResourceResponse&&, WebCore::ResourceRequest&&, CompletionHandler<void(WebCore::ResourceRequest&&)>&&); 57 58 void didReceiveResponse(const WebCore::ResourceResponse&); 58 void didReceiveData( size_t, const uint8_t* data);59 void didReceiveData(const WebCore::SharedBuffer&); 59 60 void didComplete(const WebCore::ResourceError&); 60 61 -
trunk/Source/WebKitLegacy/ChangeLog
r287021 r287684 1 2022-01-06 Jean-Yves Avenard <jya@apple.com> 2 3 Have CachedRawResourceClient and related networking actors use SharedBuffer. 4 https://bugs.webkit.org/show_bug.cgi?id=232424 5 rdar://84744687 6 7 Reviewed by Youenn Fablet. 8 9 * WebCoreSupport/PingHandle.h: 10 1 11 2021-12-14 Jean-Yves Avenard <jya@apple.com> 2 12 -
trunk/Source/WebKitLegacy/WebCoreSupport/PingHandle.h
r287021 r287684 31 31 #include <WebCore/ResourceRequest.h> 32 32 #include <WebCore/ResourceResponse.h> 33 #include <WebCore/SharedBuffer.h> 33 34 #include <WebCore/Timer.h> 34 35 #include <wtf/CompletionHandler.h> … … 74 75 pingLoadComplete({ }, response); 75 76 } 76 void didReceive Buffer(WebCore::ResourceHandle*, Ref<WebCore::FragmentedSharedBuffer>&&, int) final { pingLoadComplete(); }77 void didReceiveData(WebCore::ResourceHandle*, const WebCore::SharedBuffer&, int) final { pingLoadComplete(); } 77 78 void didFinishLoading(WebCore::ResourceHandle*, const WebCore::NetworkLoadMetrics&) final { pingLoadComplete(); } 78 79 void didFail(WebCore::ResourceHandle*, const WebCore::ResourceError& error) final { pingLoadComplete(error); } -
trunk/Source/WebKitLegacy/mac/ChangeLog
r287653 r287684 1 2022-01-06 Jean-Yves Avenard <jya@apple.com> 2 3 Have CachedRawResourceClient and related networking actors use SharedBuffer. 4 https://bugs.webkit.org/show_bug.cgi?id=232424 5 rdar://84744687 6 7 Reviewed by Youenn Fablet. 8 9 * WebCoreSupport/WebFrameLoaderClient.h: 10 * WebCoreSupport/WebFrameLoaderClient.mm: 11 (WebFrameLoaderClient::committedLoad): 12 (WebFrameLoaderClient::createPreviewLoaderClient): 13 * WebView/WebFrame.mm: 14 (-[WebFrame _commitData:]): 15 1 16 2022-01-05 Tim Horton <timothy_horton@apple.com> 2 17 -
trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h
r287021 r287684 49 49 class AuthenticationChallenge; 50 50 class CachedFrame; 51 class FragmentedSharedBuffer; 51 52 class HistoryItem; 52 53 class ProtectionSpace; 53 54 class ResourceLoader; 54 55 class ResourceRequest; 56 class SharedBuffer; 55 57 } 56 58 … … 152 154 void didReplaceMultipartContent() final; 153 155 154 void committedLoad(WebCore::DocumentLoader*, const uint8_t*, int) final;156 void committedLoad(WebCore::DocumentLoader*, const WebCore::SharedBuffer&) final; 155 157 void finishedLoading(WebCore::DocumentLoader*) final; 156 158 void updateGlobalHistory() final; -
trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm
r287224 r287684 993 993 } 994 994 995 void WebFrameLoaderClient::committedLoad(WebCore::DocumentLoader* loader, const uint8_t* data, int length) 996 { 997 auto nsData = adoptNS([[NSData alloc] initWithBytesNoCopy:(void*)data length:length freeWhenDone:NO]); 998 [dataSource(loader) _receivedData:nsData.get()]; 995 void WebFrameLoaderClient::committedLoad(WebCore::DocumentLoader* loader, const WebCore::SharedBuffer& data) 996 { 997 [dataSource(loader) _receivedData:data.createNSData().get()]; 999 998 } 1000 999 … … 2013 2012 RetainPtr<NSFileHandle> m_fileHandle; 2014 2013 2015 void didReceive Buffer(const WebCore::FragmentedSharedBuffer& buffer) override2014 void didReceiveData(const WebCore::SharedBuffer& buffer) override 2016 2015 { 2017 2016 auto dataArray = buffer.createNSDataArray(); -
trunk/Source/WebKitLegacy/mac/WebView/WebFrame.mm
r286772 r287684 978 978 document->setShouldCreateRenderers(_private->shouldCreateRenderers); 979 979 980 _private->coreFrame->loader().documentLoader()->commitData( (const uint8_t*)[data bytes], [data length]);980 _private->coreFrame->loader().documentLoader()->commitData(WebCore::SharedBuffer::create(data)); 981 981 } 982 982 -
trunk/Source/WebKitLegacy/win/ChangeLog
r287321 r287684 1 2022-01-06 Jean-Yves Avenard <jya@apple.com> 2 3 Have CachedRawResourceClient and related networking actors use SharedBuffer. 4 https://bugs.webkit.org/show_bug.cgi?id=232424 5 rdar://84744687 6 7 Reviewed by Youenn Fablet. 8 9 * WebCoreSupport/WebFrameLoaderClient.cpp: 10 (WebFrameLoaderClient::committedLoad): 11 * WebCoreSupport/WebFrameLoaderClient.h: 12 1 13 2021-12-21 Wenson Hsieh <wenson_hsieh@apple.com> 2 14 -
trunk/Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.cpp
r283179 r287684 642 642 } 643 643 644 void WebFrameLoaderClient::committedLoad(DocumentLoader* loader, const uint8_t* data, int length)645 { 646 loader->commitData(data , length);644 void WebFrameLoaderClient::committedLoad(DocumentLoader* loader, const SharedBuffer& data) 645 { 646 loader->commitData(data); 647 647 648 648 // If the document is a stand-alone media document, now is the right time to cancel the WebKit load. -
trunk/Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.h
r283179 r287684 113 113 void startDownload(const WebCore::ResourceRequest&, const String& suggestedName = String()) override; 114 114 115 void committedLoad(WebCore::DocumentLoader*, const uint8_t*, int) override;115 void committedLoad(WebCore::DocumentLoader*, const WebCore::SharedBuffer&) override; 116 116 void finishedLoading(WebCore::DocumentLoader*) override; 117 117
Note:
See TracChangeset
for help on using the changeset viewer.