[webkit-changes] [WebKit/WebKit] 069295: [WK2] Provide generic callReply(), cancelReply() f...

Žan Doberšek noreply at github.com
Tue Nov 22 06:45:45 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 069295b2bd5be1a999e9187001c361c602415b91
      https://github.com/WebKit/WebKit/commit/069295b2bd5be1a999e9187001c361c602415b91
  Author: Žan Doberšek <zan at falconsigh.net>
  Date:   2022-11-22 (Tue, 22 Nov 2022)

  Changed paths:
    M Source/WebKit/Platform/IPC/Connection.h
    M Source/WebKit/Scripts/webkit/messages.py
    M Source/WebKit/Scripts/webkit/tests/TestWithCVPixelBufferMessageReceiver.cpp
    M Source/WebKit/Scripts/webkit/tests/TestWithCVPixelBufferMessages.h
    M Source/WebKit/Scripts/webkit/tests/TestWithImageDataMessageReceiver.cpp
    M Source/WebKit/Scripts/webkit/tests/TestWithImageDataMessages.h
    M Source/WebKit/Scripts/webkit/tests/TestWithLegacyReceiverMessageReceiver.cpp
    M Source/WebKit/Scripts/webkit/tests/TestWithLegacyReceiverMessages.h
    M Source/WebKit/Scripts/webkit/tests/TestWithSemaphoreMessageReceiver.cpp
    M Source/WebKit/Scripts/webkit/tests/TestWithSemaphoreMessages.h
    M Source/WebKit/Scripts/webkit/tests/TestWithStreamMessages.h
    M Source/WebKit/Scripts/webkit/tests/TestWithSuperclassMessageReceiver.cpp
    M Source/WebKit/Scripts/webkit/tests/TestWithSuperclassMessages.h
    M Source/WebKit/Scripts/webkit/tests/TestWithoutAttributesMessageReceiver.cpp
    M Source/WebKit/Scripts/webkit/tests/TestWithoutAttributesMessages.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/RemoteWebLockRegistry.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp
    M Tools/TestWebKitAPI/Tests/IPC/IPCTestUtilities.h

  Log Message:
  -----------
  [WK2] Provide generic callReply(), cancelReply() functions instead of per-message variants
https://bugs.webkit.org/show_bug.cgi?id=248132

Reviewed by Darin Adler.

For each asynchronous IPC message, the callReply() and cancelReply()
static functions are generated. The first decodes each specified reply
argument before invoking the completion handler, bailing if the decoding
failed at any point. The second cancels the reply by invoking the
completion handler with an AsyncReplyError value for every reply
parameter.

These distinct functions can be replaced by single generic variants that
work with the ReplyArguments tuple that's defined for each message that
expects a reply. Connection::callReply() decodes a tuple of reply
arguments before invoking the completion handler, bailing if decoding
failed. Connection::cancelReply() also invokes the completion handler,
but providing AsyncReplyError values for each reply parameter.

Different header inclusions are added to avoid incomplete types. A solid
chunk of code generation is removed from messages.py, and unit tests are
updated to reflect the reduction of generated code.

