aboutsummaryrefslogtreecommitdiffstats
path: root/components/compositing
diff options
context:
space:
mode:
Diffstat (limited to 'components/compositing')
-rw-r--r--components/compositing/constellation.rs5
-rw-r--r--components/compositing/pipeline.rs20
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,