Skip to content

Conversation

jyavenard
Copy link
Member

@jyavenard jyavenard commented May 24, 2022

7003d0d

Rename SharedBufferCopy to SharedBufferReference
https://bugs.webkit.org/show_bug.cgi?id=240796
rdar://problem/93754681

Patch by Jean-Yves Avenard <jyavenard@gmail.com > on 2022-05-24
Reviewed by Jer Noble.

1. SharedBufferCopy doesn't perform a copy, but passes SharedMemory and return a SharedBuffer that wraps such SharedMemory.
Rename it to SharedBufferReference to more accurately reflect what it actually does.

2. Remove SharedBufferCopy::safeBuffer() and rename
 SharedBufferCopy::buffer with SharedBufferCopy::unsafeBuffer. This gives
 better clarity that accessing SharedBufferCopy should be treated with care.

3. Add SharedBufferCopy::isNull() method
4. When passing a SharedBufferReferal across multiple processes, we remove the need for a new allocation and copy of the content; instead we move the underlying SharedMemory.

No change of observable behaviour.

* Source/WebKit/GPUProcess/media/RemoteCDMInstanceProxy.h:
* Source/WebKit/GPUProcess/media/RemoteImageDecoderAVFProxy.cpp:
(WebKit::RemoteImageDecoderAVFProxy::createDecoder):
(WebKit::RemoteImageDecoderAVFProxy::setData):
* Source/WebKit/GPUProcess/media/RemoteImageDecoderAVFProxy.h:
* Source/WebKit/GPUProcess/media/RemoteImageDecoderAVFProxy.messages.in:
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::bufferingTimerFired):
(WebKit::NetworkResourceLoader::sendBuffer):
(WebKit::NetworkResourceLoader::dataReceivedThroughContentFilter):
* Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.cpp:
(WebKit::ServiceWorkerDownloadTask::didReceiveData):
* Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.h:
* Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerDownloadTask.messages.in:
* Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:
(WebKit::ServiceWorkerFetchTask::didReceiveData):
(WebKit::ServiceWorkerFetchTask::loadBodyFromPreloader):
* Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:
* Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.messages.in:
* Source/WebKit/Platform/IPC/SharedBufferCopy.cpp: Removed.
* Source/WebKit/Platform/IPC/SharedBufferCopy.h: Removed.
* Source/WebKit/Platform/IPC/SharedBufferReference.cpp: Added.
(IPC::SharedBufferReference::encode const):
(IPC::SharedBufferReference::decode):
(IPC::SharedBufferReference::unsafeBuffer const):
(IPC::SharedBufferReference::data const):
* Source/WebKit/Platform/IPC/SharedBufferReference.h: Added.
(IPC::SharedBufferReference::SharedBufferReference):
(IPC::SharedBufferReference::size const):
(IPC::SharedBufferReference::isEmpty const):
(IPC::SharedBufferReference::isNull const):
* Source/WebKit/Shared/RemoteLayerTree/CGDisplayListImageBufferBackend.cpp:
(WebKit::CGDisplayListImageBufferBackend::createBackendHandle const):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::applyBackingStoreToLayer):
* Source/WebKit/Sources.txt:
* Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView createPDFWithConfiguration:completionHandler:]):
* Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::platformRegisterAttachment):
* Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm:
(WebKit::WebProcessProxy::sendAudioComponentRegistrations):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::CompletionHandler<void):
(WebKit::WebPageProxy::drawToPDF):
(WebKit::WebPageProxy::getLoadDecisionForIcon):
(WebKit::WebPageProxy::updateAttachmentAttributes):
(WebKit::WebPageProxy::registerAttachmentIdentifierFromData):
(WebKit::WebPageProxy::platformRegisterAttachment):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/WebPageProxy.messages.in:
* Source/WebKit/UIProcess/WebPasteboardProxy.h:
* Source/WebKit/UIProcess/WebPasteboardProxy.messages.in:
* Source/WebKit/UIProcess/WebURLSchemeTask.cpp:
(WebKit::WebURLSchemeTask::didReceiveData):
* Source/WebKit/UIProcess/gtk/WebPasteboardProxyGtk.cpp:
(WebKit::WebPasteboardProxy::readBuffer):
* Source/WebKit/UIProcess/ios/WKContentView.mm:
(-[WKContentView _wk_pageCountForPrintFormatter:]):
* Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::drawToPDFiOS):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/GPU/graphics/ImageBufferBackendHandle.h:
* Source/WebKit/WebProcess/GPU/media/RemoteImageDecoderAVF.cpp:
(WebKit::RemoteImageDecoderAVF::setData):
* Source/WebKit/WebProcess/GPU/media/RemoteImageDecoderAVFManager.cpp:
(WebKit::RemoteImageDecoderAVFManager::createImageDecoder):
* Source/WebKit/WebProcess/Network/WebResourceLoader.cpp:
(WebKit::WebResourceLoader::didReceiveData):
* Source/WebKit/WebProcess/Network/WebResourceLoader.h:
* Source/WebKit/WebProcess/Network/WebResourceLoader.messages.in:
* Source/WebKit/WebProcess/Storage/WebServiceWorkerFetchTaskClient.cpp:
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveData):
(WebKit::WebServiceWorkerFetchTaskClient::didReceiveBlobChunk):
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
* Source/WebKit/WebProcess/WebCoreSupport/WebEditorClient.cpp:
(WebKit::WebEditorClient::registerAttachmentIdentifier):
* Source/WebKit/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::readBufferFromClipboard):
* Source/WebKit/WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::getContentsAsMHTMLData):
(WebKit::WebPage::getSelectionAsWebArchiveData):
(WebKit::WebPage::getMainResourceDataOfFrame):
(WebKit::WebPage::getResourceDataFromFrame):
(WebKit::WebPage::getWebArchiveOfFrame):
(WebKit::WebPage::getAccessibilityTreeData):
(WebKit::WebPage::drawToPDF):
(WebKit::WebPage::drawPagesToPDF):
(WebKit::WebPage::didGetLoadDecisionForIcon):
(WebKit::WebPage::urlSchemeTaskDidReceiveData):
(WebKit::WebPage::updateAttachmentAttributes):
* Source/WebKit/WebProcess/WebPage/WebPage.h:
* Source/WebKit/WebProcess/WebPage/WebPage.messages.in:
* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::drawToPDFiOS):
* Source/WebKit/WebProcess/WebProcess.h:
* Source/WebKit/WebProcess/WebProcess.messages.in:
* Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::consumeAudioComponentRegistrations):

