Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[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
- Loading branch information