aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/filereader.rs
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-07-29 04:41:19 -0600
committerbors-servo <metajack+bors@gmail.com>2015-07-29 04:41:19 -0600
commit96b0f96ce2829cc38457ace22be4f731f8ca9d77 (patch)
tree14a7e549707c3e98d38397a6f62076def1d23dae /components/script/dom/filereader.rs
parent2ec4c49de8c57ecd93abdd145d7929d5c85c1669 (diff)
parent20f99e92d81601f323660df52f31544adf38334a (diff)
downloadservo-96b0f96ce2829cc38457ace22be4f731f8ca9d77.tar.gz
servo-96b0f96ce2829cc38457ace22be4f731f8ca9d77.zip
Auto merge of #6803 - farodin91:blob, r=Ms2ger
Adding for support Blob.{close,isClose} #6723 <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6803) <!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/filereader.rs')
-rw-r--r--components/script/dom/filereader.rs28
1 files changed, 23 insertions, 5 deletions
diff --git a/components/script/dom/filereader.rs b/components/script/dom/filereader.rs
index 09f6c83a99e..256b1c8b6bc 100644
--- a/components/script/dom/filereader.rs
+++ b/components/script/dom/filereader.rs
@@ -2,6 +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::codegen::Bindings::BlobBinding::BlobMethods;
use dom::bindings::codegen::Bindings::FileReaderBinding::{self, FileReaderConstants, FileReaderMethods};
use dom::bindings::codegen::InheritTypes::{EventCast, EventTargetCast};
use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull;
@@ -268,7 +269,6 @@ impl FileReader {
Ok(Some(output))
}
-
}
impl<'a> FileReaderMethods for &'a FileReader {
@@ -287,13 +287,22 @@ impl<'a> FileReaderMethods for &'a FileReader {
if self.ready_state.get() == FileReaderReadyState::Loading {
return Err(InvalidState);
}
- //TODO STEP 2 if isClosed implemented in Blob
+
+ // Step 2
+ if blob.IsClosed() {
+ let global = self.global.root();
+ let exception = DOMException::new(global.r(), DOMErrorName::InvalidStateError);
+ self.error.set(Some(JS::from_rooted(&exception)));
+
+ self.dispatch_progress_event("error".to_owned(), 0, None);
+ return Ok(());
+ }
// Step 3
self.change_ready_state(FileReaderReadyState::Loading);
let bytes = blob.read_out_buffer();
- let type_ = blob.read_out_type();
+ let type_ = blob.Type();
let load_data = ReadData::new(bytes, type_, None, FileReaderFunction::ReadAsDataUrl);
@@ -307,13 +316,22 @@ impl<'a> FileReaderMethods for &'a FileReader {
if self.ready_state.get() == FileReaderReadyState::Loading {
return Err(InvalidState);
}
- //TODO STEP 2 if isClosed implemented in Blob
+
+ // Step 2
+ if blob.IsClosed() {
+ let global = self.global.root();
+ let exception = DOMException::new(global.r(), DOMErrorName::InvalidStateError);
+ self.error.set(Some(JS::from_rooted(&exception)));
+
+ self.dispatch_progress_event("error".to_owned(), 0, None);
+ return Ok(());
+ }
// Step 3
self.change_ready_state(FileReaderReadyState::Loading);
let bytes = blob.read_out_buffer();
- let type_ = blob.read_out_type();
+ let type_ = blob.Type();
let load_data = ReadData::new(bytes, type_, label, FileReaderFunction::ReadAsText);