diff options
author | Tetsuharu OHZEKI <saneyuki.s.snyk@gmail.com> | 2014-09-20 16:40:06 +0900 |
---|---|---|
committer | Tetsuharu OHZEKI <saneyuki.s.snyk@gmail.com> | 2014-09-20 16:40:06 +0900 |
commit | de67710934ac89de0cf21911dc57dcda7cb0fae1 (patch) | |
tree | 8b59339dac189e728d4d10082ad067221eba0748 /components/script/dom | |
parent | c51b8a07acbbfa8539b9234c7717a9af53a9e2b8 (diff) | |
parent | de0866ab42e8c1b24c10346dac327596c53b42ff (diff) | |
download | servo-de67710934ac89de0cf21911dc57dcda7cb0fae1.tar.gz servo-de67710934ac89de0cf21911dc57dcda7cb0fae1.zip |
Merge pull request #3418 from saneyuki/untrace
Replace manual Encodable implementation for LayoutDataRef with Untraceable
Diffstat (limited to 'components/script/dom')
-rw-r--r-- | components/script/dom/bindings/trace.rs | 6 | ||||
-rw-r--r-- | components/script/dom/canvasrenderingcontext2d.rs | 8 | ||||
-rw-r--r-- | components/script/dom/dedicatedworkerglobalscope.rs | 2 | ||||
-rw-r--r-- | components/script/dom/node.rs | 8 | ||||
-rw-r--r-- | components/script/dom/workerglobalscope.rs | 4 | ||||
-rw-r--r-- | components/script/dom/workerlocation.rs | 2 |
6 files changed, 18 insertions, 12 deletions
diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index b160508a761..837dec61f5a 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -132,6 +132,12 @@ impl<T> Deref<T> for Untraceable<T> { } } +impl<T> DerefMut<T> for Untraceable<T> { + fn deref_mut<'a>(&'a mut self) -> &'a mut T { + &mut self.inner + } +} + /// Encapsulates a type that can be traced but is boxed in a type we don't /// control (such as `RefCell`). /// diff --git a/components/script/dom/canvasrenderingcontext2d.rs b/components/script/dom/canvasrenderingcontext2d.rs index cc06b7fadfc..c96b63eae7c 100644 --- a/components/script/dom/canvasrenderingcontext2d.rs +++ b/components/script/dom/canvasrenderingcontext2d.rs @@ -41,7 +41,7 @@ impl CanvasRenderingContext2D { } pub fn recreate(&self, size: Size2D<i32>) { - self.renderer.send(Recreate(size)); + self.renderer.deref().send(Recreate(size)); } } @@ -52,17 +52,17 @@ impl<'a> CanvasRenderingContext2DMethods for JSRef<'a, CanvasRenderingContext2D> fn FillRect(&self, x: f64, y: f64, width: f64, height: f64) { let rect = Rect(Point2D(x as f32, y as f32), Size2D(width as f32, height as f32)); - self.renderer.send(FillRect(rect)); + self.renderer.deref().send(FillRect(rect)); } fn ClearRect(&self, x: f64, y: f64, width: f64, height: f64) { let rect = Rect(Point2D(x as f32, y as f32), Size2D(width as f32, height as f32)); - self.renderer.send(ClearRect(rect)); + self.renderer.deref().send(ClearRect(rect)); } fn StrokeRect(&self, x: f64, y: f64, width: f64, height: f64) { let rect = Rect(Point2D(x as f32, y as f32), Size2D(width as f32, height as f32)); - self.renderer.send(StrokeRect(rect)); + self.renderer.deref().send(StrokeRect(rect)); } } diff --git a/components/script/dom/dedicatedworkerglobalscope.rs b/components/script/dom/dedicatedworkerglobalscope.rs index 749db8d61f7..a17cd511990 100644 --- a/components/script/dom/dedicatedworkerglobalscope.rs +++ b/components/script/dom/dedicatedworkerglobalscope.rs @@ -120,7 +120,7 @@ impl DedicatedWorkerGlobalScope { let target: JSRef<EventTarget> = EventTargetCast::from_ref(*global); loop { - match global.receiver.recv_opt() { + match global.receiver.deref().recv_opt() { Ok(DOMMessage(data, nbytes)) => { let mut message = UndefinedValue(); unsafe { diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index bafce1aaf25..db8c7456b28 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -24,7 +24,7 @@ use dom::bindings::global::{GlobalRef, Window}; use dom::bindings::js::{JS, JSRef, RootedReference, Temporary, Root, OptionalUnrootable}; use dom::bindings::js::{OptionalSettable, TemporaryPushable, OptionalRootedRootable}; use dom::bindings::js::{ResultRootable, OptionalRootable}; -use dom::bindings::trace::Traceable; +use dom::bindings::trace::{Traceable, Untraceable}; use dom::bindings::utils; use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object}; use dom::characterdata::CharacterData; @@ -108,7 +108,7 @@ pub struct Node { /// /// Must be sent back to the layout task to be destroyed when this /// node is finalized. - pub layout_data: LayoutDataRef, + pub layout_data: Untraceable<LayoutDataRef>, unique_id: RefCell<String>, } @@ -1041,7 +1041,7 @@ impl Node { flags: Traceable::new(RefCell::new(NodeFlags::new(type_id))), - layout_data: LayoutDataRef::new(), + layout_data: Untraceable::new(LayoutDataRef::new()), unique_id: RefCell::new("".to_string()), } @@ -1454,7 +1454,7 @@ impl Node { /// Sends layout data, if any, back to the layout task to be destroyed. unsafe fn reap_layout_data(&mut self) { if self.layout_data.is_present() { - let layout_data = mem::replace(&mut self.layout_data, LayoutDataRef::new()); + let layout_data = mem::replace(self.layout_data.deref_mut(), LayoutDataRef::new()); let layout_chan = layout_data.take_chan(); match layout_chan { None => {} diff --git a/components/script/dom/workerglobalscope.rs b/components/script/dom/workerglobalscope.rs index 897fe2fbc64..b4aa3603ef4 100644 --- a/components/script/dom/workerglobalscope.rs +++ b/components/script/dom/workerglobalscope.rs @@ -85,7 +85,7 @@ impl<'a> WorkerGlobalScopeMethods for JSRef<'a, WorkerGlobalScope> { fn Location(&self) -> Temporary<WorkerLocation> { if self.location.get().is_none() { - let location = WorkerLocation::new(*self, self.worker_url.clone()); + let location = WorkerLocation::new(*self, self.worker_url.deref().clone()); self.location.assign(Some(location)); } Temporary::new(self.location.get().get_ref().clone()) @@ -110,7 +110,7 @@ impl<'a> WorkerGlobalScopeMethods for JSRef<'a, WorkerGlobalScope> { } }; - match self.js_context.evaluate_script( + match self.js_context.deref().evaluate_script( self.reflector().get_jsobject(), source, url.serialize(), 1) { Ok(_) => (), Err(_) => { diff --git a/components/script/dom/workerlocation.rs b/components/script/dom/workerlocation.rs index 7092b2979ec..05112c54a88 100644 --- a/components/script/dom/workerlocation.rs +++ b/components/script/dom/workerlocation.rs @@ -38,7 +38,7 @@ impl WorkerLocation { impl<'a> WorkerLocationMethods for JSRef<'a, WorkerLocation> { fn Href(&self) -> DOMString { - self.url.serialize() + self.url.deref().serialize() } fn Search(&self) -> DOMString { |