diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2016-06-03 18:37:26 +0530 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2016-06-10 20:53:40 +0530 |
commit | bf99e73cb0dfb9a5977bfe2a1de779390d013e8b (patch) | |
tree | add59d54660d03738b376b8ca22df2290bad1fdc /components/script | |
parent | 6e29b872d7fb8556ea7dd610e82868b6f719f24e (diff) | |
download | servo-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.rs | 26 |
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 { |