aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/blob.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/script/dom/blob.rs')
-rw-r--r--src/components/script/dom/blob.rs34
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 {