script_traits: Rename ConstellationControlMsg to ScriptThreadMessage (#35226)

At some point in the past this message was only sent from the
`Constellation` to `script`, but nowadays this is sent from various
parts of servo to the `ScriptThread`, so this is a better name. In
particular, the current name makes it seeem like this message controls
the `Constellation`, which it does not.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
Martin Robinson 2025-01-30 23:46:17 +01:00 committed by GitHub
parent 006ec58598
commit ad07db0b0c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 183 additions and 200 deletions

View file

@ -31,7 +31,7 @@ use profile_traits::time::{self as profile_time, ProfilerCategory};
use profile_traits::time_profile;
use script_traits::CompositorEvent::{MouseButtonEvent, MouseMoveEvent, TouchEvent, WheelEvent};
use script_traits::{
AnimationState, AnimationTickType, ConstellationControlMsg, ScrollState, WindowSizeData,
AnimationState, AnimationTickType, ScriptThreadMessage, ScrollState, WindowSizeData,
WindowSizeType,
};
use servo_geometry::{DeviceIndependentPixel, FramebufferUintLength};
@ -1886,7 +1886,7 @@ impl IOCompositor {
});
if let Some(pipeline) = details.pipeline.as_ref() {
let message = ConstellationControlMsg::SetScrollStates(*pipeline_id, scroll_states);
let message = ScriptThreadMessage::SetScrollStates(*pipeline_id, scroll_states);
let _ = pipeline.script_chan.send(message);
}
}
@ -2226,14 +2226,13 @@ impl IOCompositor {
// be painted.
pending_epochs.drain(0..index);
if let Err(error) =
pipeline
.script_chan
.send(ConstellationControlMsg::SetEpochPaintTime(
*pipeline_id,
current_epoch,
paint_time,
))
if let Err(error) = pipeline
.script_chan
.send(ScriptThreadMessage::SetEpochPaintTime(
*pipeline_id,
current_epoch,
paint_time,
))
{
warn!("Sending RequestLayoutPaintMetric message to layout failed ({error:?}).");
}

View file

@ -139,13 +139,13 @@ use script_layout_interface::{LayoutFactory, ScriptThreadFactory};
use script_traits::CompositorEvent::{MouseButtonEvent, MouseMoveEvent};
use script_traits::{
webdriver_msg, AnimationState, AnimationTickType, AuxiliaryBrowsingContextLoadInfo,
BroadcastMsg, CompositorEvent, ConstellationControlMsg, DiscardBrowsingContext,
DocumentActivity, DocumentState, IFrameLoadInfo, IFrameLoadInfoWithData, IFrameSandboxState,
IFrameSizeMsg, Job, LayoutMsg as FromLayoutMsg, LoadData, LoadOrigin, LogEntry, MessagePortMsg,
BroadcastMsg, CompositorEvent, DiscardBrowsingContext, DocumentActivity, DocumentState,
IFrameLoadInfo, IFrameLoadInfoWithData, IFrameSandboxState, IFrameSizeMsg, Job,
LayoutMsg as FromLayoutMsg, LoadData, LoadOrigin, LogEntry, MessagePortMsg,
NavigationHistoryBehavior, PortMessageTask, SWManagerMsg, SWManagerSenders,
ScriptMsg as FromScriptMsg, ScriptToConstellationChan, ServiceWorkerManagerFactory,
ServiceWorkerMsg, StructuredSerializedData, UpdatePipelineIdReason, WebDriverCommandMsg,
WindowSizeData, WindowSizeType,
ScriptMsg as FromScriptMsg, ScriptThreadMessage, ScriptToConstellationChan,
ServiceWorkerManagerFactory, ServiceWorkerMsg, StructuredSerializedData,
UpdatePipelineIdReason, WebDriverCommandMsg, WindowSizeData, WindowSizeType,
};
use serde::{Deserialize, Serialize};
use servo_config::{opts, pref};
@ -1310,9 +1310,8 @@ where
// we need to take it out of it's "delaying-load-events-mode".
// https://html.spec.whatwg.org/multipage/#delaying-load-events-mode
if !pipeline_is_top_level_pipeline {
let msg = ConstellationControlMsg::StopDelayingLoadEventsMode(
pipeline_id,
);
let msg =
ScriptThreadMessage::StopDelayingLoadEventsMode(pipeline_id);
let result = match self.pipelines.get(&pipeline_id) {
Some(pipeline) => pipeline.event_loop.send(msg),
None => {
@ -1998,7 +1997,7 @@ where
self.webrender_wgpu.wgpu_image_map.clone(),
)
.map(|webgpu| {
let msg = ConstellationControlMsg::SetWebGPUPort(webgpu.1);
let msg = ScriptThreadMessage::SetWebGPUPort(webgpu.1);
if let Err(e) = source_pipeline.event_loop.send(msg) {
warn!(
"{}: Failed to send SetWebGPUPort to pipeline ({:?})",
@ -2512,7 +2511,7 @@ where
let origin = url.origin();
for pipeline in self.pipelines.values() {
if (pipeline.id != pipeline_id) && (pipeline.url.origin() == origin) {
let msg = ConstellationControlMsg::DispatchStorageEvent(
let msg = ScriptThreadMessage::DispatchStorageEvent(
pipeline.id,
storage,
url.clone(),
@ -2949,7 +2948,7 @@ where
(&event).into(),
));
if let Err(e) = pipeline.event_loop.send(ConstellationControlMsg::SendEvent(
if let Err(e) = pipeline.event_loop.send(ScriptThreadMessage::SendEvent(
destination_pipeline_id,
event,
)) {
@ -3124,7 +3123,7 @@ where
// https://html.spec.whatwg.org/multipage/#the-iframe-element:completely-loaded
// When a Document in an iframe is marked as completely loaded,
// the user agent must run the iframe load event steps.
let msg = ConstellationControlMsg::DispatchIFrameLoadEvent {
let msg = ScriptThreadMessage::DispatchIFrameLoadEvent {
target: browsing_context_id,
parent: parent_pipeline_id,
child: pipeline_id,
@ -3458,7 +3457,7 @@ where
None => return warn!("{}: Got script tick after closure", pipeline_id),
};
let message = ConstellationControlMsg::TickAllAnimations(pipeline_id, tick_type);
let message = ScriptThreadMessage::TickAllAnimations(pipeline_id, tick_type);
if let Err(e) = pipeline.event_loop.send(message) {
self.handle_send_error(pipeline_id, e);
}
@ -3558,7 +3557,7 @@ where
Some(parent_pipeline_id) => {
// Find the script thread for the pipeline containing the iframe
// and issue an iframe load through there.
let msg = ConstellationControlMsg::NavigateIframe(
let msg = ScriptThreadMessage::NavigateIframe(
parent_pipeline_id,
browsing_context_id,
load_data,
@ -3996,7 +3995,7 @@ where
self.update_activity(new_pipeline_id);
if let Some(parent_pipeline_id) = parent_pipeline_id {
let msg = ConstellationControlMsg::UpdatePipelineId(
let msg = ScriptThreadMessage::UpdatePipelineId(
parent_pipeline_id,
browsing_context_id,
top_level_id,
@ -4030,7 +4029,7 @@ where
return warn!("{}: History state updated after closure", pipeline_id);
},
Some(pipeline) => {
let msg = ConstellationControlMsg::UpdateHistoryState(
let msg = ScriptThreadMessage::UpdateHistoryState(
pipeline_id,
history_state_id,
url.clone(),
@ -4154,7 +4153,7 @@ where
},
};
let msg =
ConstellationControlMsg::SendEvent(pipeline_id, CompositorEvent::IMEDismissedEvent);
ScriptThreadMessage::SendEvent(pipeline_id, CompositorEvent::IMEDismissedEvent);
let result = match self.pipelines.get(&pipeline_id) {
Some(pipeline) => pipeline.event_loop.send(msg),
None => {
@ -4191,7 +4190,7 @@ where
);
},
};
let msg = ConstellationControlMsg::SendEvent(pipeline_id, event);
let msg = ScriptThreadMessage::SendEvent(pipeline_id, event);
let result = match self.pipelines.get(&pipeline_id) {
Some(pipeline) => pipeline.event_loop.send(msg),
None => {
@ -4225,7 +4224,7 @@ where
);
},
};
let msg = ConstellationControlMsg::SendEvent(pipeline_id, event);
let msg = ScriptThreadMessage::SendEvent(pipeline_id, event);
let result = match self.pipelines.get(&pipeline_id) {
Some(pipeline) => pipeline.event_loop.send(msg),
None => {
@ -4258,7 +4257,7 @@ where
);
},
};
let msg = ConstellationControlMsg::SendEvent(pipeline_id, event);
let msg = ScriptThreadMessage::SendEvent(pipeline_id, event);
let result = match self.pipelines.get(&pipeline_id) {
Some(pipeline) => pipeline.event_loop.send(msg),
None => {
@ -4283,7 +4282,7 @@ where
return warn!("{}: Got reload event after closure", browsing_context_id);
},
};
let msg = ConstellationControlMsg::Reload(pipeline_id);
let msg = ScriptThreadMessage::Reload(pipeline_id);
let result = match self.pipelines.get(&pipeline_id) {
None => return warn!("{}: Got reload event after closure", pipeline_id),
Some(pipeline) => pipeline.event_loop.send(msg),
@ -4318,7 +4317,7 @@ where
Some(pipeline) => pipeline.top_level_browsing_context_id,
None => return warn!("{}: PostMessage from closed pipeline", source_pipeline),
};
let msg = ConstellationControlMsg::PostMessage {
let msg = ScriptThreadMessage::PostMessage {
target: pipeline_id,
source: source_pipeline,
source_browsing_context,
@ -4434,7 +4433,7 @@ where
// Send a message to the parent of the provided browsing context (if it
// exists) telling it to mark the iframe element as focused.
let msg = ConstellationControlMsg::FocusIFrame(parent_pipeline_id, browsing_context_id);
let msg = ScriptThreadMessage::FocusIFrame(parent_pipeline_id, browsing_context_id);
let (result, parent_browsing_context_id) = match self.pipelines.get(&parent_pipeline_id) {
Some(pipeline) => {
let result = pipeline.event_loop.send(msg);
@ -4486,7 +4485,7 @@ where
};
if let Some(parent_pipeline_id) = parent_pipeline_id {
let msg = ConstellationControlMsg::SetThrottledInContainingIframe(
let msg = ScriptThreadMessage::SetThrottledInContainingIframe(
parent_pipeline_id,
browsing_context_id,
throttled,
@ -4611,7 +4610,7 @@ where
return warn!("{}: ScriptCommand after closure", browsing_context_id);
},
};
let control_msg = ConstellationControlMsg::WebDriverScriptCommand(pipeline_id, cmd);
let control_msg = ScriptThreadMessage::WebDriverScriptCommand(pipeline_id, cmd);
let result = match self.pipelines.get(&pipeline_id) {
Some(pipeline) => pipeline.event_loop.send(control_msg),
None => return warn!("{}: ScriptCommand after closure", pipeline_id),
@ -4640,7 +4639,7 @@ where
CompositorEvent::CompositionEvent(event)
},
};
let control_msg = ConstellationControlMsg::SendEvent(pipeline_id, event);
let control_msg = ScriptThreadMessage::SendEvent(pipeline_id, event);
if let Err(e) = event_loop.send(control_msg) {
return self.handle_send_error(pipeline_id, e);
}
@ -4657,7 +4656,7 @@ where
Some(pipeline) => pipeline.event_loop.clone(),
None => return warn!("{}: KeyboardAction after closure", pipeline_id),
};
let control_msg = ConstellationControlMsg::SendEvent(
let control_msg = ScriptThreadMessage::SendEvent(
pipeline_id,
CompositorEvent::KeyboardEvent(event),
);
@ -4980,7 +4979,7 @@ where
if let Some(states_to_close) = states_to_close {
for (pipeline_id, states) in states_to_close {
let msg = ConstellationControlMsg::RemoveHistoryStates(pipeline_id, states);
let msg = ScriptThreadMessage::RemoveHistoryStates(pipeline_id, states);
let result = match self.pipelines.get(&pipeline_id) {
None => {
return warn!(
@ -5132,7 +5131,7 @@ where
};
if let Some(parent_pipeline_id) = parent_pipeline_id {
if let Some(parent_pipeline) = self.pipelines.get(&parent_pipeline_id) {
let msg = ConstellationControlMsg::UpdatePipelineId(
let msg = ScriptThreadMessage::UpdatePipelineId(
parent_pipeline_id,
change.browsing_context_id,
change.top_level_browsing_context_id,
@ -5357,7 +5356,7 @@ where
None => return warn!("{}: Resized after closing", pipeline_id),
Some(pipeline) => pipeline,
};
let _ = pipeline.event_loop.send(ConstellationControlMsg::Resize(
let _ = pipeline.event_loop.send(ScriptThreadMessage::Resize(
pipeline.id,
new_size,
size_type,
@ -5370,10 +5369,7 @@ where
if let Some(pipeline) = self.pipelines.get(id) {
let _ = pipeline
.event_loop
.send(ConstellationControlMsg::ResizeInactive(
pipeline.id,
new_size,
));
.send(ScriptThreadMessage::ResizeInactive(pipeline.id, new_size));
}
}
}
@ -5389,7 +5385,7 @@ where
Some(pipeline) => pipeline,
};
if pipeline.browsing_context_id == browsing_context_id {
let _ = pipeline.event_loop.send(ConstellationControlMsg::Resize(
let _ = pipeline.event_loop.send(ScriptThreadMessage::Resize(
pipeline.id,
new_size,
size_type,
@ -5405,7 +5401,7 @@ where
)]
fn handle_theme_change(&mut self, theme: Theme) {
for pipeline in self.pipelines.values() {
let msg = ConstellationControlMsg::ThemeChange(pipeline.id, theme);
let msg = ScriptThreadMessage::ThemeChange(pipeline.id, theme);
if let Err(err) = pipeline.event_loop.send(msg) {
warn!(
"{}: Failed to send theme change event to pipeline ({:?}).",
@ -5434,7 +5430,7 @@ where
};
let _ = pipeline
.event_loop
.send(ConstellationControlMsg::ExitFullScreen(pipeline.id));
.send(ScriptThreadMessage::ExitFullScreen(pipeline.id));
}
}
@ -5557,7 +5553,7 @@ where
)]
fn unload_document(&self, pipeline_id: PipelineId) {
if let Some(pipeline) = self.pipelines.get(&pipeline_id) {
let msg = ConstellationControlMsg::UnloadDocument(pipeline_id);
let msg = ScriptThreadMessage::UnloadDocument(pipeline_id);
let _ = pipeline.event_loop.send(msg);
}
}
@ -5749,10 +5745,8 @@ where
)
},
Some(pipeline) => {
let msg = ConstellationControlMsg::MediaSessionAction(
media_session_pipeline_id,
action,
);
let msg =
ScriptThreadMessage::MediaSessionAction(media_session_pipeline_id, action);
pipeline.event_loop.send(msg)
},
};
@ -5787,7 +5781,7 @@ where
);
},
};
let msg = ConstellationControlMsg::SendEvent(pipeline_id, event);
let msg = ScriptThreadMessage::SendEvent(pipeline_id, event);
let result = match self.pipelines.get(&pipeline_id) {
Some(pipeline) => pipeline.event_loop.send(msg),
None => {

View file

@ -11,25 +11,23 @@ use std::rc::Rc;
use ipc_channel::ipc::IpcSender;
use ipc_channel::Error;
use script_traits::ConstellationControlMsg;
use script_traits::ScriptThreadMessage;
/// <https://html.spec.whatwg.org/multipage/#event-loop>
pub struct EventLoop {
script_chan: IpcSender<ConstellationControlMsg>,
script_chan: IpcSender<ScriptThreadMessage>,
dont_send_or_sync: PhantomData<Rc<()>>,
}
impl Drop for EventLoop {
fn drop(&mut self) {
let _ = self
.script_chan
.send(ConstellationControlMsg::ExitScriptThread);
let _ = self.script_chan.send(ScriptThreadMessage::ExitScriptThread);
}
}
impl EventLoop {
/// Create a new event loop from the channel to its script thread.
pub fn new(script_chan: IpcSender<ConstellationControlMsg>) -> Rc<EventLoop> {
pub fn new(script_chan: IpcSender<ScriptThreadMessage>) -> Rc<EventLoop> {
Rc::new(EventLoop {
script_chan,
dont_send_or_sync: PhantomData,
@ -37,12 +35,12 @@ impl EventLoop {
}
/// Send a message to the event loop.
pub fn send(&self, msg: ConstellationControlMsg) -> Result<(), Error> {
pub fn send(&self, msg: ScriptThreadMessage) -> Result<(), Error> {
self.script_chan.send(msg)
}
/// The underlying channel to the script thread.
pub fn sender(&self) -> IpcSender<ConstellationControlMsg> {
pub fn sender(&self) -> IpcSender<ScriptThreadMessage> {
self.script_chan.clone()
}
}

View file

@ -33,9 +33,9 @@ use net_traits::ResourceThreads;
use profile_traits::{mem as profile_mem, time};
use script_layout_interface::{LayoutFactory, ScriptThreadFactory};
use script_traits::{
AnimationState, ConstellationControlMsg, DiscardBrowsingContext, DocumentActivity,
InitialScriptState, LayoutMsg, LoadData, NewLayoutInfo, SWManagerMsg,
ScriptToConstellationChan, WindowSizeData,
AnimationState, DiscardBrowsingContext, DocumentActivity, InitialScriptState, LayoutMsg,
LoadData, NewLayoutInfo, SWManagerMsg, ScriptThreadMessage, ScriptToConstellationChan,
WindowSizeData,
};
use serde::{Deserialize, Serialize};
use servo_config::opts::{self, Opts};
@ -223,8 +223,7 @@ impl Pipeline {
window_size: state.window_size,
};
if let Err(e) =
script_chan.send(ConstellationControlMsg::AttachLayout(new_layout_info))
if let Err(e) = script_chan.send(ScriptThreadMessage::AttachLayout(new_layout_info))
{
warn!("Sending to script during pipeline creation failed ({})", e);
}
@ -393,7 +392,7 @@ impl Pipeline {
// Script thread handles shutting down layout, and layout handles shutting down the painter.
// For now, if the script thread has failed, we give up on clean shutdown.
let msg = ConstellationControlMsg::ExitPipeline(self.id, discard_bc);
let msg = ScriptThreadMessage::ExitPipeline(self.id, discard_bc);
if let Err(e) = self.event_loop.send(msg) {
warn!("Sending script exit message failed ({}).", e);
}
@ -402,7 +401,7 @@ impl Pipeline {
/// A forced exit of the shutdown, which does not wait for the compositor,
/// or for the script thread to shut down layout.
pub fn force_exit(&self, discard_bc: DiscardBrowsingContext) {
let msg = ConstellationControlMsg::ExitPipeline(self.id, discard_bc);
let msg = ScriptThreadMessage::ExitPipeline(self.id, discard_bc);
if let Err(e) = self.event_loop.send(msg) {
warn!("Sending script exit message failed ({}).", e);
}
@ -410,7 +409,7 @@ impl Pipeline {
/// Notify this pipeline of its activity.
pub fn set_activity(&self, activity: DocumentActivity) {
let msg = ConstellationControlMsg::SetDocumentActivity(self.id, activity);
let msg = ScriptThreadMessage::SetDocumentActivity(self.id, activity);
if let Err(e) = self.event_loop.send(msg) {
warn!("Sending activity message failed ({}).", e);
}
@ -452,7 +451,7 @@ impl Pipeline {
/// Set whether to make pipeline use less resources, by stopping animations and
/// running timers at a heavily limited rate.
pub fn set_throttled(&self, throttled: bool) {
let script_msg = ConstellationControlMsg::SetThrottled(self.id, throttled);
let script_msg = ScriptThreadMessage::SetThrottled(self.id, throttled);
let compositor_msg = CompositorMsg::SetThrottled(self.id, throttled);
let err = self.event_loop.send(script_msg);
if let Err(e) = err {
@ -485,9 +484,9 @@ pub struct UnprivilegedPipelineContent {
time_profiler_chan: time::ProfilerChan,
mem_profiler_chan: profile_mem::ProfilerChan,
window_size: WindowSizeData,
script_chan: IpcSender<ConstellationControlMsg>,
script_chan: IpcSender<ScriptThreadMessage>,
load_data: LoadData,
script_port: IpcReceiver<ConstellationControlMsg>,
script_port: IpcReceiver<ScriptThreadMessage>,
opts: Opts,
prefs: Box<Preferences>,
pipeline_namespace_id: PipelineNamespaceId,

View file

@ -63,7 +63,7 @@ use script_layout_interface::{
OffsetParentResponse, Reflow, ReflowGoal, ReflowRequest, ReflowResult, TrustedNodeAddress,
};
use script_traits::{
ConstellationControlMsg, DrawAPaintImageResult, PaintWorkletError, Painter, ScrollState,
DrawAPaintImageResult, PaintWorkletError, Painter, ScriptThreadMessage, ScrollState,
UntrustedNodeAddress, WindowSizeData,
};
use servo_arc::Arc as ServoArc;
@ -132,7 +132,7 @@ pub struct LayoutThread {
is_iframe: bool,
/// The channel on which messages can be sent to the script thread.
script_chan: IpcSender<ConstellationControlMsg>,
script_chan: IpcSender<ScriptThreadMessage>,
/// The channel on which messages can be sent to the time profiler.
time_profiler_chan: profile_time::ProfilerChan,
@ -615,12 +615,12 @@ impl LayoutThread {
let locked_script_channel = Mutex::new(self.script_chan.clone());
let pipeline_id = self.id;
let web_font_finished_loading_callback =
move |succeeded: bool| {
let _ = locked_script_channel.lock().unwrap().send(
ConstellationControlMsg::WebFontLoaded(pipeline_id, succeeded),
);
};
let web_font_finished_loading_callback = move |succeeded: bool| {
let _ = locked_script_channel
.lock()
.unwrap()
.send(ScriptThreadMessage::WebFontLoaded(pipeline_id, succeeded));
};
self.font_context.add_all_web_fonts_from_stylesheet(
self.webview_id,

View file

@ -51,7 +51,7 @@ use script_layout_interface::{
ReflowRequest, ReflowResult, TrustedNodeAddress,
};
use script_traits::{
ConstellationControlMsg, DrawAPaintImageResult, PaintWorkletError, Painter, ScrollState,
DrawAPaintImageResult, PaintWorkletError, Painter, ScriptThreadMessage, ScrollState,
UntrustedNodeAddress, WindowSizeData,
};
use servo_arc::Arc as ServoArc;
@ -118,7 +118,7 @@ pub struct LayoutThread {
is_iframe: bool,
/// The channel on which messages can be sent to the script thread.
script_chan: IpcSender<ConstellationControlMsg>,
script_chan: IpcSender<ScriptThreadMessage>,
/// The channel on which messages can be sent to the time profiler.
time_profiler_chan: profile_time::ProfilerChan,
@ -594,10 +594,7 @@ impl LayoutThread {
let web_font_finished_loading_callback = move |succeeded: bool| {
let _ = locked_script_channel
.lock()
.send(ConstellationControlMsg::WebFontLoaded(
pipeline_id,
succeeded,
));
.send(ScriptThreadMessage::WebFontLoaded(pipeline_id, succeeded));
};
self.font_context.add_all_web_fonts_from_stylesheet(

View file

@ -14,7 +14,7 @@ use ipc_channel::ipc::IpcSender;
use log::warn;
use malloc_size_of_derive::MallocSizeOf;
use profile_traits::time::{send_profile_data, ProfilerCategory, ProfilerChan, TimerMetadata};
use script_traits::{ConstellationControlMsg, LayoutMsg, ProgressiveWebMetricType};
use script_traits::{LayoutMsg, ProgressiveWebMetricType, ScriptThreadMessage};
use servo_config::opts;
use servo_url::ServoUrl;
@ -258,7 +258,7 @@ pub struct PaintTimeMetrics {
pipeline_id: PipelineId,
time_profiler_chan: ProfilerChan,
constellation_chan: IpcSender<LayoutMsg>,
script_chan: IpcSender<ConstellationControlMsg>,
script_chan: IpcSender<ScriptThreadMessage>,
url: ServoUrl,
}
@ -267,7 +267,7 @@ impl PaintTimeMetrics {
pipeline_id: PipelineId,
time_profiler_chan: ProfilerChan,
constellation_chan: IpcSender<LayoutMsg>,
script_chan: IpcSender<ConstellationControlMsg>,
script_chan: IpcSender<ScriptThreadMessage>,
url: ServoUrl,
navigation_start: CrossProcessInstant,
) -> PaintTimeMetrics {
@ -369,7 +369,7 @@ impl ProgressiveWebMetric for PaintTimeMetrics {
name: ProgressiveWebMetricType,
time: CrossProcessInstant,
) {
let msg = ConstellationControlMsg::PaintMetric(self.pipeline_id, name, time);
let msg = ScriptThreadMessage::PaintMetric(self.pipeline_id, name, time);
if let Err(e) = self.script_chan.send(msg) {
warn!("Sending metric to script thread failed ({}).", e);
}

View file

@ -58,8 +58,8 @@ use script_layout_interface::{
};
use script_traits::webdriver_msg::{WebDriverJSError, WebDriverJSResult};
use script_traits::{
ConstellationControlMsg, DocumentState, LoadData, LoadOrigin, NavigationHistoryBehavior,
ScriptMsg, ScriptToConstellationChan, ScrollState, StructuredSerializedData, WindowSizeData,
DocumentState, LoadData, LoadOrigin, NavigationHistoryBehavior, ScriptMsg, ScriptThreadMessage,
ScriptToConstellationChan, ScrollState, StructuredSerializedData, WindowSizeData,
WindowSizeType,
};
use selectors::attr::CaseSensitivity;
@ -2760,7 +2760,7 @@ impl Window {
time_profiler_chan: TimeProfilerChan,
devtools_chan: Option<IpcSender<ScriptToDevtoolsControlMsg>>,
constellation_chan: ScriptToConstellationChan,
control_chan: IpcSender<ConstellationControlMsg>,
control_chan: IpcSender<ScriptThreadMessage>,
pipeline_id: PipelineId,
parent_info: Option<PipelineId>,
window_size: WindowSizeData,
@ -3035,7 +3035,7 @@ pub(crate) struct CSSErrorReporter {
// which is necessary to fulfill the bounds required by the
// uses of the ParseErrorReporter trait.
#[ignore_malloc_size_of = "Arc is defined in libstd"]
pub(crate) script_chan: Arc<Mutex<IpcSender<ConstellationControlMsg>>>,
pub(crate) script_chan: Arc<Mutex<IpcSender<ScriptThreadMessage>>>,
}
unsafe_no_jsmanaged_fields!(CSSErrorReporter);
@ -3061,7 +3061,7 @@ impl ParseErrorReporter for CSSErrorReporter {
.script_chan
.lock()
.unwrap()
.send(ConstellationControlMsg::ReportCSSError(
.send(ScriptThreadMessage::ReportCSSError(
self.pipelineid,
url.0.to_string(),
location.line,

View file

@ -16,7 +16,7 @@ use net_traits::image_cache::PendingImageResponse;
use net_traits::FetchResponseMsg;
use profile_traits::mem::{self as profile_mem, OpaqueSender, ReportsChan};
use profile_traits::time::{self as profile_time};
use script_traits::{ConstellationControlMsg, LayoutMsg, Painter, ScriptMsg};
use script_traits::{LayoutMsg, Painter, ScriptMsg, ScriptThreadMessage};
use servo_atoms::Atom;
use timers::TimerScheduler;
#[cfg(feature = "webgpu")]
@ -34,7 +34,7 @@ use crate::task_source::TaskSourceName;
#[derive(Debug)]
pub(crate) enum MixedMessage {
FromConstellation(ConstellationControlMsg),
FromConstellation(ScriptThreadMessage),
FromScript(MainThreadScriptMsg),
FromDevtools(DevtoolScriptControlMsg),
FromImageCache(PendingImageResponse),
@ -47,46 +47,46 @@ impl MixedMessage {
pub(crate) fn pipeline_id(&self) -> Option<PipelineId> {
match self {
MixedMessage::FromConstellation(ref inner_msg) => match *inner_msg {
ConstellationControlMsg::StopDelayingLoadEventsMode(id) => Some(id),
ConstellationControlMsg::AttachLayout(ref new_layout_info) => new_layout_info
ScriptThreadMessage::StopDelayingLoadEventsMode(id) => Some(id),
ScriptThreadMessage::AttachLayout(ref new_layout_info) => new_layout_info
.parent_info
.or(Some(new_layout_info.new_pipeline_id)),
ConstellationControlMsg::Resize(id, ..) => Some(id),
ConstellationControlMsg::ThemeChange(id, ..) => Some(id),
ConstellationControlMsg::ResizeInactive(id, ..) => Some(id),
ConstellationControlMsg::UnloadDocument(id) => Some(id),
ConstellationControlMsg::ExitPipeline(id, ..) => Some(id),
ConstellationControlMsg::ExitScriptThread => None,
ConstellationControlMsg::SendEvent(id, ..) => Some(id),
ConstellationControlMsg::Viewport(id, ..) => Some(id),
ConstellationControlMsg::GetTitle(id) => Some(id),
ConstellationControlMsg::SetDocumentActivity(id, ..) => Some(id),
ConstellationControlMsg::SetThrottled(id, ..) => Some(id),
ConstellationControlMsg::SetThrottledInContainingIframe(id, ..) => Some(id),
ConstellationControlMsg::NavigateIframe(id, ..) => Some(id),
ConstellationControlMsg::PostMessage { target: id, .. } => Some(id),
ConstellationControlMsg::UpdatePipelineId(_, _, _, id, _) => Some(id),
ConstellationControlMsg::UpdateHistoryState(id, ..) => Some(id),
ConstellationControlMsg::RemoveHistoryStates(id, ..) => Some(id),
ConstellationControlMsg::FocusIFrame(id, ..) => Some(id),
ConstellationControlMsg::WebDriverScriptCommand(id, ..) => Some(id),
ConstellationControlMsg::TickAllAnimations(id, ..) => Some(id),
ConstellationControlMsg::WebFontLoaded(id, ..) => Some(id),
ConstellationControlMsg::DispatchIFrameLoadEvent {
ScriptThreadMessage::Resize(id, ..) => Some(id),
ScriptThreadMessage::ThemeChange(id, ..) => Some(id),
ScriptThreadMessage::ResizeInactive(id, ..) => Some(id),
ScriptThreadMessage::UnloadDocument(id) => Some(id),
ScriptThreadMessage::ExitPipeline(id, ..) => Some(id),
ScriptThreadMessage::ExitScriptThread => None,
ScriptThreadMessage::SendEvent(id, ..) => Some(id),
ScriptThreadMessage::Viewport(id, ..) => Some(id),
ScriptThreadMessage::GetTitle(id) => Some(id),
ScriptThreadMessage::SetDocumentActivity(id, ..) => Some(id),
ScriptThreadMessage::SetThrottled(id, ..) => Some(id),
ScriptThreadMessage::SetThrottledInContainingIframe(id, ..) => Some(id),
ScriptThreadMessage::NavigateIframe(id, ..) => Some(id),
ScriptThreadMessage::PostMessage { target: id, .. } => Some(id),
ScriptThreadMessage::UpdatePipelineId(_, _, _, id, _) => Some(id),
ScriptThreadMessage::UpdateHistoryState(id, ..) => Some(id),
ScriptThreadMessage::RemoveHistoryStates(id, ..) => Some(id),
ScriptThreadMessage::FocusIFrame(id, ..) => Some(id),
ScriptThreadMessage::WebDriverScriptCommand(id, ..) => Some(id),
ScriptThreadMessage::TickAllAnimations(id, ..) => Some(id),
ScriptThreadMessage::WebFontLoaded(id, ..) => Some(id),
ScriptThreadMessage::DispatchIFrameLoadEvent {
target: _,
parent: id,
child: _,
} => Some(id),
ConstellationControlMsg::DispatchStorageEvent(id, ..) => Some(id),
ConstellationControlMsg::ReportCSSError(id, ..) => Some(id),
ConstellationControlMsg::Reload(id, ..) => Some(id),
ConstellationControlMsg::PaintMetric(id, ..) => Some(id),
ConstellationControlMsg::ExitFullScreen(id, ..) => Some(id),
ConstellationControlMsg::MediaSessionAction(..) => None,
ScriptThreadMessage::DispatchStorageEvent(id, ..) => Some(id),
ScriptThreadMessage::ReportCSSError(id, ..) => Some(id),
ScriptThreadMessage::Reload(id, ..) => Some(id),
ScriptThreadMessage::PaintMetric(id, ..) => Some(id),
ScriptThreadMessage::ExitFullScreen(id, ..) => Some(id),
ScriptThreadMessage::MediaSessionAction(..) => None,
#[cfg(feature = "webgpu")]
ConstellationControlMsg::SetWebGPUPort(..) => None,
ConstellationControlMsg::SetScrollStates(id, ..) => Some(id),
ConstellationControlMsg::SetEpochPaintTime(id, ..) => Some(id),
ScriptThreadMessage::SetWebGPUPort(..) => None,
ScriptThreadMessage::SetScrollStates(id, ..) => Some(id),
ScriptThreadMessage::SetEpochPaintTime(id, ..) => Some(id),
},
MixedMessage::FromScript(ref inner_msg) => match *inner_msg {
MainThreadScriptMsg::Common(CommonScriptMsg::Task(_, _, pipeline_id, _)) => {
@ -308,7 +308,7 @@ pub(crate) struct ScriptThreadSenders {
/// A [`Sender`] that sends messages to the `Constellation`.
#[no_trace]
pub(crate) constellation_sender: IpcSender<ConstellationControlMsg>,
pub(crate) constellation_sender: IpcSender<ScriptThreadMessage>,
/// A [`Sender`] that sends messages to the `Constellation` associated with
/// particular pipelines.
@ -348,7 +348,7 @@ pub(crate) struct ScriptThreadSenders {
pub(crate) struct ScriptThreadReceivers {
/// A [`Receiver`] that receives messages from the constellation.
#[no_trace]
pub(crate) constellation_receiver: Receiver<ConstellationControlMsg>,
pub(crate) constellation_receiver: Receiver<ScriptThreadMessage>,
/// The [`Receiver`] which receives incoming messages from the `ImageCache`.
#[no_trace]

View file

@ -82,9 +82,9 @@ use script_layout_interface::{
};
use script_traits::webdriver_msg::WebDriverScriptCommand;
use script_traits::{
CompositorEvent, ConstellationControlMsg, DiscardBrowsingContext, DocumentActivity,
EventResult, InitialScriptState, JsEvalResult, LoadData, LoadOrigin, NavigationHistoryBehavior,
NewLayoutInfo, Painter, ProgressiveWebMetricType, ScriptMsg, ScriptToConstellationChan,
CompositorEvent, DiscardBrowsingContext, DocumentActivity, EventResult, InitialScriptState,
JsEvalResult, LoadData, LoadOrigin, NavigationHistoryBehavior, NewLayoutInfo, Painter,
ProgressiveWebMetricType, ScriptMsg, ScriptThreadMessage, ScriptToConstellationChan,
ScrollState, StructuredSerializedData, UntrustedNodeAddress, UpdatePipelineIdReason,
WindowSizeData, WindowSizeType,
};
@ -1411,7 +1411,7 @@ impl ScriptThread {
// This has to be handled before the ResizeMsg below,
// otherwise the page may not have been added to the
// child list yet, causing the find() to fail.
MixedMessage::FromConstellation(ConstellationControlMsg::AttachLayout(
MixedMessage::FromConstellation(ScriptThreadMessage::AttachLayout(
new_layout_info,
)) => {
let pipeline_id = new_layout_info.new_pipeline_id;
@ -1449,19 +1449,18 @@ impl ScriptThread {
},
)
},
MixedMessage::FromConstellation(ConstellationControlMsg::Resize(
MixedMessage::FromConstellation(ScriptThreadMessage::Resize(
id,
size,
size_type,
)) => {
self.handle_resize_message(id, size, size_type);
},
MixedMessage::FromConstellation(ConstellationControlMsg::Viewport(id, rect)) => {
self.profile_event(ScriptThreadEventCategory::SetViewport, Some(id), || {
MixedMessage::FromConstellation(ScriptThreadMessage::Viewport(id, rect)) => self
.profile_event(ScriptThreadEventCategory::SetViewport, Some(id), || {
self.handle_viewport(id, rect);
})
},
MixedMessage::FromConstellation(ConstellationControlMsg::TickAllAnimations(
}),
MixedMessage::FromConstellation(ScriptThreadMessage::TickAllAnimations(
pipeline_id,
tick_type,
)) => {
@ -1475,7 +1474,7 @@ impl ScriptThread {
)
}
},
MixedMessage::FromConstellation(ConstellationControlMsg::SendEvent(id, event)) => {
MixedMessage::FromConstellation(ScriptThreadMessage::SendEvent(id, event)) => {
self.handle_event(id, event)
},
MixedMessage::FromScript(MainThreadScriptMsg::Common(CommonScriptMsg::Task(
@ -1492,11 +1491,10 @@ impl ScriptThread {
// An event came-in from a document that is not fully-active, it has been stored by the task-queue.
// Continue without adding it to "sequential".
},
MixedMessage::FromConstellation(ConstellationControlMsg::ExitFullScreen(id)) => {
self.profile_event(ScriptThreadEventCategory::ExitFullscreen, Some(id), || {
MixedMessage::FromConstellation(ScriptThreadMessage::ExitFullScreen(id)) => self
.profile_event(ScriptThreadEventCategory::ExitFullscreen, Some(id), || {
self.handle_exit_fullscreen(id, can_gc);
})
},
}),
_ => {
sequential.push(event);
},
@ -1525,11 +1523,11 @@ impl ScriptThread {
if self.closing.load(Ordering::SeqCst) {
// If we've received the closed signal from the BHM, only handle exit messages.
match msg {
MixedMessage::FromConstellation(ConstellationControlMsg::ExitScriptThread) => {
MixedMessage::FromConstellation(ScriptThreadMessage::ExitScriptThread) => {
self.handle_exit_script_thread_msg(can_gc);
return false;
},
MixedMessage::FromConstellation(ConstellationControlMsg::ExitPipeline(
MixedMessage::FromConstellation(ScriptThreadMessage::ExitPipeline(
pipeline_id,
discard_browsing_context,
)) => {
@ -1546,7 +1544,7 @@ impl ScriptThread {
let exiting = self.profile_event(category, pipeline_id, move || {
match msg {
MixedMessage::FromConstellation(ConstellationControlMsg::ExitScriptThread) => {
MixedMessage::FromConstellation(ScriptThreadMessage::ExitScriptThread) => {
self.handle_exit_script_thread_msg(can_gc);
return true;
},
@ -1601,7 +1599,7 @@ impl ScriptThread {
fn categorize_msg(&self, msg: &MixedMessage) -> ScriptThreadEventCategory {
match *msg {
MixedMessage::FromConstellation(ref inner_msg) => match *inner_msg {
ConstellationControlMsg::SendEvent(_, _) => ScriptThreadEventCategory::DomEvent,
ScriptThreadMessage::SendEvent(_, _) => ScriptThreadEventCategory::DomEvent,
_ => ScriptThreadEventCategory::ConstellationMsg,
},
// TODO https://github.com/servo/servo/issues/18998
@ -1779,12 +1777,12 @@ impl ScriptThread {
value
}
fn handle_msg_from_constellation(&self, msg: ConstellationControlMsg, can_gc: CanGc) {
fn handle_msg_from_constellation(&self, msg: ScriptThreadMessage, can_gc: CanGc) {
match msg {
ConstellationControlMsg::StopDelayingLoadEventsMode(pipeline_id) => {
ScriptThreadMessage::StopDelayingLoadEventsMode(pipeline_id) => {
self.handle_stop_delaying_load_events_mode(pipeline_id)
},
ConstellationControlMsg::NavigateIframe(
ScriptThreadMessage::NavigateIframe(
parent_pipeline_id,
browsing_context_id,
load_data,
@ -1796,25 +1794,23 @@ impl ScriptThread {
history_handling,
can_gc,
),
ConstellationControlMsg::UnloadDocument(pipeline_id) => {
ScriptThreadMessage::UnloadDocument(pipeline_id) => {
self.handle_unload_document(pipeline_id, can_gc)
},
ConstellationControlMsg::ResizeInactive(id, new_size) => {
ScriptThreadMessage::ResizeInactive(id, new_size) => {
self.handle_resize_inactive_msg(id, new_size)
},
ConstellationControlMsg::ThemeChange(_, theme) => {
ScriptThreadMessage::ThemeChange(_, theme) => {
self.handle_theme_change_msg(theme);
},
ConstellationControlMsg::GetTitle(pipeline_id) => {
self.handle_get_title_msg(pipeline_id)
},
ConstellationControlMsg::SetDocumentActivity(pipeline_id, activity) => {
ScriptThreadMessage::GetTitle(pipeline_id) => self.handle_get_title_msg(pipeline_id),
ScriptThreadMessage::SetDocumentActivity(pipeline_id, activity) => {
self.handle_set_document_activity_msg(pipeline_id, activity)
},
ConstellationControlMsg::SetThrottled(pipeline_id, throttled) => {
ScriptThreadMessage::SetThrottled(pipeline_id, throttled) => {
self.handle_set_throttled_msg(pipeline_id, throttled)
},
ConstellationControlMsg::SetThrottledInContainingIframe(
ScriptThreadMessage::SetThrottledInContainingIframe(
parent_pipeline_id,
browsing_context_id,
throttled,
@ -1823,7 +1819,7 @@ impl ScriptThread {
browsing_context_id,
throttled,
),
ConstellationControlMsg::PostMessage {
ScriptThreadMessage::PostMessage {
target: target_pipeline_id,
source: source_pipeline_id,
source_browsing_context,
@ -1838,7 +1834,7 @@ impl ScriptThread {
source_origin,
data,
),
ConstellationControlMsg::UpdatePipelineId(
ScriptThreadMessage::UpdatePipelineId(
parent_pipeline_id,
browsing_context_id,
top_level_browsing_context_id,
@ -1852,27 +1848,27 @@ impl ScriptThread {
reason,
can_gc,
),
ConstellationControlMsg::UpdateHistoryState(pipeline_id, history_state_id, url) => {
ScriptThreadMessage::UpdateHistoryState(pipeline_id, history_state_id, url) => {
self.handle_update_history_state_msg(pipeline_id, history_state_id, url, can_gc)
},
ConstellationControlMsg::RemoveHistoryStates(pipeline_id, history_states) => {
ScriptThreadMessage::RemoveHistoryStates(pipeline_id, history_states) => {
self.handle_remove_history_states(pipeline_id, history_states)
},
ConstellationControlMsg::FocusIFrame(parent_pipeline_id, frame_id) => {
ScriptThreadMessage::FocusIFrame(parent_pipeline_id, frame_id) => {
self.handle_focus_iframe_msg(parent_pipeline_id, frame_id, can_gc)
},
ConstellationControlMsg::WebDriverScriptCommand(pipeline_id, msg) => {
ScriptThreadMessage::WebDriverScriptCommand(pipeline_id, msg) => {
self.handle_webdriver_msg(pipeline_id, msg, can_gc)
},
ConstellationControlMsg::WebFontLoaded(pipeline_id, success) => {
ScriptThreadMessage::WebFontLoaded(pipeline_id, success) => {
self.handle_web_font_loaded(pipeline_id, success)
},
ConstellationControlMsg::DispatchIFrameLoadEvent {
ScriptThreadMessage::DispatchIFrameLoadEvent {
target: browsing_context_id,
parent: parent_id,
child: child_id,
} => self.handle_iframe_load_event(parent_id, browsing_context_id, child_id, can_gc),
ConstellationControlMsg::DispatchStorageEvent(
ScriptThreadMessage::DispatchStorageEvent(
pipeline_id,
storage,
url,
@ -1880,37 +1876,37 @@ impl ScriptThread {
old_value,
new_value,
) => self.handle_storage_event(pipeline_id, storage, url, key, old_value, new_value),
ConstellationControlMsg::ReportCSSError(pipeline_id, filename, line, column, msg) => {
ScriptThreadMessage::ReportCSSError(pipeline_id, filename, line, column, msg) => {
self.handle_css_error_reporting(pipeline_id, filename, line, column, msg)
},
ConstellationControlMsg::Reload(pipeline_id) => self.handle_reload(pipeline_id, can_gc),
ConstellationControlMsg::ExitPipeline(pipeline_id, discard_browsing_context) => {
ScriptThreadMessage::Reload(pipeline_id) => self.handle_reload(pipeline_id, can_gc),
ScriptThreadMessage::ExitPipeline(pipeline_id, discard_browsing_context) => {
self.handle_exit_pipeline_msg(pipeline_id, discard_browsing_context, can_gc)
},
ConstellationControlMsg::PaintMetric(pipeline_id, metric_type, metric_value) => {
ScriptThreadMessage::PaintMetric(pipeline_id, metric_type, metric_value) => {
self.handle_paint_metric(pipeline_id, metric_type, metric_value, can_gc)
},
ConstellationControlMsg::MediaSessionAction(pipeline_id, action) => {
ScriptThreadMessage::MediaSessionAction(pipeline_id, action) => {
self.handle_media_session_action(pipeline_id, action, can_gc)
},
#[cfg(feature = "webgpu")]
ConstellationControlMsg::SetWebGPUPort(port) => {
ScriptThreadMessage::SetWebGPUPort(port) => {
*self.receivers.webgpu_receiver.borrow_mut() =
ROUTER.route_ipc_receiver_to_new_crossbeam_receiver(port);
},
msg @ ConstellationControlMsg::AttachLayout(..) |
msg @ ConstellationControlMsg::Viewport(..) |
msg @ ConstellationControlMsg::Resize(..) |
msg @ ConstellationControlMsg::ExitFullScreen(..) |
msg @ ConstellationControlMsg::SendEvent(..) |
msg @ ConstellationControlMsg::TickAllAnimations(..) |
msg @ ConstellationControlMsg::ExitScriptThread => {
msg @ ScriptThreadMessage::AttachLayout(..) |
msg @ ScriptThreadMessage::Viewport(..) |
msg @ ScriptThreadMessage::Resize(..) |
msg @ ScriptThreadMessage::ExitFullScreen(..) |
msg @ ScriptThreadMessage::SendEvent(..) |
msg @ ScriptThreadMessage::TickAllAnimations(..) |
msg @ ScriptThreadMessage::ExitScriptThread => {
panic!("should have handled {:?} already", msg)
},
ConstellationControlMsg::SetScrollStates(pipeline_id, scroll_states) => {
ScriptThreadMessage::SetScrollStates(pipeline_id, scroll_states) => {
self.handle_set_scroll_states_msg(pipeline_id, scroll_states)
},
ConstellationControlMsg::SetEpochPaintTime(pipeline_id, epoch, time) => {
ScriptThreadMessage::SetEpochPaintTime(pipeline_id, epoch, time) => {
self.handle_set_epoch_paint_time(pipeline_id, epoch, time)
},
}

View file

@ -17,7 +17,7 @@ use euclid::Rect;
use ipc_channel::ipc::IpcSender;
use log::warn;
use pixels::Image;
use script_traits::{AnimationState, ConstellationControlMsg, EventResult};
use script_traits::{AnimationState, EventResult, ScriptThreadMessage};
use style_traits::CSSPixel;
use webrender_api::DocumentId;
use webrender_traits::{CrossProcessCompositorApi, CrossProcessCompositorMessage};
@ -112,7 +112,7 @@ pub struct SendableFrameTree {
pub struct CompositionPipeline {
pub id: PipelineId,
pub top_level_browsing_context_id: TopLevelBrowsingContextId,
pub script_chan: IpcSender<ConstellationControlMsg>,
pub script_chan: IpcSender<ScriptThreadMessage>,
}
impl Debug for CompositorMsg {

View file

@ -286,10 +286,10 @@ pub enum UpdatePipelineIdReason {
Traversal,
}
/// Messages sent from the constellation or layout to the script thread.
// FIXME: https://github.com/servo/servo/issues/34591
/// Messages sent to the `ScriptThread` event loop from the `Constellation`, `Compositor`, and (for
/// now) `Layout`.
#[derive(Deserialize, Serialize)]
pub enum ConstellationControlMsg {
pub enum ScriptThreadMessage {
/// Takes the associated window proxy out of "delaying-load-events-mode",
/// used if a scheduled navigated was refused by the embedder.
/// <https://html.spec.whatwg.org/multipage/#delaying-load-events-mode>
@ -406,9 +406,9 @@ pub enum ConstellationControlMsg {
SetEpochPaintTime(PipelineId, Epoch, CrossProcessInstant),
}
impl fmt::Debug for ConstellationControlMsg {
impl fmt::Debug for ScriptThreadMessage {
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
use self::ConstellationControlMsg::*;
use self::ScriptThreadMessage::*;
let variant = match *self {
StopDelayingLoadEventsMode(..) => "StopDelayingLoadsEventMode",
AttachLayout(..) => "AttachLayout",
@ -551,9 +551,9 @@ pub struct InitialScriptState {
/// Loading into a Secure Context
pub inherited_secure_context: Option<bool>,
/// A channel with which messages can be sent to us (the script thread).
pub constellation_sender: IpcSender<ConstellationControlMsg>,
pub constellation_sender: IpcSender<ScriptThreadMessage>,
/// A port on which messages sent by the constellation to script can be received.
pub constellation_receiver: IpcReceiver<ConstellationControlMsg>,
pub constellation_receiver: IpcReceiver<ScriptThreadMessage>,
/// A channel on which messages can be sent to the constellation from script.
pub pipeline_to_constellation_sender: ScriptToConstellationChan,
/// A handle to register script-(and associated layout-)threads for hang monitoring.

View file

@ -33,8 +33,8 @@ use net_traits::image_cache::{ImageCache, PendingImageId};
use profile_traits::mem::Report;
use profile_traits::time;
use script_traits::{
ConstellationControlMsg, InitialScriptState, LoadData, Painter, ScrollState,
UntrustedNodeAddress, WindowSizeData,
InitialScriptState, LoadData, Painter, ScriptThreadMessage, ScrollState, UntrustedNodeAddress,
WindowSizeData,
};
use serde::{Deserialize, Serialize};
use servo_arc::Arc as ServoArc;
@ -185,7 +185,7 @@ pub struct LayoutConfig {
pub webview_id: WebViewId,
pub url: ServoUrl,
pub is_iframe: bool,
pub script_chan: IpcSender<ConstellationControlMsg>,
pub script_chan: IpcSender<ScriptThreadMessage>,
pub image_cache: Arc<dyn ImageCache>,
pub font_context: Arc<FontContext>,
pub time_profiler_chan: time::ProfilerChan,