fix: File to FormData not correctly handling name and lastModified (#36458)

Set File's lastModified when reconstructing from Blob for FormData
Remove special character replacement in fileName (spec removed this
step)

Testing: WPT tests exist
Fixes: #22744 (if I undertand the issue correctly the filename issue was
already fixed and now this fixes the lastModified part)

Signed-off-by: Sebastian C <sebsebmc@gmail.com>
This commit is contained in:
Sebastian C 2025-04-11 12:59:03 -05:00 committed by GitHub
parent 5c7cf7aed6
commit 2d2cfade36
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 7 additions and 21 deletions

View file

@ -108,6 +108,10 @@ impl File {
pub(crate) fn file_type(&self) -> String {
self.blob.type_string()
}
pub(crate) fn get_modified(&self) -> SystemTime {
self.modified
}
}
impl FileMethods<crate::DomTypeHolder> for File {
@ -132,15 +136,12 @@ impl FileMethods<crate::DomTypeHolder> for File {
.map(|modified| OffsetDateTime::UNIX_EPOCH + Duration::milliseconds(modified))
.map(Into::into);
// NOTE: Following behaviour might be removed in future,
// see https://github.com/w3c/FileAPI/issues/41
let replaced_filename = DOMString::from_string(filename.replace('/', ":"));
let type_string = normalize_type_string(blobPropertyBag.type_.as_ref());
Ok(File::new_with_proto(
global,
proto,
BlobImpl::new_from_bytes(bytes, type_string),
replaced_filename,
filename,
modified,
can_gc,
))