mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Re-add support for fetching chunks (and thus xhr download progress)
This commit is contained in:
parent
6e29b872d7
commit
bf99e73cb0
5 changed files with 96 additions and 87 deletions
|
@ -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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue