Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 538ad3aecfc8ee20c27bbd0126d855337c202df4
https://github.com/WebKit/WebKit/commit/538ad3aecfc8ee20c27bbd0126d855337c202df4
Author: Youenn Fablet <[email protected]>
Date: 2026-07-23 (Thu, 23 Jul 2026)
Changed paths:
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.h2-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.serviceworker-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.sharedworker-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.worker-expected.txt
A
LayoutTests/platform/glib/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https.h2-expected.txt
M Source/WebCore/Headers.cmake
M Source/WebCore/Sources.txt
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/PendingStreamState.cpp
A Source/WebCore/platform/network/PendingStreamState.h
M Source/WebCore/platform/network/cf/FormDataStreamCFNet.mm
M Source/WebKit/NetworkProcess/NetworkDataTask.cpp
M Source/WebKit/NetworkProcess/NetworkDataTask.h
M Source/WebKit/NetworkProcess/NetworkLoad.cpp
M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
M Source/WebKit/NetworkProcess/NetworkResourceLoader.h
M Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h
M Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
Log Message:
-----------
FormData upload should be able to dereference the stream from its identifier
in networking process
rdar://182523406
https://bugs.webkit.org/show_bug.cgi?id=319677
Reviewed by Alex Christensen.
We add to FormData a RefPtr<PendingStreamState> member.
It is set by NetworkResourceLoader so that NetworkResourceLoader will be able
to feed the PendingStreamState with data coming from web process via IPC.
NetworkDataTaskCocoa is setting the probe callback which allows to determine
whether the upload connection is HTTP2+ or not.
This is used in FormDataStreamCFNet at the time of creating CFNetwork stream
upload.
At that time, the NetworkDataTaskCocoa task is tied to a specific connection,
which allows to know whether the connection is HTTP2+ or not.
If connection is not HTTP2+, we fail the load as per fetch spec.
For cocoa, we no longer fail stream uploads for HTTP2+, even though there is no
data being uploaded yet.
We rebase WPT fetch/api/redirect/redirect-upload.h2.any.xxx.html tests as now
Fetch upload streams are accepted.
To keep the 301/302/307/308 test passings, we make sure that these uploads fail
except for 303, as per fetch specification in NetworkLoad.
For Glib, since we still fail stream uploads, we have to keep previous
expected.txt files for glib as is, hence the newly added
LayoutTests/platform/glib expectations.
Covered by existing and rebased tests.
*
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.h2-expected.txt:
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any-expected.txt:
Copied from
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any-expected.txt.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.serviceworker-expected.txt:
Copied from
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.serviceworker-expected.txt.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.sharedworker-expected.txt:
Copied from
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.sharedworker-expected.txt.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.worker-expected.txt:
Copied from
LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-upload.h2.any.worker-expected.txt.
*
LayoutTests/platform/glib/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https.h2-expected.txt:
Copied from
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https.h2-expected.txt.
* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/platform/network/FormData.cpp:
(WebCore::FormData::setPendingStreamState):
* Source/WebCore/platform/network/FormData.h:
* Source/WebCore/platform/network/PendingStreamState.cpp: Added.
(WebCore::PendingStreamState::DataAvailableHandler::create):
(WebCore::PendingStreamState::DataAvailableHandler::invoke):
(WebCore::PendingStreamState::DataAvailableHandler::DataAvailableHandler):
(WebCore::PendingStreamState::create):
(WebCore::PendingStreamState::setHTTPVersionProbe):
(WebCore::PendingStreamState::invokeHandlerIfNeeded):
(WebCore::PendingStreamState::appendData):
(WebCore::PendingStreamState::endStream):
(WebCore::PendingStreamState::errorStream):
(WebCore::PendingStreamState::setDataAvailableHandler):
(WebCore::PendingStreamState::clearDataAvailableHandler):
(WebCore::PendingStreamState::currentHTTPVersion):
(WebCore::PendingStreamState::read):
(WebCore::PendingStreamState::hasReadyData):
* Source/WebCore/platform/network/PendingStreamState.h: Added.
(WebCore::PendingStreamState::WTF_GUARDED_BY_LOCK):
* Source/WebCore/platform/network/cf/FormDataStreamCFNet.mm:
(WebCore::formOpen):
(WebCore::formRead):
(WebCore::formCanRead):
(WebCore::formCopyProperty):
(WebCore::PendingStreamFields::PendingStreamFields):
(WebCore::PendingStreamFields::cfFormStream):
(WebCore::pendingStreamCreate):
(WebCore::pendingStreamFinalize):
(WebCore::pendingStreamOpen):
(WebCore::pendingStreamRead):
(WebCore::pendingStreamCanRead):
(WebCore::pendingStreamClose):
(WebCore::pendingStreamCopyProperty):
(WebCore::pendingStreamSchedule):
(WebCore::pendingStreamUnschedule):
(WebCore::createHTTPBodyCFReadStream):
* Source/WebKit/NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::NetworkDataTask):
(WebKit::NetworkDataTask::hasPendingStreamBody const):
* Source/WebKit/NetworkProcess/NetworkDataTask.h:
(WebKit::NetworkDataTask::setBytesTransferredOverNetwork):
(WebKit::NetworkDataTask::hasPendingStreamBody const):
* Source/WebKit/NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::willPerformHTTPRedirection):
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
* Source/WebKit/NetworkProcess/NetworkResourceLoader.h:
* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
* Source/WebKit/NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::installPendingStreamProbe):
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
Canonical link: https://commits.webkit.org/317791@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications