Ignore:
Timestamp:
Dec 13, 2021, 12:30:29 AM (3 years ago)
Author:
Jean-Yves Avenard
Message:

Distinguish contiguous SharedBuffer from non-contiguous one and guarantee immutability
https://bugs.webkit.org/show_bug.cgi?id=233030
rdar://85333814

Reviewed by Darin Adler.

Source/WebCore:

When calling SharedBuffer::data() the underlying data was flattened,
and so could be mutated while being shared. This was an undesirable
behaviour.
We introduce ContiguousSharedBuffer which guarantee that its content is made
of contiguous data.
All methods that would have mutated a SharedBuffer when being flattened are
moved to ContiguousSharedBuffer.

Area where SharedBuffers were always created with a single segment where
converted to a ContiguousSharedBuffer.
Previously, a SharedBuffer would have been flattened only if it needed to be
and only when the data was going to be accessed; following this change
the conversion is now explictly done through a call to makeContiguous.
This conversion is a no-op if the SharedBuffer being converted was already
a ContiguousSharedBuffer.
With the nature of a SharedBuffer being shared by potentially multiple
users it was necessary to limit the number of conversions being performed
on demand to avoid redundancy.
When the flattening could have occured, the SharedBuffer creation points were
traced back and identified to make the buffer contiguous then.
In the end, there's no more SharedBuffer flattening operations than there
would have been before this change.
There's a potential increase of temporary memory usage with the
ScriptBufferSourceProvider class; bug 233511 is tracking it.

While the change is extensive, code coverage of the modified areas is thorough
which makes undetected regressions unlikely.

In bug 233442, a SharedBuffer will be made completely immutable once created.

No observable change.
Covered by all existing tests. New API tests creatded.

  • Modules/async-clipboard/ClipboardItemBindingsDataSource.cpp:

(WebCore::ClipboardItemBindingsDataSource::ClipboardItemTypeLoader::sanitizeDataIfNeeded):

  • Modules/async-clipboard/ios/ClipboardImageReaderIOS.mm:

(WebCore::ClipboardImageReader::readBuffer):

  • Modules/async-clipboard/mac/ClipboardImageReaderMac.mm:

(WebCore::ClipboardImageReader::readBuffer):

  • Modules/cache/CacheStorageConnection.cpp:

(WebCore::CacheStorageConnection::computeRealBodySize):

  • Modules/cache/DOMCache.cpp:

(WebCore::DOMCache::addAll):
(WebCore::DOMCache::putWithResponseData):
(WebCore::DOMCache::put):

  • Modules/cache/DOMCache.h:
  • Modules/cache/DOMCacheEngine.cpp:

(WebCore::DOMCacheEngine::isolatedResponseBody):
(WebCore::DOMCacheEngine::copyResponseBody):

  • Modules/cache/DOMCacheEngine.h:
  • Modules/encryptedmedia/InitDataRegistry.cpp:

(WebCore::extractKeyIDsKeyids):
(WebCore::sanitizeKeyids):

  • Modules/encryptedmedia/MediaKeyStatusMap.cpp:

(WebCore::keyIdsMatch):
(WebCore::MediaKeyStatusMap::Iterator::next):

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::consumeFormData):
(WebCore::FetchBody::bodyAsFormData const):
(WebCore::FetchBody::take):

  • Modules/fetch/FetchBody.h:
  • Modules/fetch/FetchBodyConsumer.cpp:

(WebCore::FetchBodyConsumer::resolve):
(WebCore::FetchBodyConsumer::takeAsText):

  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::BodyLoader::consumeDataByChunk):
(WebCore::FetchResponse::setBodyData):

  • Modules/fetch/FetchResponse.h:
  • Modules/highlight/AppHighlight.h:

(WebCore::AppHighlight::encode const):

  • Modules/highlight/AppHighlightRangeData.cpp:

(WebCore::AppHighlightRangeData::create):

  • Modules/indexeddb/server/IDBSerialization.cpp:

(WebCore::serializeIDBKeyPath):
(WebCore::serializeIDBKeyData):

  • Modules/indexeddb/server/IDBSerialization.h:
  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::addExistingIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::createObjectStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::createIndex):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedHasIndexRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedPutIndexRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::keyExistsInObjectStore):
(WebCore::IDBServer::SQLiteIDBBackingStore::deleteRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::addRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::getRecord):
(WebCore::IDBServer::SQLiteIDBBackingStore::uncheckedGetIndexRecordForOneKey):
(WebCore::IDBServer::SQLiteIDBBackingStore::getCount):

  • Modules/indexeddb/server/SQLiteIDBCursor.cpp:

(WebCore::IDBServer::SQLiteIDBCursor::bindArguments):
(WebCore::IDBServer::SQLiteIDBCursor::resetAndRebindPreIndexStatementIfNecessary):

  • Modules/mediastream/RTCDataChannelRemoteHandler.cpp:

(WebCore::RTCDataChannelRemoteHandler::readyToSend):

  • Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:

(WebCore::LibWebRTCDataChannelHandler::setClient):

  • Modules/model-element/HTMLModelElement.cpp:

(WebCore::HTMLModelElement::notifyFinished):

  • Modules/model-element/scenekit/SceneKitModelLoaderUSD.mm:

(WebCore::writeToTemporaryFile):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::handleResponseOnStreamingAction):

  • bindings/js/ScriptBufferSourceProvider.h:
  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::load):

  • css/CSSFontFaceSource.h:
  • editing/Editor.cpp:

(WebCore::Editor::promisedAttachmentInfo):

  • editing/Editor.h:
  • editing/SerializedAttachmentData.h:
  • editing/cocoa/EditorCocoa.mm:

(WebCore::archivedDataForAttributedString):
(WebCore::Editor::getPasteboardTypesAndDataForAttachment):
(WebCore::Editor::selectionInWebArchiveFormat):
(WebCore::Editor::dataInRTFDFormat):
(WebCore::Editor::dataInRTFFormat):

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::_addAttachmentForElement):
(fileWrapperForURL):
(fileWrapperForElement):

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::replaceRichContentWithAttachments):
(WebCore::extractMarkupAndArchive):
(WebCore::sanitizeMarkupWithArchive):
(WebCore::WebContentReader::readRTFD):
(WebCore::WebContentMarkupReader::readRTFD):
(WebCore::WebContentReader::readRTF):
(WebCore::WebContentMarkupReader::readRTF):

  • editing/mac/EditorMac.mm:

(WebCore::Editor::imageInWebArchiveFormat):
(WebCore::Editor::dataSelectionForPasteboard):

  • html/FTPDirectoryDocument.cpp:

(WebCore::createTemplateDocumentData):
(WebCore::FTPDirectoryDocumentParser::loadDocumentTemplate):

  • inspector/NetworkResourcesData.cpp:

(WebCore::NetworkResourcesData::ResourceData::decodeDataToContent):

  • inspector/agents/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::cachedResourceContent):

  • inspector/agents/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::mainResourceContent):
(WebCore::InspectorPageAgent::sharedBufferContent):

  • loader/ContentFilter.cpp:

(WebCore::ContentFilter::deliverResourceData):

  • loader/CrossOriginPreflightChecker.cpp:

(WebCore::CrossOriginPreflightChecker::doPreflight):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::maybeCreateArchive):
(WebCore::DocumentLoader::parsedArchiveData const):
(WebCore::DocumentLoader::maybeFinishLoadingMultipartContent):

  • loader/DocumentLoader.h:
  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::loadRequest):

  • loader/EmptyClients.cpp:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadResourceSynchronously):

  • loader/FrameLoader.h:
  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::didReceiveDataOrBuffer):

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::didReceiveDataOrBuffer):

  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::didFinishLoadingManifest):

  • loader/appcache/ApplicationCacheHost.cpp:

(WebCore::bufferFromResource):
(WebCore::ApplicationCacheHost::maybeLoadSynchronously):
(WebCore::ApplicationCacheHost::maybeLoadFallbackSynchronously):

  • loader/appcache/ApplicationCacheHost.h:
  • loader/appcache/ApplicationCacheResource.cpp:

(WebCore::ApplicationCacheResource::deliver):

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::store):
(WebCore::ApplicationCacheStorage::loadCache):

  • loader/archive/cf/LegacyWebArchive.cpp:

(WebCore::LegacyWebArchive::createPropertyListRepresentation):
(WebCore::LegacyWebArchive::createResource):
(WebCore::LegacyWebArchive::create):
(WebCore::LegacyWebArchive::extract):
(WebCore::LegacyWebArchive::createFromSelection):

  • loader/archive/mhtml/MHTMLParser.cpp:

