servo: Merge #10167 - Fix fetching about:blank (from stjepang:fix-aboutblank-body); r=KiChjang

When fetching about:blank, response body should be the empty byte
sequence.
Spec: https://fetch.spec.whatwg.org/#concept-basic-fetch

Before this change, response body would be set to `ResponseBody::Empty`,
and then fetching would result in an infinite loop at step 19 in fn
`main_fetch` (methods.rs).

r? @KiChjang

Source-Repo: https://github.com/servo/servo
Source-Revision: 446783f7b6f0b55164b3b3c3e8be90c2b392cf97
This commit is contained in:
Stjepan Glavina 2016-03-24 16:11:19 +05:01
parent 197775e7f4
commit 50512a2a04
2 changed files with 15 additions and 0 deletions

View File

@ -294,6 +294,7 @@ fn basic_fetch(request: Rc<Request>) -> Response {
response.headers.set(ContentType(Mime(
TopLevel::Text, SubLevel::Html,
vec![(Attr::Charset, Value::Utf8)])));
*response.body.lock().unwrap() = ResponseBody::Done(vec![]);
response
},
_ => Response::network_error()

View File

@ -94,6 +94,20 @@ fn test_fetch_response_body_matches_const_message() {
};
}
#[test]
fn test_fetch_aboutblank() {
let url = Url::parse("about:blank").unwrap();
let origin = Origin::Origin(url.origin());
let mut request = Request::new(url, Some(origin), false);
request.referer = Referer::NoReferer;
let wrapped_request = Rc::new(request);
let fetch_response = fetch(wrapped_request);
assert!(!fetch_response.is_network_error());
assert!(*fetch_response.body.lock().unwrap() == ResponseBody::Done(vec![]));
}
#[test]
fn test_fetch_response_is_basic_filtered() {