Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 85ec3f6980f7fd9767bf955bb851f9b93d5d499c
https://github.com/WebKit/WebKit/commit/85ec3f6980f7fd9767bf955bb851f9b93d5d499c
Author: Ruthvik Konda <[email protected]>
Date: 2026-07-27 (Mon, 27 Jul 2026)
Changed paths:
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/Scripts/webkit/messages_unittest.py
M Source/WebKit/Scripts/webkit/tests/Makefile
M Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp
M Source/WebKit/Scripts/webkit/tests/MessageNames.cpp
M Source/WebKit/Scripts/webkit/tests/MessageNames.h
A Source/WebKit/Scripts/webkit/tests/TestWithStreamSwift.messages.in
A Source/WebKit/Scripts/webkit/tests/TestWithStreamSwiftMessageReceiver.cpp
A
Source/WebKit/Scripts/webkit/tests/TestWithStreamSwiftMessageReceiver.swift
A Source/WebKit/Scripts/webkit/tests/TestWithStreamSwiftMessages.h
Log Message:
-----------
Stream IPC message receivers can call directly into Swift
https://bugs.webkit.org/show_bug.cgi?id=320035
rdar://182967586
Reviewed by Adrian Taylor.
The IPC code generator can already emit a Swift message receiver for
non-stream receivers (as used by WebBackForwardList), but not for Stream
receivers. A Stream receiver dispatches off the main thread and uses a
different base class (IPC::StreamMessageReceiver) and entry point
(didReceiveStreamMessage), so a receiver marked both Stream and SwiftReceiver
was generated with the wrong shape. Supporting it is a prerequisite for moving
stream-based receivers such as RemoteMesh to Swift.
Teach the generator to emit the stream-shaped forwarder: it inherits
IPC::StreamMessageReceiver (itself ThreadSafeRefCounted, so its refcount is
atomic for the off-main work queue), overrides didReceiveStreamMessage, and
forwards ref()/deref() to the stream base. If the weakly-held Swift target has
already been destroyed (a benign off-main teardown race), the forwarder marks
the message invalid so the stream connection tears down cleanly instead of
leaving the shared buffer mis-framed.
Covered by a new fixture, TestWithStreamSwift, added to the IPC
message-generator test messages_unittest.py.
* Source/WebKit/Scripts/webkit/messages.py:
(forward_declarations_and_headers):
(generate_messages_header):
(generate_get_target_statements.append_swift_get_target_statements):
* Source/WebKit/Scripts/webkit/messages_unittest.py:
* Source/WebKit/Scripts/webkit/tests/Makefile:
* Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp:
* Source/WebKit/Scripts/webkit/tests/MessageNames.cpp:
* Source/WebKit/Scripts/webkit/tests/MessageNames.h:
* Source/WebKit/Scripts/webkit/tests/TestWithStreamSwift.messages.in: Added.
* Source/WebKit/Scripts/webkit/tests/TestWithStreamSwiftMessageReceiver.cpp:
Added.
* Source/WebKit/Scripts/webkit/tests/TestWithStreamSwiftMessageReceiver.swift:
Added.
* Source/WebKit/Scripts/webkit/tests/TestWithStreamSwiftMessages.h: Added.
Canonical link: https://commits.webkit.org/317984@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications