diff options
author | Zhen Zhang <izgzhen@gmail.com> | 2016-08-08 20:55:26 +0200 |
---|---|---|
committer | Zhen Zhang <izgzhen@gmail.com> | 2016-08-10 12:58:35 +0200 |
commit | 184b52223091cd822dbacb79eea6bde6b992d2e3 (patch) | |
tree | f1b9fd4c2e02ba87ecf6280f042ac8233b221fc7 /components/script/dom/xmlhttprequest.rs | |
parent | c420a870c1b1bca7e740e8bb737ef2bcdb1a139d (diff) | |
download | servo-184b52223091cd822dbacb79eea6bde6b992d2e3.tar.gz servo-184b52223091cd822dbacb79eea6bde6b992d2e3.zip |
Add XHR support for FormData
Diffstat (limited to 'components/script/dom/xmlhttprequest.rs')
-rw-r--r-- | components/script/dom/xmlhttprequest.rs | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index b35ffef73c5..1d58e118cf4 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -26,6 +26,7 @@ use dom::document::{Document, IsHTMLDocument}; use dom::event::{Event, EventBubbles, EventCancelable}; use dom::eventtarget::EventTarget; use dom::headers::is_forbidden_header_name; +use dom::htmlformelement::{encode_multipart_form_data, generate_boundary}; use dom::progressevent::ProgressEvent; use dom::xmlhttprequesteventtarget::XMLHttpRequestEventTarget; use dom::xmlhttprequestupload::XMLHttpRequestUpload; @@ -1355,12 +1356,12 @@ impl Extractable for BodyInit { let encoding = UTF_8 as EncodingRef; (encoding.encode(s, EncoderTrap::Replace).unwrap(), Some(DOMString::from("text/plain;charset=UTF-8"))) - }, + } BodyInit::URLSearchParams(ref usp) => { // Default encoding is UTF-8. (usp.serialize(None).into_bytes(), Some(DOMString::from("application/x-www-form-urlencoded;charset=UTF-8"))) - }, + } BodyInit::Blob(ref b) => { let content_type = if b.Type().as_ref().is_empty() { None @@ -1369,7 +1370,13 @@ impl Extractable for BodyInit { }; let bytes = b.get_bytes().unwrap_or(vec![]); (bytes, content_type) - }, + } + BodyInit::FormData(ref formdata) => { + let boundary = generate_boundary(); + let bytes = encode_multipart_form_data(&mut formdata.datums(), boundary.clone(), + UTF_8 as EncodingRef); + (bytes, Some(DOMString::from(format!("multipart/form-data;boundary={}", boundary)))) + } } } } |