Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c9f3e1d327891574fc0d8b5fa734f0e7153a6ce3
      
https://github.com/WebKit/WebKit/commit/c9f3e1d327891574fc0d8b5fa734f0e7153a6ce3
  Author: Ankshit Jain <[email protected]>
  Date:   2025-12-02 (Tue, 02 Dec 2025)

  Changed paths:
    M Source/WebCore/Modules/streams/ReadableStreamSource.cpp
    M Source/WebCore/Modules/streams/ReadableStreamSource.h
    M Source/WebCore/Modules/streams/WritableStream.cpp
    M Source/WebCore/Modules/streams/WritableStream.h
    M Source/WebCore/Modules/webtransport/DatagramByteSource.cpp
    M Source/WebCore/Modules/webtransport/DatagramByteSource.h
    M Source/WebCore/Modules/webtransport/DatagramSource.cpp
    M Source/WebCore/Modules/webtransport/DatagramSource.h
    M Source/WebCore/Modules/webtransport/WebTransport.cpp
    M Source/WebCore/Modules/webtransport/WebTransport.h
    M Source/WebCore/Modules/webtransport/WebTransportReceiveStreamSource.cpp
    M Source/WebCore/Modules/webtransport/WebTransportReceiveStreamSource.h
    M Source/WebCore/Modules/webtransport/WebTransportSessionClient.h
    M Source/WebCore/Modules/webtransport/WorkerWebTransportSession.cpp
    M Source/WebCore/Modules/webtransport/WorkerWebTransportSession.h
    M Source/WebCore/PAL/pal/spi/cocoa/NetworkSPI.h
    M Source/WebCore/bindings/js/InternalWritableStream.cpp
    M Source/WebCore/bindings/js/InternalWritableStream.h
    M Source/WebCore/bindings/js/ReadableStreamDefaultController.cpp
    M Source/WebCore/bindings/js/ReadableStreamDefaultController.h
    M Source/WebKit/Configurations/AllowedSPI.toml
    M Source/WebKit/NetworkProcess/cocoa/NetworkSoftLink.h
    M Source/WebKit/NetworkProcess/cocoa/NetworkSoftLink.mm
    M Source/WebKit/NetworkProcess/webtransport/NetworkTransportSession.cpp
    M Source/WebKit/NetworkProcess/webtransport/NetworkTransportSession.h
    M Source/WebKit/NetworkProcess/webtransport/NetworkTransportStream.h
    M 
Source/WebKit/NetworkProcess/webtransport/cocoa/NetworkTransportSessionCocoa.mm
    M 
Source/WebKit/NetworkProcess/webtransport/cocoa/NetworkTransportStreamCocoa.mm
    M Source/WebKit/WebProcess/Network/WebTransportSession.cpp
    M Source/WebKit/WebProcess/Network/WebTransportSession.h
    M Source/WebKit/WebProcess/Network/WebTransportSession.messages.in
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WebTransport.mm

  Log Message:
  -----------
  WebTransport should be able to cancel reads or writes for a stream
https://bugs.webkit.org/show_bug.cgi?id=303152
rdar://160150325

Reviewed by Alex Christensen.

This PR plumbs sending and receiving RESET_STREAM_AT and STOP_SENDING signals 
on the streams.

The sending flow does not take the stream error code into account right now.
This is tracked by existing FIXMEs in 
`WebTransportReceiveStreamSource::doCancel` and 
`WebTransportSendStreamSink::error`.

It also fixes the cleanup procedure for WebTransport, using the correct 
exception to terminate the readable and writable streams.

Test: Tools/TestWebKitAPI/Tests/WebKitCocoa/WebTransport.mm