(WebCore::MHTMLParser::parseNextPart):

  • loader/cache/CachedApplicationManifest.cpp:

(WebCore::CachedApplicationManifest::finishLoading):

  • loader/cache/CachedCSSStyleSheet.cpp:

(WebCore::CachedCSSStyleSheet::sheetText const):
(WebCore::CachedCSSStyleSheet::finishLoading):

  • loader/cache/CachedFont.cpp:

(WebCore::CachedFont::finishLoading):
(WebCore::CachedFont::ensureCustomFontData):
(WebCore::CachedFont::createCustomFontData):
(WebCore::CachedFont::checkNotify):

  • loader/cache/CachedFont.h:
  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::updateBufferInternal):
(WebCore::CachedImage::convertedDataIfNeeded const):

  • loader/cache/CachedImage.h:
  • loader/cache/CachedRawResource.cpp:

(WebCore::CachedRawResource::updateBuffer):
(WebCore::CachedRawResource::finishLoading):

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::tryReplaceEncodedData):

  • loader/cache/CachedResource.h:

(WebCore::CachedResource::resourceBuffer const):

  • loader/cache/CachedSVGDocument.cpp:

(WebCore::CachedSVGDocument::finishLoading):

  • loader/cache/CachedSVGFont.cpp:

(WebCore::CachedSVGFont::ensureCustomFontData):

  • loader/cache/CachedSVGFont.h:
  • loader/cache/CachedScript.cpp:

(WebCore::CachedScript::finishLoading):

  • loader/cache/CachedTextTrack.cpp:

(WebCore::CachedTextTrack::doUpdateBuffer):

  • loader/cache/CachedXSLStyleSheet.cpp:

(WebCore::CachedXSLStyleSheet::finishLoading):

  • loader/cocoa/DiskCacheMonitorCocoa.h:
  • loader/cocoa/DiskCacheMonitorCocoa.mm:

(WebCore::DiskCacheMonitor::tryGetFileBackedSharedBufferFromCFURLCachedResponse):
(WebCore::DiskCacheMonitor::resourceBecameFileBacked):

  • page/EditorClient.h:
  • page/Page.cpp:

(WebCore::Page::userStyleSheet const):

  • page/PageSerializer.cpp:

(WebCore::PageSerializer::serializeFrame):
(WebCore::PageSerializer::serializeCSSStyleSheet):
(WebCore::PageSerializer::addImageToResources):

  • page/PageSerializer.h:
  • page/ShareData.h:
  • page/ShareDataReader.cpp:

(WebCore::ShareDataReader::ShareDataReader):
(WebCore::ShareDataReader::didFinishLoading):

  • platform/KeyedCoding.h:
  • platform/Pasteboard.h:
  • platform/PasteboardCustomData.cpp:

(WebCore::PasteboardCustomData::createSharedBuffer const):
(WebCore::PasteboardCustomData::fromSharedBuffer):

  • platform/PasteboardCustomData.h:
  • platform/PasteboardStrategy.h:
  • platform/PasteboardWriterData.h:
  • platform/PlatformPasteboard.h:
  • platform/PromisedAttachmentInfo.h:
  • platform/SharedBuffer.cpp:

(WebCore::SharedBuffer::SharedBuffer):
(WebCore::SharedBuffer::makeContiguous const):
(WebCore::SharedBuffer::size const):
(WebCore::SharedBuffer::isEmpty const):
(WebCore::SharedBuffer::isContiguous const):
(WebCore::SharedBuffer::append):
(WebCore::SharedBuffer::copy const):
(WebCore::SharedBuffer::hasOneSegment const):
(WebCore::ContiguousSharedBuffer::ContiguousSharedBuffer):
(WebCore::ContiguousSharedBuffer::createWithContentsOfFile):
(WebCore::ContiguousSharedBuffer::data const):
(WebCore::ContiguousSharedBuffer::dataAsCharPtr const):
(WebCore::DataSegment::data const):
(WebCore::DataSegment::containsMappedFileData const):
(WebCore::ContiguousSharedBuffer::decoder const):
(WebCore::DataSegment::size const):
(WebCore::SharedBufferDataView::SharedBufferDataView):
(WebCore::SharedBufferDataView::dataAsCharPtr const):
(WebCore::SharedBufferDataView::createSharedBuffer const):
(WebCore::utf8Buffer):

  • platform/SharedBuffer.h:

