From 86bfd2cc9f14b95c3b6376c6b723ddf77af3fc35 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Thu, 16 Jun 2016 02:07:57 +0100 Subject: Move LayoutRPC to script_layout_interface. --- components/script/layout_interface.rs | 88 ++--------------------------------- 1 file changed, 3 insertions(+), 85 deletions(-) (limited to 'components/script/layout_interface.rs') diff --git a/components/script/layout_interface.rs b/components/script/layout_interface.rs index cb645ef6439..3c5516e4b8d 100644 --- a/components/script/layout_interface.rs +++ b/components/script/layout_interface.rs @@ -14,14 +14,14 @@ use ipc_channel::ipc::{IpcReceiver, IpcSender}; use msg::constellation_msg::{PanicMsg, PipelineId, WindowSizeData}; use net_traits::image_cache_thread::ImageCacheThread; use profile_traits::mem::ReportsChan; +use script_layout_interface::rpc::LayoutRPC; use script_layout_interface::{OpaqueStyleAndLayoutData, TrustedNodeAddress}; -use script_traits::{ConstellationControlMsg, LayoutControlMsg, LayoutMsg as ConstellationMsg}; -use script_traits::{StackingContextScrollState, UntrustedNodeAddress}; +use script_traits::{ConstellationControlMsg, LayoutControlMsg}; +use script_traits::{LayoutMsg as ConstellationMsg, StackingContextScrollState}; use std::sync::Arc; use std::sync::mpsc::{Receiver, Sender}; use string_cache::Atom; use style::context::ReflowGoal; -use style::properties::longhands::{margin_top, margin_right, margin_bottom, margin_left, overflow_x}; use style::selector_impl::PseudoElement; use style::servo::Stylesheet; use url::Url; @@ -101,88 +101,6 @@ pub enum Msg { SetStackingContextScrollStates(Vec), } -/// Synchronous messages that script can send to layout. -/// -/// In general, you should use messages to talk to Layout. Use the RPC interface -/// if and only if the work is -/// -/// 1) read-only with respect to LayoutThreadData, -/// 2) small, -/// 3) and really needs to be fast. -pub trait LayoutRPC { - /// Requests the dimensions of the content box, as in the `getBoundingClientRect()` call. - fn content_box(&self) -> ContentBoxResponse; - /// Requests the dimensions of all the content boxes, as in the `getClientRects()` call. - fn content_boxes(&self) -> ContentBoxesResponse; - /// Requests the geometry of this node. Used by APIs such as `clientTop`. - fn node_geometry(&self) -> NodeGeometryResponse; - /// Requests the overflow-x and overflow-y of this node. Used by `scrollTop` etc. - fn node_overflow(&self) -> NodeOverflowResponse; - /// Requests the scroll geometry of this node. Used by APIs such as `scrollTop`. - fn node_scroll_area(&self) -> NodeGeometryResponse; - /// Requests the layer id of this node. Used by APIs such as `scrollTop` - fn node_layer_id(&self) -> NodeLayerIdResponse; - /// Requests the node containing the point of interest - fn hit_test(&self) -> HitTestResponse; - /// Query layout for the resolved value of a given CSS property - fn resolved_style(&self) -> ResolvedStyleResponse; - fn offset_parent(&self) -> OffsetParentResponse; - /// Query layout for the resolve values of the margin properties for an element. - fn margin_style(&self) -> MarginStyleResponse; - - fn nodes_from_point(&self, point: Point2D) -> Vec; -} - -#[derive(Clone)] -pub struct MarginStyleResponse { - pub top: margin_top::computed_value::T, - pub right: margin_right::computed_value::T, - pub bottom: margin_bottom::computed_value::T, - pub left: margin_left::computed_value::T, -} - -impl MarginStyleResponse { - pub fn empty() -> MarginStyleResponse { - MarginStyleResponse { - top: margin_top::computed_value::T::Auto, - right: margin_right::computed_value::T::Auto, - bottom: margin_bottom::computed_value::T::Auto, - left: margin_left::computed_value::T::Auto, - } - } -} - -pub struct NodeOverflowResponse(pub Option>); - -pub struct ContentBoxResponse(pub Rect); -pub struct ContentBoxesResponse(pub Vec>); -pub struct HitTestResponse { - pub node_address: Option, -} -pub struct NodeGeometryResponse { - pub client_rect: Rect, -} - -pub struct NodeLayerIdResponse { - pub layer_id: LayerId, -} - -pub struct ResolvedStyleResponse(pub Option); - -#[derive(Clone)] -pub struct OffsetParentResponse { - pub node_address: Option, - pub rect: Rect, -} - -impl OffsetParentResponse { - pub fn empty() -> OffsetParentResponse { - OffsetParentResponse { - node_address: None, - rect: Rect::zero(), - } - } -} /// Any query to perform with this reflow. #[derive(PartialEq)] -- cgit v1.2.3