diff options
Diffstat (limited to 'components/compositing')
-rw-r--r-- | components/compositing/constellation.rs | 5 | ||||
-rw-r--r-- | components/compositing/pipeline.rs | 20 |
2 files changed, 19 insertions, 6 deletions
diff --git a/components/compositing/constellation.rs b/components/compositing/constellation.rs index b3ef5dab7d1..695c6688e9a 100644 --- a/components/compositing/constellation.rs +++ b/components/compositing/constellation.rs @@ -16,7 +16,7 @@ use canvas::webgl_paint_task::WebGLPaintTask; use canvas_traits::CanvasMsg; use compositor_task::CompositorProxy; use compositor_task::Msg as CompositorMsg; -use devtools_traits::{DevtoolsControlChan, DevtoolsControlMsg}; +use devtools_traits::{ChromeToDevtoolsControlMsg, DevtoolsControlChan, DevtoolsControlMsg}; use euclid::point::Point2D; use euclid::rect::{Rect, TypedRect}; use euclid::size::Size2D; @@ -518,7 +518,8 @@ impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> { self.image_cache_task.exit(); self.resource_task.send(net_traits::ControlMsg::Exit).unwrap(); self.devtools_chan.as_ref().map(|chan| { - chan.send(DevtoolsControlMsg::ServerExitMsg).unwrap(); + chan.send(DevtoolsControlMsg::FromChrome( + ChromeToDevtoolsControlMsg::ServerExitMsg)).unwrap(); }); self.storage_task.send(StorageTaskMsg::Exit).unwrap(); self.font_cache_task.exit(); diff --git a/components/compositing/pipeline.rs b/components/compositing/pipeline.rs index a47bfc7b1b3..618fe260806 100644 --- a/components/compositing/pipeline.rs +++ b/components/compositing/pipeline.rs @@ -8,13 +8,14 @@ use script_traits::{LayoutControlMsg, ScriptControlChan, ScriptTaskFactory}; use script_traits::{NewLayoutInfo, ConstellationControlMsg}; use compositor_task; -use devtools_traits::DevtoolsControlChan; +use devtools_traits::{DevtoolsControlChan, DevtoolsControlMsg, ScriptToDevtoolsControlMsg}; use euclid::rect::{TypedRect}; use euclid::scale_factor::ScaleFactor; use gfx::paint_task::Msg as PaintMsg; use gfx::paint_task::{PaintChan, PaintTask}; use gfx::font_cache_task::FontCacheTask; -use ipc_channel::ipc::{self, IpcReceiver}; +use ipc_channel::ipc::{self, IpcReceiver, IpcSender}; +use ipc_channel::router::ROUTER; use layers::geometry::DevicePixel; use msg::compositor_msg::ScriptListener; use msg::constellation_msg::{ConstellationChan, Failure, FrameId, PipelineId, SubpageId}; @@ -102,6 +103,17 @@ impl Pipeline { } }); + // Route messages coming from content to devtools as appropriate. + let script_to_devtools_chan = devtools_chan.as_ref().map(|devtools_chan| { + let (script_to_devtools_chan, script_to_devtools_port) = ipc::channel().unwrap(); + let devtools_chan = (*devtools_chan).clone(); + ROUTER.add_route(script_to_devtools_port.to_opaque(), box move |message| { + let message: ScriptToDevtoolsControlMsg = message.to().unwrap(); + devtools_chan.send(DevtoolsControlMsg::FromScript(message)).unwrap() + }); + script_to_devtools_chan + }); + let (script_chan, script_port) = match script_chan { Some(script_chan) => { let (containing_pipeline_id, subpage_id) = @@ -143,7 +155,7 @@ impl Pipeline { parent_info: parent_info, constellation_chan: constellation_chan, compositor_proxy: compositor_proxy, - devtools_chan: devtools_chan, + devtools_chan: script_to_devtools_chan, image_cache_task: image_cache_task, font_cache_task: font_cache_task, resource_task: resource_task, @@ -272,7 +284,7 @@ pub struct PipelineContent { parent_info: Option<(PipelineId, SubpageId)>, constellation_chan: ConstellationChan, compositor_proxy: Box<CompositorProxy + Send + 'static>, - devtools_chan: Option<DevtoolsControlChan>, + devtools_chan: Option<IpcSender<ScriptToDevtoolsControlMsg>>, image_cache_task: ImageCacheTask, font_cache_task: FontCacheTask, resource_task: ResourceTask, |