diff options
author | bors-servo <release+servo@mozilla.com> | 2014-06-11 13:59:01 -0400 |
---|---|---|
committer | bors-servo <release+servo@mozilla.com> | 2014-06-11 13:59:01 -0400 |
commit | cc23f3c4360a37e4dc763d4eade779a411a6d97a (patch) | |
tree | 96ce5978f42f60edcf01d974f63074882832c7eb /src/components/script/dom/formdata.rs | |
parent | 6e2a9169580e6e0a77b5c7154230ded6116178ae (diff) | |
parent | c41dd2477d19e68272afc11f198f2a71c320abd2 (diff) | |
download | servo-cc23f3c4360a37e4dc763d4eade779a411a6d97a.tar.gz servo-cc23f3c4360a37e4dc763d4eade779a411a6d97a.zip |
auto merge of #2633 : Ms2ger/servo/derefmut, r=jdm
Part of #1854.
Diffstat (limited to 'src/components/script/dom/formdata.rs')
-rw-r--r-- | src/components/script/dom/formdata.rs | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/components/script/dom/formdata.rs b/src/components/script/dom/formdata.rs index 142b08fc262..40dc6935fe6 100644 --- a/src/components/script/dom/formdata.rs +++ b/src/components/script/dom/formdata.rs @@ -2,15 +2,17 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object}; -use dom::bindings::error::{Fallible}; use dom::bindings::codegen::Bindings::FormDataBinding; +use dom::bindings::error::{Fallible}; use dom::bindings::js::{JS, JSRef, Temporary, OptionalUnrootable}; +use dom::bindings::trace::Traceable; +use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object}; use dom::blob::Blob; use dom::htmlformelement::HTMLFormElement; use dom::window::Window; use servo_util::str::DOMString; use collections::hashmap::HashMap; +use std::cell::RefCell; #[deriving(Encodable)] pub enum FormDatum { @@ -20,7 +22,7 @@ pub enum FormDatum { #[deriving(Encodable)] pub struct FormData { - pub data: HashMap<DOMString, FormDatum>, + pub data: Traceable<RefCell<HashMap<DOMString, FormDatum>>>, pub reflector_: Reflector, pub window: JS<Window>, pub form: Option<JS<HTMLFormElement>> @@ -29,7 +31,7 @@ pub struct FormData { impl FormData { pub fn new_inherited(form: Option<JSRef<HTMLFormElement>>, window: &JSRef<Window>) -> FormData { FormData { - data: HashMap::new(), + data: Traceable::new(RefCell::new(HashMap::new())), reflector_: Reflector::new(), window: window.unrooted(), form: form.unrooted(), @@ -46,21 +48,21 @@ impl FormData { } pub trait FormDataMethods { - fn Append(&mut self, name: DOMString, value: &JSRef<Blob>, filename: Option<DOMString>); - fn Append_(&mut self, name: DOMString, value: DOMString); + fn Append(&self, name: DOMString, value: &JSRef<Blob>, filename: Option<DOMString>); + fn Append_(&self, name: DOMString, value: DOMString); } impl<'a> FormDataMethods for JSRef<'a, FormData> { - fn Append(&mut self, name: DOMString, value: &JSRef<Blob>, filename: Option<DOMString>) { + fn Append(&self, name: DOMString, value: &JSRef<Blob>, filename: Option<DOMString>) { let blob = BlobData { blob: value.unrooted(), name: filename.unwrap_or("default".to_string()) }; - self.data.insert(name.clone(), blob); + self.data.deref().borrow_mut().insert(name.clone(), blob); } - fn Append_(&mut self, name: DOMString, value: DOMString) { - self.data.insert(name, StringData(value)); + fn Append_(&self, name: DOMString, value: DOMString) { + self.data.deref().borrow_mut().insert(name, StringData(value)); } } |