aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2016-06-03 18:37:26 +0530
committerManish Goregaokar <manishsmail@gmail.com>2016-06-10 20:53:40 +0530
commitbf99e73cb0dfb9a5977bfe2a1de779390d013e8b (patch)
treeadd59d54660d03738b376b8ca22df2290bad1fdc /components/script
parent6e29b872d7fb8556ea7dd610e82868b6f719f24e (diff)
downloadservo-bf99e73cb0dfb9a5977bfe2a1de779390d013e8b.tar.gz
servo-bf99e73cb0dfb9a5977bfe2a1de779390d013e8b.zip
Re-add support for fetching chunks (and thus xhr download progress)
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/xmlhttprequest.rs26
1 files changed, 7 insertions, 19 deletions
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index 7425a2feff3..5a0866cc1bf 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -47,7 +47,7 @@ use net_traits::CoreResourceMsg::Fetch;
use net_traits::trim_http_whitespace;
use net_traits::{FetchResponseListener, Metadata, NetworkError, RequestSource};
use net_traits::{CoreResourceThread, LoadOrigin};
-use net_traits::request::{CredentialsMode, Destination, RequestInit, RequestMode, Origin};
+use net_traits::request::{CredentialsMode, Destination, RequestInit, RequestMode};
use network_listener::{NetworkListener, PreInvoke};
use parse::html::{ParseContext, parse_html};
use parse::xml::{self, parse_xml};
@@ -230,14 +230,13 @@ impl XMLHttpRequest {
*self.sync_status.borrow_mut() = Some(rv);
}
}
- fn process_response_eof(&mut self, response: Result<Option<Vec<u8>>, NetworkError>) {
+ fn process_response_chunk(&mut self, mut chunk: Vec<u8>) {
+ self.buf.borrow_mut().append(&mut chunk);
+ self.xhr.root().process_data_available(self.gen_id, self.buf.borrow().clone());
+ }
+ fn process_response_eof(&mut self, response: Result<(), NetworkError>) {
match response {
- Ok(buf) => {
- if let Some(buf) = buf {
- *self.buf.borrow_mut() = buf;
- // todo move to a process_chunk
- self.xhr.root().process_data_available(self.gen_id, self.buf.borrow().clone());
- }
+ Ok(()) => {
let rv = self.xhr.root().process_response_complete(self.gen_id, Ok(()));
*self.sync_status.borrow_mut() = Some(rv);
}
@@ -247,17 +246,6 @@ impl XMLHttpRequest {
}
}
}
- fn fetch_done(&mut self, response: Result<(Metadata, Option<Vec<u8>>), NetworkError>) {
- match response {
- Ok(response) => {
- self.process_response(Ok(response.0));
- self.process_response_eof(Ok(response.1));
- }
- Err(err) => {
- self.process_response_eof(Err(err));
- }
- }
- }
}
impl PreInvoke for XHRContext {