mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Check in for task 1,4 and 5
Adding pipelineID to httpresponse message, clearner code for task1 Commit for Refactored task Unit tests Removing extra whitespaces. Removing extra whitespaces. Removing tabs whitespaces Making Code tidier. Style issues Fix Test-tidy Fixes
This commit is contained in:
parent
0d15101323
commit
b7de946205
13 changed files with 96 additions and 34 deletions
|
@ -23,6 +23,7 @@ use hyper::net::{Fresh, HttpsConnector, Openssl};
|
|||
use hyper::status::{StatusClass, StatusCode};
|
||||
use log;
|
||||
use mime_classifier::MIMEClassifier;
|
||||
use msg::constellation_msg::{PipelineId};
|
||||
use net_traits::ProgressMsg::{Done, Payload};
|
||||
use net_traits::hosts::replace_hosts;
|
||||
use net_traits::{CookieSource, IncludeSubdomains, LoadConsumer, LoadData, Metadata};
|
||||
|
@ -446,10 +447,12 @@ fn send_request_to_devtools(devtools_chan: Option<Sender<DevtoolsControlMsg>>,
|
|||
url: Url,
|
||||
method: Method,
|
||||
headers: Headers,
|
||||
body: Option<Vec<u8>>) {
|
||||
body: Option<Vec<u8>>,
|
||||
pipeline_id: PipelineId) {
|
||||
|
||||
if let Some(ref chan) = devtools_chan {
|
||||
let request = DevtoolsHttpRequest { url: url, method: method, headers: headers, body: body };
|
||||
let request = DevtoolsHttpRequest {
|
||||
url: url, method: method, headers: headers, body: body, pipeline_id: pipeline_id };
|
||||
let net_event = NetworkEvent::HttpRequest(request);
|
||||
|
||||
let msg = ChromeToDevtoolsControlMsg::NetworkEvent(request_id, net_event);
|
||||
|
@ -460,9 +463,10 @@ fn send_request_to_devtools(devtools_chan: Option<Sender<DevtoolsControlMsg>>,
|
|||
fn send_response_to_devtools(devtools_chan: Option<Sender<DevtoolsControlMsg>>,
|
||||
request_id: String,
|
||||
headers: Option<Headers>,
|
||||
status: Option<RawStatus>) {
|
||||
status: Option<RawStatus>,
|
||||
pipeline_id: PipelineId) {
|
||||
if let Some(ref chan) = devtools_chan {
|
||||
let response = DevtoolsHttpResponse { headers: headers, status: status, body: None };
|
||||
let response = DevtoolsHttpResponse { headers: headers, status: status, body: None, pipeline_id: pipeline_id };
|
||||
let net_event_response = NetworkEvent::HttpResponse(response);
|
||||
|
||||
let msg = ChromeToDevtoolsControlMsg::NetworkEvent(request_id, net_event_response);
|
||||
|
@ -600,35 +604,30 @@ pub fn load<A>(load_data: LoadData,
|
|||
//
|
||||
// https://tools.ietf.org/html/rfc7231#section-6.4
|
||||
let is_redirected_request = iters != 1;
|
||||
let cloned_data;
|
||||
let maybe_response = match load_data.data {
|
||||
Some(ref data) if !is_redirected_request => {
|
||||
req.headers_mut().set(ContentLength(data.len() as u64));
|
||||
|
||||
// TODO: Do this only if load_data has some pipeline_id, and send the pipeline_id
|
||||
// in the message
|
||||
send_request_to_devtools(
|
||||
devtools_chan.clone(), request_id.clone(), url.clone(),
|
||||
method.clone(), load_data.headers.clone(),
|
||||
load_data.data.clone()
|
||||
);
|
||||
|
||||
cloned_data = load_data.data.clone();
|
||||
req.send(&load_data.data)
|
||||
}
|
||||
_ => {
|
||||
if load_data.method != Method::Get && load_data.method != Method::Head {
|
||||
req.headers_mut().set(ContentLength(0))
|
||||
}
|
||||
|
||||
send_request_to_devtools(
|
||||
devtools_chan.clone(), request_id.clone(), url.clone(),
|
||||
method.clone(), load_data.headers.clone(),
|
||||
None
|
||||
);
|
||||
|
||||
cloned_data = None;
|
||||
req.send(&None)
|
||||
}
|
||||
};
|
||||
|
||||
if let Some(pipeline_id) = load_data.pipeline_id {
|
||||
send_request_to_devtools(
|
||||
devtools_chan.clone(), request_id.clone(), url.clone(),
|
||||
method.clone(), request_headers.clone(),
|
||||
cloned_data, pipeline_id
|
||||
);
|
||||
}
|
||||
|
||||
response = match maybe_response {
|
||||
Ok(r) => r,
|
||||
Err(LoadError::ConnectionAborted(reason)) => {
|
||||
|
@ -704,13 +703,13 @@ pub fn load<A>(load_data: LoadData,
|
|||
|
||||
// --- Tell devtools that we got a response
|
||||
// Send an HttpResponse message to devtools with the corresponding request_id
|
||||
// TODO: Send this message only if load_data has a pipeline_id that is not None
|
||||
// TODO: Send this message even when the load fails?
|
||||
send_response_to_devtools(
|
||||
devtools_chan, request_id,
|
||||
metadata.headers.clone(), metadata.status.clone()
|
||||
);
|
||||
|
||||
if let Some(pipeline_id) = load_data.pipeline_id {
|
||||
send_response_to_devtools(
|
||||
devtools_chan, request_id,
|
||||
metadata.headers.clone(), metadata.status.clone(),
|
||||
pipeline_id);
|
||||
}
|
||||
return StreamedResponse::from_http_response(response, metadata)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue