Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: b6ac61e0064cad757dd1a2a81265150c436fe00c https://github.com/WebKit/WebKit/commit/b6ac61e0064cad757dd1a2a81265150c436fe00c Author: Simon Fraser <simon.fra...@apple.com> Date: 2024-01-25 (Thu, 25 Jan 2024)
Changed paths: M Source/WebKit/Platform/spi/Cocoa/PDFKitSPI.h M Source/WebKit/SourcesCocoa.txt M Source/WebKit/WebKit.xcodeproj/project.pbxproj A Source/WebKit/WebProcess/Plugins/PDF/PDFIncrementalLoader.h A Source/WebKit/WebProcess/Plugins/PDF/PDFIncrementalLoader.mm M Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h M Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm M Source/WebKit/WebProcess/Plugins/PDF/PDFPluginAnnotation.h M Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.h M Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.mm M Source/WebKit/WebProcess/cocoa/VideoPresentationManager.mm Log Message: ----------- [UnifedPDF] Factor incremental PDF loading code into its own class https://bugs.webkit.org/show_bug.cgi?id=267979 rdar://121487714 Reviewed by Tim Horton. Move the incremental PDF loading code out of PDFPlugin into its own class, PDFIncrementalLoader. All the complexities of ByteRangeRequest and PDFPluginStreamLoaderClient are now internal to that class. PDFPlugin makes an instance of this class when incremental loading is enabled. In addition to moving the code, a lot of code cleanup was done: * Use of thread-safe weak pointers * More main thread assertions * Type for ByteRangeRequest identifiers * Encapsulate the CFDataRef inside PDFPluginBase * Clearer distinction between data loaded via the main resource request, and byte-range requests * Source/WebKit/Platform/spi/Cocoa/PDFKitSPI.h: * Source/WebKit/SourcesCocoa.txt: * Source/WebKit/WebKit.xcodeproj/project.pbxproj: * Source/WebKit/WebProcess/Plugins/PDF/PDFIncrementalLoader.h: Added. (WebKit::PDFIncrementalLoader::incrementThreadsWaitingOnCallback): (WebKit::PDFIncrementalLoader::decrementThreadsWaitingOnCallback): * Source/WebKit/WebProcess/Plugins/PDF/PDFIncrementalLoader.mm: Added. (WebKit::ByteRangeRequest::ByteRangeRequest): (WebKit::ByteRangeRequest::streamLoader): (WebKit::ByteRangeRequest::setStreamLoader): (WebKit::ByteRangeRequest::addData): (WebKit::ByteRangeRequest::position const): (WebKit::ByteRangeRequest::count const): (WebKit::ByteRangeRequest::accumulatedData const): (WebKit::ByteRangeRequest::clearStreamLoader): (WebKit::ByteRangeRequest::completeWithBytes): (WebKit::ByteRangeRequest::completeWithAccumulatedData): (WebKit::ByteRangeRequest::completeIfPossible): (WebKit::ByteRangeRequest::completeUnconditionally): (WebKit::PDFPluginStreamLoaderClient::PDFPluginStreamLoaderClient): (WebKit::PDFPluginStreamLoaderClient::willSendRequest): (WebKit::PDFPluginStreamLoaderClient::didReceiveResponse): (WebKit::PDFPluginStreamLoaderClient::didReceiveData): (WebKit::PDFPluginStreamLoaderClient::didFail): (WebKit::PDFPluginStreamLoaderClient::didFinishLoading): (WebKit::PDFIncrementalLoader::create): (WebKit::PDFIncrementalLoader::PDFIncrementalLoader): (WebKit::PDFIncrementalLoader::clear): (WebKit::PDFIncrementalLoader::receivedNonLinearizedPDFSentinel): (WebKit::PDFIncrementalLoader::documentFinishedLoading const): (WebKit::PDFIncrementalLoader::ensureDataBufferLength): (WebKit::PDFIncrementalLoader::appendAccumulatedDataToDataBuffer): (WebKit::PDFIncrementalLoader::availableDataSize const): (WebKit::PDFIncrementalLoader::dataPtrForRange const): (WebKit::PDFIncrementalLoader::incrementalPDFStreamDidFinishLoading): (WebKit::PDFIncrementalLoader::incrementalPDFStreamDidReceiveData): (WebKit::PDFIncrementalLoader::incrementalPDFStreamDidFail): (WebKit::PDFIncrementalLoader::unconditionalCompleteOutstandingRangeRequests): (WebKit::PDFIncrementalLoader::getResourceBytesAtPositionAfterLoadingComplete): (WebKit::PDFIncrementalLoader::getResourceBytesAtPosition): (WebKit::PDFIncrementalLoader::streamLoaderDidStart): (WebKit::PDFIncrementalLoader::byteRangeRequestForStreamLoader): (WebKit::PDFIncrementalLoader::forgetStreamLoader): (WebKit::PDFIncrementalLoader::cancelAndForgetStreamLoader): (WebKit::PDFIncrementalLoader::identifierForLoader): (WebKit::PDFIncrementalLoader::removeOutstandingByteRangeRequest): (WebKit::PDFIncrementalLoader::requestCompleteIfPossible): (WebKit::PDFIncrementalLoader::requestDidCompleteWithBytes): (WebKit::PDFIncrementalLoader::requestDidCompleteWithAccumulatedData): (WebKit::dataProviderGetByteRangesCallback): (WebKit::dataProviderGetBytesAtPositionCallback): (WebKit::dataProviderReleaseInfoCallback): (WebKit::PDFIncrementalLoader::dataProviderGetBytesAtPosition): (WebKit::PDFIncrementalLoader::dataProviderGetByteRanges): (WebKit::PDFIncrementalLoader::transitionToMainThreadDocument): (WebKit::PDFIncrementalLoader::threadEntry): (WebKit::PDFIncrementalLoader::pdfLog): (WebKit::PDFIncrementalLoader::logStreamLoader): (WebKit::PDFIncrementalLoader::logState): * Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h: * Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm: (WebKit::PDFPlugin::PDFPlugin): (WebKit::PDFPlugin::teardown): (WebKit::PDFPlugin::pdfLog): Deleted. (WebKit::PDFPlugin::logStreamLoader): Deleted. (WebKit::PDFPlugin::verboseLog): Deleted. (WebKit::PDFPlugin::receivedNonLinearizedPDFSentinel): Deleted. (WebKit::dataProviderGetBytesAtPositionCallback): Deleted. (WebKit::dataProviderGetByteRangesCallback): Deleted. (WebKit::dataProviderReleaseInfoCallback): Deleted. (WebKit::PDFPlugin::maybeClearHighLatencyDataProviderFlag): Deleted. (WebKit::PDFPlugin::threadEntry): Deleted. (WebKit::PDFPlugin::unconditionalCompleteOutstandingRangeRequests): Deleted. (WebKit::PDFPlugin::getResourceBytesAtPositionMainThread): Deleted. (WebKit::PDFPlugin::getResourceBytesAtPosition): Deleted. (WebKit::PDFPlugin::adoptBackgroundThreadDocument): Deleted. (WebKit::PDFPlugin::ByteRangeRequest::clearStreamLoader): Deleted. (WebKit::PDFPlugin::ByteRangeRequest::completeWithBytes): Deleted. (WebKit::PDFPlugin::ByteRangeRequest::completeWithAccumulatedData): Deleted. (WebKit::PDFPlugin::ByteRangeRequest::maybeComplete): Deleted. (WebKit::PDFPlugin::ByteRangeRequest::completeUnconditionally): Deleted. (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::willSendRequest): Deleted. (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didReceiveResponse): Deleted. (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didReceiveData): Deleted. (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didFail): Deleted. (WebKit::PDFPlugin::PDFPluginStreamLoaderClient::didFinishLoading): Deleted. (WebKit::PDFPlugin::byteRangeRequestForLoader): Deleted. (WebKit::PDFPlugin::forgetLoader): Deleted. (WebKit::PDFPlugin::cancelAndForgetLoader): Deleted. (WebKit::PDFPlugin::incrementalPDFStreamDidFinishLoading): Deleted. (WebKit::PDFPlugin::incrementalPDFStreamDidReceiveData): Deleted. (WebKit::PDFPlugin::incrementalPDFStreamDidFail): Deleted. * Source/WebKit/WebProcess/Plugins/PDF/PDFPluginAnnotation.h: * Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.h: (WebKit::PDFPluginBase::incrementalPDFLoadingEnabled const): (WebKit::PDFPluginBase::documentFinishedLoading const): (WebKit::PDFPluginBase::streamedBytes const): (WebKit::PDFPluginBase::incrementalPDFStreamDidReceiveData): Deleted. (WebKit::PDFPluginBase::incrementalPDFStreamDidFinishLoading): Deleted. (WebKit::PDFPluginBase::incrementalPDFStreamDidFail): Deleted. * Source/WebKit/WebProcess/Plugins/PDF/PDFPluginBase.mm: (WebKit::PDFPluginBase::PDFPluginBase): (WebKit::PDFPluginBase::teardown): (WebKit::PDFPluginBase::haveStreamedDataForRange const): (WebKit::PDFPluginBase::haveDataForRange const): (WebKit::PDFPluginBase::copyDataAtPosition const): (WebKit::PDFPluginBase::dataPtrForRange const): (WebKit::PDFPluginBase::insertRangeRequestData): (WebKit::PDFPluginBase::streamDidReceiveData): (WebKit::PDFPluginBase::streamDidFinishLoading): (WebKit::PDFPluginBase::streamDidFail): (WebKit::PDFPluginBase::adoptBackgroundThreadDocument): (WebKit::PDFPluginBase::maybeClearHighLatencyDataProviderFlag): (WebKit::PDFPluginBase::startByteRangeRequest): (WebKit::PDFPluginBase::receivedNonLinearizedPDFSentinel): (WebKit::PDFPluginBase::pdfLog): (WebKit::PDFPluginBase::verboseLog): * Source/WebKit/WebProcess/cocoa/VideoPresentationManager.mm: Canonical link: https://commits.webkit.org/273506@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes