[webkit-changes] [WebKit/WebKit] b6ac61: [UnifedPDF] Factor incremental PDF loading code in...
Simon Fraser
noreply at github.com
Thu Jan 25 09:00:49 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b6ac61e0064cad757dd1a2a81265150c436fe00c
https://github.com/WebKit/WebKit/commit/b6ac61e0064cad757dd1a2a81265150c436fe00c
Author: Simon Fraser <simon.fraser at 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
More information about the webkit-changes
mailing list