diff options
Diffstat (limited to 'components/script/dom/window.rs')
-rw-r--r-- | components/script/dom/window.rs | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index d0c33ebc1ca..f48fb5a2e43 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -8,7 +8,7 @@ use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use dom::bindings::codegen::InheritTypes::EventTargetCast; use dom::bindings::error::{Fallible, InvalidCharacter}; use dom::bindings::global; -use dom::bindings::js::{JS, JSRef, Temporary, OptionalSettable}; +use dom::bindings::js::{MutNullableJS, JS, JSRef, Temporary, OptionalSettable}; use dom::bindings::trace::{Traceable, Untraceable}; use dom::bindings::utils::{Reflectable, Reflector}; use dom::browsercontext::BrowserContext; @@ -44,6 +44,7 @@ use std::cell::{Cell, RefCell}; use std::cmp; use std::comm::{channel, Sender}; use std::comm::Select; +use std::default::Default; use std::hash::{Hash, sip}; use std::io::timer::Timer; use std::ptr; @@ -81,16 +82,16 @@ pub struct Window { eventtarget: EventTarget, pub script_chan: ScriptChan, pub control_chan: ScriptControlChan, - console: Cell<Option<JS<Console>>>, - location: Cell<Option<JS<Location>>>, - navigator: Cell<Option<JS<Navigator>>>, + console: MutNullableJS<Console>, + location: MutNullableJS<Location>, + navigator: MutNullableJS<Navigator>, pub image_cache_task: ImageCacheTask, pub active_timers: Traceable<RefCell<HashMap<TimerId, TimerHandle>>>, next_timer_handle: Traceable<Cell<i32>>, pub compositor: Untraceable<Box<ScriptListener+'static>>, pub browser_context: Traceable<RefCell<Option<BrowserContext>>>, pub page: Rc<Page>, - performance: Cell<Option<JS<Performance>>>, + performance: MutNullableJS<Performance>, pub navigationStart: u64, pub navigationStartPrecise: f64, screen: Cell<Option<JS<Screen>>>, @@ -225,7 +226,7 @@ impl<'a> WindowMethods for JSRef<'a, Window> { let location = Location::new(self, page); self.location.assign(Some(location)); } - Temporary::new(self.location.get().as_ref().unwrap().clone()) + self.location.get().unwrap() } fn Console(self) -> Temporary<Console> { @@ -233,7 +234,7 @@ impl<'a> WindowMethods for JSRef<'a, Window> { let console = Console::new(&global::Window(self)); self.console.assign(Some(console)); } - Temporary::new(self.console.get().as_ref().unwrap().clone()) + self.console.get().unwrap() } fn Navigator(self) -> Temporary<Navigator> { @@ -241,7 +242,7 @@ impl<'a> WindowMethods for JSRef<'a, Window> { let navigator = Navigator::new(self); self.navigator.assign(Some(navigator)); } - Temporary::new(self.navigator.get().as_ref().unwrap().clone()) + self.navigator.get().unwrap() } fn SetTimeout(self, _cx: *mut JSContext, callback: JSVal, timeout: i32) -> i32 { @@ -289,7 +290,7 @@ impl<'a> WindowMethods for JSRef<'a, Window> { let performance = Performance::new(self); self.performance.assign(Some(performance)); } - Temporary::new(self.performance.get().as_ref().unwrap().clone()) + self.performance.get().unwrap() } fn GetOnclick(self) -> Option<EventHandlerNonNull> { @@ -529,16 +530,16 @@ impl Window { eventtarget: EventTarget::new_inherited(WindowTypeId), script_chan: script_chan, control_chan: control_chan, - console: Cell::new(None), + console: Default::default(), compositor: Untraceable::new(compositor), page: page, - location: Cell::new(None), - navigator: Cell::new(None), + location: Default::default(), + navigator: Default::default(), image_cache_task: image_cache_task, active_timers: Traceable::new(RefCell::new(HashMap::new())), next_timer_handle: Traceable::new(Cell::new(0)), browser_context: Traceable::new(RefCell::new(None)), - performance: Cell::new(None), + performance: Default::default(), navigationStart: time::get_time().sec as u64, navigationStartPrecise: time::precise_time_s(), screen: Cell::new(None), |