aboutsummaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/compositing/compositor_thread.rs52
-rw-r--r--components/constellation/constellation.rs47
-rw-r--r--components/constellation/pipeline.rs36
-rw-r--r--components/script/dom/document.rs16
-rw-r--r--components/script/dom/window.rs22
-rw-r--r--components/script/script_thread.rs35
-rw-r--r--components/script_traits/lib.rs39
-rw-r--r--components/script_traits/script_msg.rs33
8 files changed, 108 insertions, 172 deletions
diff --git a/components/compositing/compositor_thread.rs b/components/compositing/compositor_thread.rs
index 4209a87bae5..e6a11d1cdcd 100644
--- a/components/compositing/compositor_thread.rs
+++ b/components/compositing/compositor_thread.rs
@@ -9,13 +9,13 @@ use compositor::{self, CompositingReason};
use euclid::point::Point2D;
use euclid::size::Size2D;
use gfx_traits::{Epoch, FrameTreeId, LayerId, LayerProperties, PaintListener};
-use ipc_channel::ipc::{IpcReceiver, IpcSender};
+use ipc_channel::ipc::IpcSender;
use layers::layers::{BufferRequest, LayerBufferSet};
use layers::platform::surface::{NativeDisplay, NativeSurface};
use msg::constellation_msg::{Image, Key, KeyModifiers, KeyState, PipelineId};
use profile_traits::mem;
use profile_traits::time;
-use script_traits::{AnimationState, ConstellationMsg, EventResult, ScriptToCompositorMsg};
+use script_traits::{AnimationState, ConstellationMsg, EventResult};
use std::fmt::{Debug, Error, Formatter};
use std::rc::Rc;
use std::sync::mpsc::{Receiver, Sender, channel};
@@ -55,54 +55,6 @@ impl CompositorReceiver for Receiver<Msg> {
}
}
-pub fn run_script_listener_thread(compositor_proxy: Box<CompositorProxy + 'static + Send>,
- receiver: IpcReceiver<ScriptToCompositorMsg>) {
- while let Ok(msg) = receiver.recv() {
- match msg {
- ScriptToCompositorMsg::ScrollFragmentPoint(pipeline_id, layer_id, point, smooth) => {
- compositor_proxy.send(Msg::ScrollFragmentPoint(pipeline_id,
- layer_id,
- point,
- smooth));
- }
-
- ScriptToCompositorMsg::GetClientWindow(send) => {
- compositor_proxy.send(Msg::GetClientWindow(send));
- }
-
- ScriptToCompositorMsg::MoveTo(point) => {
- compositor_proxy.send(Msg::MoveTo(point));
- }
-
- ScriptToCompositorMsg::ResizeTo(size) => {
- compositor_proxy.send(Msg::ResizeTo(size));
- }
-
- ScriptToCompositorMsg::Exit => {
- compositor_proxy.send(Msg::Exit);
- }
-
- ScriptToCompositorMsg::SetTitle(pipeline_id, title) => {
- compositor_proxy.send(Msg::ChangePageTitle(pipeline_id, title))
- }
-
- ScriptToCompositorMsg::SendKeyEvent(key, key_state, key_modifiers) => {
- compositor_proxy.send(Msg::KeyEvent(key, key_state, key_modifiers))
- }
-
- ScriptToCompositorMsg::TouchEventProcessed(result) => {
- compositor_proxy.send(Msg::TouchEventProcessed(result))
- }
-
- ScriptToCompositorMsg::GetScrollOffset(pid, lid, send) => {
- compositor_proxy.send(Msg::GetScrollOffset(pid, lid, send));
- }
-
- ScriptToCompositorMsg::Exited => break,
- }
- }
-}
-
pub trait RenderListener {
fn recomposite(&mut self, reason: CompositingReason);
}
diff --git a/components/constellation/constellation.rs b/components/constellation/constellation.rs
index c8770245b5d..c6e7c16052f 100644
--- a/components/constellation/constellation.rs
+++ b/components/constellation/constellation.rs
@@ -423,7 +423,7 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
initial_window_size: Option<TypedSize2D<PagePx, f32>>,
script_channel: Option<IpcSender<ConstellationControlMsg>>,
load_data: LoadData) {
- let spawning_paint_only = script_channel.is_some();
+ let spawning_content = script_channel.is_none();
let (pipeline, unprivileged_pipeline_content, privileged_pipeline_content) =
Pipeline::create::<LTF, STF>(InitialPipelineState {
id: pipeline_id,
@@ -448,11 +448,9 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
webrender_api_sender: self.webrender_api_sender.clone(),
});
- if spawning_paint_only {
- privileged_pipeline_content.start_paint_thread();
- } else {
- privileged_pipeline_content.start_all();
+ privileged_pipeline_content.start();
+ if spawning_content {
// Spawn the child process.
//
// Yes, that's all there is to it!
@@ -812,6 +810,45 @@ impl<Message, LTF, STF> Constellation<Message, LTF, STF>
self.handle_alert(pipeline_id, message, sender);
}
+ Request::Script(FromScriptMsg::ScrollFragmentPoint(pipeline_id, layer_id, point, smooth)) => {
+ self.compositor_proxy.send(ToCompositorMsg::ScrollFragmentPoint(pipeline_id,
+ layer_id,
+ point,
+ smooth));
+ }
+
+ Request::Script(FromScriptMsg::GetClientWindow(send)) => {
+ self.compositor_proxy.send(ToCompositorMsg::GetClientWindow(send));
+ }
+
+ Request::Script(FromScriptMsg::MoveTo(point)) => {
+ self.compositor_proxy.send(ToCompositorMsg::MoveTo(point));
+ }
+
+ Request::Script(FromScriptMsg::ResizeTo(size)) => {
+ self.compositor_proxy.send(ToCompositorMsg::ResizeTo(size));
+ }
+
+ Request::Script(FromScriptMsg::Exit) => {
+ self.compositor_proxy.send(ToCompositorMsg::Exit);
+ }
+
+ Request::Script(FromScriptMsg::SetTitle(pipeline_id, title)) => {
+ self.compositor_proxy.send(ToCompositorMsg::ChangePageTitle(pipeline_id, title))
+ }
+
+ Request::Script(FromScriptMsg::SendKeyEvent(key, key_state, key_modifiers)) => {
+ self.compositor_proxy.send(ToCompositorMsg::KeyEvent(key, key_state, key_modifiers))
+ }
+
+ Request::Script(FromScriptMsg::TouchEventProcessed(result)) => {
+ self.compositor_proxy.send(ToCompositorMsg::TouchEventProcessed(result))
+ }
+
+ Request::Script(FromScriptMsg::GetScrollOffset(pid, lid, send)) => {
+ self.compositor_proxy.send(ToCompositorMsg::GetScrollOffset(pid, lid, send));
+ }
+
// Messages from layout thread
diff --git a/components/constellation/pipeline.rs b/components/constellation/pipeline.rs
index 6c8c8b24e8f..2170fd8be03 100644
--- a/components/constellation/pipeline.rs
+++ b/components/constellation/pipeline.rs
@@ -4,7 +4,6 @@
use compositing::CompositionPipeline;
use compositing::CompositorProxy;
-use compositing::compositor_thread;
use compositing::compositor_thread::Msg as CompositorMsg;
use devtools_traits::{DevtoolsControlMsg, ScriptToDevtoolsControlMsg};
use euclid::scale_factor::ScaleFactor;
@@ -24,7 +23,7 @@ use profile_traits::mem as profile_mem;
use profile_traits::time;
use script_traits::{ConstellationControlMsg, InitialScriptState, MozBrowserEvent};
use script_traits::{LayoutControlMsg, LayoutMsg, NewLayoutInfo, ScriptMsg};
-use script_traits::{ScriptToCompositorMsg, ScriptThreadFactory, TimerEventRequest};
+use script_traits::{ScriptThreadFactory, TimerEventRequest};
use std::collections::HashMap;
use std::mem;
use std::sync::mpsc::{Receiver, Sender, channel};
@@ -34,7 +33,6 @@ use util::geometry::{PagePx, ViewportPx};
use util::ipc::OptionalIpcSender;
use util::opts::{self, Opts};
use util::prefs::{self, Pref};
-use util::thread;
use webrender_traits;
/// A uniquely-identifiable pipeline of script thread, layout thread, and paint thread.
@@ -128,8 +126,6 @@ impl Pipeline {
.expect("Pipeline layout shutdown chan");
let (pipeline_chan, pipeline_port) = ipc::channel()
.expect("Pipeline main chan");;
- let (script_to_compositor_chan, script_to_compositor_port) = ipc::channel()
- .expect("Pipeline script to compositor chan");
let window_size = state.window_size.map(|size| {
WindowSizeData {
@@ -223,7 +219,6 @@ impl Pipeline {
pipeline_port: pipeline_port,
layout_shutdown_chan: layout_shutdown_chan,
paint_shutdown_chan: paint_shutdown_chan.clone(),
- script_to_compositor_chan: script_to_compositor_chan,
pipeline_namespace_id: state.pipeline_namespace_id,
layout_content_process_shutdown_chan: layout_content_process_shutdown_chan,
layout_content_process_shutdown_port: layout_content_process_shutdown_port,
@@ -244,7 +239,6 @@ impl Pipeline {
chrome_to_paint_chan: chrome_to_paint_chan,
chrome_to_paint_port: chrome_to_paint_port,
paint_shutdown_chan: paint_shutdown_chan,
- script_to_compositor_port: script_to_compositor_port,
};
(pipeline, unprivileged_pipeline_content, privileged_pipeline_content)
@@ -380,7 +374,6 @@ pub struct UnprivilegedPipelineContent {
layout_to_constellation_chan: IpcSender<LayoutMsg>,
scheduler_chan: IpcSender<TimerEventRequest>,
devtools_chan: Option<IpcSender<ScriptToDevtoolsControlMsg>>,
- script_to_compositor_chan: IpcSender<ScriptToCompositorMsg>,
bluetooth_thread: IpcSender<BluetoothMethodMsg>,
image_cache_thread: ImageCacheThread,
font_cache_thread: FontCacheThread,
@@ -414,7 +407,6 @@ impl UnprivilegedPipelineContent {
let layout_pair = STF::create(InitialScriptState {
id: self.id,
parent_info: self.parent_info,
- compositor: self.script_to_compositor_chan,
control_chan: self.script_chan.clone(),
control_port: mem::replace(&mut self.script_port, None).expect("No script port."),
constellation_chan: self.constellation_chan.clone(),
@@ -467,7 +459,6 @@ impl UnprivilegedPipelineContent {
pub struct PrivilegedPipelineContent {
id: PipelineId,
compositor_proxy: Box<CompositorProxy + Send + 'static>,
- script_to_compositor_port: IpcReceiver<ScriptToCompositorMsg>,
font_cache_thread: FontCacheThread,
time_profiler_chan: time::ProfilerChan,
mem_profiler_chan: profile_mem::ProfilerChan,
@@ -480,30 +471,7 @@ pub struct PrivilegedPipelineContent {
}
impl PrivilegedPipelineContent {
- pub fn start_all(self) {
- PaintThread::create(self.id,
- self.load_data.url,
- self.chrome_to_paint_chan,
- self.layout_to_paint_port,
- self.chrome_to_paint_port,
- self.compositor_proxy.clone_compositor_proxy(),
- self.panic_chan,
- self.font_cache_thread,
- self.time_profiler_chan,
- self.mem_profiler_chan,
- self.paint_shutdown_chan);
-
- let compositor_proxy_for_script_listener_thread =
- self.compositor_proxy.clone_compositor_proxy();
- let script_to_compositor_port = self.script_to_compositor_port;
- thread::spawn_named("CompositorScriptListener".to_owned(), move || {
- compositor_thread::run_script_listener_thread(
- compositor_proxy_for_script_listener_thread,
- script_to_compositor_port)
- });
- }
-
- pub fn start_paint_thread(self) {
+ pub fn start(self) {
PaintThread::create(self.id,
self.load_data.url,
self.chrome_to_paint_chan,
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index 42708265325..89755564bb6 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -106,8 +106,8 @@ use parse::{ParserRoot, ParserRef, MutNullableParserField};
use script_thread::{MainThreadScriptMsg, Runnable};
use script_traits::UntrustedNodeAddress;
use script_traits::{AnimationState, MouseButton, MouseEventType, MozBrowserEvent};
-use script_traits::{ScriptMsg as ConstellationMsg, ScriptToCompositorMsg};
-use script_traits::{TouchpadPressurePhase, TouchEventType, TouchId};
+use script_traits::{ScriptMsg as ConstellationMsg, TouchpadPressurePhase};
+use script_traits::{TouchEventType, TouchId};
use std::ascii::AsciiExt;
use std::borrow::ToOwned;
use std::boxed::FnBox;
@@ -636,10 +636,10 @@ impl Document {
/// Sends this document's title to the compositor.
pub fn send_title_to_compositor(&self) {
let window = self.window();
- let compositor = window.compositor();
- compositor.send(ScriptToCompositorMsg::SetTitle(window.pipeline(),
- Some(String::from(self.Title()))))
- .unwrap();
+ window.constellation_chan()
+ .send(ConstellationMsg::SetTitle(window.pipeline(),
+ Some(String::from(self.Title()))))
+ .unwrap();
}
pub fn dirty_all_nodes(&self) {
@@ -1049,7 +1049,7 @@ impl Document {
key: Key,
state: KeyState,
modifiers: KeyModifiers,
- compositor: &IpcSender<ScriptToCompositorMsg>) {
+ constellation: &IpcSender<ConstellationMsg>) {
let focused = self.get_focused_element();
let body = self.GetBody();
@@ -1124,7 +1124,7 @@ impl Document {
}
if !prevented {
- compositor.send(ScriptToCompositorMsg::SendKeyEvent(key, state, modifiers)).unwrap();
+ constellation.send(ConstellationMsg::SendKeyEvent(key, state, modifiers)).unwrap();
}
// This behavior is unspecced
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index e5af0ebbf26..63a0ca2a36e 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -62,7 +62,7 @@ use script_runtime::{ScriptChan, ScriptPort};
use script_thread::SendableMainThreadScriptChan;
use script_thread::{MainThreadScriptChan, MainThreadScriptMsg, RunnableWrapper};
use script_traits::{ConstellationControlMsg, UntrustedNodeAddress};
-use script_traits::{DocumentState, MsDuration, ScriptToCompositorMsg, TimerEvent, TimerEventId};
+use script_traits::{DocumentState, MsDuration, TimerEvent, TimerEventId};
use script_traits::{ScriptMsg as ConstellationMsg, TimerEventRequest, TimerSource};
use std::ascii::AsciiExt;
use std::borrow::ToOwned;
@@ -153,8 +153,6 @@ pub struct Window {
image_cache_chan: ImageCacheChan,
#[ignore_heap_size_of = "channels are hard"]
custom_message_chan: IpcSender<CustomResponseSender>,
- #[ignore_heap_size_of = "TODO(#6911) newtypes containing unmeasurable types are hard"]
- compositor: IpcSender<ScriptToCompositorMsg>,
browsing_context: MutNullableHeap<JS<BrowsingContext>>,
performance: MutNullableHeap<JS<Performance>>,
navigation_start: u64,
@@ -340,10 +338,6 @@ impl Window {
&self.image_cache_thread
}
- pub fn compositor(&self) -> &IpcSender<ScriptToCompositorMsg> {
- &self.compositor
- }
-
pub fn browsing_context(&self) -> Root<BrowsingContext> {
self.browsing_context.get().unwrap()
}
@@ -775,7 +769,7 @@ impl WindowMethods for Window {
// Step 1
//TODO determine if this operation is allowed
let size = Size2D::new(x.to_u32().unwrap_or(1), y.to_u32().unwrap_or(1));
- self.compositor.send(ScriptToCompositorMsg::ResizeTo(size)).unwrap()
+ self.constellation_chan.send(ConstellationMsg::ResizeTo(size)).unwrap()
}
// https://drafts.csswg.org/cssom-view/#dom-window-resizeby
@@ -790,7 +784,7 @@ impl WindowMethods for Window {
// Step 1
//TODO determine if this operation is allowed
let point = Point2D::new(x, y);
- self.compositor.send(ScriptToCompositorMsg::MoveTo(point)).unwrap()
+ self.constellation_chan.send(ConstellationMsg::MoveTo(point)).unwrap()
}
// https://drafts.csswg.org/cssom-view/#dom-window-moveby
@@ -976,13 +970,13 @@ impl Window {
let size = self.current_viewport.get().size;
self.current_viewport.set(Rect::new(Point2D::new(Au::from_f32_px(x), Au::from_f32_px(y)), size));
- self.compositor.send(ScriptToCompositorMsg::ScrollFragmentPoint(
- self.pipeline(), layer_id, point, smooth)).unwrap()
+ let message = ConstellationMsg::ScrollFragmentPoint(self.pipeline(), layer_id, point, smooth);
+ self.constellation_chan.send(message).unwrap();
}
pub fn client_window(&self) -> (Size2D<u32>, Point2D<i32>) {
let (send, recv) = ipc::channel::<(Size2D<u32>, Point2D<i32>)>().unwrap();
- self.compositor.send(ScriptToCompositorMsg::GetClientWindow(send)).unwrap();
+ self.constellation_chan.send(ConstellationMsg::GetClientWindow(send)).unwrap();
recv.recv().unwrap_or((Size2D::zero(), Point2D::zero()))
}
@@ -1180,7 +1174,7 @@ impl Window {
let pipeline_id = self.id;
let (send, recv) = ipc::channel::<Point2D<f32>>().unwrap();
- self.compositor.send(ScriptToCompositorMsg::GetScrollOffset(pipeline_id, layer_id, send)).unwrap();
+ self.constellation_chan.send(ConstellationMsg::GetScrollOffset(pipeline_id, layer_id, send)).unwrap();
recv.recv().unwrap_or(Point2D::zero())
}
@@ -1450,7 +1444,6 @@ impl Window {
file_task_source: FileReadingTaskSource,
image_cache_chan: ImageCacheChan,
custom_message_chan: IpcSender<CustomResponseSender>,
- compositor: IpcSender<ScriptToCompositorMsg>,
image_cache_thread: ImageCacheThread,
resource_threads: ResourceThreads,
bluetooth_thread: IpcSender<BluetoothMethodMsg>,
@@ -1490,7 +1483,6 @@ impl Window {
custom_message_chan: custom_message_chan,
console: Default::default(),
crypto: Default::default(),
- compositor: compositor,
navigator: Default::default(),
image_cache_thread: image_cache_thread,
mem_profiler_chan: mem_profiler_chan,
diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs
index e07e0ad64f7..ffb4125845b 100644
--- a/components/script/script_thread.rs
+++ b/components/script/script_thread.rs
@@ -81,7 +81,7 @@ use script_traits::CompositorEvent::{TouchEvent, TouchpadPressureEvent};
use script_traits::{CompositorEvent, ConstellationControlMsg, EventResult};
use script_traits::{InitialScriptState, MouseButton, MouseEventType, MozBrowserEvent, NewLayoutInfo};
use script_traits::{LayoutMsg, ScriptMsg as ConstellationMsg};
-use script_traits::{ScriptThreadFactory, ScriptToCompositorMsg, TimerEvent, TimerEventRequest, TimerSource};
+use script_traits::{ScriptThreadFactory, TimerEvent, TimerEventRequest, TimerSource};
use script_traits::{TouchEventType, TouchId};
use std::borrow::ToOwned;
use std::cell::{Cell, RefCell};
@@ -350,9 +350,6 @@ pub struct ScriptThread {
/// For communicating layout messages to the constellation
layout_to_constellation_chan: IpcSender<LayoutMsg>,
- /// A handle to the compositor for communicating ready state messages.
- compositor: IpcSender<ScriptToCompositorMsg>,
-
/// The port on which we receive messages from the image cache
image_cache_port: Receiver<ImageCacheResult>,
@@ -465,7 +462,6 @@ impl ScriptThreadFactory for ScriptThread {
let reporter_name = format!("script-reporter-{}", id);
mem_profiler_chan.run_with_memory_reporting(|| {
script_thread.start();
- let _ = script_thread.compositor.send(ScriptToCompositorMsg::Exited);
let _ = script_thread.content_process_shutdown_chan.send(());
}, reporter_name, script_chan, CommonScriptMsg::CollectReports);
@@ -577,7 +573,6 @@ impl ScriptThread {
control_port: control_port,
constellation_chan: state.constellation_chan,
layout_to_constellation_chan: state.layout_to_constellation_chan,
- compositor: state.compositor,
time_profiler_chan: state.time_profiler_chan,
mem_profiler_chan: state.mem_profiler_chan,
panic_chan: state.panic_chan,
@@ -1301,8 +1296,8 @@ impl ScriptThread {
// TODO(tkuehn): currently there is only one window,
// so this can afford to be naive and just shut down the
- // compositor. In the future it'll need to be smarter.
- self.compositor.send(ScriptToCompositorMsg::Exit).unwrap();
+ // constellation. In the future it'll need to be smarter.
+ self.constellation_chan.send(ConstellationMsg::Exit).unwrap();
}
/// We have received notification that the response associated with a load has completed.
@@ -1459,7 +1454,6 @@ impl ScriptThread {
FileReadingTaskSource(file_sender.clone()),
self.image_cache_channel.clone(),
self.custom_message_chan.clone(),
- self.compositor.clone(),
self.image_cache_thread.clone(),
self.resource_threads.clone(),
self.bluetooth_thread.clone(),
@@ -1682,8 +1676,11 @@ impl ScriptThread {
let point = Point2D::new(rect.origin.x.to_nearest_px() as f32,
rect.origin.y.to_nearest_px() as f32);
- self.compositor.send(ScriptToCompositorMsg::ScrollFragmentPoint(
- pipeline_id, LayerId::null(), point, false)).unwrap();
+ let message = ConstellationMsg::ScrollFragmentPoint(pipeline_id,
+ LayerId::null(),
+ point,
+ false);
+ self.constellation_chan.send(message).unwrap();
}
/// Reflows non-incrementally, rebuilding the entire layout tree in the process.
@@ -1768,16 +1765,14 @@ impl ScriptThread {
let handled = self.handle_touch_event(pipeline_id, event_type, identifier, point);
match event_type {
TouchEventType::Down => {
- if handled {
+ let result = if handled {
// TODO: Wait to see if preventDefault is called on the first touchmove event.
- self.compositor
- .send(ScriptToCompositorMsg::TouchEventProcessed(
- EventResult::DefaultAllowed)).unwrap();
+ EventResult::DefaultAllowed
} else {
- self.compositor
- .send(ScriptToCompositorMsg::TouchEventProcessed(
- EventResult::DefaultPrevented)).unwrap();
- }
+ EventResult::DefaultPrevented
+ };
+ let message = ConstellationMsg::TouchEventProcessed(result);
+ self.constellation_chan.send(message).unwrap();
}
_ => {
// TODO: Calling preventDefault on a touchup event should prevent clicks.
@@ -1794,7 +1789,7 @@ impl ScriptThread {
KeyEvent(key, state, modifiers) => {
let context = get_browsing_context(&self.root_browsing_context(), pipeline_id);
let document = context.active_document();
- document.dispatch_key_event(key, state, modifiers, &self.compositor);
+ document.dispatch_key_event(key, state, modifiers, &self.constellation_chan);
}
}
}
diff --git a/components/script_traits/lib.rs b/components/script_traits/lib.rs
index 7ee96092aba..d8f053eb54d 100644
--- a/components/script_traits/lib.rs
+++ b/components/script_traits/lib.rs
@@ -57,7 +57,7 @@ use std::sync::mpsc::{Sender, Receiver};
use url::Url;
use util::ipc::OptionalOpaqueIpcSender;
-pub use script_msg::{LayoutMsg, ScriptMsg};
+pub use script_msg::{LayoutMsg, ScriptMsg, EventResult};
/// The address of a node. Layout sends these back. They must be validated via
/// `from_untrusted_node_address` before they can be used, because we do not trust layout.
@@ -304,8 +304,6 @@ pub struct InitialScriptState {
/// The subpage ID of this pipeline to create in its pipeline parent.
/// If `None`, this is the root.
pub parent_info: Option<(PipelineId, SubpageId)>,
- /// The compositor.
- pub compositor: IpcSender<ScriptToCompositorMsg>,
/// A channel with which messages can be sent to us (the script thread).
pub control_chan: IpcSender<ConstellationControlMsg>,
/// A port on which messages sent by the constellation to script can be received.
@@ -349,41 +347,6 @@ pub trait ScriptThreadFactory {
-> (Sender<Self::Message>, Receiver<Self::Message>);
}
-/// Messages sent from the script thread to the compositor
-#[derive(Deserialize, Serialize)]
-pub enum ScriptToCompositorMsg {
- /// Scroll a page in a window
- ScrollFragmentPoint(PipelineId, LayerId, Point2D<f32>, bool),
- /// Set title of current page
- /// https://html.spec.whatwg.org/multipage/#document.title
- SetTitle(PipelineId, Option<String>),
- /// Send a key event
- SendKeyEvent(Key, KeyState, KeyModifiers),
- /// Get Window Informations size and position
- GetClientWindow(IpcSender<(Size2D<u32>, Point2D<i32>)>),
- /// Move the window to a point
- MoveTo(Point2D<i32>),
- /// Resize the window to size
- ResizeTo(Size2D<u32>),
- /// Script has handled a touch event, and either prevented or allowed default actions.
- TouchEventProcessed(EventResult),
- /// Get Scroll Offset
- GetScrollOffset(PipelineId, LayerId, IpcSender<Point2D<f32>>),
- /// Requests that the compositor shut down.
- Exit,
- /// Allow the compositor to free script-specific resources.
- Exited,
-}
-
-/// Whether a DOM event was prevented by web content
-#[derive(Deserialize, Serialize)]
-pub enum EventResult {
- /// Allowed by web content
- DefaultAllowed,
- /// Prevented by web content
- DefaultPrevented,
-}
-
/// Whether the sandbox attribute is present for an iframe element
#[derive(PartialEq, Eq, Copy, Clone, Debug, Deserialize, Serialize)]
pub enum IFrameSandboxState {
diff --git a/components/script_traits/script_msg.rs b/components/script_traits/script_msg.rs
index aee49bac43f..d1f56a6e790 100644
--- a/components/script_traits/script_msg.rs
+++ b/components/script_traits/script_msg.rs
@@ -11,9 +11,10 @@ use MozBrowserEvent;
use canvas_traits::CanvasMsg;
use euclid::point::Point2D;
use euclid::size::Size2D;
+use gfx_traits::LayerId;
use ipc_channel::ipc::IpcSender;
-use msg::constellation_msg::{LoadData, SubpageId};
-use msg::constellation_msg::{NavigationDirection, PipelineId};
+use msg::constellation_msg::{Key, KeyModifiers, KeyState, LoadData};
+use msg::constellation_msg::{NavigationDirection, PipelineId, SubpageId};
use offscreen_gl_context::{GLContextAttributes, GLLimits};
use style_traits::cursor::Cursor;
use style_traits::viewport::ViewportConstraints;
@@ -30,6 +31,15 @@ pub enum LayoutMsg {
ViewportConstrained(PipelineId, ViewportConstraints),
}
+/// Whether a DOM event was prevented by web content
+#[derive(Deserialize, Serialize)]
+pub enum EventResult {
+ /// Allowed by web content
+ DefaultAllowed,
+ /// Prevented by web content
+ DefaultPrevented,
+}
+
/// Messages from the script to the constellation.
#[derive(Deserialize, Serialize)]
pub enum ScriptMsg {
@@ -83,4 +93,23 @@ pub enum ScriptMsg {
SetFinalUrl(PipelineId, Url),
/// Check if an alert dialog box should be presented
Alert(PipelineId, String, IpcSender<bool>),
+ /// Scroll a page in a window
+ ScrollFragmentPoint(PipelineId, LayerId, Point2D<f32>, bool),
+ /// Set title of current page
+ /// https://html.spec.whatwg.org/multipage/#document.title
+ SetTitle(PipelineId, Option<String>),
+ /// Send a key event
+ SendKeyEvent(Key, KeyState, KeyModifiers),
+ /// Get Window Informations size and position
+ GetClientWindow(IpcSender<(Size2D<u32>, Point2D<i32>)>),
+ /// Move the window to a point
+ MoveTo(Point2D<i32>),
+ /// Resize the window to size
+ ResizeTo(Size2D<u32>),
+ /// Script has handled a touch event, and either prevented or allowed default actions.
+ TouchEventProcessed(EventResult),
+ /// Get Scroll Offset
+ GetScrollOffset(PipelineId, LayerId, IpcSender<Point2D<f32>>),
+ /// Requests that the compositor shut down.
+ Exit,
}