(WebCore::DataSegment::create):
(WebCore::DataSegment::DataSegment):
(WebCore::SharedBuffer::create):
(WebCore::ContiguousSharedBuffer::create):

  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(WebCore::MediaSessionManagerCocoa::setNowPlayingInfo):

  • platform/cf/KeyedEncoderCF.cpp:

(WebCore::KeyedEncoderCF::finishEncoding):

  • platform/cf/KeyedEncoderCF.h:
  • platform/cf/SharedBufferCF.cpp:

(WebCore::ContiguousSharedBuffer::createCFData const):
(WebCore::SharedBuffer::append):

  • platform/cocoa/PasteboardCocoa.mm:

(WebCore::convertTIFFToPNG):
(WebCore::Pasteboard::readBufferForTypeWithSecurityCheck):

  • platform/cocoa/SharedBufferCocoa.mm:

(-[WebCoreSharedBufferData initWithDataSegment:position:size:]):
(WebCore::ContiguousSharedBuffer::createNSData const):
(WebCore::ContiguousSharedBuffer::createCFData const):
(WebCore::ContiguousSharedBuffer::createFromReadingFile):
(WebCore::DataSegment::createNSData const):

  • platform/encryptedmedia/CDMUtilities.cpp:

(WebCore::CDMUtilities::parseJSONObject):

  • platform/encryptedmedia/clearkey/CDMClearKey.cpp:

(WebCore::extractKeyidsLocationFromCencInitData):
(WebCore::extractKeyidsFromCencInitData):
(WebCore::extractKeyIdFromWebMInitData):

  • platform/generic/KeyedEncoderGeneric.cpp:

(WebCore::KeyedEncoderGeneric::finishEncoding):

  • platform/generic/KeyedEncoderGeneric.h:
  • platform/glib/KeyedEncoderGlib.cpp:

(WebCore::KeyedEncoderGlib::finishEncoding):

  • platform/glib/KeyedEncoderGlib.h:
  • platform/glib/SharedBufferGlib.cpp:

(WebCore::ContiguousSharedBuffer::createGBytes const):
(WebCore::ContiguousSharedBuffer::createFromReadingFile):

  • platform/graphics/Font.cpp:

(WebCore::Font::create):

  • platform/graphics/Font.h:
  • platform/graphics/FontPlatformData.h:
  • platform/graphics/Model.cpp:

(WebCore::Model::create):
(WebCore::Model::Model):

  • platform/graphics/Model.h:

(WebCore::Model::encode const):
(WebCore::Model::decode):

  • platform/graphics/WOFFFileFormat.cpp:

(WebCore::readUInt32):
(WebCore::readUInt16):
(WebCore::isWOFF):
(WebCore::convertWOFFToSfnt):
(WebCore::convertWOFFToSfntIfNecessary):

  • platform/graphics/WOFFFileFormat.h:
  • platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:

(WebCore::extractSinfData):

  • platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:

(WebCore::parseJSONValue):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::requestLicense):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::updateLicense):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::loadSession):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::removeSessionData):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequest):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRequests):
(WebCore::CDMInstanceSessionFairPlayStreamingAVFObjC::didProvideRenewingRequest):

  • platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.mm:

(WebCore::ImageDecoderAVFObjC::ImageDecoderAVFObjC):
(WebCore::ImageDecoderAVFObjC::setData):

  • platform/graphics/avfoundation/objc/SourceBufferParserAVFObjC.mm:

(WebCore::SourceBufferParserAVFObjC::appendData):

  • platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm:

(WebCore::PlatformResourceMediaLoader::dataReceived):
(WebCore::DataURLResourceMediaLoader::DataURLResourceMediaLoader):

  • platform/graphics/cairo/FontCustomPlatformData.h:
  • platform/graphics/cg/ImageDecoderCG.cpp:

(WebCore::sharedBufferGetBytesAtPosition):
(WebCore::ImageDecoderCG::ImageDecoderCG):
(WebCore::ImageDecoderCG::setData):

  • platform/graphics/cg/PDFDocumentImage.cpp:

(WebCore::PDFDocumentImage::createPDFDocument):

  • platform/graphics/cocoa/FontPlatformDataCocoa.mm:

