diff options
author | Simon Sapin <simon.sapin@exyr.org> | 2015-09-01 18:39:16 +0200 |
---|---|---|
committer | Simon Sapin <simon.sapin@exyr.org> | 2015-09-01 18:39:16 +0200 |
commit | 80d471d5cf82e2dab2f8c2c0c7ea496e8ce29a72 (patch) | |
tree | 003349216b9f38ebd451376a02cf5a5761a18b0a /components/script/dom/formdata.rs | |
parent | 2591a89a91945629cee5ea5df8598eff5334f24e (diff) | |
parent | 4404809e6d591ca7903e43deb693745300560d13 (diff) | |
download | servo-80d471d5cf82e2dab2f8c2c0c7ea496e8ce29a72.tar.gz servo-80d471d5cf82e2dab2f8c2c0c7ea496e8ce29a72.zip |
Merge branch 'master' into calc
Diffstat (limited to 'components/script/dom/formdata.rs')
-rw-r--r-- | components/script/dom/formdata.rs | 43 |
1 files changed, 16 insertions, 27 deletions
diff --git a/components/script/dom/formdata.rs b/components/script/dom/formdata.rs index cd26613cb74..8631cefbd4a 100644 --- a/components/script/dom/formdata.rs +++ b/components/script/dom/formdata.rs @@ -30,7 +30,6 @@ pub enum FormDatum { } #[dom_struct] -#[derive(HeapSizeOf)] pub struct FormData { reflector_: Reflector, data: DOMRefCell<HashMap<DOMString, Vec<FormDatum>>>, @@ -58,10 +57,10 @@ impl FormData { } } -impl<'a> FormDataMethods for &'a FormData { +impl FormDataMethods for FormData { #[allow(unrooted_must_root)] // https://xhr.spec.whatwg.org/#dom-formdata-append - fn Append(self, name: DOMString, value: &Blob, filename: Option<DOMString>) { + fn Append(&self, name: DOMString, value: &Blob, filename: Option<DOMString>) { let file = FormDatum::FileData(JS::from_rooted(&self.get_file_from_blob(value, filename))); let mut data = self.data.borrow_mut(); match data.entry(name) { @@ -73,7 +72,7 @@ impl<'a> FormDataMethods for &'a FormData { } // https://xhr.spec.whatwg.org/#dom-formdata-append - fn Append_(self, name: DOMString, value: DOMString) { + fn Append_(&self, name: DOMString, value: DOMString) { let mut data = self.data.borrow_mut(); match data.entry(name) { Occupied(entry) => entry.into_mut().push(FormDatum::StringData(value)), @@ -82,51 +81,41 @@ impl<'a> FormDataMethods for &'a FormData { } // https://xhr.spec.whatwg.org/#dom-formdata-delete - fn Delete(self, name: DOMString) { + fn Delete(&self, name: DOMString) { self.data.borrow_mut().remove(&name); } - #[allow(unsafe_code)] // https://xhr.spec.whatwg.org/#dom-formdata-get - fn Get(self, name: DOMString) -> Option<FileOrString> { - // FIXME(https://github.com/rust-lang/rust/issues/23338) - let data = self.data.borrow(); - if data.contains_key(&name) { - match data[&name][0].clone() { - FormDatum::StringData(ref s) => Some(eString(s.clone())), - FormDatum::FileData(ref f) => { - Some(eFile(f.root())) - } - } - } else { - None - } + fn Get(&self, name: DOMString) -> Option<FileOrString> { + self.data.borrow() + .get(&name) + .map(|entry| match entry[0] { + FormDatum::StringData(ref s) => eString(s.clone()), + FormDatum::FileData(ref f) => eFile(f.root()), + }) } // https://xhr.spec.whatwg.org/#dom-formdata-has - fn Has(self, name: DOMString) -> bool { + fn Has(&self, name: DOMString) -> bool { self.data.borrow().contains_key(&name) } // https://xhr.spec.whatwg.org/#dom-formdata-set - fn Set_(self, name: DOMString, value: DOMString) { + fn Set_(&self, name: DOMString, value: DOMString) { self.data.borrow_mut().insert(name, vec!(FormDatum::StringData(value))); } #[allow(unrooted_must_root)] // https://xhr.spec.whatwg.org/#dom-formdata-set - fn Set(self, name: DOMString, value: &Blob, filename: Option<DOMString>) { + fn Set(&self, name: DOMString, value: &Blob, filename: Option<DOMString>) { let file = FormDatum::FileData(JS::from_rooted(&self.get_file_from_blob(value, filename))); self.data.borrow_mut().insert(name, vec!(file)); } } -trait PrivateFormDataHelpers { - fn get_file_from_blob(self, value: &Blob, filename: Option<DOMString>) -> Root<File>; -} -impl<'a> PrivateFormDataHelpers for &'a FormData { - fn get_file_from_blob(self, value: &Blob, filename: Option<DOMString>) -> Root<File> { +impl FormData { + fn get_file_from_blob(&self, value: &Blob, filename: Option<DOMString>) -> Root<File> { let global = self.global.root(); let f: Option<&File> = FileCast::to_ref(value); let name = filename.unwrap_or(f.map(|inner| inner.name().clone()).unwrap_or("blob".to_owned())); |