* Source/WebCore/Modules/streams/ReadableStreamSource.cpp:
(WebCore::ReadableStreamSource::error):
* Source/WebCore/Modules/streams/ReadableStreamSource.h:
* Source/WebCore/Modules/streams/WritableStream.cpp:
(WebCore::WritableStream::errorIfPossible):
* Source/WebCore/Modules/streams/WritableStream.h:
* Source/WebCore/Modules/webtransport/DatagramByteSource.cpp:
(WebCore::DatagramByteSource::error):
* Source/WebCore/Modules/webtransport/DatagramByteSource.h:
* Source/WebCore/Modules/webtransport/DatagramSource.cpp:
(WebCore::DatagramDefaultSource::error):
* Source/WebCore/Modules/webtransport/DatagramSource.h:
* Source/WebCore/Modules/webtransport/WebTransport.cpp:
(WebCore::WebTransport::receiveBidirectionalStream):
(WebCore::WebTransport::streamReceiveError):
(WebCore::WebTransport::streamSendError):
(WebCore::WebTransport::cleanup):
(WebCore::WebTransport::createBidirectionalStream):
(WebCore::WebTransport::createUnidirectionalStream):
(WebCore::WebTransport::didFail):
* Source/WebCore/Modules/webtransport/WebTransport.h:
* Source/WebCore/Modules/webtransport/WebTransportReceiveStreamSource.cpp:
(WebCore::WebTransportReceiveStreamSource::receiveError):
* Source/WebCore/Modules/webtransport/WebTransportReceiveStreamSource.h:
* Source/WebCore/Modules/webtransport/WebTransportSessionClient.h:
* Source/WebCore/Modules/webtransport/WorkerWebTransportSession.cpp:
(WebCore::WorkerWebTransportSession::didFail):
(WebCore::WorkerWebTransportSession::streamReceiveError):
(WebCore::WorkerWebTransportSession::streamSendError):
* Source/WebCore/Modules/webtransport/WorkerWebTransportSession.h:
* Source/WebCore/PAL/pal/spi/cocoa/NetworkSPI.h:
* Source/WebCore/bindings/js/InternalWritableStream.cpp:
(WebCore::InternalWritableStream::errorIfPossible):
* Source/WebCore/bindings/js/InternalWritableStream.h:
* Source/WebCore/bindings/js/ReadableStreamDefaultController.cpp:
(WebCore::ReadableStreamDefaultController::error):
* Source/WebCore/bindings/js/ReadableStreamDefaultController.h:
* Source/WebKit/Configurations/AllowedSPI.toml:
* Source/WebKit/NetworkProcess/cocoa/NetworkSoftLink.h:
* Source/WebKit/NetworkProcess/cocoa/NetworkSoftLink.mm:
* Source/WebKit/NetworkProcess/webtransport/NetworkTransportSession.cpp:
(WebKit::NetworkTransportSession::streamReceiveError):
(WebKit::NetworkTransportSession::streamSendError):
* Source/WebKit/NetworkProcess/webtransport/NetworkTransportSession.h:
* Source/WebKit/NetworkProcess/webtransport/NetworkTransportStream.h:
* 
Source/WebKit/NetworkProcess/webtransport/cocoa/NetworkTransportSessionCocoa.mm:
(WebKit::NetworkTransportSession::setupConnectionHandler):
(WebKit::NetworkTransportSession::createStream):
* 
Source/WebKit/NetworkProcess/webtransport/cocoa/NetworkTransportStreamCocoa.mm:
(WebKit::NetworkTransportStream::sendBytes):
(WebKit::NetworkTransportStream::receiveLoop):
(WebKit::NetworkTransportStream::cancel):
(WebKit::NetworkTransportStream::cancelReceive):
(WebKit::NetworkTransportStream::cancelSend):
(WebKit::NetworkTransportStream::setErrorCodeForStream): Deleted.
* Source/WebKit/WebProcess/Network/WebTransportSession.cpp:
(WebKit::WebTransportSession::streamReceiveError):
(WebKit::WebTransportSession::streamSendError):
(WebKit::WebTransportSession::didFail):
* Source/WebKit/WebProcess/Network/WebTransportSession.h:
* Source/WebKit/WebProcess/Network/WebTransportSession.messages.in:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WebTransport.mm:
(TestWebKitAPI::TEST(WebTransport, NetworkProcessCrash)):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to