diff --git a/components/script/dom/bindings/js.rs b/components/script/dom/bindings/js.rs index 970281c2977..ea4a8af2f56 100644 --- a/components/script/dom/bindings/js.rs +++ b/components/script/dom/bindings/js.rs @@ -83,6 +83,14 @@ impl Unrooted { } } + /// Create a new unrooted value from a `JS`. + #[allow(unrooted_must_root)] + pub fn from_js(ptr: JS) -> Unrooted { + Unrooted { + ptr: ptr.ptr + } + } + /// Get the `Reflector` for this pointer. pub fn reflector<'a>(&'a self) -> &'a Reflector { unsafe { diff --git a/components/script/dom/formdata.rs b/components/script/dom/formdata.rs index 85f3279aa9b..5d8e5a8f809 100644 --- a/components/script/dom/formdata.rs +++ b/components/script/dom/formdata.rs @@ -88,9 +88,7 @@ impl<'a> FormDataMethods for JSRef<'a, FormData> { match (*self.data.borrow())[name][0].clone() { FormDatum::StringData(ref s) => Some(eString(s.clone())), FormDatum::FileData(ref f) => { - Some(eFile(unsafe { - Unrooted::from_raw(f.unsafe_get()) - })) + Some(eFile(Unrooted::from_js(*f))) } } } else {