mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Move ResourceFetchTiming into Arc
The purpose of this commit is to ensure that the Response object has access to Timing updates as previously the Response object simply stored a ResourceFetchTiming struct so updates on ResourceFetchTiming that were not explicitly done on the Response would not be passed down. The references to ServoArc are added because Response uses servo_arc::Arc rather than std::sync::Arc as is used elsewhere. So, we've switched those other places to servo_arc::Arc instead of switching Response to std::sync::Arc.
This commit is contained in:
parent
bb8166bb97
commit
7596c36959
5 changed files with 16 additions and 9 deletions
|
@ -23,6 +23,7 @@ use net_traits::request::{Origin, ResponseTainting, Window};
|
|||
use net_traits::response::{Response, ResponseBody, ResponseType};
|
||||
use net_traits::ResourceAttribute;
|
||||
use net_traits::{FetchTaskTarget, NetworkError, ReferrerPolicy, ResourceFetchTiming};
|
||||
use servo_arc::Arc as ServoArc;
|
||||
use servo_url::ServoUrl;
|
||||
use std::borrow::Cow;
|
||||
use std::fs::File;
|
||||
|
@ -52,7 +53,7 @@ pub struct FetchContext {
|
|||
pub devtools_chan: Option<Sender<DevtoolsControlMsg>>,
|
||||
pub filemanager: FileManager,
|
||||
pub cancellation_listener: Arc<Mutex<CancellationListener>>,
|
||||
pub timing: Arc<Mutex<ResourceFetchTiming>>,
|
||||
pub timing: ServoArc<Mutex<ResourceFetchTiming>>,
|
||||
}
|
||||
|
||||
pub struct CancellationListener {
|
||||
|
|
|
@ -36,6 +36,7 @@ use profile_traits::mem::ProfilerChan as MemProfilerChan;
|
|||
use profile_traits::mem::{Report, ReportKind, ReportsChan};
|
||||
use profile_traits::time::ProfilerChan;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use servo_arc::Arc as ServoArc;
|
||||
use servo_url::ServoUrl;
|
||||
use std::borrow::{Cow, ToOwned};
|
||||
use std::collections::HashMap;
|
||||
|
@ -491,7 +492,7 @@ impl CoreResourceManager {
|
|||
devtools_chan: dc,
|
||||
filemanager: filemanager,
|
||||
cancellation_listener: Arc::new(Mutex::new(CancellationListener::new(cancel_chan))),
|
||||
timing: Arc::new(Mutex::new(ResourceFetchTiming::new(request.timing_type()))),
|
||||
timing: ServoArc::new(Mutex::new(ResourceFetchTiming::new(request.timing_type()))),
|
||||
};
|
||||
|
||||
match res_init_ {
|
||||
|
|
|
@ -36,6 +36,7 @@ use net_traits::{
|
|||
FetchTaskTarget, IncludeSubdomains, NetworkError, ReferrerPolicy, ResourceFetchTiming,
|
||||
ResourceTimingType,
|
||||
};
|
||||
use servo_arc::Arc as ServoArc;
|
||||
use servo_url::{ImmutableOrigin, ServoUrl};
|
||||
use std::fs::File;
|
||||
use std::io::Read;
|
||||
|
@ -665,7 +666,7 @@ fn test_fetch_with_hsts() {
|
|||
devtools_chan: None,
|
||||
filemanager: FileManager::new(create_embedder_proxy()),
|
||||
cancellation_listener: Arc::new(Mutex::new(CancellationListener::new(None))),
|
||||
timing: Arc::new(Mutex::new(ResourceFetchTiming::new(
|
||||
timing: ServoArc::new(Mutex::new(ResourceFetchTiming::new(
|
||||
ResourceTimingType::Navigation,
|
||||
))),
|
||||
};
|
||||
|
|
|
@ -38,6 +38,7 @@ use net_traits::request::Request;
|
|||
use net_traits::response::Response;
|
||||
use net_traits::{FetchTaskTarget, ResourceFetchTiming, ResourceTimingType};
|
||||
use openssl::ssl::{SslAcceptor, SslFiletype, SslMethod};
|
||||
use servo_arc::Arc as ServoArc;
|
||||
use servo_url::ServoUrl;
|
||||
use std::net::TcpListener as StdTcpListener;
|
||||
use std::path::PathBuf;
|
||||
|
@ -95,7 +96,7 @@ fn new_fetch_context(
|
|||
devtools_chan: dc,
|
||||
filemanager: FileManager::new(sender),
|
||||
cancellation_listener: Arc::new(Mutex::new(CancellationListener::new(None))),
|
||||
timing: Arc::new(Mutex::new(ResourceFetchTiming::new(
|
||||
timing: ServoArc::new(Mutex::new(ResourceFetchTiming::new(
|
||||
ResourceTimingType::Navigation,
|
||||
))),
|
||||
}
|
||||
|
|
|
@ -114,7 +114,8 @@ pub struct Response {
|
|||
#[ignore_malloc_size_of = "AtomicBool heap size undefined"]
|
||||
pub aborted: Arc<AtomicBool>,
|
||||
/// track network metrics
|
||||
pub resource_timing: ResourceFetchTiming,
|
||||
#[ignore_malloc_size_of = "Mutex heap size undefined"]
|
||||
pub resource_timing: Arc<Mutex<ResourceFetchTiming>>,
|
||||
}
|
||||
|
||||
impl Response {
|
||||
|
@ -137,7 +138,7 @@ impl Response {
|
|||
internal_response: None,
|
||||
return_internal: true,
|
||||
aborted: Arc::new(AtomicBool::new(false)),
|
||||
resource_timing: resource_timing,
|
||||
resource_timing: Arc::new(Mutex::new(resource_timing)),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -171,7 +172,9 @@ impl Response {
|
|||
internal_response: None,
|
||||
return_internal: true,
|
||||
aborted: Arc::new(AtomicBool::new(false)),
|
||||
resource_timing: ResourceFetchTiming::new(ResourceTimingType::Error),
|
||||
resource_timing: Arc::new(Mutex::new(ResourceFetchTiming::new(
|
||||
ResourceTimingType::Error,
|
||||
))),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -217,8 +220,8 @@ impl Response {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn get_resource_timing(&self) -> &ResourceFetchTiming {
|
||||
&self.resource_timing
|
||||
pub fn get_resource_timing(&self) -> Arc<Mutex<ResourceFetchTiming>> {
|
||||
Arc::clone(&self.resource_timing)
|
||||
}
|
||||
|
||||
/// Convert to a filtered response, of type `filter_type`.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue