Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 0a676123bd679af5b6d5f7c9be6e967b4437fab3
https://github.com/WebKit/WebKit/commit/0a676123bd679af5b6d5f7c9be6e967b4437fab3
Author: Youenn Fablet <[email protected]>
Date: 2026-07-22 (Wed, 22 Jul 2026)
Changed paths:
M LayoutTests/http/wpt/fetch/fetch-request-with-stream-body.html
M
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.serviceworker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.sharedworker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.worker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.serviceworker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.sharedworker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.worker-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https.h2-expected.txt
M
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any-expected.txt
M
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.serviceworker-expected.txt
M
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.sharedworker-expected.txt
M
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.worker-expected.txt
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WebCore/Headers.cmake
M Source/WebCore/Modules/fetch/FetchBody.cpp
M Source/WebCore/Modules/fetch/FetchResponse.cpp
M Source/WebCore/Modules/fetch/FormDataConsumer.cpp
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/platform/network/FormData.cpp
M Source/WebCore/platform/network/FormData.h
A Source/WebCore/platform/network/PendingStreamIdentifier.h
M Source/WebCore/platform/network/cf/FormDataStreamCFNet.mm
M Source/WebCore/platform/network/curl/CurlFormDataStream.cpp
M Source/WebCore/platform/network/soup/WebKitFormDataInputStream.cpp
M Source/WebKit/NetworkProcess/NetworkDataTask.cpp
M Source/WebKit/NetworkProcess/NetworkDataTask.h
M Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
M Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/Scripts/webkit/opaque_ipc_types.tracking.in
M Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp
M Source/WebKit/Shared/WTFArgumentCoders.serialization.in
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
M Source/WebKit/WebProcess/WebCoreSupport/SessionStateConversion.cpp
Log Message:
-----------
Start implementing fetch stream uploads
rdar://182510365
https://bugs.webkit.org/show_bug.cgi?id=319667
Reviewed by Alex Christensen.
We add a runtime flag to control fetch stream uploads.
When flag is on, we pass a stream identifier as part of a form data.
This is sent over to the networking process that can read it via
FormDataStreamCFNet.
We update FormDataStreamCFNet to handle this case and fail the load as a
temporary measure.
A follow-up patch will tie the FormData with NetworkDataTaskCocoa to detect
whether H1 or H2.
We do not yet support reading a stream form data from a service worker, we
currently reject with NotSupportedError.
A follow-up patch will fix this.
We explicitly fail the load in NetworkDataTaskSoup for now to align with cocoa.
Covered by existing and rebased tests.
* LayoutTests/http/wpt/fetch/fetch-request-with-stream-body.html:
*
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.serviceworker-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.sharedworker-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.worker-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.serviceworker-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.sharedworker-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.worker-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https.h2-expected.txt:
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any-expected.txt:
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.serviceworker-expected.txt:
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.sharedworker-expected.txt:
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.worker-expected.txt:
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/Headers.cmake:
* Source/WebCore/Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::bodyAsFormData const):
* Source/WebCore/Modules/fetch/FetchResponse.cpp:
(WebCore::FetchResponse::fetch):
* Source/WebCore/Modules/fetch/FormDataConsumer.cpp:
(WebCore::FormDataConsumer::read):
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/platform/network/FormData.cpp:
(WebCore::FormData::create):
(WebCore::FormDataElement::lengthInBytes const):
(WebCore::FormDataElement::isolatedCopy const):
(WebCore::FormData::isPendingStream const):
(WebCore::FormData::resolveBlobReferences):
* Source/WebCore/platform/network/FormData.h:
(WebCore::FormDataElement::FormDataElement):
(WebCore::FormDataElement::operator== const):
* Source/WebCore/platform/network/PendingStreamIdentifier.h: Added.
* Source/WebCore/platform/network/cf/FormDataStreamCFNet.mm:
(WebCore::advanceCurrentStream):
(WebCore::formOpen):
(WebCore::formRead):
(WebCore::formCanRead):
(WebCore::formCopyProperty):
(WebCore::createHTTPBodyCFReadStream):
* Source/WebCore/platform/network/curl/CurlFormDataStream.cpp:
(WebCore::CurlFormDataStream::read):
* Source/WebCore/platform/network/soup/WebKitFormDataInputStream.cpp:
(webkitFormDataInputStreamCreateNextStream):
* Source/WebKit/NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::NetworkDataTask):
* Source/WebKit/NetworkProcess/NetworkDataTask.h:
(WebKit::NetworkDataTask::hasPendingStreamBody const):
* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
* Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::createRequest):
* Source/WebKit/Scripts/webkit/messages.py:
(atomic_object_identifier):
(serialized_identifiers):
* Source/WebKit/Scripts/webkit/opaque_ipc_types.tracking.in:
* Source/WebKit/Shared/WTFArgumentCoders.serialization.in:
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/WebProcess/WebCoreSupport/SessionStateConversion.cpp:
(WebKit::toHTTPBody):
Canonical link: https://commits.webkit.org/317724@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications