diff options
author | Tomas Di Vito <tomasdv2@gmail.com> | 2019-08-07 14:47:50 -0300 |
---|---|---|
committer | Tomas Di Vito <tomasdv2@gmail.com> | 2019-10-10 14:30:03 -0300 |
commit | bd0c0b65baede6e19683912ca8905bd7a3aa5e31 (patch) | |
tree | 004487621e782cf3aff82f06d0691986e556ae19 | |
parent | cf725fc3f59bc1b94e3b35ab4cfe60b3d41559cc (diff) | |
download | servo-bd0c0b65baede6e19683912ca8905bd7a3aa5e31.tar.gz servo-bd0c0b65baede6e19683912ca8905bd7a3aa5e31.zip |
implemented secure_connection_start
-rw-r--r-- | components/net/http_loader.rs | 11 | ||||
-rw-r--r-- | components/net_traits/lib.rs | 6 | ||||
-rw-r--r-- | components/script/dom/performanceresourcetiming.rs | 3 |
3 files changed, 18 insertions, 2 deletions
diff --git a/components/net/http_loader.rs b/components/net/http_loader.rs index fa936501fe5..6352398f297 100644 --- a/components/net/http_loader.rs +++ b/components/net/http_loader.rs @@ -408,6 +408,17 @@ fn obtain_response( ) .body(request_body.clone().into()); + // TODO: We currently don't know when the handhhake before the connection is done + // so our best bet would be to set `secure_connection_start` here when we are currently + // fetching on a HTTPS url. + if url.scheme() == "https" { + context + .timing + .lock() + .unwrap() + .set_attribute(ResourceAttribute::SecureConnectionStart); + } + let mut request = match request { Ok(request) => request, Err(e) => return Box::new(future::result(Err(NetworkError::from_http_error(&e)))), diff --git a/components/net_traits/lib.rs b/components/net_traits/lib.rs index 46a48af443e..ae6d8797adb 100644 --- a/components/net_traits/lib.rs +++ b/components/net_traits/lib.rs @@ -466,6 +466,7 @@ pub struct ResourceFetchTiming { /// Number of redirects until final resource (currently limited to 20) pub redirect_count: u16, pub request_start: u64, + pub secure_connection_start: u64, pub response_start: u64, pub fetch_start: u64, pub response_end: u64, @@ -496,6 +497,7 @@ pub enum ResourceAttribute { FetchStart, ConnectStart(u64), ConnectEnd(u64), + SecureConnectionStart, ResponseEnd, } @@ -514,6 +516,7 @@ impl ResourceFetchTiming { timing_check_passed: true, domain_lookup_start: 0, redirect_count: 0, + secure_connection_start: 0, request_start: 0, response_start: 0, fetch_start: 0, @@ -555,6 +558,9 @@ impl ResourceFetchTiming { ResourceAttribute::FetchStart => self.fetch_start = precise_time_ns(), ResourceAttribute::ConnectStart(val) => self.connect_start = val, ResourceAttribute::ConnectEnd(val) => self.connect_end = val, + ResourceAttribute::SecureConnectionStart => { + self.secure_connection_start = precise_time_ns() + }, ResourceAttribute::ResponseEnd => self.response_end = precise_time_ns(), } } diff --git a/components/script/dom/performanceresourcetiming.rs b/components/script/dom/performanceresourcetiming.rs index 7f4785ea4e4..d3fc054d27b 100644 --- a/components/script/dom/performanceresourcetiming.rs +++ b/components/script/dom/performanceresourcetiming.rs @@ -129,8 +129,7 @@ impl PerformanceResourceTiming { domain_lookup_end: 0., connect_start: resource_timing.connect_start as f64, connect_end: resource_timing.connect_end as f64, - // TODO (#21271) - secure_connection_start: 0., + secure_connection_start: resource_timing.secure_connection_start as f64, request_start: resource_timing.request_start as f64, response_start: resource_timing.response_start as f64, response_end: resource_timing.response_end as f64, |