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

Reply via email to