Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 57d9da4c518ba2e2a1ef2d69c64e78be4a73b69a
      
https://github.com/WebKit/WebKit/commit/57d9da4c518ba2e2a1ef2d69c64e78be4a73b69a
  Author: Anne van Kesteren <[email protected]>
  Date:   2026-09-16 (Wed, 16 Sep 2026)

  Changed paths:
    M 
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/gc.any-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/gc.any.js
    M 
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/gc.any.serviceworker-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/gc.any.sharedworker-expected.txt
    M 
LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/gc.any.worker-expected.txt
    M Source/WebCore/Modules/fetch/FetchBody.cpp
    M Source/WebCore/Modules/fetch/FetchBody.h

  Log Message:
  -----------
  A FormData body should survive collection of its source
https://bugs.webkit.org/show_bug.cgi?id=324258

Reviewed by Youenn Fablet.

FetchBody::extract() turned a DOMFormData into a FormData and then dropped it.
FormData keeps only the blob: URLs of its file entries, so once the DOMFormData
was collected the files went with it. This showed up as flakiness in
multipart/form-data tests (bug 323972), where a Response is built from a
FormData and read back.

Per Fetch the body's source is the FormData object, so keep it: the registry
reference counts registrations, and holding the files keeps the data alive
whether or not anything else still refers to it. clone() copies the source and
createProxy() moves it, matching what each does with the body.

Tests upstream: https://github.com/web-platform-tests/wpt/pull/62715
                https://github.com/web-platform-tests/wpt/pull/62738

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



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

Reply via email to