mirror of
https://github.com/servo/servo.git
synced 2025-06-28 11:03:39 +01:00
I converted them all with a few exceptions: - Methods that were used by trait objects, since trait objects don't work with `self` methods. - Methods that take an &'b JSRef<'a, T> and return an &'b. In reality, many (all?) could return an &'a instead, but this isn't allowed by the Deref trait. - Methods that internally rely on the same issue with Deref. - I left out the traits involved in layout entirely, even though not all of their methods suffer from one of the above problems. There will probably be solutions to all of these problems in the future.
59 lines
1.9 KiB
Rust
59 lines
1.9 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
use dom::bindings::codegen::Bindings::PerformanceTimingBinding;
|
|
use dom::bindings::codegen::Bindings::PerformanceTimingBinding::PerformanceTimingMethods;
|
|
use dom::bindings::global::Window;
|
|
use dom::bindings::js::{JSRef, Temporary};
|
|
use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
|
use dom::window::Window;
|
|
|
|
#[deriving(Encodable)]
|
|
#[must_root]
|
|
pub struct PerformanceTiming {
|
|
reflector_: Reflector,
|
|
navigationStart: u64,
|
|
navigationStartPrecise: f64,
|
|
}
|
|
|
|
impl PerformanceTiming {
|
|
pub fn new_inherited(navStart: u64, navStartPrecise: f64)
|
|
-> PerformanceTiming {
|
|
PerformanceTiming {
|
|
reflector_: Reflector::new(),
|
|
navigationStart: navStart,
|
|
navigationStartPrecise: navStartPrecise,
|
|
}
|
|
}
|
|
|
|
#[allow(unrooted_must_root)]
|
|
pub fn new(window: JSRef<Window>) -> Temporary<PerformanceTiming> {
|
|
let timing = PerformanceTiming::new_inherited(window.navigationStart,
|
|
window.navigationStartPrecise);
|
|
reflect_dom_object(box timing, &Window(window),
|
|
PerformanceTimingBinding::Wrap)
|
|
}
|
|
}
|
|
|
|
impl<'a> PerformanceTimingMethods for JSRef<'a, PerformanceTiming> {
|
|
fn NavigationStart(self) -> u64 {
|
|
self.navigationStart
|
|
}
|
|
}
|
|
|
|
pub trait PerformanceTimingHelpers {
|
|
fn NavigationStartPrecise(self) -> f64;
|
|
}
|
|
|
|
impl<'a> PerformanceTimingHelpers for JSRef<'a, PerformanceTiming> {
|
|
fn NavigationStartPrecise(self) -> f64 {
|
|
self.navigationStartPrecise
|
|
}
|
|
}
|
|
|
|
impl Reflectable for PerformanceTiming {
|
|
fn reflector<'a>(&'a self) -> &'a Reflector {
|
|
&self.reflector_
|
|
}
|
|
}
|