12021-12-22 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 NOBODY (OOPS!).
8
9 We modify all didReceiveData method so that they no longer use uint8_t/int
10 and instead use SharedBuffer. We also do the same for any intermediaries
11 used by the various didReceiveData implementations.
12 This will facilitate moving networking off the main thread in the GPU
13 process.
14 This also allows to remove several memory allocations and copies.
15 We can now also consider moving the underlying SharedMemory created in
16 the content process all the way to the GPU process.
17
18 No change in observable behaviour. Covered by all existing tests.
19
20 * Modules/fetch/FetchBodyConsumer.cpp:
21 (WebCore::FetchBodyConsumer::append):
22 * Modules/fetch/FetchBodyConsumer.h:
23 * Modules/fetch/FetchBodyOwner.cpp:
24 (WebCore::FetchBodyOwner::blobChunk):
25 * Modules/fetch/FetchBodyOwner.h:
26 * Modules/fetch/FetchLoader.cpp:
27 (WebCore::FetchLoader::didReceiveData):
28 * Modules/fetch/FetchLoader.h:
29 * Modules/fetch/FetchLoaderClient.h:
30 (WebCore::FetchLoaderClient::didReceiveData):
31 * Modules/fetch/FetchResponse.cpp:
32 (WebCore::FetchResponse::BodyLoader::didReceiveData):
33 (WebCore::FetchResponse::consumeChunk):
34 * Modules/fetch/FetchResponse.h:
35 * Modules/model-element/HTMLModelElement.cpp:
36 (WebCore::HTMLModelElement::dataReceived):
37 * Modules/model-element/HTMLModelElement.h:
38 * Modules/streams/ReadableStreamSink.h:
39 * fileapi/FileReaderLoader.cpp:
40 (WebCore::FileReaderLoader::didReceiveData):
41 * fileapi/FileReaderLoader.h:
42 * inspector/InspectorInstrumentation.cpp:
43 (WebCore::InspectorInstrumentation::didReceiveDataImpl):
44 * inspector/InspectorInstrumentation.h:
45 (WebCore::InspectorInstrumentation::didReceiveData):
46 * inspector/NetworkResourcesData.cpp:
47 (WebCore::NetworkResourcesData::ResourceData::appendData):
48 (WebCore::NetworkResourcesData::maybeAddResourceData):
49 * inspector/NetworkResourcesData.h:
50 * inspector/agents/InspectorNetworkAgent.cpp:
51 (WebCore::InspectorNetworkAgent::didReceiveResponse):
52 (WebCore::InspectorNetworkAgent::didReceiveData):
53 (WebCore::InspectorNetworkAgent::interceptRequestWithResponse):
54 * inspector/agents/InspectorNetworkAgent.h:
55 * loader/ContentFilter.cpp:
56 (WebCore::ContentFilter::deliverResourceData):
57 * loader/ContentFilterClient.h:
58 * loader/DocumentLoader.cpp:
59 (WebCore::DocumentLoader::finishedLoading):
60 (WebCore::DocumentLoader::continueAfterContentPolicy):
61 (WebCore::DocumentLoader::commitLoad):
62 (WebCore::DocumentLoader::commitData):
63 (WebCore::DocumentLoader::dataReceived):
64 (WebCore::DocumentLoader::maybeCreateArchive):
65 (WebCore::DocumentLoader::maybeFinishLoadingMultipartContent):
66 (WebCore::DocumentLoader::dataReceivedThroughContentFilter):
67 * loader/DocumentLoader.h:
68 * loader/DocumentThreadableLoader.cpp:
69 (WebCore::DocumentThreadableLoader::dataReceived):
70 (WebCore::DocumentThreadableLoader::didReceiveData):
71 (WebCore::DocumentThreadableLoader::didFinishLoading):
72 (WebCore::DocumentThreadableLoader::loadRequest):
73 * loader/DocumentThreadableLoader.h:
74 * loader/DocumentWriter.cpp:
75 (WebCore::DocumentWriter::addData):
76 * loader/DocumentWriter.h:
77 * loader/EmptyClients.cpp:
78 (WebCore::EmptyFrameLoaderClient::committedLoad):
79 * loader/EmptyFrameLoaderClient.h:
80 * loader/FrameLoader.cpp:
81 (WebCore::FrameLoader::willLoadMediaElementURL):
82 (WebCore::FrameLoader::commitProvisionalLoad):
83 (WebCore::FrameLoader::loadResourceSynchronously):
84 (WebCore::FrameLoader::loadedResourceFromMemoryCache):
85 * loader/FrameLoaderClient.h:
86 * loader/MediaResourceLoader.cpp:
87 (WebCore::MediaResource::dataReceived):
88 * loader/MediaResourceLoader.h:
89 * loader/NetscapePlugInStreamLoader.cpp:
90 (WebCore::NetscapePlugInStreamLoader::didReceiveData):
91 * loader/NetscapePlugInStreamLoader.h:
92 * loader/ResourceLoadNotifier.cpp:
93 (WebCore::ResourceLoadNotifier::didReceiveData):
94 (WebCore::ResourceLoadNotifier::dispatchDidReceiveData):
95 (WebCore::ResourceLoadNotifier::sendRemainingDelegateMessages):
96 * loader/ResourceLoadNotifier.h:
97 * loader/ResourceLoader.cpp:
98 (WebCore::ResourceLoader::loadDataURL):
99 (WebCore::ResourceLoader::addBuffer):
100 (WebCore::ResourceLoader::didReceiveData):
101 (WebCore::ResourceLoader::didReceiveBuffer):
102 * loader/ResourceLoader.h:
103 * loader/SubresourceLoader.cpp:
104 (WebCore::SubresourceLoader::didReceiveBuffer):
105 * loader/SubresourceLoader.h:
106 * loader/SubstituteResource.h:
107 (WebCore::SubstituteResource::append):
108 * loader/ThreadableLoaderClient.h:
109 (WebCore::ThreadableLoaderClient::didReceiveData):
110 * loader/ThreadableLoaderClientWrapper.h:
111 (WebCore::ThreadableLoaderClientWrapper::didReceiveData):
112 * loader/WorkerThreadableLoader.cpp:
113 (WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveData):
114 * loader/WorkerThreadableLoader.h:
115 * loader/appcache/ApplicationCacheHost.cpp:
116 (WebCore::ApplicationCacheHost::mainResourceDataReceived):
117 * loader/appcache/ApplicationCacheHost.h:
118 * loader/appcache/ApplicationCacheResource.cpp:
119 (WebCore::ApplicationCacheResource::deliver):
120 * loader/appcache/ApplicationCacheResourceLoader.cpp:
121 (WebCore::ApplicationCacheResourceLoader::dataReceived):
122 * loader/appcache/ApplicationCacheResourceLoader.h:
123 * loader/cache/CachedImage.cpp:
124 (WebCore::CachedImage::updateBufferInternal):
125 (WebCore::CachedImage::updateBuffer):
126 (WebCore::CachedImage::updateData):
127 * loader/cache/CachedImage.h:
128 * loader/cache/CachedRawResource.cpp:
129 (WebCore::CachedRawResource::calculateIncrementalDataChunk const):
130 (WebCore::CachedRawResource::updateBuffer):
131 (WebCore::CachedRawResource::updateData):
132 (WebCore::CachedRawResource::finishLoading):
133 (WebCore::CachedRawResource::notifyClientsDataWasReceived):
134 (WebCore::CachedRawResource::didAddClient):
135 * loader/cache/CachedRawResource.h:
136 * loader/cache/CachedRawResourceClient.h:
137 (WebCore::CachedRawResourceClient::dataReceived):
138 * loader/cache/CachedResource.cpp:
139 (WebCore::CachedResource::updateData):
140 * loader/cache/CachedResource.h:
141 * loader/ios/LegacyPreviewLoader.h:
142 * loader/ios/LegacyPreviewLoader.mm:
143 (WebCore::LegacyPreviewLoader::didReceiveData):
144 (WebCore::LegacyPreviewLoader::previewConverterDidReceiveData):
145 * page/EventSource.cpp:
146 (WebCore::EventSource::didReceiveData):
147 * page/EventSource.h:
148 * platform/SharedBuffer.cpp:
149 (WebCore::FragmentedSharedBuffer::takeData):
150 (WebCore::SharedBuffer::SharedBuffer):
151 (WebCore::SharedBufferDataView::SharedBufferDataView):
152 (WebCore::SharedBufferDataView::createSharedBuffer const):
153 * platform/SharedBuffer.h:
154 (WebCore::SharedBuffer::create):
155 (WebCore::SharedBuffer::SharedBuffer):
156 * platform/graphics/PlatformMediaResourceLoader.h:
157 (WebCore::PlatformMediaResourceClient::dataReceived):
158 * platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.cpp:
159 (WebCore::WebCoreAVCFResourceLoader::dataReceived):
160 * platform/graphics/avfoundation/cf/WebCoreAVCFResourceLoader.h:
161 * platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm:
162 (WebCore::CachedResourceMediaLoader::dataReceived):
163 (WebCore::PlatformResourceMediaLoader::dataReceived):
164 * platform/network/ResourceHandleClient.cpp:
165 (WebCore::ResourceHandleClient::didReceiveBuffer):
166 * platform/network/ResourceHandleClient.h:
167 (WebCore::ResourceHandleClient::didReceiveData):
168 * platform/network/SynchronousLoaderClient.cpp:
169 (WebCore::SynchronousLoaderClient::didReceiveData):
170 * platform/network/SynchronousLoaderClient.h:
171 * platform/network/cocoa/RangeResponseGenerator.mm:
172 (WebCore::RangeResponseGenerator::giveResponseToTaskIfBytesInRangeReceived):
173 * platform/network/cocoa/WebCoreNSURLSession.h:
174 * platform/network/cocoa/WebCoreNSURLSession.mm:
175 (WebCore::WebCoreNSURLSessionDataTaskClient::dataReceived):
176 (-[WebCoreNSURLSessionDataTask resource:receivedData:]):
177 * platform/network/ios/LegacyPreviewLoaderClient.h:
178 (WebCore::LegacyPreviewLoaderClient::didReceiveData):
179 * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
180 (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveData:lengthReceived:]):
181 * svg/graphics/SVGImage.cpp:
182 (WebCore::SVGImage::dataChanged):
183 * workers/WorkerFontLoadRequest.cpp:
184 (WebCore::WorkerFontLoadRequest::didReceiveData):
185 * workers/WorkerFontLoadRequest.h:
186 * workers/WorkerScriptLoader.cpp:
187 (WebCore::WorkerScriptLoader::didReceiveData):
188 * workers/WorkerScriptLoader.h:
189 * workers/service/context/ServiceWorkerFetch.h:
190 * xml/XMLHttpRequest.cpp:
191 (WebCore::XMLHttpRequest::didReceiveData):
192 * xml/XMLHttpRequest.h:
193
1942021-12-23 Jean-Yves Avenard <jya@apple.com>
195
196 ScalableImageDecoder should be using SharedBuffer instead of DataSegment
197 https://bugs.webkit.org/show_bug.cgi?id=233441
198 rdar://problem/85854204
199
200 Reviewed by NOBODY (OOPS!).
201
202 DataSegment should be a SharedBuffer's implementation details and not
203 be used outside SharedBuffer's code.
204 Historically, using the inner DataSegment was required as it was thread
205 safe while SharedBuffer wasn't: This is no longer the case.
206 SharedBuffer and DataSegment are semantically very similar, so this is
207 mostly a find/replace change.
208 Flattening the FragmentedSharedBuffer is still required as most decoders
209 require reading the raw bytes.
210
211 No change in observable behaviour.
212
213 * platform/graphics/ImageBackingStore.h:
214 (WebCore::ImageBackingStore::setSize):
215 (WebCore::ImageBackingStore::ImageBackingStore):
216 * platform/image-decoders/ScalableImageDecoder.h:
217 * platform/image-decoders/avif/AVIFImageReader.cpp:
218 (WebCore::AVIFImageReader::parseHeader):
219 (WebCore::AVIFImageReader::decodeFrame):
220 * platform/image-decoders/avif/AVIFImageReader.h:
221 * platform/image-decoders/bmp/BMPImageReader.h:
222 (WebCore::BMPImageReader::readUint16):
223 (WebCore::BMPImageReader::readUint32):
224 (WebCore::BMPImageReader::setData):
225 * platform/image-decoders/gif/GIFImageReader.h:
226 (GIFImageReader::setData):
227 * platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
228 (WebCore::JPEGImageReader::decode):
229 * platform/image-decoders/jpeg2000/JPEG2000ImageDecoder.cpp:
230 (WebCore::JPEG2000ImageDecoder::decode):
231 * platform/image-decoders/png/PNGImageDecoder.cpp:
232 (WebCore::PNGImageReader::decode):
233 * platform/image-decoders/webp/WEBPImageDecoder.cpp:
234 (WebCore::WEBPImageDecoder::decode):
235
2362021-12-22 Jean-Yves Avenard <jya@apple.com>
237
238 make SharedBuffer::copy() return a contiguous SharedBuffer
239 https://bugs.webkit.org/show_bug.cgi?id=234622
240 rdar://problem/86829527
241
242 Reviewed by NOBODY (OOPS!).
243
244 make SharedBuffer::copy() return a contiguous SharedBuffer
245
246 API tests added.
247
248 * platform/SharedBuffer.cpp:
249 (WebCore::FragmentedSharedBuffer::copy const):
250