Skip to content

Commit 5ab9aa5

Browse files
author
bors-servo
committed
Auto merge of servo#7191 - vectorijk:removeScriptListener, r=Ms2ger
remove ScriptListener Fix issue servo#7175 and for code review <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7191) <!-- Reviewable:end -->
2 parents 7c63c7d + 270df6b commit 5ab9aa5

File tree

7 files changed

+23
-69
lines changed

7 files changed

+23
-69
lines changed

components/compositing/pipeline.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ use gfx::font_cache_task::FontCacheTask;
1616
use ipc_channel::ipc::{self, IpcReceiver, IpcSender};
1717
use ipc_channel::router::ROUTER;
1818
use layers::geometry::DevicePixel;
19-
use msg::compositor_msg::ScriptListener;
2019
use msg::constellation_msg::{ConstellationChan, Failure, FrameId, PipelineId, SubpageId};
2120
use msg::constellation_msg::{LoadData, WindowSizeData, PipelineExitType, MozBrowserEvent};
2221
use profile_traits::mem as profile_mem;
@@ -323,7 +322,7 @@ impl PipelineContent {
323322
ScriptTaskFactory::create(None::<&mut STF>,
324323
self.id,
325324
self.parent_info,
326-
ScriptListener::new(script_to_compositor_chan),
325+
script_to_compositor_chan,
327326
&layout_pair,
328327
self.script_chan.clone(),
329328
mem::replace(&mut self.script_port, None).unwrap(),

components/msg/compositor_msg.rs

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ use constellation_msg::{Key, KeyState, KeyModifiers};
77
use euclid::point::Point2D;
88
use euclid::rect::Rect;
99
use euclid::Matrix4;
10-
use ipc_channel::ipc::IpcSender;
1110
use layers::platform::surface::NativeDisplay;
1211
use layers::layers::{BufferRequest, LayerBufferSet};
1312
use std::fmt::{Formatter, Debug};
@@ -126,39 +125,3 @@ pub enum ScriptToCompositorMsg {
126125
Exit,
127126
}
128127

129-
/// The interface used by the script task to tell the compositor to update its ready state,
130-
/// which is used in displaying the appropriate message in the window's title.
131-
#[derive(Clone)]
132-
pub struct ScriptListener(IpcSender<ScriptToCompositorMsg>);
133-
134-
impl ScriptListener {
135-
pub fn new(sender: IpcSender<ScriptToCompositorMsg>) -> ScriptListener {
136-
ScriptListener(sender)
137-
}
138-
139-
pub fn scroll_fragment_point(&mut self,
140-
pipeline_id: PipelineId,
141-
layer_id: LayerId,
142-
point: Point2D<f32>) {
143-
self.0
144-
.send(ScriptToCompositorMsg::ScrollFragmentPoint(pipeline_id, layer_id, point))
145-
.unwrap()
146-
}
147-
148-
pub fn close(&mut self) {
149-
self.0.send(ScriptToCompositorMsg::Exit).unwrap()
150-
}
151-
152-
pub fn dup(&mut self) -> ScriptListener {
153-
self.clone()
154-
}
155-
156-
pub fn set_title(&mut self, pipeline_id: PipelineId, title: Option<String>) {
157-
self.0.send(ScriptToCompositorMsg::SetTitle(pipeline_id, title)).unwrap()
158-
}
159-
160-
pub fn send_key_event(&mut self, key: Key, state: KeyState, modifiers: KeyModifiers) {
161-
self.0.send(ScriptToCompositorMsg::SendKeyEvent(key, state, modifiers)).unwrap()
162-
}
163-
}
164-

components/script/dom/bindings/trace.rs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ use net_traits::storage_task::StorageType;
5858
use script_traits::UntrustedNodeAddress;
5959
use serde::{Serialize, Deserialize};
6060
use smallvec::SmallVec;
61-
use msg::compositor_msg::ScriptListener;
6261
use msg::constellation_msg::ConstellationChan;
6362
use net_traits::image::base::Image;
6463
use profile_traits::mem::ProfilerChan;
@@ -342,13 +341,6 @@ impl<T> JSTraceable for IpcSender<T> where T: Deserialize + Serialize {
342341
}
343342
}
344343

345-
impl JSTraceable for ScriptListener {
346-
#[inline]
347-
fn trace(&self, _: *mut JSTracer) {
348-
// Do nothing
349-
}
350-
}
351-
352344
impl JSTraceable for Box<LayoutRPC+'static> {
353345
#[inline]
354346
fn trace(&self, _: *mut JSTracer) {

components/script/dom/document.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ use dom::uievent::UIEvent;
6969
use dom::window::{Window, WindowHelpers, ReflowReason};
7070

7171
use layout_interface::{HitTestResponse, MouseOverResponse};
72-
use msg::compositor_msg::ScriptListener;
72+
use msg::compositor_msg::ScriptToCompositorMsg;
7373
use msg::constellation_msg::AnimationState;
7474
use msg::constellation_msg::Msg as ConstellationMsg;
7575
use msg::constellation_msg::{ConstellationChan, FocusType, Key, KeyState, KeyModifiers, MozBrowserEvent, SubpageId};
@@ -85,7 +85,7 @@ use layout_interface::{ReflowGoal, ReflowQueryType};
8585

8686
use euclid::point::Point2D;
8787
use html5ever::tree_builder::{QuirksMode, NoQuirks, LimitedQuirks, Quirks};
88-
use ipc_channel::ipc;
88+
use ipc_channel::ipc::{self, IpcSender};
8989
use layout_interface::{LayoutChan, Msg};
9090
use string_cache::{Atom, QualName};
9191
use url::Url;
@@ -272,7 +272,7 @@ pub trait DocumentHelpers<'a> {
272272
key: Key,
273273
state: KeyState,
274274
modifiers: KeyModifiers,
275-
compositor: &mut ScriptListener);
275+
compositor: &mut IpcSender<ScriptToCompositorMsg>);
276276
fn node_from_nodes_and_strings(self, nodes: Vec<NodeOrString>)
277277
-> Fallible<Root<Node>>;
278278
fn get_body_attribute(self, local_name: &Atom) -> DOMString;
@@ -637,8 +637,8 @@ impl<'a> DocumentHelpers<'a> for &'a Document {
637637
let window = self.window();
638638
// FIXME(https://github.com/rust-lang/rust/issues/23338)
639639
let window = window.r();
640-
let mut compositor = window.compositor();
641-
compositor.set_title(window.pipeline(), Some(self.Title()));
640+
let compositor = window.compositor();
641+
compositor.send(ScriptToCompositorMsg::SetTitle(window.pipeline(), Some(self.Title()))).unwrap();
642642
}
643643

644644
fn dirty_all_nodes(self) {
@@ -813,7 +813,7 @@ impl<'a> DocumentHelpers<'a> for &'a Document {
813813
key: Key,
814814
state: KeyState,
815815
modifiers: KeyModifiers,
816-
compositor: &mut ScriptListener) {
816+
compositor: &mut IpcSender<ScriptToCompositorMsg>) {
817817
let window = self.window.root();
818818
let focused = self.get_focused_element();
819819
let body = self.GetBody();
@@ -864,7 +864,7 @@ impl<'a> DocumentHelpers<'a> for &'a Document {
864864
}
865865

866866
if !prevented {
867-
compositor.send_key_event(key, state, modifiers);
867+
compositor.send(ScriptToCompositorMsg::SendKeyEvent(key, state, modifiers)).unwrap();
868868
}
869869

870870
// This behavior is unspecced

components/script/dom/window.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ use webdriver_handlers::jsval_to_webdriver;
4242

4343
use devtools_traits::{ScriptToDevtoolsControlMsg, TimelineMarker, TimelineMarkerType};
4444
use devtools_traits::{TracingMetadata};
45-
use msg::compositor_msg::ScriptListener;
45+
use msg::compositor_msg::ScriptToCompositorMsg;
4646
use msg::constellation_msg::{LoadData, PipelineId, SubpageId, ConstellationChan, WindowSizeData, WorkerId};
4747
use msg::webdriver_msg::{WebDriverJSError, WebDriverJSResult};
4848
use net_traits::ResourceTask;
@@ -121,7 +121,7 @@ pub struct Window {
121121
#[ignore_heap_size_of = "channels are hard"]
122122
image_cache_chan: ImageCacheChan,
123123
#[ignore_heap_size_of = "TODO(#6911) newtypes containing unmeasurable types are hard"]
124-
compositor: DOMRefCell<ScriptListener>,
124+
compositor: DOMRefCell<IpcSender<ScriptToCompositorMsg>>,
125125
browsing_context: DOMRefCell<Option<BrowsingContext>>,
126126
page: Rc<Page>,
127127
performance: MutNullableHeap<JS<Performance>>,
@@ -273,7 +273,7 @@ impl Window {
273273
&self.image_cache_task
274274
}
275275

276-
pub fn compositor<'a>(&'a self) -> RefMut<'a, ScriptListener> {
276+
pub fn compositor<'a>(&'a self) -> RefMut<'a, IpcSender<ScriptToCompositorMsg>> {
277277
self.compositor.borrow_mut()
278278
}
279279

@@ -1073,7 +1073,7 @@ impl Window {
10731073
script_chan: MainThreadScriptChan,
10741074
image_cache_chan: ImageCacheChan,
10751075
control_chan: Sender<ConstellationControlMsg>,
1076-
compositor: ScriptListener,
1076+
compositor: IpcSender<ScriptToCompositorMsg>,
10771077
image_cache_task: ImageCacheTask,
10781078
resource_task: Arc<ResourceTask>,
10791079
storage_task: StorageTask,

components/script/script_task.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ use script_traits::{CompositorEvent, MouseButton};
6262
use script_traits::ConstellationControlMsg;
6363
use script_traits::{NewLayoutInfo, OpaqueScriptLayoutChannel};
6464
use script_traits::{ScriptState, ScriptTaskFactory};
65-
use msg::compositor_msg::{LayerId, ScriptListener};
65+
use msg::compositor_msg::{LayerId, ScriptToCompositorMsg};
6666
use msg::constellation_msg::{ConstellationChan, FocusType};
6767
use msg::constellation_msg::{LoadData, PipelineId, SubpageId, MozBrowserEvent, WorkerId};
6868
use msg::constellation_msg::{Failure, WindowSizeData, PipelineExitType};
@@ -361,7 +361,7 @@ pub struct ScriptTask {
361361
constellation_chan: ConstellationChan,
362362

363363
/// A handle to the compositor for communicating ready state messages.
364-
compositor: DOMRefCell<ScriptListener>,
364+
compositor: DOMRefCell<IpcSender<ScriptToCompositorMsg>>,
365365

366366
/// The port on which we receive messages from the image cache
367367
image_cache_port: Receiver<ImageCacheResult>,
@@ -443,7 +443,7 @@ impl ScriptTaskFactory for ScriptTask {
443443
fn create(_phantom: Option<&mut ScriptTask>,
444444
id: PipelineId,
445445
parent_info: Option<(PipelineId, SubpageId)>,
446-
compositor: ScriptListener,
446+
compositor: IpcSender<ScriptToCompositorMsg>,
447447
layout_chan: &OpaqueScriptLayoutChannel,
448448
control_chan: Sender<ConstellationControlMsg>,
449449
control_port: Receiver<ConstellationControlMsg>,
@@ -579,7 +579,7 @@ impl ScriptTask {
579579
}
580580

581581
/// Creates a new script task.
582-
pub fn new(compositor: ScriptListener,
582+
pub fn new(compositor: IpcSender<ScriptToCompositorMsg>,
583583
port: Receiver<MainThreadScriptMsg>,
584584
chan: MainThreadScriptChan,
585585
control_chan: Sender<ConstellationControlMsg>,
@@ -1329,7 +1329,7 @@ impl ScriptTask {
13291329
// TODO(tkuehn): currently there is only one window,
13301330
// so this can afford to be naive and just shut down the
13311331
// compositor. In the future it'll need to be smarter.
1332-
self.compositor.borrow_mut().close();
1332+
self.compositor.borrow_mut().send(ScriptToCompositorMsg::Exit).unwrap();
13331333
}
13341334

13351335
/// We have received notification that the response associated with a load has completed.
@@ -1506,7 +1506,7 @@ impl ScriptTask {
15061506
MainThreadScriptChan(sender.clone()),
15071507
self.image_cache_channel.clone(),
15081508
self.control_chan.clone(),
1509-
self.compositor.borrow_mut().dup(),
1509+
self.compositor.borrow_mut().clone(),
15101510
self.image_cache_task.clone(),
15111511
self.resource_task.clone(),
15121512
self.storage_task.clone(),
@@ -1601,7 +1601,8 @@ impl ScriptTask {
16011601
// Really what needs to happen is that this needs to go through layout to ask which
16021602
// layer the element belongs to, and have it send the scroll message to the
16031603
// compositor.
1604-
self.compositor.borrow_mut().scroll_fragment_point(pipeline_id, LayerId::null(), point);
1604+
self.compositor.borrow_mut().send(ScriptToCompositorMsg::ScrollFragmentPoint(
1605+
pipeline_id, LayerId::null(), point)).unwrap();
16051606
}
16061607

16071608
/// Reflows non-incrementally, rebuilding the entire layout tree in the process.
@@ -1699,7 +1700,7 @@ impl ScriptTask {
16991700
let page = get_page(&self.root_page(), pipeline_id);
17001701
let document = page.document();
17011702
document.r().dispatch_key_event(
1702-
key, state, modifiers, &mut *self.compositor.borrow_mut());
1703+
key, state, modifiers, &mut self.compositor.borrow_mut());
17031704
}
17041705
}
17051706
}

components/script_traits/lib.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,10 @@ extern crate url;
2424
use devtools_traits::ScriptToDevtoolsControlMsg;
2525
use ipc_channel::ipc::{IpcReceiver, IpcSender};
2626
use libc::c_void;
27-
use msg::compositor_msg::{Epoch, LayerId};
27+
use msg::compositor_msg::{Epoch, LayerId, ScriptToCompositorMsg};
2828
use msg::constellation_msg::{ConstellationChan, PipelineId, Failure, WindowSizeData};
2929
use msg::constellation_msg::{LoadData, SubpageId, Key, KeyState, KeyModifiers};
3030
use msg::constellation_msg::{MozBrowserEvent, PipelineExitType};
31-
use msg::compositor_msg::ScriptListener;
3231
use msg::webdriver_msg::WebDriverScriptCommand;
3332
use net_traits::ResourceTask;
3433
use net_traits::image_cache_task::ImageCacheTask;
@@ -179,7 +178,7 @@ pub trait ScriptTaskFactory {
179178
fn create(_phantom: Option<&mut Self>,
180179
id: PipelineId,
181180
parent_info: Option<(PipelineId, SubpageId)>,
182-
compositor: ScriptListener,
181+
compositor: IpcSender<ScriptToCompositorMsg>,
183182
layout_chan: &OpaqueScriptLayoutChannel,
184183
control_chan: Sender<ConstellationControlMsg>,
185184
control_port: Receiver<ConstellationControlMsg>,

0 commit comments

Comments
 (0)