(WebCore::FontPlatformData::platformOpenTypeTable const):

  • platform/graphics/cocoa/SourceBufferParserWebM.cpp:
  • platform/graphics/coretext/FontPlatformDataCoreText.cpp:

(WebCore::FontPlatformData::openTypeTable const):

  • platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp:

(WebCore::createFontCustomPlatformData):

  • platform/graphics/freetype/FontPlatformDataFreeType.cpp:

(WebCore::FontPlatformData::openTypeTable const):

  • platform/graphics/gstreamer/GStreamerCommon.cpp:

(WebCore::GstMappedOwnedBuffer::createSharedBuffer):

  • platform/graphics/gstreamer/GStreamerCommon.h:
  • platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:

(WebCore::ImageDecoderGStreamer::pushEncodedData):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::initializationDataEncountered):

  • platform/graphics/gstreamer/eme/GStreamerEMEUtilities.cpp:

(WebCore::markupText):
(WebCore::InitData::extractCencIfNeeded):

  • platform/graphics/gstreamer/eme/GStreamerEMEUtilities.h:

(WebCore::InitData::InitData):

  • platform/graphics/mac/FontCustomPlatformData.cpp:

(WebCore::createFontCustomPlatformData):

  • platform/graphics/mac/FontCustomPlatformData.h:
  • platform/graphics/mac/PDFDocumentImageMac.mm:

(WebCore::PDFDocumentImage::createPDFDocument):

  • platform/graphics/opentype/OpenTypeMathData.cpp:

(WebCore::OpenType::MathItalicsCorrectionInfo::getItalicCorrection const):
(WebCore::OpenType::MathGlyphInfo::mathItalicsCorrectionInfo const):
(WebCore::OpenType::GlyphAssembly::getAssemblyParts const):
(WebCore::OpenType::MathGlyphConstruction::getSizeVariants const):
(WebCore::OpenType::MathGlyphConstruction::getAssemblyParts const):
(WebCore::OpenType::MathVariants::mathGlyphConstruction const):
(WebCore::OpenType::MATHTable::mathConstants const):
(WebCore::OpenType::MATHTable::mathGlyphInfo const):
(WebCore::OpenType::MATHTable::mathVariants const):

  • platform/graphics/opentype/OpenTypeMathData.h:
  • platform/graphics/opentype/OpenTypeTypes.h:

(WebCore::OpenType::validateTable):
(WebCore::OpenType::TableBase::isValidEnd):
(WebCore::OpenType::TableBase::validatePtr):
(WebCore::OpenType::TableBase::validateOffset const):
(WebCore::OpenType::TableWithCoverage::getCoverageIndex const):

  • platform/graphics/opentype/OpenTypeUtilities.cpp:

(WebCore::renameFont):
(WebCore::renameAndActivateFont):

  • platform/graphics/opentype/OpenTypeUtilities.h:
  • platform/graphics/opentype/OpenTypeVerticalData.cpp:

(WebCore::OpenType::SubstitutionSubTable::coverage const):
(WebCore::OpenType::LookupTable::getSubstitutions const):
(WebCore::OpenType::LookupList::lookup const):
(WebCore::OpenType::FeatureTable::getGlyphSubstitutions const):
(WebCore::OpenType::FeatureList::feature const):
(WebCore::OpenType::FeatureList::findFeature const):
(WebCore::OpenType::LangSysTable::feature const):
(WebCore::OpenType::ScriptTable::defaultLangSys const):
(WebCore::OpenType::ScriptList::script const):
(WebCore::OpenType::ScriptList::defaultScript const):
(WebCore::OpenType::ScriptList::defaultLangSys const):
(WebCore::OpenType::GSUBTable::scriptList const):
(WebCore::OpenType::GSUBTable::featureList const):
(WebCore::OpenType::GSUBTable::lookupList const):
(WebCore::OpenType::GSUBTable::defaultLangSys const):
(WebCore::OpenType::GSUBTable::feature const):
(WebCore::OpenType::GSUBTable::getVerticalGlyphSubstitutions const):
(WebCore::loadHmtxTable):
(WebCore::OpenTypeVerticalData::loadMetrics):
(WebCore::OpenTypeVerticalData::loadVerticalGlyphSubstitutions):

  • platform/graphics/win/FontCustomPlatformData.cpp:

(WebCore::createFontCustomPlatformData):

  • platform/graphics/win/FontCustomPlatformData.h:
  • platform/graphics/win/FontCustomPlatformDataCairo.cpp:

(WebCore::createFontCustomPlatformData):

  • platform/graphics/win/FontPlatformDataCairoWin.cpp:

(WebCore::FontPlatformData::openTypeTable const):

  • platform/graphics/win/FontPlatformDataWin.cpp:

(WebCore::FontPlatformData::platformOpenTypeTable const):

  • platform/gtk/SelectionData.h:

(WebCore::SelectionData::setCustomData):
(WebCore::SelectionData::customData const):

  • platform/image-decoders/ScalableImageDecoder.h:
  • platform/image-decoders/jpeg/JPEGImageDecoder.cpp:

(WebCore::readICCProfile):
(WebCore::JPEGImageDecoder::setICCProfile):

  • platform/image-decoders/jpeg/JPEGImageDecoder.h:
  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::bufferForType):
(WebCore::PlatformPasteboard::write):
(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):
(WebCore::createItemProviderRegistrationList):
(WebCore::PlatformPasteboard::readBuffer const):

  • platform/mac/PasteboardMac.mm:

(WebCore::fileWrapper):
(WebCore::readBufferAtPreferredItemIndex):
(WebCore::Pasteboard::read):

  • platform/mac/PasteboardWriter.mm:

(WebCore::createPasteboardWriter):

  • platform/mac/PlatformPasteboardMac.mm:

(WebCore::PlatformPasteboard::bufferForType):
(WebCore::PlatformPasteboard::typesSafeForDOMToReadAndWrite const):
(WebCore::PlatformPasteboard::write):
(WebCore::PlatformPasteboard::setBufferForType):
(WebCore::PlatformPasteboard::readBuffer const):
(WebCore::createPasteboardItem):

  • platform/network/FormData.cpp:

(WebCore::FormData::asSharedBuffer const):

  • platform/network/FormData.h:
  • platform/network/ResourceHandleClient.cpp:

(WebCore::ResourceHandleClient::didReceiveBuffer):

  • platform/network/cocoa/WebCoreNSURLSession.mm:

(-[WebCoreNSURLSessionDataTask resource:receivedData:]):

  • platform/network/curl/CurlMultipartHandle.cpp:

(WebCore::CurlMultipartHandle::didReceiveData):
(WebCore::CurlMultipartHandle::didComplete):
(WebCore::CurlMultipartHandle::processContent):

  • platform/network/curl/CurlRequest.cpp:

(WebCore::CurlRequest::writeDataToDownloadFileIfEnabled):

  • platform/network/curl/CurlResourceHandleDelegate.cpp:

(WebCore::CurlResourceHandleDelegate::curlDidReceiveBuffer):

  • platform/win/PasteboardWin.cpp:

(WebCore::createGlobalImageFileContent):
(WebCore::createGlobalHDropContent):

  • platform/win/SharedBufferWin.cpp:

(WebCore::ContiguousSharedBuffer::createFromReadingFile):

  • testing/MockCDMFactory.cpp:

(WebCore::MockCDM::sanitizeResponse const):
(WebCore::MockCDMInstance::setServerCertificate):
(WebCore::MockCDMInstanceSession::updateLicense):

  • workers/WorkerFontLoadRequest.cpp:

(WebCore::WorkerFontLoadRequest::ensureCustomFontData):

  • workers/service/context/ServiceWorkerFetch.cpp:

(WebCore::ServiceWorkerFetch::processResponse):

  • workers/service/server/SWScriptStorage.cpp:

(WebCore::SWScriptStorage::retrieve):

  • xml/XSLTProcessorLibxslt.cpp:

(WebCore::docLoaderFunc):

  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::openFunc):

Source/WebKit:

  • GPUProcess/webrtc/RemoteMediaRecorder.cpp:

(WebKit::RemoteMediaRecorder::fetchData):

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::sendReplyToSynchronousRequest):

  • NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.cpp:

(WebKit::ServiceWorkerSoftUpdateLoader::didReceiveBuffer):

  • NetworkProcess/cache/CacheStorageEngineCache.cpp:

(WebKit::CacheStorage::Cache::encode):
(WebKit::CacheStorage::Cache::decode):

  • NetworkProcess/cache/NetworkCacheEntry.cpp:

(WebKit::NetworkCache::Entry::encodeAsStorageRecord const):

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::didReadDataURL):

  • Platform/IPC/SharedBufferCopy.cpp:

