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

Reply via email to