diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2016-06-01 20:32:40 +0530 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2016-06-10 20:53:36 +0530 |
commit | 6e29b872d7fb8556ea7dd610e82868b6f719f24e (patch) | |
tree | fac1e6bfefb3d80eb5a69a93f4b2fbc7cba74b7d /components/script/dom | |
parent | 8bcf54deb521f09ebbc14e75ca311d826a8ea559 (diff) | |
download | servo-6e29b872d7fb8556ea7dd610e82868b6f719f24e.tar.gz servo-6e29b872d7fb8556ea7dd610e82868b6f719f24e.zip |
Test fixes:
- Hack to stop hitting unreachable on referer
- add fetch_done to make sync work
- Make datauris work by setting the response URI, spec bug
- Allow for empty bodies
- Make request bodies work (pass to http, fix fencepost in iter count)
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/xmlhttprequest.rs | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 7239ae5a745..7425a2feff3 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -230,12 +230,14 @@ impl XMLHttpRequest { *self.sync_status.borrow_mut() = Some(rv); } } - fn process_response_eof(&mut self, response: Result<Vec<u8>, NetworkError>) { + fn process_response_eof(&mut self, response: Result<Option<Vec<u8>>, NetworkError>) { match response { Ok(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()); + 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()); + } let rv = self.xhr.root().process_response_complete(self.gen_id, Ok(())); *self.sync_status.borrow_mut() = Some(rv); } @@ -244,8 +246,17 @@ impl XMLHttpRequest { *self.sync_status.borrow_mut() = Some(rv); } } - - + } + 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)); + } + } } } @@ -261,7 +272,6 @@ impl XMLHttpRequest { script_chan: script_chan, }; ROUTER.add_route(action_receiver.to_opaque(), box move |message| { - println!("routing"); listener.notify_fetch(message.to().unwrap()); }); core_resource_thread.send(Fetch(init, action_sender)).unwrap(); @@ -525,6 +535,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest { }; // Step 4 let extracted = data.as_ref().map(|d| d.extract()); + self.request_body_len.set(extracted.as_ref().map_or(0, |e| e.0.len())); // todo preserved headers? @@ -604,6 +615,7 @@ impl XMLHttpRequestMethods for XMLHttpRequest { debug!("request_headers = {:?}", *self.request_headers.borrow()); self.fetch_time.set(time::now().to_timespec().sec); + let rv = self.fetch(request, self.global().r()); // Step 10 if self.sync.get() { |