(IPC::SharedBufferCopy::decode):

  • Platform/IPC/SharedBufferCopy.h:

(IPC::SharedBufferCopy::SharedBufferCopy):
(IPC::SharedBufferCopy::buffer):
(IPC::SharedBufferCopy::buffer const):

  • Platform/SharedMemory.cpp:

(WebKit::SharedMemory::createSharedBuffer const):

  • Platform/SharedMemory.h:
  • Shared/APIWebArchiveResource.mm:

(API::WebArchiveResource::data):

  • Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:

(IPC::ArgumentCoder<Ref<WebCore::Font>>::decodePlatformData):

  • Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.cpp:

(WebKit::CGDisplayListImageBufferBackend::createImageBufferBackendHandle const):

  • Shared/ShareableResource.cpp:

(WebKit::ShareableResource::wrapInSharedBuffer):
(WebKit::ShareableResource::Handle::tryWrapInSharedBuffer const):

  • Shared/ShareableResource.h:
  • Shared/WebCoreArgumentCoders.cpp:

(IPC::decodeSharedBuffer):
(IPC::encodeTypesAndData):
(IPC::decodeTypesAndData):
(IPC::ArgumentCoder<DOMCacheEngine::Record>::encode):
(IPC::ArgumentCoder<DOMCacheEngine::Record>::decode):
(IPC::ArgumentCoder<PasteboardCustomData::Entry>::decode):
(IPC::ArgumentCoder<WebCore::SerializedAttachmentData>::decode):
(IPC::ArgumentCoder<RefPtr<WebCore::SharedBuffer>>::decode):
(IPC::ArgumentCoder<Ref<WebCore::SharedBuffer>>::decode):
(IPC::ArgumentCoder<RefPtr<WebCore::ContiguousSharedBuffer>>::encode):
(IPC::ArgumentCoder<RefPtr<WebCore::ContiguousSharedBuffer>>::decode):
(IPC::ArgumentCoder<Ref<WebCore::ContiguousSharedBuffer>>::encode):
(IPC::ArgumentCoder<Ref<WebCore::ContiguousSharedBuffer>>::decode):
(IPC::ArgumentCoder<WebCore::ScriptBuffer>::decode):

  • Shared/WebCoreArgumentCoders.h:
  • Shared/gtk/ArgumentCodersGtk.cpp:

(IPC::ArgumentCoder<SelectionData>::decode):

  • Shared/win/WebCoreArgumentCodersWin.cpp:

(IPC::ArgumentCoder<Ref<Font>>::decodePlatformData):

  • UIProcess/API/APIAttachment.cpp:

(API::Attachment::createSerializedRepresentation const):
(API::Attachment::updateFromSerializedRepresentation):

  • UIProcess/API/APIAttachment.h:
  • UIProcess/API/APIContentRuleListStore.cpp:

(API::getData):

  • UIProcess/API/Cocoa/APIAttachmentCocoa.mm:

(API::Attachment::createSerializedRepresentation const):
(API::Attachment::updateFromSerializedRepresentation):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _storeAppHighlight:]):

  • UIProcess/API/gtk/DropTargetGtk3.cpp:

(WebKit::DropTarget::dataReceived):

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationClient::didFinishLoadForQuickLookDocumentInMainFrame):

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::writeSelectionToPasteboard):
(WebKit::WebViewImpl::setPromisedDataForImage):
(WebKit::WebViewImpl::provideDataForPasteboard):
(WebKit::WebViewImpl::namesOfPromisedFilesDroppedAtDestination):
(WebKit::WebViewImpl::requestDOMPasteAccess):

  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebURLSchemeTask.cpp:

(WebKit::WebURLSchemeTask::didComplete):

  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::saveImageToLibrary):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView canPerformActionForWebView:withSender:]):
(allPasteboardItemOriginsMatchOrigin):
(-[WKContentView actionSheetAssistant:shareElementWithImage:rect:]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::dataSelectionForPasteboard):

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::dataSelectionForPasteboard):

  • WebProcess/InjectedBundle/API/APIInjectedBundleEditorClient.h:

(API::InjectedBundle::EditorClient::getPasteboardDataForRange):

  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

(-[WKWebProcessPlugInBrowserContextController _setEditingDelegate:]):

  • WebProcess/InjectedBundle/InjectedBundlePageEditorClient.cpp:

