LibWeb: Set the MIME type when creating an <input> element's File list

We were passing the MIME type to the underlying Blob, but the factory
for creating a File only checks an explicit options structure.
This commit is contained in:
Timothy Flynn 2024-03-13 16:05:32 -04:00 committed by Andreas Kling
parent 0cc8698a62
commit f55471333b
Notes: sideshowbarker 2024-07-17 21:26:19 +09:00
3 changed files with 17 additions and 13 deletions

View File

@ -1,12 +1,12 @@
Select file...file1 Select files...4 files selected. input1:
file1 (index iteration): Contents for file1
file1 (for..of iteration): Contents for file1
file1 (index iteration): text/plain: Contents for file1
file1 (for..of iteration): text/plain: Contents for file1
input2:
file1 (index iteration): Contents for file1
file2 (index iteration): Contents for file2
file3 (index iteration): Contents for file3
file4 (index iteration): Contents for file4
file1 (for..of iteration): Contents for file1
file2 (for..of iteration): Contents for file2
file3 (for..of iteration): Contents for file3
file4 (for..of iteration): Contents for file4
file1 (index iteration): text/plain: Contents for file1
file2 (index iteration): text/plain: Contents for file2
file3 (index iteration): text/plain: Contents for file3
file4 (index iteration): text/plain: Contents for file4
file1 (for..of iteration): text/plain: Contents for file1
file2 (for..of iteration): text/plain: Contents for file2
file3 (for..of iteration): text/plain: Contents for file3
file4 (for..of iteration): text/plain: Contents for file4

View File

@ -13,13 +13,13 @@
const file = input.files.item(i);
const text = await file.text();
println(`${file.name} (index iteration): ${text}`);
println(`${file.name} (index iteration): ${file.type}: ${text}`);
}
for (let file of input.files) {
const text = await file.text();
println(`${file.name} (for..of iteration): ${text}`);
println(`${file.name} (for..of iteration): ${file.type}: ${text}`);
}
resolve();

View File

@ -422,7 +422,11 @@ void HTMLInputElement::did_select_files(Span<SelectedFile> selected_files)
// FIXME: The FileAPI should use ByteString for file names.
auto file_name = MUST(String::from_byte_string(selected_file.name()));
auto file = MUST(FileAPI::File::create(realm(), { JS::make_handle(blob) }, file_name));
// FIXME: Fill in other fields (e.g. last_modified).
FileAPI::FilePropertyBag options {};
options.type = mime_type.essence();
auto file = MUST(FileAPI::File::create(realm(), { JS::make_handle(blob) }, file_name, move(options)));
files.unchecked_append(file);
}