mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Auto merge of #25561 - pshaughn:formdata-same-file, r=jdm
Make File objects roundtrip through FormData FormData.append now only creates a new File object if it needs to file-wrap a blob or set a filename, and not when appending an existing File with no filename override. The hardest part here was reading the specification in a way that matched browser behavior. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #24939 - [X] There are tests for these changes <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
This commit is contained in:
commit
0bd995cdf5
2 changed files with 10 additions and 14 deletions
|
@ -185,12 +185,19 @@ impl FormDataMethods for FormData {
|
|||
|
||||
impl FormData {
|
||||
// https://xhr.spec.whatwg.org/#create-an-entry
|
||||
// Steps 3-4.
|
||||
fn create_an_entry(&self, blob: &Blob, opt_filename: Option<USVString>) -> DomRoot<File> {
|
||||
// Steps 3-4
|
||||
let name = match opt_filename {
|
||||
Some(filename) => DOMString::from(filename.0),
|
||||
None if blob.downcast::<File>().is_none() => DOMString::from("blob"),
|
||||
None => DOMString::from(""),
|
||||
None => match blob.downcast::<File>() {
|
||||
None => DOMString::from("blob"),
|
||||
// If it is already a file and no filename was given,
|
||||
// then neither step 3 nor step 4 happens, so instead of
|
||||
// creating a new File object we use the existing one.
|
||||
Some(file) => {
|
||||
return DomRoot::from_ref(file);
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
let bytes = blob.get_bytes().unwrap_or(vec![]);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue