mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
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:
commit
adfd51c842
1 changed files with 26 additions and 54 deletions
|
@ -94,36 +94,6 @@ fn precise_time_ms() -> u64 {
|
||||||
time::precise_time_ns() / (1000 * 1000)
|
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.
|
// Step 3 of https://fetch.spec.whatwg.org/#concept-fetch.
|
||||||
pub fn set_default_accept(destination: Destination, headers: &mut Headers) {
|
pub fn set_default_accept(destination: Destination, headers: &mut Headers) {
|
||||||
if headers.has::<Accept>() {
|
if headers.has::<Accept>() {
|
||||||
|
@ -316,18 +286,21 @@ impl Read for StreamedResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl StreamedResponse {
|
impl StreamedResponse {
|
||||||
fn from_http_response(response: WrappedHttpResponse) -> io::Result<StreamedResponse> {
|
fn from_http_response(response: HyperResponse) -> io::Result<StreamedResponse> {
|
||||||
let decoder = match response.content_encoding() {
|
let decoder = {
|
||||||
Some(Encoding::Gzip) => {
|
if let Some(ref encoding) = response.headers.get::<ContentEncoding>().cloned() {
|
||||||
Decoder::Gzip(GzDecoder::new(response)?)
|
if encoding.contains(&Encoding::Gzip) {
|
||||||
}
|
Decoder::Gzip(GzDecoder::new(response)?)
|
||||||
Some(Encoding::Deflate) => {
|
}
|
||||||
Decoder::Deflate(DeflateDecoder::new(response))
|
else if encoding.contains(&Encoding::Deflate) {
|
||||||
}
|
Decoder::Deflate(DeflateDecoder::new(response))
|
||||||
Some(Encoding::EncodingExt(ref ext)) if ext == "br" => {
|
}
|
||||||
Decoder::Brotli(Decompressor::new(response, 1024))
|
else if encoding.contains(&Encoding::EncodingExt("br".to_owned())) {
|
||||||
}
|
Decoder::Brotli(Decompressor::new(response, 1024))
|
||||||
_ => {
|
} else {
|
||||||
|
Decoder::Plain(response)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
Decoder::Plain(response)
|
Decoder::Plain(response)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -336,10 +309,10 @@ impl StreamedResponse {
|
||||||
}
|
}
|
||||||
|
|
||||||
enum Decoder {
|
enum Decoder {
|
||||||
Gzip(GzDecoder<WrappedHttpResponse>),
|
Gzip(GzDecoder<HyperResponse>),
|
||||||
Deflate(DeflateDecoder<WrappedHttpResponse>),
|
Deflate(DeflateDecoder<HyperResponse>),
|
||||||
Brotli(Decompressor<WrappedHttpResponse>),
|
Brotli(Decompressor<HyperResponse>),
|
||||||
Plain(WrappedHttpResponse)
|
Plain(HyperResponse)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn prepare_devtools_request(request_id: String,
|
fn prepare_devtools_request(request_id: String,
|
||||||
|
@ -406,7 +379,7 @@ fn obtain_response(connector: &Pool<Connector>,
|
||||||
iters: u32,
|
iters: u32,
|
||||||
request_id: Option<&str>,
|
request_id: Option<&str>,
|
||||||
is_xhr: bool)
|
is_xhr: bool)
|
||||||
-> Result<(WrappedHttpResponse, Option<ChromeToDevtoolsControlMsg>), NetworkError> {
|
-> Result<(HyperResponse, Option<ChromeToDevtoolsControlMsg>), NetworkError> {
|
||||||
let null_data = None;
|
let null_data = None;
|
||||||
|
|
||||||
// loop trying connections in connection pool
|
// loop trying connections in connection pool
|
||||||
|
@ -499,8 +472,7 @@ fn obtain_response(connector: &Pool<Connector>,
|
||||||
debug!("Not notifying devtools (no request_id)");
|
debug!("Not notifying devtools (no request_id)");
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
return Ok((response, msg));
|
||||||
return Ok((WrappedHttpResponse { response: response }, msg));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1078,16 +1050,16 @@ fn http_network_fetch(request: &Request,
|
||||||
|
|
||||||
if log_enabled!(log::LogLevel::Info) {
|
if log_enabled!(log::LogLevel::Info) {
|
||||||
info!("response for {}", url);
|
info!("response for {}", url);
|
||||||
for header in res.response.headers.iter() {
|
for header in res.headers.iter() {
|
||||||
info!(" - {}", header);
|
info!(" - {}", header);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut response = Response::new(url.clone());
|
let mut response = Response::new(url.clone());
|
||||||
response.status = Some(res.response.status);
|
response.status = Some(res.status);
|
||||||
response.raw_status = Some((res.response.status_raw().0,
|
response.raw_status = Some((res.status_raw().0,
|
||||||
res.response.status_raw().1.as_bytes().to_vec()));
|
res.status_raw().1.as_bytes().to_vec()));
|
||||||
response.headers = res.response.headers.clone();
|
response.headers = res.headers.clone();
|
||||||
response.referrer = request.referrer.to_url().cloned();
|
response.referrer = request.referrer.to_url().cloned();
|
||||||
response.referrer_policy = request.referrer_policy.clone();
|
response.referrer_policy = request.referrer_policy.clone();
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue