servo: Merge #8958 - Separate script and layout messages, issue #8843 (from jkachmar:separate-layout-msg); r=KiChjang

Separated layout-specific messages to the constellation out from the `ScriptMsg` enum into a `LayoutMsg` enum within `script_traits/script_msg.rs`, addresses [#8843](https://github.com/servo/servo/issues/8843).

I initially tried to move `LayoutMsg` into `layout_traits/lib.rs`, but this introduced a cyclic dependency: `layout_traits` depends on `script_traits` for the `LayoutTaskFactory` implementation, and `script_traits/script_task.rs` now depends on `LayoutMsg` for new layout channels in `InitialScriptState` and `ScriptTask`.

Source-Repo: https://github.com/servo/servo
Source-Revision: 941653da653a1925ade35597e97f61a6a8a0018d
This commit is contained in:
Joe Kachmar
2015-12-27 02:54:38 +05:00
parent 9661be39e4
commit 709a423669
11 changed files with 80 additions and 27 deletions

View File

@@ -80,7 +80,7 @@ use profile_traits::time::{self, ProfilerCategory, profile};
use script_traits::CompositorEvent::{KeyEvent, MouseButtonEvent, MouseMoveEvent, ResizeEvent};
use script_traits::CompositorEvent::{TouchEvent};
use script_traits::{CompositorEvent, ConstellationControlMsg, EventResult, InitialScriptState, NewLayoutInfo};
use script_traits::{OpaqueScriptLayoutChannel, ScriptMsg as ConstellationMsg};
use script_traits::{LayoutMsg, OpaqueScriptLayoutChannel, ScriptMsg as ConstellationMsg};
use script_traits::{ScriptTaskFactory, ScriptToCompositorMsg, TimerEvent, TimerEventRequest, TimerSource};
use script_traits::{TouchEventType, TouchId};
use std::any::Any;
@@ -406,6 +406,9 @@ pub struct ScriptTask {
/// For communicating load url messages to the constellation
constellation_chan: ConstellationChan<ConstellationMsg>,
/// For communicating layout messages to the constellation
layout_to_constellation_chan: ConstellationChan<LayoutMsg>,
/// A handle to the compositor for communicating ready state messages.
compositor: DOMRefCell<IpcSender<ScriptToCompositorMsg>>,
@@ -669,6 +672,7 @@ impl ScriptTask {
control_chan: state.control_chan,
control_port: control_port,
constellation_chan: state.constellation_chan,
layout_to_constellation_chan: state.layout_to_constellation_chan,
compositor: DOMRefCell::new(state.compositor),
time_profiler_chan: state.time_profiler_chan,
mem_profiler_chan: state.mem_profiler_chan,
@@ -1195,7 +1199,7 @@ impl ScriptTask {
is_parent: false,
layout_pair: layout_pair,
pipeline_port: pipeline_port,
constellation_chan: self.constellation_chan.clone(),
constellation_chan: self.layout_to_constellation_chan.clone(),
failure: failure,
paint_chan: paint_chan,
script_chan: self.control_chan.clone(),