diff options
Diffstat (limited to 'components/script_layout_interface')
-rw-r--r-- | components/script_layout_interface/Cargo.toml | 1 | ||||
-rw-r--r-- | components/script_layout_interface/message.rs | 6 | ||||
-rw-r--r-- | components/script_layout_interface/rpc.rs | 4 |
3 files changed, 10 insertions, 1 deletions
diff --git a/components/script_layout_interface/Cargo.toml b/components/script_layout_interface/Cargo.toml index 8ad33fc7d43..2e436761dc8 100644 --- a/components/script_layout_interface/Cargo.toml +++ b/components/script_layout_interface/Cargo.toml @@ -33,4 +33,5 @@ servo_arc = {path = "../servo_arc"} servo_atoms = {path = "../atoms"} servo_url = {path = "../url"} style = {path = "../style", features = ["servo"]} +style_traits = {path = "../style_traits", features = ["servo"]} webrender_api = {git = "https://github.com/servo/webrender", features = ["ipc"]} diff --git a/components/script_layout_interface/message.rs b/components/script_layout_interface/message.rs index 01a589d53cb..fb2bac65d07 100644 --- a/components/script_layout_interface/message.rs +++ b/components/script_layout_interface/message.rs @@ -10,7 +10,7 @@ use euclid::default::{Point2D, Rect}; use gfx_traits::Epoch; use ipc_channel::ipc::{IpcReceiver, IpcSender}; use metrics::PaintTimeMetrics; -use msg::constellation_msg::{BackgroundHangMonitorRegister, PipelineId}; +use msg::constellation_msg::{BackgroundHangMonitorRegister, BrowsingContextId, PipelineId}; use net_traits::image_cache::ImageCache; use profile_traits::mem::ReportsChan; use script_traits::Painter; @@ -128,6 +128,7 @@ pub enum QueryMsg { ResolvedStyleQuery(TrustedNodeAddress, Option<PseudoElement>, PropertyId), StyleQuery(TrustedNodeAddress), ElementInnerTextQuery(TrustedNodeAddress), + InnerWindowDimensionsQuery(BrowsingContextId), } /// Any query to perform with this reflow. @@ -147,6 +148,7 @@ impl ReflowGoal { ReflowGoal::LayoutQuery(ref querymsg, _) => match *querymsg { QueryMsg::NodesFromPointQuery(..) | QueryMsg::TextIndexQuery(..) | + QueryMsg::InnerWindowDimensionsQuery(_) | QueryMsg::ElementInnerTextQuery(_) => true, QueryMsg::ContentBoxQuery(_) | QueryMsg::ContentBoxesQuery(_) | @@ -176,6 +178,7 @@ impl ReflowGoal { QueryMsg::NodeScrollIdQuery(_) | QueryMsg::ResolvedStyleQuery(..) | QueryMsg::OffsetParentQuery(_) | + QueryMsg::InnerWindowDimensionsQuery(_) | QueryMsg::StyleQuery(_) => false, }, } @@ -227,4 +230,5 @@ pub struct LayoutThreadInit { pub image_cache: Arc<dyn ImageCache>, pub paint_time_metrics: PaintTimeMetrics, pub layout_is_busy: Arc<AtomicBool>, + pub window_size: WindowSizeData, } diff --git a/components/script_layout_interface/rpc.rs b/components/script_layout_interface/rpc.rs index 95d25082ed8..19da8fa6afc 100644 --- a/components/script_layout_interface/rpc.rs +++ b/components/script_layout_interface/rpc.rs @@ -4,9 +4,11 @@ use app_units::Au; use euclid::default::Rect; +use euclid::Size2D; use script_traits::UntrustedNodeAddress; use servo_arc::Arc; use style::properties::ComputedValues; +use style_traits::CSSPixel; use webrender_api::ExternalScrollId; /// Synchronous messages that script can send to layout. @@ -39,6 +41,8 @@ pub trait LayoutRPC { fn nodes_from_point_response(&self) -> Vec<UntrustedNodeAddress>; /// Query layout to get the inner text for a given element. fn element_inner_text(&self) -> String; + /// Get the dimensions of an iframe's inner window. + fn inner_window_dimensions(&self) -> Option<Size2D<f32, CSSPixel>>; } pub struct ContentBoxResponse(pub Option<Rect<Au>>); |