aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/window.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/window.rs')
-rw-r--r--components/script/dom/window.rs22
1 files changed, 15 insertions, 7 deletions
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index 487bf48eaba..3c87e5f6b0b 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -184,8 +184,8 @@ pub struct Window {
history: MutNullableJS<History>,
custom_element_registry: MutNullableJS<CustomElementRegistry>,
performance: MutNullableJS<Performance>,
- navigation_start: u64,
- navigation_start_precise: f64,
+ navigation_start: Cell<u64>,
+ navigation_start_precise: Cell<f64>,
screen: MutNullableJS<Screen>,
session_storage: MutNullableJS<Storage>,
local_storage: MutNullableJS<Storage>,
@@ -702,8 +702,8 @@ impl WindowMethods for Window {
// NavigationTiming/Overview.html#sec-window.performance-attribute
fn Performance(&self) -> Root<Performance> {
self.performance.or_init(|| {
- Performance::new(self, self.navigation_start,
- self.navigation_start_precise)
+ Performance::new(self, self.navigation_start.get(),
+ self.navigation_start_precise.get())
})
}
@@ -1772,6 +1772,13 @@ impl Window {
pub fn unminified_js_dir(&self) -> Option<String> {
self.unminified_js_dir.borrow().clone()
}
+
+ pub fn set_navigation_start(&self) {
+ let current_time = time::get_time();
+ let now = (current_time.sec * 1000 + current_time.nsec as i64 / 1000000) as u64;
+ self.navigation_start.set(now);
+ self.navigation_start_precise.set(time::precise_time_ns() as f64);
+ }
}
impl Window {
@@ -1799,6 +1806,8 @@ impl Window {
parent_info: Option<(PipelineId, FrameType)>,
window_size: Option<WindowSizeData>,
origin: MutableOrigin,
+ navigation_start: u64,
+ navigation_start_precise: f64,
webvr_thread: Option<IpcSender<WebVRMsg>>)
-> Root<Window> {
let layout_rpc: Box<LayoutRPC + Send> = {
@@ -1810,7 +1819,6 @@ impl Window {
pipelineid: id,
script_chan: Arc::new(Mutex::new(control_chan)),
};
- let current_time = time::get_time();
let win = box Window {
globalscope:
GlobalScope::new_inherited(
@@ -1837,8 +1845,8 @@ impl Window {
window_proxy: Default::default(),
document: Default::default(),
performance: Default::default(),
- navigation_start: (current_time.sec * 1000 + current_time.nsec as i64 / 1000000) as u64,
- navigation_start_precise: time::precise_time_ns() as f64,
+ navigation_start: Cell::new(navigation_start),
+ navigation_start_precise: Cell::new(navigation_start_precise),
screen: Default::default(),
session_storage: Default::default(),
local_storage: Default::default(),