* Source/WebKit/Platform/IPC/Connection.h:
(IPC::Connection::makeAsyncReplyHandler):
(IPC::Connection::callReply):
(IPC::Connection::cancelReply):
* Source/WebKit/Scripts/webkit/messages.py:
(function_parameter_type):
(message_to_struct_declaration):
(generate_message_handler):
(reply_parameter_type): Deleted.
(move_type): Deleted.
* Source/WebKit/Scripts/webkit/tests/TestWithCVPixelBufferMessageReceiver.cpp:
(Messages::TestWithCVPixelBuffer::ReceiveCVPixelBuffer::callReply): Deleted.
(Messages::TestWithCVPixelBuffer::ReceiveCVPixelBuffer::cancelReply): Deleted.
* Source/WebKit/Scripts/webkit/tests/TestWithCVPixelBufferMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithImageDataMessageReceiver.cpp:
(Messages::TestWithImageData::ReceiveImageData::callReply): Deleted.
(Messages::TestWithImageData::ReceiveImageData::cancelReply): Deleted.
* Source/WebKit/Scripts/webkit/tests/TestWithImageDataMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithLegacyReceiverMessageReceiver.cpp:
(Messages::TestWithLegacyReceiver::CreatePlugin::callReply): Deleted.
(Messages::TestWithLegacyReceiver::CreatePlugin::cancelReply): Deleted.
(Messages::TestWithLegacyReceiver::RunJavaScriptAlert::callReply): Deleted.
(Messages::TestWithLegacyReceiver::RunJavaScriptAlert::cancelReply): Deleted.
(Messages::TestWithLegacyReceiver::GetPlugins::callReply): Deleted.
(Messages::TestWithLegacyReceiver::GetPlugins::cancelReply): Deleted.
(Messages::TestWithLegacyReceiver::InterpretKeyEvent::callReply): Deleted.
(Messages::TestWithLegacyReceiver::InterpretKeyEvent::cancelReply): Deleted.
* Source/WebKit/Scripts/webkit/tests/TestWithLegacyReceiverMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithSemaphoreMessageReceiver.cpp:
(Messages::TestWithSemaphore::ReceiveSemaphore::callReply): Deleted.
(Messages::TestWithSemaphore::ReceiveSemaphore::cancelReply): Deleted.
* Source/WebKit/Scripts/webkit/tests/TestWithSemaphoreMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithStreamMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithSuperclassMessageReceiver.cpp:
(Messages::TestWithSuperclass::TestAsyncMessage::callReply): Deleted.
(Messages::TestWithSuperclass::TestAsyncMessage::cancelReply): Deleted.
(Messages::TestWithSuperclass::TestAsyncMessageWithNoArguments::callReply): Deleted.
(Messages::TestWithSuperclass::TestAsyncMessageWithNoArguments::cancelReply): Deleted.
(Messages::TestWithSuperclass::TestAsyncMessageWithMultipleArguments::callReply): Deleted.
(Messages::TestWithSuperclass::TestAsyncMessageWithMultipleArguments::cancelReply): Deleted.
(Messages::TestWithSuperclass::TestAsyncMessageWithConnection::callReply): Deleted.
(Messages::TestWithSuperclass::TestAsyncMessageWithConnection::cancelReply): Deleted.
* Source/WebKit/Scripts/webkit/tests/TestWithSuperclassMessages.h:
* Source/WebKit/Scripts/webkit/tests/TestWithoutAttributesMessageReceiver.cpp:
(Messages::TestWithoutAttributes::CreatePlugin::callReply): Deleted.
(Messages::TestWithoutAttributes::CreatePlugin::cancelReply): Deleted.
(Messages::TestWithoutAttributes::RunJavaScriptAlert::callReply): Deleted.
(Messages::TestWithoutAttributes::RunJavaScriptAlert::cancelReply): Deleted.
(Messages::TestWithoutAttributes::GetPlugins::callReply): Deleted.
(Messages::TestWithoutAttributes::GetPlugins::cancelReply): Deleted.
(Messages::TestWithoutAttributes::InterpretKeyEvent::callReply): Deleted.
(Messages::TestWithoutAttributes::InterpretKeyEvent::cancelReply): Deleted.
* Source/WebKit/Scripts/webkit/tests/TestWithoutAttributesMessages.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
* Source/WebKit/WebProcess/WebCoreSupport/RemoteWebLockRegistry.cpp:
* Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:
* Tools/TestWebKitAPI/Tests/IPC/IPCTestUtilities.h:
(TestWebKitAPI::MockTestMessageWithAsyncReply1::callReply): Deleted.
(TestWebKitAPI::MockTestMessageWithAsyncReply1::cancelReply): Deleted.

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




More information about the webkit-changes mailing list