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

Reply via email to