diff options
author | Greg Guthe <greg.guthe@gmail.com> | 2015-08-14 20:47:26 -0400 |
---|---|---|
committer | Greg Guthe <greg.guthe@gmail.com> | 2015-11-13 17:51:34 -0500 |
commit | e49d592fba1d73f37017fa900c8494076a60d447 (patch) | |
tree | ea8a5d6488f9ef3ea007d13a5e8362361876c021 /components/script/dom/performancetiming.rs | |
parent | 27e104aa1a62978bf2dd8b6a65963a2466af936a (diff) | |
download | servo-e49d592fba1d73f37017fa900c8494076a60d447.tar.gz servo-e49d592fba1d73f37017fa900c8494076a60d447.zip |
Add DOM-related performance timing properties
Diffstat (limited to 'components/script/dom/performancetiming.rs')
-rw-r--r-- | components/script/dom/performancetiming.rs | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/components/script/dom/performancetiming.rs b/components/script/dom/performancetiming.rs index 1799d6a7f91..c9f2458de3e 100644 --- a/components/script/dom/performancetiming.rs +++ b/components/script/dom/performancetiming.rs @@ -4,9 +4,11 @@ use dom::bindings::codegen::Bindings::PerformanceTimingBinding; use dom::bindings::codegen::Bindings::PerformanceTimingBinding::PerformanceTimingMethods; +use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use dom::bindings::global::GlobalRef; -use dom::bindings::js::Root; +use dom::bindings::js::{JS, Root}; use dom::bindings::reflector::{Reflector, reflect_dom_object}; +use dom::document::Document; use dom::window::Window; #[dom_struct] @@ -14,15 +16,19 @@ pub struct PerformanceTiming { reflector_: Reflector, navigationStart: u64, navigationStartPrecise: f64, + document: JS<Document>, } impl PerformanceTiming { - fn new_inherited(navStart: u64, navStartPrecise: f64) + fn new_inherited(navStart: u64, + navStartPrecise: f64, + document: &Document) -> PerformanceTiming { PerformanceTiming { reflector_: Reflector::new(), navigationStart: navStart, navigationStartPrecise: navStartPrecise, + document: JS::from_ref(document), } } @@ -31,19 +37,45 @@ impl PerformanceTiming { navigation_start: u64, navigation_start_precise: f64) -> Root<PerformanceTiming> { + let timing = PerformanceTiming::new_inherited(navigation_start, - navigation_start_precise); + navigation_start_precise, + window.Document().r()); reflect_dom_object(box timing, GlobalRef::Window(window), PerformanceTimingBinding::Wrap) } } impl PerformanceTimingMethods for PerformanceTiming { - // https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/ - // NavigationTiming/Overview.html#dom-performancetiming-navigationstart + // https://w3c.github.io/navigation-timing/#widl-PerformanceTiming-navigationStart fn NavigationStart(&self) -> u64 { self.navigationStart } + + // https://w3c.github.io/navigation-timing/#widl-PerformanceTiming-domLoading + fn DomLoading(&self) -> u64 { + self.document.get_dom_loading() + } + + // https://w3c.github.io/navigation-timing/#widl-PerformanceTiming-domInteractive + fn DomInteractive(&self) -> u64 { + self.document.get_dom_interactive() + } + + // https://w3c.github.io/navigation-timing/#widl-PerformanceTiming-domContentLoadedEventStart + fn DomContentLoadedEventStart(&self) -> u64 { + self.document.get_dom_content_loaded_event_start() + } + + // https://w3c.github.io/navigation-timing/#widl-PerformanceTiming-domContentLoadedEventEnd + fn DomContentLoadedEventEnd(&self) -> u64 { + self.document.get_dom_content_loaded_event_end() + } + + // https://w3c.github.io/navigation-timing/#widl-PerformanceTiming-domComplete + fn DomComplete(&self) -> u64 { + self.document.get_dom_complete() + } } |