haikuwebkit/Source/WebCore/fileapi/NetworkSendQueue.cpp

119 lines
4.2 KiB
C++
Raw Permalink Normal View History

/*
* Copyright (C) 2019 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "config.h"
#include "NetworkSendQueue.h"
#include "BlobLoader.h"
#include "ScriptExecutionContext.h"
namespace WebCore {
NetworkSendQueue::NetworkSendQueue(ScriptExecutionContext& context, WriteString&& writeString, WriteRawData&& writeRawData, ProcessError&& processError)
: ContextDestructionObserver(&context)
, m_writeString(WTFMove(writeString))
, m_writeRawData(WTFMove(writeRawData))
, m_processError(WTFMove(processError))
{
}
NetworkSendQueue::~NetworkSendQueue() = default;
Make NetworkSendQueue use CString instead of String for UTF-8 data https://bugs.webkit.org/show_bug.cgi?id=213714 Reviewed by Darin Adler. Source/WebCore: Use CString instead of String in NetworkSendQueue as all data is to be encoded as UTF-8. This allows converting and allocating the UTF-8 string only once. Covered by existing tests. * Modules/mediastream/RTCDataChannel.cpp: (WebCore::RTCDataChannel::createMessageQueue): (WebCore::RTCDataChannel::send): * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp: (WebCore::LibWebRTCDataChannelHandler::sendStringData): (WebCore::LibWebRTCDataChannelHandler::sendRawData): * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h: * fileapi/NetworkSendQueue.cpp: (WebCore::NetworkSendQueue::enqueue): (WebCore::NetworkSendQueue::processMessages): * fileapi/NetworkSendQueue.h: * platform/mediastream/RTCDataChannelHandler.h: * platform/mock/RTCDataChannelHandlerMock.cpp: (WebCore::RTCDataChannelHandlerMock::sendStringData): * platform/mock/RTCDataChannelHandlerMock.h: Source/WebKit: Update code to use CString/DataReference to transmit WebSocket text messages. * NetworkProcess/NetworkSocketChannel.cpp: (WebKit::NetworkSocketChannel::sendString): * NetworkProcess/NetworkSocketChannel.h: * NetworkProcess/NetworkSocketChannel.messages.in: * NetworkProcess/WebSocketTask.h: (WebKit::WebSocketTask::sendString): * NetworkProcess/cocoa/WebSocketTaskCocoa.h: * NetworkProcess/cocoa/WebSocketTaskCocoa.mm: (WebKit::WebSocketTask::sendString): * NetworkProcess/soup/WebSocketTaskSoup.h: * NetworkProcess/soup/WebSocketTaskSoup.cpp: (WebKit::WebSocketTask::sendString): * WebProcess/Network/WebSocketChannel.cpp: (WebKit::WebSocketChannel::createMessageQueue): (WebKit::WebSocketChannel::send): Canonical link: https://commits.webkit.org/226640@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263797 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-07-01 14:23:46 +00:00
void NetworkSendQueue::enqueue(CString&& utf8)
{
if (m_queue.isEmpty()) {
Make NetworkSendQueue use CString instead of String for UTF-8 data https://bugs.webkit.org/show_bug.cgi?id=213714 Reviewed by Darin Adler. Source/WebCore: Use CString instead of String in NetworkSendQueue as all data is to be encoded as UTF-8. This allows converting and allocating the UTF-8 string only once. Covered by existing tests. * Modules/mediastream/RTCDataChannel.cpp: (WebCore::RTCDataChannel::createMessageQueue): (WebCore::RTCDataChannel::send): * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp: (WebCore::LibWebRTCDataChannelHandler::sendStringData): (WebCore::LibWebRTCDataChannelHandler::sendRawData): * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h: * fileapi/NetworkSendQueue.cpp: (WebCore::NetworkSendQueue::enqueue): (WebCore::NetworkSendQueue::processMessages): * fileapi/NetworkSendQueue.h: * platform/mediastream/RTCDataChannelHandler.h: * platform/mock/RTCDataChannelHandlerMock.cpp: (WebCore::RTCDataChannelHandlerMock::sendStringData): * platform/mock/RTCDataChannelHandlerMock.h: Source/WebKit: Update code to use CString/DataReference to transmit WebSocket text messages. * NetworkProcess/NetworkSocketChannel.cpp: (WebKit::NetworkSocketChannel::sendString): * NetworkProcess/NetworkSocketChannel.h: * NetworkProcess/NetworkSocketChannel.messages.in: * NetworkProcess/WebSocketTask.h: (WebKit::WebSocketTask::sendString): * NetworkProcess/cocoa/WebSocketTaskCocoa.h: * NetworkProcess/cocoa/WebSocketTaskCocoa.mm: (WebKit::WebSocketTask::sendString): * NetworkProcess/soup/WebSocketTaskSoup.h: * NetworkProcess/soup/WebSocketTaskSoup.cpp: (WebKit::WebSocketTask::sendString): * WebProcess/Network/WebSocketChannel.cpp: (WebKit::WebSocketChannel::createMessageQueue): (WebKit::WebSocketChannel::send): Canonical link: https://commits.webkit.org/226640@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263797 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-07-01 14:23:46 +00:00
m_writeString(utf8);
return;
}
Make NetworkSendQueue use CString instead of String for UTF-8 data https://bugs.webkit.org/show_bug.cgi?id=213714 Reviewed by Darin Adler. Source/WebCore: Use CString instead of String in NetworkSendQueue as all data is to be encoded as UTF-8. This allows converting and allocating the UTF-8 string only once. Covered by existing tests. * Modules/mediastream/RTCDataChannel.cpp: (WebCore::RTCDataChannel::createMessageQueue): (WebCore::RTCDataChannel::send): * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp: (WebCore::LibWebRTCDataChannelHandler::sendStringData): (WebCore::LibWebRTCDataChannelHandler::sendRawData): * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h: * fileapi/NetworkSendQueue.cpp: (WebCore::NetworkSendQueue::enqueue): (WebCore::NetworkSendQueue::processMessages): * fileapi/NetworkSendQueue.h: * platform/mediastream/RTCDataChannelHandler.h: * platform/mock/RTCDataChannelHandlerMock.cpp: (WebCore::RTCDataChannelHandlerMock::sendStringData): * platform/mock/RTCDataChannelHandlerMock.h: Source/WebKit: Update code to use CString/DataReference to transmit WebSocket text messages. * NetworkProcess/NetworkSocketChannel.cpp: (WebKit::NetworkSocketChannel::sendString): * NetworkProcess/NetworkSocketChannel.h: * NetworkProcess/NetworkSocketChannel.messages.in: * NetworkProcess/WebSocketTask.h: (WebKit::WebSocketTask::sendString): * NetworkProcess/cocoa/WebSocketTaskCocoa.h: * NetworkProcess/cocoa/WebSocketTaskCocoa.mm: (WebKit::WebSocketTask::sendString): * NetworkProcess/soup/WebSocketTaskSoup.h: * NetworkProcess/soup/WebSocketTaskSoup.cpp: (WebKit::WebSocketTask::sendString): * WebProcess/Network/WebSocketChannel.cpp: (WebKit::WebSocketChannel::createMessageQueue): (WebKit::WebSocketChannel::send): Canonical link: https://commits.webkit.org/226640@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263797 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-07-01 14:23:46 +00:00
m_queue.append(WTFMove(utf8));
}
void NetworkSendQueue::enqueue(const JSC::ArrayBuffer& binaryData, unsigned byteOffset, unsigned byteLength)
{
if (m_queue.isEmpty()) {
Use Vector<uint8_t> instead of Vector<char> to store bytes in SharedBuffer https://bugs.webkit.org/show_bug.cgi?id=226623 Reviewed by Darin Adler. Use Vector<uint8_t> instead of Vector<char> to store bytes in SharedBuffer. Also have SharedBuffer::data() return a `const uint8_t*` instead of `const char*`. This is our preferred type to store bytes. Source/WebCore: * Modules/fetch/FetchBody.cpp: (WebCore::FetchBody::consumeFormData): * Modules/fetch/FetchBodyConsumer.cpp: (WebCore::packageFormData): (WebCore::resolveWithTypeAndData): * Modules/highlight/AppHighlight.h: (WebCore::AppHighlight::encode const): * Modules/indexeddb/IDBGetResult.cpp: (WebCore::IDBGetResult::dataFromBuffer): * Modules/indexeddb/server/IDBSerialization.cpp: (WebCore::serializeIDBKeyData): * Modules/mediastream/RTCDataChannel.cpp: (WebCore::RTCDataChannel::didReceiveRawData): * Modules/mediastream/RTCDataChannel.h: * Modules/mediastream/RTCDataChannelRemoteHandler.cpp: (WebCore::RTCDataChannelRemoteHandler::didReceiveRawData): (WebCore::RTCDataChannelRemoteHandler::sendRawData): * Modules/mediastream/RTCDataChannelRemoteHandler.h: * Modules/mediastream/RTCDataChannelRemoteSource.h: (WebCore::RTCDataChannelRemoteSource::sendRawData): * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp: (WebCore::LibWebRTCDataChannelHandler::sendRawData): (WebCore::LibWebRTCDataChannelHandler::OnMessage): * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h: * css/CSSFontFaceSource.cpp: (WebCore::CSSFontFaceSource::load): * fileapi/Blob.cpp: (WebCore::Blob::Blob): * fileapi/NetworkSendQueue.cpp: (WebCore::NetworkSendQueue::enqueue): (WebCore::NetworkSendQueue::processMessages): * fileapi/NetworkSendQueue.h: * inspector/NetworkResourcesData.cpp: (WebCore::NetworkResourcesData::ResourceData::appendData): (WebCore::NetworkResourcesData::maybeAddResourceData): * inspector/NetworkResourcesData.h: * inspector/agents/InspectorNetworkAgent.cpp: (WebCore::InspectorNetworkAgent::didReceiveData): * inspector/agents/InspectorPageAgent.cpp: (WebCore::decodeBuffer): (WebCore::InspectorPageAgent::dataContent): * inspector/agents/InspectorPageAgent.h: * loader/ContentFilter.cpp: (WebCore::ContentFilter::deliverResourceData): * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::continueAfterContentPolicy): (WebCore::DocumentLoader::maybeCreateArchive): (WebCore::DocumentLoader::maybeFinishLoadingMultipartContent): * loader/DocumentThreadableLoader.cpp: (WebCore::DocumentThreadableLoader::didFinishLoading): (WebCore::DocumentThreadableLoader::loadRequest): * loader/FrameLoader.cpp: (WebCore::FrameLoader::loadResourceSynchronously): * loader/NetscapePlugInStreamLoader.cpp: (WebCore::NetscapePlugInStreamLoader::didReceiveDataOrBuffer): * loader/NetscapePlugInStreamLoader.h: * loader/ResourceLoader.cpp: (WebCore::ResourceLoader::didReceiveDataOrBuffer): * loader/SubresourceLoader.cpp: (WebCore::SubresourceLoader::didReceiveDataOrBuffer): * loader/TextResourceDecoder.h: (WebCore::TextResourceDecoder::decode): (WebCore::TextResourceDecoder::decodeAndFlush): * loader/TextTrackLoader.cpp: (WebCore::TextTrackLoader::processNewCueData): * loader/appcache/ApplicationCacheGroup.cpp: (WebCore::ApplicationCacheGroup::didFinishLoadingManifest): * loader/appcache/ApplicationCacheStorage.cpp: (WebCore::ApplicationCacheStorage::writeDataToUniqueFileInDirectory): * loader/archive/mhtml/MHTMLArchive.cpp: (WebCore::MHTMLArchive::generateMHTMLData): * loader/archive/mhtml/MHTMLParser.cpp: (WebCore::MHTMLParser::parseNextPart): * loader/cache/CachedRawResource.cpp: (WebCore::CachedRawResource::updateBuffer): (WebCore::CachedRawResource::finishLoading): (WebCore::CachedRawResource::didAddClient): * loader/cache/CachedSVGFont.cpp: (WebCore::CachedSVGFont::ensureCustomFontData): * platform/SharedBuffer.cpp: (WebCore::SharedBuffer::SharedBuffer): (WebCore::SharedBuffer::create): (WebCore::SharedBuffer::combineIntoOneSegment const): (WebCore::SharedBuffer::data const): (WebCore::SharedBuffer::tryCreateArrayBuffer const): (WebCore::SharedBuffer::append): (WebCore::SharedBuffer::DataSegment::data const): (WebCore::SharedBuffer::DataSegment::size const): (WebCore::SharedBufferDataView::data const): (WebCore::utf8Buffer): * platform/SharedBuffer.h: * platform/encryptedmedia/clearkey/CDMClearKey.cpp: (WebCore::extractKeyidsLocationFromCencInitData): (WebCore::extractKeyidsFromCencInitData): * platform/graphics/Model.h: (WebCore::Model::encode const): * platform/graphics/displaylists/DisplayListItemBuffer.cpp: (WebCore::DisplayList::ItemBuffer::append): * platform/graphics/gstreamer/eme/CDMThunder.cpp: (WebCore::CDMInstanceThunder::setServerCertificate): (WebCore::ParsedResponseMessage::ParsedResponseMessage): (WebCore::CDMInstanceSessionThunder::errorCallback): (WebCore::CDMInstanceSessionThunder::requestLicense): (WebCore::CDMInstanceSessionThunder::updateLicense): (WebCore::CDMInstanceSessionThunder::loadSession): * platform/graphics/opentype/OpenTypeTypes.h: (WebCore::OpenType::TableBase::isValidEnd): * platform/mediastream/RTCDataChannelHandler.h: * platform/mediastream/RTCDataChannelHandlerClient.h: * platform/mediastream/RTCDataChannelRemoteSourceConnection.h: * platform/mock/RTCDataChannelHandlerMock.cpp: (WebCore::RTCDataChannelHandlerMock::sendRawData): * platform/mock/RTCDataChannelHandlerMock.h: * platform/network/FormData.cpp: (WebCore::FormData::asSharedBuffer const): * platform/network/ResourceHandleClient.cpp: (WebCore::ResourceHandleClient::didReceiveBuffer): * platform/network/cocoa/RangeResponseGenerator.mm: (WebCore::RangeResponseGenerator::giveResponseToTaskIfBytesInRangeReceived): * platform/text/TextEncoding.h: (WebCore::TextEncoding::decode const): * svg/graphics/SVGImage.cpp: (WebCore::SVGImage::dataChanged): * xml/XSLTProcessorLibxslt.cpp: (WebCore::docLoaderFunc): * xml/parser/XMLDocumentParserLibxml2.cpp: (WebCore::OffsetBuffer::OffsetBuffer): Source/WebKit: * Platform/IPC/SharedBufferCopy.h: (IPC::SharedBufferCopy::data const): * PluginProcess/PluginControllerProxy.cpp: (WebKit::PluginControllerProxy::streamDidReceiveData): (WebKit::PluginControllerProxy::manualStreamDidReceiveData): * Shared/PersistencyUtils.cpp: (WebKit::writeToDisk): * Shared/WebCoreArgumentCoders.cpp: (IPC::tryConvertToShareableResourceHandle): * UIProcess/WebURLSchemeTask.cpp: (WebKit::WebURLSchemeTask::didComplete): * WebProcess/Network/WebResourceLoader.cpp: (WebKit::WebResourceLoader::didReceiveData): * WebProcess/Network/WebSocketChannel.cpp: (WebKit::WebSocketChannel::createMessageQueue): * WebProcess/Network/webrtc/RTCDataChannelRemoteManager.cpp: (WebKit::RTCDataChannelRemoteManager::sendData): (WebKit::RTCDataChannelRemoteManager::receiveData): (WebKit::RTCDataChannelRemoteManager::RemoteSourceConnection::didReceiveRawData): * WebProcess/Network/webrtc/RTCDataChannelRemoteManager.h: * WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp: (WebKit::parsePostBuffer): * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: (WebKit::NetscapePlugin::streamDidReceiveData): (WebKit::NetscapePlugin::manualStreamDidReceiveData): * WebProcess/Plugins/Netscape/NetscapePlugin.h: * WebProcess/Plugins/Netscape/NetscapePluginStream.cpp: (WebKit::NetscapePluginStream::didReceiveData): (WebKit::NetscapePluginStream::sendJavaScriptStream): (WebKit::NetscapePluginStream::deliverData): (WebKit::NetscapePluginStream::deliverDataToFile): * WebProcess/Plugins/Netscape/NetscapePluginStream.h: * WebProcess/Plugins/PDF/PDFPlugin.h: * WebProcess/Plugins/PDF/PDFPlugin.mm: (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didReceiveData): (WebKit::PDFPlugin::streamDidReceiveData): (WebKit::PDFPlugin::manualStreamDidReceiveData): * WebProcess/Plugins/Plugin.h: * WebProcess/Plugins/PluginProxy.cpp: (WebKit::PluginProxy::streamDidReceiveData): (WebKit::PluginProxy::manualStreamDidReceiveData): * WebProcess/Plugins/PluginProxy.h: * WebProcess/Plugins/PluginView.cpp: (WebKit::PluginView::Stream::didReceiveData): (WebKit::PluginView::manualLoadDidReceiveData): * WebProcess/Plugins/PluginView.h: * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: (WebKit::WebFrameLoaderClient::committedLoad): * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp: (WebKit::WebPlatformStrategies::bufferForType): Source/WebKitLegacy/mac: * Plugins/Hosted/HostedNetscapePluginStream.h: * Plugins/Hosted/HostedNetscapePluginStream.mm: (WebKit::HostedNetscapePluginStream::didReceiveData): * Plugins/Hosted/NetscapePluginInstanceProxy.mm: (WebKit::NetscapePluginInstanceProxy::evaluateJavaScript): * Plugins/Hosted/WebHostedNetscapePluginView.mm: (-[WebHostedNetscapePluginView pluginView:receivedData:]): * Plugins/WebNetscapePluginStream.h: * Plugins/WebNetscapePluginStream.mm: (WebNetscapePluginStream::didReceiveData): * Plugins/WebNetscapePluginView.mm: (-[WebNetscapePluginView pluginView:receivedData:]): (-[WebNetscapePluginView evaluateJavaScriptPluginRequest:]): Tools: * TestWebKitAPI/Tests/WebCore/SharedBuffer.cpp: (TestWebKitAPI::TEST_F): (TestWebKitAPI::checkBuffer): Canonical link: https://commits.webkit.org/238515@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278516 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-06-05 01:16:43 +00:00
auto* data = static_cast<const uint8_t*>(binaryData.data());
Fix some inefficient uses of SharedBuffer https://bugs.webkit.org/show_bug.cgi?id=226857 Reviewed by Darin Adler. Fix some inefficient uses of SharedBuffer: - Avoid calling SharedBuffer::data() whenever possible since this function may have to combine internal segments of SharedBuffer. Added a convenience function on SharedBuffer (forEachSegment()) to get the data pointer / size of each segment. - Avoid some unnecessary construction of SharedBuffer simply to get a Vector. We should construct the Vector directly in such cases. I dropped the Blob factory that took in a SharedBuffer as it was inefficient and frequently called instead of the more efficient factory that takes in a Vector<uint8_t>. - Add convenience functions to SharedBuffer that return a Vector, including one named takeData() that avoids copying the data. - Add convenience functions to SharedBuffer for doing a prefix check or copying to a destination pointer. * Modules/async-clipboard/ClipboardItem.cpp: (WebCore::ClipboardItem::blobFromString): * Modules/async-clipboard/ios/ClipboardImageReaderIOS.mm: (WebCore::ClipboardImageReader::readBuffer): * Modules/async-clipboard/mac/ClipboardImageReaderMac.mm: (WebCore::ClipboardImageReader::readBuffer): * Modules/fetch/FetchBodyConsumer.cpp: (WebCore::blobFromData): (WebCore::packageFormData): (WebCore::resolveWithTypeAndData): (WebCore::FetchBodyConsumer::takeAsBlob): * Modules/indexeddb/IDBGetResult.cpp: * Modules/indexeddb/IDBGetResult.h: * Modules/mediarecorder/MediaRecorder.cpp: (WebCore::createDataAvailableEvent): * Modules/mediastream/RTCDataChannel.cpp: (WebCore::RTCDataChannel::didReceiveRawData): * editing/WebCorePasteboardFileReader.cpp: (WebCore::WebCorePasteboardFileReader::readBuffer): * editing/cocoa/WebContentReaderCocoa.mm: (WebCore::createFragmentForImageAttachment): (WebCore::replaceRichContentWithAttachments): (WebCore::createFragmentAndAddResources): (WebCore::sanitizeMarkupWithArchive): (WebCore::WebContentReader::readImage): (WebCore::attachmentForData): * editing/gtk/WebContentReaderGtk.cpp: (WebCore::WebContentReader::readImage): * fileapi/Blob.cpp: * fileapi/Blob.h: * fileapi/NetworkSendQueue.cpp: (WebCore::NetworkSendQueue::processMessages): * html/HTMLAttachmentElement.cpp: (WebCore::HTMLAttachmentElement::updateEnclosingImageWithData): * inspector/agents/InspectorNetworkAgent.cpp: (WebCore::InspectorNetworkAgent::didReceiveResponse): * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::continueAfterContentPolicy): * loader/DocumentThreadableLoader.cpp: (WebCore::DocumentThreadableLoader::didFinishLoading): (WebCore::DocumentThreadableLoader::loadRequest): * loader/NetscapePlugInStreamLoader.cpp: (WebCore::NetscapePlugInStreamLoader::didReceiveDataOrBuffer): * loader/ResourceCryptographicDigest.cpp: (WebCore::cryptographicDigestForSharedBuffer): * loader/ResourceCryptographicDigest.h: * loader/SubresourceIntegrity.cpp: (WebCore::matchIntegrityMetadata): * loader/appcache/ApplicationCacheGroup.cpp: (WebCore::ApplicationCacheGroup::didFinishLoadingManifest): * loader/appcache/ApplicationCacheStorage.cpp: (WebCore::ApplicationCacheStorage::writeDataToUniqueFileInDirectory): * loader/cache/CachedRawResource.cpp: (WebCore::CachedRawResource::didAddClient): * loader/icon/IconLoader.cpp: (WebCore::IconLoader::notifyFinished): * platform/SharedBuffer.cpp: (WebCore::combineSegmentsData): (WebCore::SharedBuffer::combineIntoOneSegment const): (WebCore::SharedBuffer::data const): (WebCore::SharedBuffer::takeData): (WebCore::SharedBuffer::toHexString const): (WebCore::SharedBuffer::forEachSegment const): (WebCore::SharedBuffer::startsWith const): (WebCore::SharedBuffer::copyTo const): * platform/SharedBuffer.h: * platform/cf/SharedBufferCF.cpp: (WebCore::SharedBuffer::createCFData const): * platform/graphics/displaylists/DisplayListItemBuffer.cpp: (WebCore::DisplayList::ItemBuffer::append): * svg/graphics/SVGImage.cpp: (WebCore::SVGImage::dataChanged): * workers/ScriptBuffer.cpp: (WebCore::ScriptBuffer::toString const): * xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::createResponseBlob): Canonical link: https://commits.webkit.org/238674@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278702 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-06-10 15:08:18 +00:00
m_writeRawData(Span { data + byteOffset, byteLength });
return;
}
m_queue.append(SharedBuffer::create(static_cast<const uint8_t*>(binaryData.data()) + byteOffset, byteLength));
}
void NetworkSendQueue::enqueue(WebCore::Blob& blob)
{
auto* context = scriptExecutionContext();
if (!context)
return;
auto byteLength = blob.size();
if (!byteLength) {
enqueue(JSC::ArrayBuffer::create(0U, 1), 0, 0);
return;
}
Blob is missing text() & arrayBuffer() operations https://bugs.webkit.org/show_bug.cgi?id=215663 Reviewed by Geoff Garen. LayoutTests/imported/w3c: * web-platform-tests/FileAPI/blob/Blob-array-buffer.any-expected.txt: * web-platform-tests/FileAPI/blob/Blob-array-buffer.any.worker-expected.txt: * web-platform-tests/FileAPI/blob/Blob-text.any-expected.txt: * web-platform-tests/FileAPI/blob/Blob-text.any.worker-expected.txt: * web-platform-tests/FileAPI/idlharness-expected.txt: * web-platform-tests/FileAPI/idlharness.worker-expected.txt: Source/WebCore: Implementation support for Blob.text() & Blob.arrayBuffer() as per specification: - https://w3c.github.io/FileAPI/#blob-section The implementation relies on the pre-existing BlobLoader class but the following changes were made: - Stop calling start() in the BlobLoader constructor and have the caller call start() explicitly after constructing the BlobLoader. This is important because the load may fail synchronously in some cases. - Add support for reading Blob as text. Previously, BlobLoader would only support reading the blob as an ArrayBuffer. - Use a CompletionHandler instead of a Function and make sure that it is always called. No new tests, rebaselined existing tests. * fileapi/Blob.cpp: (WebCore::Blob::~Blob): (WebCore::Blob::loadBlob): (WebCore::Blob::text): (WebCore::Blob::arrayBuffer): * fileapi/Blob.h: * fileapi/Blob.idl: * fileapi/BlobLoader.h: (WebCore::BlobLoader::BlobLoader): (WebCore::BlobLoader::~BlobLoader): (WebCore::BlobLoader::cancel): (WebCore::BlobLoader::start): (WebCore::BlobLoader::didFinishLoading): (WebCore::BlobLoader::didFail): (WebCore::BlobLoader::complete): Deleted. * fileapi/NetworkSendQueue.cpp: (WebCore::NetworkSendQueue::enqueue): (WebCore::NetworkSendQueue::clear): (WebCore::NetworkSendQueue::processMessages): * page/ShareDataReader.cpp: (WebCore::ShareDataReader::start): (WebCore::ShareDataReader::didFinishLoading): (WebCore::ShareDataReader::cancel): Canonical link: https://commits.webkit.org/228429@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@265908 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-08-19 23:56:03 +00:00
auto blobLoader = makeUniqueRef<BlobLoader>([this](BlobLoader&) {
processMessages();
Blob is missing text() & arrayBuffer() operations https://bugs.webkit.org/show_bug.cgi?id=215663 Reviewed by Geoff Garen. LayoutTests/imported/w3c: * web-platform-tests/FileAPI/blob/Blob-array-buffer.any-expected.txt: * web-platform-tests/FileAPI/blob/Blob-array-buffer.any.worker-expected.txt: * web-platform-tests/FileAPI/blob/Blob-text.any-expected.txt: * web-platform-tests/FileAPI/blob/Blob-text.any.worker-expected.txt: * web-platform-tests/FileAPI/idlharness-expected.txt: * web-platform-tests/FileAPI/idlharness.worker-expected.txt: Source/WebCore: Implementation support for Blob.text() & Blob.arrayBuffer() as per specification: - https://w3c.github.io/FileAPI/#blob-section The implementation relies on the pre-existing BlobLoader class but the following changes were made: - Stop calling start() in the BlobLoader constructor and have the caller call start() explicitly after constructing the BlobLoader. This is important because the load may fail synchronously in some cases. - Add support for reading Blob as text. Previously, BlobLoader would only support reading the blob as an ArrayBuffer. - Use a CompletionHandler instead of a Function and make sure that it is always called. No new tests, rebaselined existing tests. * fileapi/Blob.cpp: (WebCore::Blob::~Blob): (WebCore::Blob::loadBlob): (WebCore::Blob::text): (WebCore::Blob::arrayBuffer): * fileapi/Blob.h: * fileapi/Blob.idl: * fileapi/BlobLoader.h: (WebCore::BlobLoader::BlobLoader): (WebCore::BlobLoader::~BlobLoader): (WebCore::BlobLoader::cancel): (WebCore::BlobLoader::start): (WebCore::BlobLoader::didFinishLoading): (WebCore::BlobLoader::didFail): (WebCore::BlobLoader::complete): Deleted. * fileapi/NetworkSendQueue.cpp: (WebCore::NetworkSendQueue::enqueue): (WebCore::NetworkSendQueue::clear): (WebCore::NetworkSendQueue::processMessages): * page/ShareDataReader.cpp: (WebCore::ShareDataReader::start): (WebCore::ShareDataReader::didFinishLoading): (WebCore::ShareDataReader::cancel): Canonical link: https://commits.webkit.org/228429@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@265908 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-08-19 23:56:03 +00:00
});
auto* blobLoaderPtr = &blobLoader.get();
m_queue.append(WTFMove(blobLoader));
blobLoaderPtr->start(blob, context, FileReaderLoader::ReadAsArrayBuffer);
}
void NetworkSendQueue::clear()
{
Blob is missing text() & arrayBuffer() operations https://bugs.webkit.org/show_bug.cgi?id=215663 Reviewed by Geoff Garen. LayoutTests/imported/w3c: * web-platform-tests/FileAPI/blob/Blob-array-buffer.any-expected.txt: * web-platform-tests/FileAPI/blob/Blob-array-buffer.any.worker-expected.txt: * web-platform-tests/FileAPI/blob/Blob-text.any-expected.txt: * web-platform-tests/FileAPI/blob/Blob-text.any.worker-expected.txt: * web-platform-tests/FileAPI/idlharness-expected.txt: * web-platform-tests/FileAPI/idlharness.worker-expected.txt: Source/WebCore: Implementation support for Blob.text() & Blob.arrayBuffer() as per specification: - https://w3c.github.io/FileAPI/#blob-section The implementation relies on the pre-existing BlobLoader class but the following changes were made: - Stop calling start() in the BlobLoader constructor and have the caller call start() explicitly after constructing the BlobLoader. This is important because the load may fail synchronously in some cases. - Add support for reading Blob as text. Previously, BlobLoader would only support reading the blob as an ArrayBuffer. - Use a CompletionHandler instead of a Function and make sure that it is always called. No new tests, rebaselined existing tests. * fileapi/Blob.cpp: (WebCore::Blob::~Blob): (WebCore::Blob::loadBlob): (WebCore::Blob::text): (WebCore::Blob::arrayBuffer): * fileapi/Blob.h: * fileapi/Blob.idl: * fileapi/BlobLoader.h: (WebCore::BlobLoader::BlobLoader): (WebCore::BlobLoader::~BlobLoader): (WebCore::BlobLoader::cancel): (WebCore::BlobLoader::start): (WebCore::BlobLoader::didFinishLoading): (WebCore::BlobLoader::didFail): (WebCore::BlobLoader::complete): Deleted. * fileapi/NetworkSendQueue.cpp: (WebCore::NetworkSendQueue::enqueue): (WebCore::NetworkSendQueue::clear): (WebCore::NetworkSendQueue::processMessages): * page/ShareDataReader.cpp: (WebCore::ShareDataReader::start): (WebCore::ShareDataReader::didFinishLoading): (WebCore::ShareDataReader::cancel): Canonical link: https://commits.webkit.org/228429@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@265908 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-08-19 23:56:03 +00:00
// Do not call m_queue.clear() here since destroying a BlobLoader will cause its completion
// handler to get called, which will call processMessages() to iterate over m_queue.
std::exchange(m_queue, { });
}
void NetworkSendQueue::processMessages()
{
while (!m_queue.isEmpty()) {
bool shouldStopProcessing = false;
Make NetworkSendQueue use CString instead of String for UTF-8 data https://bugs.webkit.org/show_bug.cgi?id=213714 Reviewed by Darin Adler. Source/WebCore: Use CString instead of String in NetworkSendQueue as all data is to be encoded as UTF-8. This allows converting and allocating the UTF-8 string only once. Covered by existing tests. * Modules/mediastream/RTCDataChannel.cpp: (WebCore::RTCDataChannel::createMessageQueue): (WebCore::RTCDataChannel::send): * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp: (WebCore::LibWebRTCDataChannelHandler::sendStringData): (WebCore::LibWebRTCDataChannelHandler::sendRawData): * Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h: * fileapi/NetworkSendQueue.cpp: (WebCore::NetworkSendQueue::enqueue): (WebCore::NetworkSendQueue::processMessages): * fileapi/NetworkSendQueue.h: * platform/mediastream/RTCDataChannelHandler.h: * platform/mock/RTCDataChannelHandlerMock.cpp: (WebCore::RTCDataChannelHandlerMock::sendStringData): * platform/mock/RTCDataChannelHandlerMock.h: Source/WebKit: Update code to use CString/DataReference to transmit WebSocket text messages. * NetworkProcess/NetworkSocketChannel.cpp: (WebKit::NetworkSocketChannel::sendString): * NetworkProcess/NetworkSocketChannel.h: * NetworkProcess/NetworkSocketChannel.messages.in: * NetworkProcess/WebSocketTask.h: (WebKit::WebSocketTask::sendString): * NetworkProcess/cocoa/WebSocketTaskCocoa.h: * NetworkProcess/cocoa/WebSocketTaskCocoa.mm: (WebKit::WebSocketTask::sendString): * NetworkProcess/soup/WebSocketTaskSoup.h: * NetworkProcess/soup/WebSocketTaskSoup.cpp: (WebKit::WebSocketTask::sendString): * WebProcess/Network/WebSocketChannel.cpp: (WebKit::WebSocketChannel::createMessageQueue): (WebKit::WebSocketChannel::send): Canonical link: https://commits.webkit.org/226640@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263797 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-07-01 14:23:46 +00:00
switchOn(m_queue.first(), [this](const CString& utf8) {
m_writeString(utf8);
}, [this](Ref<SharedBuffer>& data) {
Fix some inefficient uses of SharedBuffer https://bugs.webkit.org/show_bug.cgi?id=226857 Reviewed by Darin Adler. Fix some inefficient uses of SharedBuffer: - Avoid calling SharedBuffer::data() whenever possible since this function may have to combine internal segments of SharedBuffer. Added a convenience function on SharedBuffer (forEachSegment()) to get the data pointer / size of each segment. - Avoid some unnecessary construction of SharedBuffer simply to get a Vector. We should construct the Vector directly in such cases. I dropped the Blob factory that took in a SharedBuffer as it was inefficient and frequently called instead of the more efficient factory that takes in a Vector<uint8_t>. - Add convenience functions to SharedBuffer that return a Vector, including one named takeData() that avoids copying the data. - Add convenience functions to SharedBuffer for doing a prefix check or copying to a destination pointer. * Modules/async-clipboard/ClipboardItem.cpp: (WebCore::ClipboardItem::blobFromString): * Modules/async-clipboard/ios/ClipboardImageReaderIOS.mm: (WebCore::ClipboardImageReader::readBuffer): * Modules/async-clipboard/mac/ClipboardImageReaderMac.mm: (WebCore::ClipboardImageReader::readBuffer): * Modules/fetch/FetchBodyConsumer.cpp: (WebCore::blobFromData): (WebCore::packageFormData): (WebCore::resolveWithTypeAndData): (WebCore::FetchBodyConsumer::takeAsBlob): * Modules/indexeddb/IDBGetResult.cpp: * Modules/indexeddb/IDBGetResult.h: * Modules/mediarecorder/MediaRecorder.cpp: (WebCore::createDataAvailableEvent): * Modules/mediastream/RTCDataChannel.cpp: (WebCore::RTCDataChannel::didReceiveRawData): * editing/WebCorePasteboardFileReader.cpp: (WebCore::WebCorePasteboardFileReader::readBuffer): * editing/cocoa/WebContentReaderCocoa.mm: (WebCore::createFragmentForImageAttachment): (WebCore::replaceRichContentWithAttachments): (WebCore::createFragmentAndAddResources): (WebCore::sanitizeMarkupWithArchive): (WebCore::WebContentReader::readImage): (WebCore::attachmentForData): * editing/gtk/WebContentReaderGtk.cpp: (WebCore::WebContentReader::readImage): * fileapi/Blob.cpp: * fileapi/Blob.h: * fileapi/NetworkSendQueue.cpp: (WebCore::NetworkSendQueue::processMessages): * html/HTMLAttachmentElement.cpp: (WebCore::HTMLAttachmentElement::updateEnclosingImageWithData): * inspector/agents/InspectorNetworkAgent.cpp: (WebCore::InspectorNetworkAgent::didReceiveResponse): * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::continueAfterContentPolicy): * loader/DocumentThreadableLoader.cpp: (WebCore::DocumentThreadableLoader::didFinishLoading): (WebCore::DocumentThreadableLoader::loadRequest): * loader/NetscapePlugInStreamLoader.cpp: (WebCore::NetscapePlugInStreamLoader::didReceiveDataOrBuffer): * loader/ResourceCryptographicDigest.cpp: (WebCore::cryptographicDigestForSharedBuffer): * loader/ResourceCryptographicDigest.h: * loader/SubresourceIntegrity.cpp: (WebCore::matchIntegrityMetadata): * loader/appcache/ApplicationCacheGroup.cpp: (WebCore::ApplicationCacheGroup::didFinishLoadingManifest): * loader/appcache/ApplicationCacheStorage.cpp: (WebCore::ApplicationCacheStorage::writeDataToUniqueFileInDirectory): * loader/cache/CachedRawResource.cpp: (WebCore::CachedRawResource::didAddClient): * loader/icon/IconLoader.cpp: (WebCore::IconLoader::notifyFinished): * platform/SharedBuffer.cpp: (WebCore::combineSegmentsData): (WebCore::SharedBuffer::combineIntoOneSegment const): (WebCore::SharedBuffer::data const): (WebCore::SharedBuffer::takeData): (WebCore::SharedBuffer::toHexString const): (WebCore::SharedBuffer::forEachSegment const): (WebCore::SharedBuffer::startsWith const): (WebCore::SharedBuffer::copyTo const): * platform/SharedBuffer.h: * platform/cf/SharedBufferCF.cpp: (WebCore::SharedBuffer::createCFData const): * platform/graphics/displaylists/DisplayListItemBuffer.cpp: (WebCore::DisplayList::ItemBuffer::append): * svg/graphics/SVGImage.cpp: (WebCore::SVGImage::dataChanged): * workers/ScriptBuffer.cpp: (WebCore::ScriptBuffer::toString const): * xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::createResponseBlob): Canonical link: https://commits.webkit.org/238674@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278702 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-06-10 15:08:18 +00:00
data->forEachSegment(m_writeRawData);
}, [this, &shouldStopProcessing](UniqueRef<BlobLoader>& loader) {
Remove FileError.h https://bugs.webkit.org/show_bug.cgi?id=213119 Patch by Tetsuharu Ohzeki <tetsuharu.ohzeki@gmail.com> on 2020-06-13 Reviewed by Chris Dumez. Source/WebCore: * Headers.cmake: * Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp: (WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::didFail): * Modules/async-clipboard/ClipboardItemBindingsDataSource.h: * Modules/mediastream/RTCDataChannel.cpp: (WebCore::RTCDataChannel::createMessageQueue): * Modules/websockets/WebSocketChannel.cpp: (WebCore::WebSocketChannel::didFail): (WebCore::WebSocketChannel::abortOutgoingFrameQueue): * Modules/websockets/WebSocketChannel.h: * WebCore.xcodeproj/project.pbxproj: * fileapi/BlobLoader.h: (WebCore::BlobLoader::didFail): * fileapi/FileError.h: Removed. * fileapi/FileReader.cpp: (WebCore::FileReader::didFail): * fileapi/FileReader.h: * fileapi/FileReaderLoader.cpp: (WebCore::FileReaderLoader::start): (WebCore::FileReaderLoader::cancel): (WebCore::FileReaderLoader::cleanup): (WebCore::FileReaderLoader::didReceiveResponse): (WebCore::FileReaderLoader::didReceiveData): (WebCore::FileReaderLoader::didFail): (WebCore::FileReaderLoader::failed): (WebCore::FileReaderLoader::toErrorCode): (WebCore::FileReaderLoader::httpStatusCodeToErrorCode): (WebCore::FileReaderLoader::arrayBufferResult const): (WebCore::FileReaderLoader::stringResult): * fileapi/FileReaderLoader.h: (WebCore::FileReaderLoader::errorCode const): * fileapi/FileReaderLoaderClient.h: * fileapi/FileReaderSync.cpp: (WebCore::FileReaderSync::startLoading): * fileapi/FileReaderSync.h: * fileapi/NetworkSendQueue.cpp: (WebCore::NetworkSendQueue::processMessages): * fileapi/NetworkSendQueue.h: * html/ImageBitmap.cpp: Source/WebKit: * WebProcess/Network/WebSocketChannel.cpp: (WebKit::WebSocketChannel::createMessageQueue): Canonical link: https://commits.webkit.org/225939@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@262999 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-13 16:24:15 +00:00
auto errorCode = loader->errorCode();
if (loader->isLoading() || (errorCode && errorCode.value() == AbortError)) {
shouldStopProcessing = true;
return;
}
Blob is missing text() & arrayBuffer() operations https://bugs.webkit.org/show_bug.cgi?id=215663 Reviewed by Geoff Garen. LayoutTests/imported/w3c: * web-platform-tests/FileAPI/blob/Blob-array-buffer.any-expected.txt: * web-platform-tests/FileAPI/blob/Blob-array-buffer.any.worker-expected.txt: * web-platform-tests/FileAPI/blob/Blob-text.any-expected.txt: * web-platform-tests/FileAPI/blob/Blob-text.any.worker-expected.txt: * web-platform-tests/FileAPI/idlharness-expected.txt: * web-platform-tests/FileAPI/idlharness.worker-expected.txt: Source/WebCore: Implementation support for Blob.text() & Blob.arrayBuffer() as per specification: - https://w3c.github.io/FileAPI/#blob-section The implementation relies on the pre-existing BlobLoader class but the following changes were made: - Stop calling start() in the BlobLoader constructor and have the caller call start() explicitly after constructing the BlobLoader. This is important because the load may fail synchronously in some cases. - Add support for reading Blob as text. Previously, BlobLoader would only support reading the blob as an ArrayBuffer. - Use a CompletionHandler instead of a Function and make sure that it is always called. No new tests, rebaselined existing tests. * fileapi/Blob.cpp: (WebCore::Blob::~Blob): (WebCore::Blob::loadBlob): (WebCore::Blob::text): (WebCore::Blob::arrayBuffer): * fileapi/Blob.h: * fileapi/Blob.idl: * fileapi/BlobLoader.h: (WebCore::BlobLoader::BlobLoader): (WebCore::BlobLoader::~BlobLoader): (WebCore::BlobLoader::cancel): (WebCore::BlobLoader::start): (WebCore::BlobLoader::didFinishLoading): (WebCore::BlobLoader::didFail): (WebCore::BlobLoader::complete): Deleted. * fileapi/NetworkSendQueue.cpp: (WebCore::NetworkSendQueue::enqueue): (WebCore::NetworkSendQueue::clear): (WebCore::NetworkSendQueue::processMessages): * page/ShareDataReader.cpp: (WebCore::ShareDataReader::start): (WebCore::ShareDataReader::didFinishLoading): (WebCore::ShareDataReader::cancel): Canonical link: https://commits.webkit.org/228429@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@265908 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-08-19 23:56:03 +00:00
if (const auto& result = loader->arrayBufferResult()) {
Fix some inefficient uses of SharedBuffer https://bugs.webkit.org/show_bug.cgi?id=226857 Reviewed by Darin Adler. Fix some inefficient uses of SharedBuffer: - Avoid calling SharedBuffer::data() whenever possible since this function may have to combine internal segments of SharedBuffer. Added a convenience function on SharedBuffer (forEachSegment()) to get the data pointer / size of each segment. - Avoid some unnecessary construction of SharedBuffer simply to get a Vector. We should construct the Vector directly in such cases. I dropped the Blob factory that took in a SharedBuffer as it was inefficient and frequently called instead of the more efficient factory that takes in a Vector<uint8_t>. - Add convenience functions to SharedBuffer that return a Vector, including one named takeData() that avoids copying the data. - Add convenience functions to SharedBuffer for doing a prefix check or copying to a destination pointer. * Modules/async-clipboard/ClipboardItem.cpp: (WebCore::ClipboardItem::blobFromString): * Modules/async-clipboard/ios/ClipboardImageReaderIOS.mm: (WebCore::ClipboardImageReader::readBuffer): * Modules/async-clipboard/mac/ClipboardImageReaderMac.mm: (WebCore::ClipboardImageReader::readBuffer): * Modules/fetch/FetchBodyConsumer.cpp: (WebCore::blobFromData): (WebCore::packageFormData): (WebCore::resolveWithTypeAndData): (WebCore::FetchBodyConsumer::takeAsBlob): * Modules/indexeddb/IDBGetResult.cpp: * Modules/indexeddb/IDBGetResult.h: * Modules/mediarecorder/MediaRecorder.cpp: (WebCore::createDataAvailableEvent): * Modules/mediastream/RTCDataChannel.cpp: (WebCore::RTCDataChannel::didReceiveRawData): * editing/WebCorePasteboardFileReader.cpp: (WebCore::WebCorePasteboardFileReader::readBuffer): * editing/cocoa/WebContentReaderCocoa.mm: (WebCore::createFragmentForImageAttachment): (WebCore::replaceRichContentWithAttachments): (WebCore::createFragmentAndAddResources): (WebCore::sanitizeMarkupWithArchive): (WebCore::WebContentReader::readImage): (WebCore::attachmentForData): * editing/gtk/WebContentReaderGtk.cpp: (WebCore::WebContentReader::readImage): * fileapi/Blob.cpp: * fileapi/Blob.h: * fileapi/NetworkSendQueue.cpp: (WebCore::NetworkSendQueue::processMessages): * html/HTMLAttachmentElement.cpp: (WebCore::HTMLAttachmentElement::updateEnclosingImageWithData): * inspector/agents/InspectorNetworkAgent.cpp: (WebCore::InspectorNetworkAgent::didReceiveResponse): * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::continueAfterContentPolicy): * loader/DocumentThreadableLoader.cpp: (WebCore::DocumentThreadableLoader::didFinishLoading): (WebCore::DocumentThreadableLoader::loadRequest): * loader/NetscapePlugInStreamLoader.cpp: (WebCore::NetscapePlugInStreamLoader::didReceiveDataOrBuffer): * loader/ResourceCryptographicDigest.cpp: (WebCore::cryptographicDigestForSharedBuffer): * loader/ResourceCryptographicDigest.h: * loader/SubresourceIntegrity.cpp: (WebCore::matchIntegrityMetadata): * loader/appcache/ApplicationCacheGroup.cpp: (WebCore::ApplicationCacheGroup::didFinishLoadingManifest): * loader/appcache/ApplicationCacheStorage.cpp: (WebCore::ApplicationCacheStorage::writeDataToUniqueFileInDirectory): * loader/cache/CachedRawResource.cpp: (WebCore::CachedRawResource::didAddClient): * loader/icon/IconLoader.cpp: (WebCore::IconLoader::notifyFinished): * platform/SharedBuffer.cpp: (WebCore::combineSegmentsData): (WebCore::SharedBuffer::combineIntoOneSegment const): (WebCore::SharedBuffer::data const): (WebCore::SharedBuffer::takeData): (WebCore::SharedBuffer::toHexString const): (WebCore::SharedBuffer::forEachSegment const): (WebCore::SharedBuffer::startsWith const): (WebCore::SharedBuffer::copyTo const): * platform/SharedBuffer.h: * platform/cf/SharedBufferCF.cpp: (WebCore::SharedBuffer::createCFData const): * platform/graphics/displaylists/DisplayListItemBuffer.cpp: (WebCore::DisplayList::ItemBuffer::append): * svg/graphics/SVGImage.cpp: (WebCore::SVGImage::dataChanged): * workers/ScriptBuffer.cpp: (WebCore::ScriptBuffer::toString const): * xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::createResponseBlob): Canonical link: https://commits.webkit.org/238674@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@278702 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-06-10 15:08:18 +00:00
m_writeRawData(Span { static_cast<const uint8_t*>(result->data()), result->byteLength() });
return;
}
Remove FileError.h https://bugs.webkit.org/show_bug.cgi?id=213119 Patch by Tetsuharu Ohzeki <tetsuharu.ohzeki@gmail.com> on 2020-06-13 Reviewed by Chris Dumez. Source/WebCore: * Headers.cmake: * Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp: (WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::didFail): * Modules/async-clipboard/ClipboardItemBindingsDataSource.h: * Modules/mediastream/RTCDataChannel.cpp: (WebCore::RTCDataChannel::createMessageQueue): * Modules/websockets/WebSocketChannel.cpp: (WebCore::WebSocketChannel::didFail): (WebCore::WebSocketChannel::abortOutgoingFrameQueue): * Modules/websockets/WebSocketChannel.h: * WebCore.xcodeproj/project.pbxproj: * fileapi/BlobLoader.h: (WebCore::BlobLoader::didFail): * fileapi/FileError.h: Removed. * fileapi/FileReader.cpp: (WebCore::FileReader::didFail): * fileapi/FileReader.h: * fileapi/FileReaderLoader.cpp: (WebCore::FileReaderLoader::start): (WebCore::FileReaderLoader::cancel): (WebCore::FileReaderLoader::cleanup): (WebCore::FileReaderLoader::didReceiveResponse): (WebCore::FileReaderLoader::didReceiveData): (WebCore::FileReaderLoader::didFail): (WebCore::FileReaderLoader::failed): (WebCore::FileReaderLoader::toErrorCode): (WebCore::FileReaderLoader::httpStatusCodeToErrorCode): (WebCore::FileReaderLoader::arrayBufferResult const): (WebCore::FileReaderLoader::stringResult): * fileapi/FileReaderLoader.h: (WebCore::FileReaderLoader::errorCode const): * fileapi/FileReaderLoaderClient.h: * fileapi/FileReaderSync.cpp: (WebCore::FileReaderSync::startLoading): * fileapi/FileReaderSync.h: * fileapi/NetworkSendQueue.cpp: (WebCore::NetworkSendQueue::processMessages): * fileapi/NetworkSendQueue.h: * html/ImageBitmap.cpp: Source/WebKit: * WebProcess/Network/WebSocketChannel.cpp: (WebKit::WebSocketChannel::createMessageQueue): Canonical link: https://commits.webkit.org/225939@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@262999 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2020-06-13 16:24:15 +00:00
ASSERT(errorCode);
shouldStopProcessing = m_processError(errorCode.value()) == Continue::No;
});
if (shouldStopProcessing)
return;
m_queue.removeFirst();
}
}
} // namespace WebCore