Canonical link: https://commits.webkit.org/250949@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@294790 268f45cc-cd09-0410-ab3c-d52691b4dbfc

@jyavenard jyavenard self-assigned this May 24, 2022
@jyavenard jyavenard added Other WebKit2 Bugs relating to the WebKit2 API layer labels May 24, 2022
@jyavenard jyavenard changed the title P Rename SharedBufferCopy to SharedBufferReference May 24, 2022
@webkit-early-warning-system webkit-early-warning-system added the merging-blocked Applied to prevent a change from being merged label May 24, 2022
@jyavenard jyavenard removed merging-blocked Applied to prevent a change from being merged WebKit2 Bugs relating to the WebKit2 API layer Other labels May 24, 2022
@jyavenard jyavenard changed the title Rename SharedBufferCopy to SharedBufferReference P May 24, 2022
@jyavenard jyavenard added Other WebKit2 Bugs relating to the WebKit2 API layer labels May 24, 2022
@jyavenard jyavenard changed the title P Rename SharedBufferCopy to SharedBufferReference May 24, 2022
@jyavenard jyavenard changed the title Rename SharedBufferCopy to SharedBufferReference P May 24, 2022
@jyavenard jyavenard changed the title P Rename SharedBufferCopy to SharedBufferReference May 24, 2022
@webkit-early-warning-system webkit-early-warning-system added the merging-blocked Applied to prevent a change from being merged label May 24, 2022
@jyavenard jyavenard removed merging-blocked Applied to prevent a change from being merged WebKit2 Bugs relating to the WebKit2 API layer Other labels May 24, 2022
@jyavenard jyavenard changed the title Rename SharedBufferCopy to SharedBufferReference P May 24, 2022
@jyavenard jyavenard added Other WebKit2 Bugs relating to the WebKit2 API layer labels May 24, 2022
@jyavenard jyavenard changed the title P Rename SharedBufferCopy to SharedBufferReference May 24, 2022
Copy link
Contributor

@jernoble jernoble left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

r=me with comment nits inline.

@jyavenard jyavenard added the merge-queue Applied to send a pull request to merge-queue label May 25, 2022
@webkit-early-warning-system webkit-early-warning-system merged commit 7003d0d into WebKit:main May 25, 2022
@webkit-early-warning-system
Copy link
Collaborator

Committed r294790 (250949@main): https://commits.webkit.org/250949@main

Reviewed commits have been landed. Closing PR #968 and removing active labels.

@webkit-early-warning-system webkit-early-warning-system removed the merge-queue Applied to send a pull request to merge-queue label May 25, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

WebKit2 Bugs relating to the WebKit2 API layer

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants