Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: b43d9276ab01200f23cc6e40dabda2d7b767396d https://github.com/WebKit/WebKit/commit/b43d9276ab01200f23cc6e40dabda2d7b767396d Author: Kimmo Kinnunen <kkinnu...@apple.com> Date: 2022-10-26 (Wed, 26 Oct 2022)
Changed paths: M Source/WebKit/Platform/IPC/Connection.cpp M Source/WebKit/Platform/IPC/Connection.h M Source/WebKit/Platform/IPC/HandleMessage.h M Source/WebKit/Platform/IPC/MessageSender.cpp M Source/WebKit/Platform/IPC/MessageSender.h M Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp M Source/WebKit/UIProcess/AuxiliaryProcessProxy.h M Source/WebKit/UIProcess/DrawingAreaProxy.cpp M Source/WebKit/UIProcess/DrawingAreaProxy.h M Source/WebKit/UIProcess/ProvisionalPageProxy.cpp M Source/WebKit/UIProcess/ProvisionalPageProxy.h M Source/WebKit/UIProcess/SuspendedPageProxy.cpp M Source/WebKit/UIProcess/SuspendedPageProxy.h M Source/WebKit/UIProcess/WebPageProxy.cpp M Source/WebKit/UIProcess/WebPageProxy.h M Source/WebKit/WebProcess/WebPage/IPCTestingAPI.cpp M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj M Tools/TestWebKitAPI/Tests/IPC/ConnectionTests.cpp A Tools/TestWebKitAPI/Tests/IPC/IPCTestUtilities.cpp A Tools/TestWebKitAPI/Tests/IPC/IPCTestUtilities.h A Tools/TestWebKitAPI/Tests/IPC/MessageSenderTests.cpp Log Message: ----------- IPC::MessageSender::sendWithAsyncReply is not consistent with send failures https://bugs.webkit.org/show_bug.cgi?id=246457 rdar://problem/101124692 Reviewed by Chris Dumez. The MessageSender would add the async reply handler to the connection regardless of whether the message send failed or not. This was a result of exposing Connection-internal addAsyncReplyHandler() function. Move the addAsyncReplyHandler() out of the Connection interface and handle the send failures inside Connection. This is possible by changing the async message format: first encode the arguments in the message-specific template and then and inside message agnostic Connection::sendMessageWithAsyncReply encode the pre-allocated replyID. The replyID must be preallocated at the moment as AuxiliaryProcessProxy delays the commit of the reply handler. This is a requirement for fix other concurrency bugs between connection thread calling invalidate() and another thread calling sendWithAsyncReply(). These fixes will be made in future commits. * Source/WebKit/Platform/IPC/Connection.cpp: (IPC::addAsyncReplyHandler): (IPC::Connection::sendMessageWithAsyncReply): * Source/WebKit/Platform/IPC/Connection.h: (IPC::Connection::makeAsyncReplyHandler): (IPC::Connection::sendWithAsyncReply): * Source/WebKit/Platform/IPC/HandleMessage.h: (IPC::handleMessageAsync): (IPC::handleMessageAsyncWantsConnection): * Source/WebKit/Platform/IPC/MessageSender.cpp: (IPC::MessageSender::sendMessage): (IPC::MessageSender::sendMessageWithAsyncReply): * Source/WebKit/Platform/IPC/MessageSender.h: * Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp: (WebKit::AuxiliaryProcessProxy::sendMessage): (WebKit::AuxiliaryProcessProxy::didFinishLaunching): (WebKit::AuxiliaryProcessProxy::replyToPendingMessages): * Source/WebKit/UIProcess/AuxiliaryProcessProxy.h: (WebKit::AuxiliaryProcessProxy::sendWithAsyncReply): * Source/WebKit/UIProcess/DrawingAreaProxy.cpp: (WebKit::DrawingAreaProxy::sendMessage): (WebKit::DrawingAreaProxy::sendMessageWithAsyncReply): * Source/WebKit/UIProcess/DrawingAreaProxy.h: * Source/WebKit/UIProcess/ProvisionalPageProxy.cpp: (WebKit::ProvisionalPageProxy::sendMessage): (WebKit::ProvisionalPageProxy::sendMessageWithAsyncReply): * Source/WebKit/UIProcess/ProvisionalPageProxy.h: * Source/WebKit/UIProcess/SuspendedPageProxy.cpp: (WebKit::SuspendedPageProxy::sendMessage): (WebKit::SuspendedPageProxy::sendMessageWithAsyncReply): * Source/WebKit/UIProcess/SuspendedPageProxy.h: * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::sendMessage): (WebKit::WebPageProxy::sendMessageWithAsyncReply): * Source/WebKit/UIProcess/WebPageProxy.h: * Source/WebKit/WebProcess/WebPage/IPCTestingAPI.cpp: (WebKit::IPCTestingAPI::sendMessageWithJSArguments): * Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * Tools/TestWebKitAPI/Tests/IPC/ConnectionTests.cpp: (): Deleted. (TestWebKitAPI::PrintTo): Deleted. (TestWebKitAPI::OpenedConnectionTest::serverIsA const): Deleted. (TestWebKitAPI::OpenedConnectionTest::SetUp): Deleted. (TestWebKitAPI::OpenedConnectionTest::TearDown): Deleted. (TestWebKitAPI::OpenedConnectionTest::openA): Deleted. (TestWebKitAPI::OpenedConnectionTest::openB): Deleted. (TestWebKitAPI::OpenedConnectionTest::openBoth): Deleted. (TestWebKitAPI::OpenedConnectionTest::a): Deleted. (TestWebKitAPI::OpenedConnectionTest::aClient): Deleted. (TestWebKitAPI::OpenedConnectionTest::b): Deleted. (TestWebKitAPI::OpenedConnectionTest::bClient): Deleted. (TestWebKitAPI::OpenedConnectionTest::deleteA): Deleted. (TestWebKitAPI::OpenedConnectionTest::deleteB): Deleted. Canonical link: https://commits.webkit.org/256008@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes