aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Di Vito <tomasdv2@gmail.com>2019-08-07 14:47:50 -0300
committerTomas Di Vito <tomasdv2@gmail.com>2019-10-10 14:30:03 -0300
commitbd0c0b65baede6e19683912ca8905bd7a3aa5e31 (patch)
tree004487621e782cf3aff82f06d0691986e556ae19
parentcf725fc3f59bc1b94e3b35ab4cfe60b3d41559cc (diff)
downloadservo-bd0c0b65baede6e19683912ca8905bd7a3aa5e31.tar.gz
servo-bd0c0b65baede6e19683912ca8905bd7a3aa5e31.zip
implemented secure_connection_start
-rw-r--r--components/net/http_loader.rs11
-rw-r--r--components/net_traits/lib.rs6
-rw-r--r--components/script/dom/performanceresourcetiming.rs3
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,