(WebKit::InjectedBundlePageEditorClient::getPasteboardDataForRange):

  • WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h:
  • WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:

(WebKit::releaseSharedBuffer):
(WebKit::InjectedBundlePageLoaderClient::willLoadDataRequest):

  • WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.mm:

(WebKit::ARKitInlinePreviewModelPlayerMac::createFile):

  • WebProcess/Network/NetworkProcessConnection.cpp:

(WebKit::NetworkProcessConnection::didCacheResource):

  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::didReceiveData):

  • WebProcess/WebCoreSupport/WebEditorClient.cpp:

(WebKit::WebEditorClient::getClientPasteboardData):

  • WebProcess/WebCoreSupport/WebEditorClient.h:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::finishedLoading):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::bufferForType):
(WebKit::WebPlatformStrategies::readBufferFromClipboard):
(WebKit::WebPlatformStrategies::readBufferFromPasteboard):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:
  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:

(WebKit::WebDragClient::declareAndWriteDragImage):

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::source const):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::getDataSelectionForPasteboard):

  • WebProcess/cocoa/VideoFullscreenManager.mm:

(WebKit::VideoFullscreenManager::supportsVideoFullscreen const):
(WebKit::VideoFullscreenManager::supportsVideoFullscreenStandby const):

Source/WebKitLegacy/mac:

  • DOM/DOMUIKitExtensions.mm:

(-[DOMHTMLImageElement dataRepresentation:]):

  • WebCoreSupport/WebEditorClient.h:
  • WebCoreSupport/WebEditorClient.mm:

(WebEditorClient::getClientPasteboardData):

  • WebCoreSupport/WebPlatformStrategies.h:
  • WebCoreSupport/WebPlatformStrategies.mm:

(WebPlatformStrategies::bufferForType):
(WebPlatformStrategies::readBufferFromPasteboard):

  • WebView/WebDataSource.mm:

(-[WebDataSource data]):

  • WebView/WebHTMLRepresentation.mm:

(-[WebHTMLRepresentation documentSource]):

  • WebView/WebHTMLView.mm:

(createShareMenuItem):

  • WebView/WebResource.mm:

(-[WebResource encodeWithCoder:]):
(-[WebResource data]):
(-[WebResource _stringValue]):

Source/WebKitLegacy/win:

  • MemoryStream.cpp:

(MemoryStream::MemoryStream):
(MemoryStream::createInstance):

  • MemoryStream.h:
  • WebArchive.cpp:

(WebArchive::data):

  • WebCoreSupport/WebEditorClient.cpp:

(WebEditorClient::getClientPasteboardData):

  • WebCoreSupport/WebEditorClient.h:
  • WebDataSource.cpp:

(WebDataSource::data):

  • WebResource.cpp:

(WebResource::createInstance):

  • WebResource.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/SharedBuffer.cpp:

(TestWebKitAPI::TEST_F):

  • TestWebKitAPI/Tests/WebCore/cocoa/SharedBuffer.mm:

(TestWebKitAPI::TEST_F):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/css/CSSFontFaceSource.cpp

    r286625 r286937  
    168168                SVGFontElement& fontElement = downcast<SVGFontElement>(*m_svgFontFaceElement->parentNode());
    169169                if (auto otfFont = convertSVGToOTFFont(fontElement))
    170                     m_generatedOTFBuffer = SharedBuffer::create(WTFMove(otfFont.value()));
     170                    m_generatedOTFBuffer = ContiguousSharedBuffer::create(WTFMove(otfFont.value()));
    171171                if (m_generatedOTFBuffer) {
    172172                    m_inDocumentCustomPlatformData = createFontCustomPlatformData(*m_generatedOTFBuffer, String());
     
    177177            ASSERT(!m_immediateFontCustomPlatformData);
    178178            bool wrapping;
    179             auto buffer = SharedBuffer::create(static_cast<const char*>(m_immediateSource->baseAddress()), m_immediateSource->byteLength());
     179            auto buffer = ContiguousSharedBuffer::create(static_cast<const char*>(m_immediateSource->baseAddress()), m_immediateSource->byteLength());
    180180            m_immediateFontCustomPlatformData = CachedFont::createCustomFontData(buffer.get(), String(), wrapping);
    181181            success = static_cast<bool>(m_immediateFontCustomPlatformData);
Note: See TracChangeset for help on using the changeset viewer.