diff --git a/components/devtools/actors/network_event.rs b/components/devtools/actors/network_event.rs index 7c59a1729ad..9f6e9ed7d90 100644 --- a/components/devtools/actors/network_event.rs +++ b/components/devtools/actors/network_event.rs @@ -11,6 +11,7 @@ use chrono::{Local, LocalResult, TimeZone}; use devtools_traits::{HttpRequest as DevtoolsHttpRequest, HttpResponse as DevtoolsHttpResponse}; use headers::{ContentType, Cookie, HeaderMapExt}; use http::{HeaderMap, Method, header}; +use net_traits::request::Destination as RequestDestination; use serde::Serialize; use serde_json::{Map, Value}; @@ -27,6 +28,7 @@ pub struct NetworkEventActor { pub request_method: Method, pub request_started: SystemTime, pub request_time_stamp: i64, + pub request_destination: RequestDestination, pub request_headers_raw: Option, pub request_body: Option>, pub request_cookies: Option, @@ -350,6 +352,7 @@ impl NetworkEventActor { .duration_since(UNIX_EPOCH) .unwrap_or_default() .as_secs() as i64, + request_destination: RequestDestination::None, request_headers_raw: None, request_body: None, request_cookies: None, @@ -377,6 +380,7 @@ impl NetworkEventActor { self.request_method = request.method; self.request_started = request.started_date_time; self.request_time_stamp = request.time_stamp; + self.request_destination = request.destination; self.request_body = request.body.clone(); self.request_headers_raw = Some(request.headers.clone()); } @@ -404,14 +408,6 @@ impl NetworkEventActor { LocalResult::Ambiguous(date_time, _) => date_time.to_rfc3339().to_string(), }; - let cause_type = match self.request_url.as_str() { - // Adjust based on request data - url if url.ends_with(".css") => "stylesheet", - url if url.ends_with(".js") => "script", - url if url.ends_with(".png") || url.ends_with(".jpg") => "img", - _ => "document", - }; - EventActor { actor: self.name(), resource_id: self.resource_id, @@ -422,7 +418,7 @@ impl NetworkEventActor { is_xhr: self.is_xhr, private: false, cause: Cause { - type_: cause_type.to_string(), + type_: self.request_destination.as_str().to_string(), loading_document_uri: None, // Set if available }, } diff --git a/components/net/http_loader.rs b/components/net/http_loader.rs index baef79cacce..8191a1bb3ec 100644 --- a/components/net/http_loader.rs +++ b/components/net/http_loader.rs @@ -397,6 +397,7 @@ fn prepare_devtools_request( pipeline_id: PipelineId, connect_time: Duration, send_time: Duration, + destination: Destination, is_xhr: bool, browsing_context_id: BrowsingContextId, ) -> ChromeToDevtoolsControlMsg { @@ -414,6 +415,7 @@ fn prepare_devtools_request( .as_secs() as i64, connect_time, send_time, + destination, is_xhr, browsing_context_id, }; @@ -488,6 +490,7 @@ pub fn send_early_httprequest_to_devtools(request: &mut Request, context: &Fetch time_stamp: 0, connect_time: Duration::from_millis(0), send_time: Duration::from_millis(0), + destination: request.destination, is_xhr: false, browsing_context_id, }; @@ -586,6 +589,7 @@ async fn obtain_response( source_is_null: bool, pipeline_id: &Option, request_id: Option<&str>, + destination: Destination, is_xhr: bool, context: &FetchContext, fetch_terminated: UnboundedSender, @@ -780,6 +784,7 @@ async fn obtain_response( pipeline_id, (connect_end - connect_start).unsigned_abs(), (send_end - send_start).unsigned_abs(), + destination, is_xhr, browsing_context_id, )) @@ -1959,6 +1964,7 @@ async fn http_network_fetch( .unwrap_or(false), &request.pipeline_id, Some(&request_id), + request.destination, is_xhr, context, fetch_terminated_sender, diff --git a/components/net/tests/fetch.rs b/components/net/tests/fetch.rs index 26df87d999b..df74855f3b5 100644 --- a/components/net/tests/fetch.rs +++ b/components/net/tests/fetch.rs @@ -1339,6 +1339,7 @@ fn test_fetch_with_devtools() { time_stamp: devhttprequests.1.time_stamp, connect_time: devhttprequests.1.connect_time, send_time: devhttprequests.1.send_time, + destination: Destination::None, is_xhr: true, browsing_context_id: TEST_WEBVIEW_ID.0, }; diff --git a/components/net/tests/http_loader.rs b/components/net/tests/http_loader.rs index 23896823524..e11677e6eef 100644 --- a/components/net/tests/http_loader.rs +++ b/components/net/tests/http_loader.rs @@ -333,6 +333,7 @@ fn test_request_and_response_data_with_network_messages() { time_stamp: devhttprequests.1.time_stamp, connect_time: devhttprequests.1.connect_time, send_time: devhttprequests.1.send_time, + destination: Destination::Document, is_xhr: false, browsing_context_id: TEST_WEBVIEW_ID.0, }; diff --git a/components/shared/devtools/lib.rs b/components/shared/devtools/lib.rs index 6d4ab0f8595..a1bc247ccbb 100644 --- a/components/shared/devtools/lib.rs +++ b/components/shared/devtools/lib.rs @@ -23,6 +23,7 @@ use http::{HeaderMap, Method}; use ipc_channel::ipc::IpcSender; use malloc_size_of_derive::MallocSizeOf; use net_traits::http_status::HttpStatus; +use net_traits::request::Destination; use serde::{Deserialize, Serialize}; use servo_url::ServoUrl; use uuid::Uuid; @@ -443,6 +444,7 @@ pub struct HttpRequest { pub time_stamp: i64, pub connect_time: Duration, pub send_time: Duration, + pub destination: Destination, pub is_xhr: bool, pub browsing_context_id: BrowsingContextId, }