WebKit export of https://bugs.webkit.org/show_bug.cgi?id=233725 (#31821)
diff --git a/html/semantics/forms/form-submission-0/constructing-form-data-set.html b/html/semantics/forms/form-submission-0/constructing-form-data-set.html
index a6c5e91..c27270e 100644
--- a/html/semantics/forms/form-submission-0/constructing-form-data-set.html
+++ b/html/semantics/forms/form-submission-0/constructing-form-data-set.html
@@ -77,6 +77,26 @@
assert_true(didCallHandler);
}, '"formdata" event bubbles in an orphan tree.');
+for (const enctype of ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"]) {
+ test((t) => {
+ let form = populateForm('<input name=file type=file><input name=empty type=file>');
+ form.enctype = enctype;
+
+ const file = new File([], "filename");
+ const dataTransfer = new DataTransfer();
+ dataTransfer.items.add(file);
+ form.querySelector('input[name=file]').files = dataTransfer.files;
+
+ form.addEventListener('formdata', t.step_func(e => {
+ assert_true(e.formData.has('file'));
+ assert_equals(e.formData.get('file'), file);
+ assert_true(e.formData.has('empty'));
+ assert_true(e.formData.get('empty') instanceof File);
+ }));
+ form.submit();
+ }, `Files in a ${enctype} form show up as File objects in the "formData" IDL attribute`);
+}
+
test(() => {
let listener1ok = false;
let listeern2ok = false;