aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2016-06-01 20:32:40 +0530
committerManish Goregaokar <manishsmail@gmail.com>2016-06-10 20:53:36 +0530
commit6e29b872d7fb8556ea7dd610e82868b6f719f24e (patch)
treefac1e6bfefb3d80eb5a69a93f4b2fbc7cba74b7d /components/script/dom
parent8bcf54deb521f09ebbc14e75ca311d826a8ea559 (diff)
downloadservo-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.rs26
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() {