[webkit-changes] [WebKit/WebKit] 5540bc: IPC::Attachment is used as an encoded type on Darw...

Kimmo Kinnunen noreply at github.com
Mon Sep 12 06:57:15 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5540bc1e9de439efe4fbad14560569e807318332
      https://github.com/WebKit/WebKit/commit/5540bc1e9de439efe4fbad14560569e807318332
  Author: Kimmo Kinnunen <kkinnunen at apple.com>
  Date:   2022-09-12 (Mon, 12 Sep 2022)

  Changed paths:
    M LayoutTests/ipc/create-connection-and-send-async.html
    M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp
    M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h
    M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.messages.in
    M Source/WebKit/GPUProcess/GPUProcess.cpp
    M Source/WebKit/GPUProcess/GPUProcess.h
    M Source/WebKit/GPUProcess/GPUProcess.messages.in
    M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
    M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
    M Source/WebKit/NetworkProcess/NetworkProcess.cpp
    M Source/WebKit/NetworkProcess/NetworkProcess.h
    M Source/WebKit/NetworkProcess/NetworkProcess.messages.in
    R Source/WebKit/Platform/IPC/Attachment.cpp
    M Source/WebKit/Platform/IPC/Attachment.h
    M Source/WebKit/Platform/IPC/Connection.h
    M Source/WebKit/Platform/IPC/Decoder.cpp
    M Source/WebKit/Platform/IPC/ReceiverMatcher.h
    M Source/WebKit/Platform/IPC/StreamClientConnection.cpp
    M Source/WebKit/Platform/IPC/StreamClientConnection.h
    M Source/WebKit/Platform/IPC/StreamServerConnection.cpp
    M Source/WebKit/Platform/IPC/StreamServerConnection.h
    M Source/WebKit/Platform/IPC/cocoa/ConnectionCocoa.mm
    M Source/WebKit/Platform/IPC/darwin/ArgumentCodersDarwin.h
    M Source/WebKit/Platform/IPC/darwin/ArgumentCodersDarwin.mm
    M Source/WebKit/Platform/IPC/unix/AttachmentUnix.cpp
    M Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp
    R Source/WebKit/Platform/IPC/win/AttachmentWin.cpp
    M Source/WebKit/Platform/IPC/win/ConnectionWin.cpp
    M Source/WebKit/Platform/Sources.txt
    M Source/WebKit/PlatformWin.cmake
    M Source/WebKit/Scripts/webkit/messages.py
    M Source/WebKit/Shared/IPCConnectionTester.cpp
    M Source/WebKit/Shared/IPCConnectionTester.h
    M Source/WebKit/Shared/IPCTester.cpp
    M Source/WebKit/Shared/IPCTester.h
    M Source/WebKit/Shared/IPCTester.messages.in
    M Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
    M Source/WebKit/UIProcess/GPU/GPUProcessProxy.h
    M Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.cpp
    M Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.h
    M Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.messages.in
    M Source/WebKit/UIProcess/Launcher/ProcessLauncher.cpp
    M Source/WebKit/UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm
    M Source/WebKit/UIProcess/WebProcessPool.cpp
    M Source/WebKit/UIProcess/WebProcessPool.h
    M Source/WebKit/UIProcess/WebProcessProxy.cpp
    M Source/WebKit/UIProcess/WebProcessProxy.h
    M Source/WebKit/UIProcess/WebProcessProxy.messages.in
    M Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp
    M Source/WebKit/UIProcess/linux/MemoryPressureMonitor.h
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
    M Source/WebKit/WebProcess/Inspector/WebInspector.cpp
    M Source/WebKit/WebProcess/Inspector/WebInspector.h
    M Source/WebKit/WebProcess/Inspector/WebInspector.messages.in
    M Source/WebKit/WebProcess/Network/NetworkProcessConnection.h
    M Source/WebKit/WebProcess/Network/NetworkProcessConnectionInfo.h
    M Source/WebKit/WebProcess/WebPage/IPCTestingAPI.cpp
    M Source/WebKit/WebProcess/WebProcess.cpp
    M Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.h

  Log Message:
  -----------
  IPC::Attachment is used as an encoded type on Darwin and Windows
https://bugs.webkit.org/show_bug.cgi?id=244882
rdar://problem/99638429

Reviewed by Fujii Hironori.

