diff options
Diffstat (limited to 'src/components/script/dom/blob.rs')
-rw-r--r-- | src/components/script/dom/blob.rs | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/src/components/script/dom/blob.rs b/src/components/script/dom/blob.rs index 04964af092e..ff5958478b6 100644 --- a/src/components/script/dom/blob.rs +++ b/src/components/script/dom/blob.rs @@ -2,7 +2,7 @@ * 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::js::JS; +use dom::bindings::js::{JS, JSRef, Temporary}; use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object}; use dom::bindings::error::Fallible; use dom::bindings::codegen::BindingDeclarations::BlobBinding; @@ -16,38 +16,46 @@ pub struct Blob { } impl Blob { - pub fn new_inherited(window: JS<Window>) -> Blob { + pub fn new_inherited(window: &JSRef<Window>) -> Blob { Blob { reflector_: Reflector::new(), - window: window + window: window.unrooted() } } - pub fn new(window: &JS<Window>) -> JS<Blob> { - reflect_dom_object(~Blob::new_inherited(window.clone()), + pub fn new(window: &JSRef<Window>) -> Temporary<Blob> { + reflect_dom_object(~Blob::new_inherited(window), window, BlobBinding::Wrap) } -} -impl Blob { - pub fn Constructor(window: &JS<Window>) -> Fallible<JS<Blob>> { + pub fn Constructor(window: &JSRef<Window>) -> Fallible<Temporary<Blob>> { Ok(Blob::new(window)) } +} + +pub trait BlobMethods { + fn Size(&self) -> u64; + fn Type(&self) -> DOMString; + fn Slice(&self, _start: Option<i64>, _end: Option<i64>, _contentType: Option<DOMString>) -> Temporary<Blob>; + fn Close(&self); +} - pub fn Size(&self) -> u64 { +impl<'a> BlobMethods for JSRef<'a, Blob> { + fn Size(&self) -> u64 { 0 } - pub fn Type(&self) -> DOMString { + fn Type(&self) -> DOMString { ~"" } - pub fn Slice(&self, _start: Option<i64>, _end: Option<i64>, _contentType: Option<DOMString>) -> JS<Blob> { - Blob::new(&self.window) + fn Slice(&self, _start: Option<i64>, _end: Option<i64>, _contentType: Option<DOMString>) -> Temporary<Blob> { + let window = self.window.root(); + Blob::new(&window.root_ref()) } - pub fn Close(&self) {} + fn Close(&self) {} } impl Reflectable for Blob { |