Auto merge of #19369 - tigercosmos:a1, r=jdm

Remove WrappedHttpResponse abstraction

<!-- Please describe your changes on the following line: -->
Remove `WrappedHttpResponse` abstraction, and use `HyperResponse`

---

<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #19361 (github issue number if applicable).

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19369)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2017-11-25 10:56:06 -06:00 committed by GitHub
commit adfd51c842

View file

@ -94,36 +94,6 @@ fn precise_time_ms() -> u64 {
time::precise_time_ns() / (1000 * 1000)
}
pub struct WrappedHttpResponse {
pub response: HyperResponse
}
impl Read for WrappedHttpResponse {
#[inline]
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
self.response.read(buf)
}
}
impl WrappedHttpResponse {
fn headers(&self) -> &Headers {
&self.response.headers
}
fn content_encoding(&self) -> Option<Encoding> {
let &ContentEncoding(ref encodings) = self.headers().get()?;
if encodings.contains(&Encoding::Gzip) {
Some(Encoding::Gzip)
} else if encodings.contains(&Encoding::Deflate) {
Some(Encoding::Deflate)
} else if encodings.contains(&Encoding::EncodingExt("br".to_owned())) {
Some(Encoding::EncodingExt("br".to_owned()))
} else {
None
}
}
}
// Step 3 of https://fetch.spec.whatwg.org/#concept-fetch.
pub fn set_default_accept(destination: Destination, headers: &mut Headers) {
if headers.has::<Accept>() {
@ -316,18 +286,21 @@ impl Read for StreamedResponse {
}
impl StreamedResponse {
fn from_http_response(response: WrappedHttpResponse) -> io::Result<StreamedResponse> {
let decoder = match response.content_encoding() {
Some(Encoding::Gzip) => {
Decoder::Gzip(GzDecoder::new(response)?)
}
Some(Encoding::Deflate) => {
Decoder::Deflate(DeflateDecoder::new(response))
}
Some(Encoding::EncodingExt(ref ext)) if ext == "br" => {
Decoder::Brotli(Decompressor::new(response, 1024))
}
_ => {
fn from_http_response(response: HyperResponse) -> io::Result<StreamedResponse> {
let decoder = {
if let Some(ref encoding) = response.headers.get::<ContentEncoding>().cloned() {
if encoding.contains(&Encoding::Gzip) {
Decoder::Gzip(GzDecoder::new(response)?)
}
else if encoding.contains(&Encoding::Deflate) {
Decoder::Deflate(DeflateDecoder::new(response))
}
else if encoding.contains(&Encoding::EncodingExt("br".to_owned())) {
Decoder::Brotli(Decompressor::new(response, 1024))
} else {
Decoder::Plain(response)
}
} else {
Decoder::Plain(response)
}
};
@ -336,10 +309,10 @@ impl StreamedResponse {
}
enum Decoder {
Gzip(GzDecoder<WrappedHttpResponse>),
Deflate(DeflateDecoder<WrappedHttpResponse>),
Brotli(Decompressor<WrappedHttpResponse>),
Plain(WrappedHttpResponse)
Gzip(GzDecoder<HyperResponse>),
Deflate(DeflateDecoder<HyperResponse>),
Brotli(Decompressor<HyperResponse>),
Plain(HyperResponse)
}
fn prepare_devtools_request(request_id: String,
@ -406,7 +379,7 @@ fn obtain_response(connector: &Pool<Connector>,
iters: u32,
request_id: Option<&str>,
is_xhr: bool)
-> Result<(WrappedHttpResponse, Option<ChromeToDevtoolsControlMsg>), NetworkError> {
-> Result<(HyperResponse, Option<ChromeToDevtoolsControlMsg>), NetworkError> {
let null_data = None;
// loop trying connections in connection pool
@ -499,8 +472,7 @@ fn obtain_response(connector: &Pool<Connector>,
debug!("Not notifying devtools (no request_id)");
None
};
return Ok((WrappedHttpResponse { response: response }, msg));
return Ok((response, msg));
}
}
@ -1078,16 +1050,16 @@ fn http_network_fetch(request: &Request,
if log_enabled!(log::LogLevel::Info) {
info!("response for {}", url);
for header in res.response.headers.iter() {
for header in res.headers.iter() {
info!(" - {}", header);
}
}
let mut response = Response::new(url.clone());
response.status = Some(res.response.status);
response.raw_status = Some((res.response.status_raw().0,
res.response.status_raw().1.as_bytes().to_vec()));
response.headers = res.response.headers.clone();
response.status = Some(res.status);
response.raw_status = Some((res.status_raw().0,
res.status_raw().1.as_bytes().to_vec()));
response.headers = res.headers.clone();
response.referrer = request.referrer.to_url().cloned();
response.referrer_policy = request.referrer_policy.clone();