IPC messages were using IPC::Attachment when IPC::Connection was
being transferred via IPC. This was a problem as it is not what
IPC::Attachment is intended to implement. Also the type does not
provide a type safe explanation of the  object being transferred.

IPC::Attachment was encoded and decoded. This was a problem
because IPC::Attachment is the attachment to the encoder or
decoder. It is logically redundant to have encode/decode
capability in the type that has the purpose of representing
something that cannot be encoded or decoded.

Fix by introducing IPC::Connection::Handle type for transferrable
IPC::Connection. Currently that is Win32Handle, UnixFileDescriptor
or MachSendRight.

Remove IPC::Attachment from OS(WINDOWS), as there are no objects
that would be transferred as non-data. Win32Handles are transferred
as normal PID,HANDLE data number pair.

Remove IPC::Attachment::encode(), as each un-encodable object
should add themselves as encoder attachments upon encoding.

Remove IPC::Attachment::decode(), same logic by above.

* LayoutTests/ipc/create-connection-and-send-async.html:
* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:
(WebKit::GPUConnectionToWebProcess::create):
(WebKit::GPUConnectionToWebProcess::GPUConnectionToWebProcess):
(WebKit::GPUConnectionToWebProcess::createRenderingBackend):
* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h:
* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.messages.in:
* Source/WebKit/GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::createGPUConnectionToWebProcess):
(WebKit::asConnectionIdentifier): Deleted.
* Source/WebKit/GPUProcess/GPUProcess.h:
* Source/WebKit/GPUProcess/GPUProcess.messages.in:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::create):
(WebKit::RemoteRenderingBackend::RemoteRenderingBackend):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
* Source/WebKit/NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::createNetworkConnectionToWebProcess):
* Source/WebKit/NetworkProcess/NetworkProcess.h:
* Source/WebKit/NetworkProcess/NetworkProcess.messages.in:
* Source/WebKit/Platform/IPC/Attachment.cpp: Removed.
* Source/WebKit/Platform/IPC/Attachment.h:
(IPC::Attachment::customWriter const):
(IPC::Attachment::Attachment::type const): Deleted.
(IPC::Attachment::Attachment::isNull const): Deleted.
(IPC::Attachment::Attachment::size const): Deleted.
(IPC::Attachment::Attachment::fd const): Deleted.
(IPC::Attachment::Attachment::release): Deleted.
(IPC::Attachment::Attachment::customWriter const): Deleted.
* Source/WebKit/Platform/IPC/Connection.h:
(IPC::Connection::Identifier::Identifier):
* Source/WebKit/Platform/IPC/Decoder.cpp:
(IPC::Decoder::takeLastAttachment):
* Source/WebKit/Platform/IPC/ReceiverMatcher.h:
* Source/WebKit/Platform/IPC/StreamServerConnection.cpp:
(IPC::StreamServerConnection::createWithDedicatedConnection):
* Source/WebKit/Platform/IPC/cocoa/ConnectionCocoa.mm:
(IPC::Connection::open):
(IPC::Connection::sendOutgoingMessage):
(IPC::Connection::receiveSourceEventHandler):
(IPC::Connection::createConnectionIdentifierPair):
* Source/WebKit/Platform/IPC/darwin/ArgumentCodersDarwin.h:
* Source/WebKit/Platform/IPC/darwin/ArgumentCodersDarwin.mm:
(IPC::ArgumentCoder<MachSendRight>::encode):
(IPC::ArgumentCoder<MachSendRight>::decode):
* Source/WebKit/Platform/IPC/unix/AttachmentUnix.cpp:
(IPC::Attachment::Attachment):
(IPC::Attachment::encode const):
(IPC::Attachment::decode):
* Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp:
(IPC::Connection::createConnectionIdentifierPair):
* Source/WebKit/Platform/IPC/win/AttachmentWin.cpp: Removed.
* Source/WebKit/Platform/IPC/win/ConnectionWin.cpp:
(IPC::Connection::createConnectionIdentifierPair):
* Source/WebKit/Platform/Sources.txt:
* Source/WebKit/PlatformWin.cmake:
* Source/WebKit/Scripts/webkit/messages.py:
(argument_coder_headers_for_type):
* Source/WebKit/Shared/IPCConnectionTester.cpp:
(WebKit::IPCConnectionTester::create):
(WebKit::IPCConnectionTester::IPCConnectionTester):
(WebKit::asIdentifier): Deleted.
* Source/WebKit/Shared/IPCConnectionTester.h:
* Source/WebKit/Shared/IPCTester.cpp:
(WebKit::IPCTester::createConnectionTester):
(WebKit::IPCTester::createConnectionTesterAndSendAsyncMessages):
* Source/WebKit/Shared/IPCTester.h:
* Source/WebKit/Shared/IPCTester.messages.in:
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp:
(WebKit::GPUProcessProxy::createGPUProcessConnection):
* Source/WebKit/UIProcess/GPU/GPUProcessProxy.h:
* Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.cpp:
(WebKit::WebInspectorUIProxy::setFrontendConnection):
* Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.h:
* Source/WebKit/UIProcess/Inspector/WebInspectorUIProxy.messages.in:
* Source/WebKit/UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::createGPUProcessConnection):
* Source/WebKit/UIProcess/WebProcessPool.h:
* Source/WebKit/UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::createGPUProcessConnection):
* Source/WebKit/UIProcess/WebProcessProxy.h:
* Source/WebKit/UIProcess/WebProcessProxy.messages.in:
* Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::getNetworkProcessConnection):
* Source/WebKit/UIProcess/linux/MemoryPressureMonitor.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/Inspector/WebInspector.cpp:
(WebKit::WebInspector::setFrontendConnection):
* Source/WebKit/WebProcess/Inspector/WebInspector.h:
* Source/WebKit/WebProcess/Inspector/WebInspector.messages.in:
* Source/WebKit/WebProcess/Network/NetworkProcessConnection.h:
(WebKit::NetworkProcessConnection::create):
* Source/WebKit/WebProcess/Network/NetworkProcessConnectionInfo.h:
(WebKit::NetworkProcessConnectionInfo::identifier const): Deleted.
(WebKit::NetworkProcessConnectionInfo::releaseIdentifier): Deleted.
* Source/WebKit/WebProcess/WebPage/IPCTestingAPI.cpp:
(WebKit::IPCTestingAPI::JSIPCConnectionHandle::create):
(WebKit::IPCTestingAPI::JSIPCConnectionHandle::encode const):
(WebKit::IPCTestingAPI::JSIPCConnectionHandle::JSIPCConnectionHandle):
(WebKit::IPCTestingAPI::JSIPCConnectionHandle::createJSWrapper):
(WebKit::IPCTestingAPI::JSIPCConnectionHandle::wrapperClass):
(WebKit::IPCTestingAPI::JSIPCConnectionHandle::unwrap):
(WebKit::IPCTestingAPI::JSIPCConnectionHandle::toWrapped):
(WebKit::IPCTestingAPI::JSIPCConnectionHandle::initialize):
(WebKit::IPCTestingAPI::JSIPCConnectionHandle::finalize):
(WebKit::IPCTestingAPI::JSIPCConnectionHandle::staticFunctions):
(WebKit::IPCTestingAPI::encodeConnectionHandle):
(WebKit::IPCTestingAPI::encodeArgument):
(WebKit::IPCTestingAPI::JSIPC::createConnectionPair):
(WebKit::IPCTestingAPI::JSIPCAttachment::create): Deleted.
(WebKit::IPCTestingAPI::JSIPCAttachment::encode const): Deleted.
(WebKit::IPCTestingAPI::JSIPCAttachment::JSIPCAttachment): Deleted.
(WebKit::IPCTestingAPI::JSIPCAttachment::createJSWrapper): Deleted.
(WebKit::IPCTestingAPI::JSIPCAttachment::wrapperClass): Deleted.
(WebKit::IPCTestingAPI::JSIPCAttachment::unwrap): Deleted.
(WebKit::IPCTestingAPI::JSIPCAttachment::toWrapped): Deleted.
(WebKit::IPCTestingAPI::JSIPCAttachment::initialize): Deleted.
(WebKit::IPCTestingAPI::JSIPCAttachment::finalize): Deleted.
(WebKit::IPCTestingAPI::JSIPCAttachment::staticFunctions): Deleted.
(WebKit::IPCTestingAPI::encodeAttachment): Deleted.
* Source/WebKit/WebProcess/WebProcess.cpp:
(WebKit::getNetworkProcessConnection):
(WebKit::WebProcess::ensureNetworkProcessConnection):
* Source/WebKit/WebProcess/cocoa/PlaybackSessionManager.h:

Canonical link: https://commits.webkit.org/254379@main




More information about the webkit-changes mailing list