aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/layout_interface.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/layout_interface.rs')
-rw-r--r--components/script/layout_interface.rs31
1 files changed, 26 insertions, 5 deletions
diff --git a/components/script/layout_interface.rs b/components/script/layout_interface.rs
index 7db08689279..3c26f062214 100644
--- a/components/script/layout_interface.rs
+++ b/components/script/layout_interface.rs
@@ -10,15 +10,17 @@ use dom::node::LayoutData;
use euclid::point::Point2D;
use euclid::rect::Rect;
-use ipc_channel::ipc::IpcSender;
+use ipc_channel::ipc::{IpcReceiver, IpcSender};
use libc::uintptr_t;
use msg::compositor_msg::LayerId;
-use msg::constellation_msg::{PipelineExitType, WindowSizeData};
+use msg::constellation_msg::{ConstellationChan, Failure, PipelineExitType, PipelineId};
+use msg::constellation_msg::{WindowSizeData};
use msg::compositor_msg::Epoch;
+use net_traits::image_cache_task::ImageCacheTask;
use net_traits::PendingAsyncLoad;
use profile_traits::mem::{Reporter, ReportsChan};
-use script_traits::{ScriptControlChan, OpaqueScriptLayoutChannel, UntrustedNodeAddress};
-use script_traits::StylesheetLoadResponder;
+use script_traits::{ConstellationControlMsg, LayoutControlMsg, ScriptControlChan};
+use script_traits::{OpaqueScriptLayoutChannel, StylesheetLoadResponder, UntrustedNodeAddress};
use std::any::Any;
use std::sync::mpsc::{channel, Receiver, Sender};
use style::animation::PropertyAnimation;
@@ -72,7 +74,12 @@ pub enum Msg {
ExitNow(PipelineExitType),
/// Get the last epoch counter for this layout task.
- GetCurrentEpoch(IpcSender<Epoch>)
+ GetCurrentEpoch(IpcSender<Epoch>),
+
+ /// Creates a new layout task.
+ ///
+ /// This basically exists to keep the script-layout dependency one-way.
+ CreateLayoutTask(NewLayoutTaskInfo),
}
/// Synchronous messages that script can send to layout.
@@ -209,3 +216,17 @@ impl Animation {
}
}
+pub struct NewLayoutTaskInfo {
+ pub id: PipelineId,
+ pub url: Url,
+ pub is_parent: bool,
+ pub layout_pair: OpaqueScriptLayoutChannel,
+ pub pipeline_port: IpcReceiver<LayoutControlMsg>,
+ pub constellation_chan: ConstellationChan,
+ pub failure: Failure,
+ pub script_chan: Sender<ConstellationControlMsg>,
+ pub image_cache_task: ImageCacheTask,
+ pub paint_chan: Box<Any + Send>,
+ pub layout_shutdown_chan: Sender<()>,
+}
+