mirror of
https://github.com/servo/servo.git
synced 2025-06-21 15:49:04 +01:00
extract querymsg from ReflowGoal
This commit is contained in:
parent
b93f153ed5
commit
df6b64181b
5 changed files with 177 additions and 154 deletions
|
@ -108,7 +108,7 @@ use net_traits::response::HttpsState;
|
|||
use num_traits::ToPrimitive;
|
||||
use profile_traits::time::{TimerMetadata, TimerMetadataFrameType, TimerMetadataReflowType};
|
||||
use ref_slice::ref_slice;
|
||||
use script_layout_interface::message::{Msg, NodesFromPointQueryType, ReflowGoal};
|
||||
use script_layout_interface::message::{Msg, NodesFromPointQueryType, QueryMsg, ReflowGoal};
|
||||
use script_runtime::{CommonScriptMsg, ScriptThreadEventCategory};
|
||||
use script_thread::{MainThreadScriptMsg, ScriptThread};
|
||||
use script_traits::{AnimationState, DocumentActivity, MouseButton, MouseEventType};
|
||||
|
@ -1968,7 +1968,7 @@ impl Document {
|
|||
client_point: &Point2D<f32>,
|
||||
reflow_goal: NodesFromPointQueryType)
|
||||
-> Vec<UntrustedNodeAddress> {
|
||||
if !self.window.reflow(ReflowGoal::NodesFromPointQuery(*client_point, reflow_goal),
|
||||
if !self.window.reflow(ReflowGoal::LayoutQuery(QueryMsg::NodesFromPointQuery(*client_point, reflow_goal), u64::default()),
|
||||
ReflowReason::Query) {
|
||||
return vec!();
|
||||
};
|
||||
|
|
|
@ -35,7 +35,7 @@ use dom::virtualmethods::VirtualMethods;
|
|||
use dom::window::ReflowReason;
|
||||
use dom_struct::dom_struct;
|
||||
use html5ever::{LocalName, Prefix};
|
||||
use script_layout_interface::message::ReflowGoal;
|
||||
use script_layout_interface::message::{QueryMsg, ReflowGoal};
|
||||
use std::collections::HashSet;
|
||||
use std::default::Default;
|
||||
use std::rc::Rc;
|
||||
|
@ -419,7 +419,7 @@ impl HTMLElementMethods for HTMLElement {
|
|||
return node.GetTextContent().unwrap();
|
||||
}
|
||||
|
||||
window.reflow(ReflowGoal::ElementInnerTextQuery(node.to_trusted_node_address()), ReflowReason::Query);
|
||||
window.reflow(ReflowGoal::LayoutQuery(QueryMsg::ElementInnerTextQuery(node.to_trusted_node_address()), u64::default()), ReflowReason::Query);
|
||||
DOMString::from(window.layout().element_inner_text())
|
||||
}
|
||||
|
||||
|
|
|
@ -66,7 +66,7 @@ use num_traits::ToPrimitive;
|
|||
use profile_traits::mem::ProfilerChan as MemProfilerChan;
|
||||
use profile_traits::time::ProfilerChan as TimeProfilerChan;
|
||||
use script_layout_interface::{TrustedNodeAddress, PendingImageState};
|
||||
use script_layout_interface::message::{Msg, Reflow, ReflowGoal, ScriptReflow};
|
||||
use script_layout_interface::message::{Msg, Reflow, QueryMsg, ReflowGoal, ScriptReflow};
|
||||
use script_layout_interface::reporter::CSSErrorReporter;
|
||||
use script_layout_interface::rpc::{ContentBoxResponse, ContentBoxesResponse, LayoutRPC};
|
||||
use script_layout_interface::rpc::{NodeScrollIdResponse, ResolvedStyleResponse, TextIndexResponse};
|
||||
|
@ -1374,12 +1374,16 @@ impl Window {
|
|||
issued_reflow
|
||||
}
|
||||
|
||||
pub fn layout_reflow(&self, query_msg: QuerMsg) -> bool {
|
||||
self.reflow(ReflowGoal::LayoutQuery(query_msg, time::precise_time_ns()), ReflowReason::Query)
|
||||
}
|
||||
|
||||
pub fn layout(&self) -> &LayoutRPC {
|
||||
&*self.layout_rpc
|
||||
}
|
||||
|
||||
pub fn content_box_query(&self, content_box_request: TrustedNodeAddress) -> Option<Rect<Au>> {
|
||||
if !self.reflow(ReflowGoal::ContentBoxQuery(content_box_request), ReflowReason::Query) {
|
||||
if !self.layout_reflow(QueryMsg::ContentBoxQuery(content_box_request)) {
|
||||
return None;
|
||||
}
|
||||
let ContentBoxResponse(rect) = self.layout_rpc.content_box();
|
||||
|
@ -1387,7 +1391,7 @@ impl Window {
|
|||
}
|
||||
|
||||
pub fn content_boxes_query(&self, content_boxes_request: TrustedNodeAddress) -> Vec<Rect<Au>> {
|
||||
if !self.reflow(ReflowGoal::ContentBoxesQuery(content_boxes_request), ReflowReason::Query) {
|
||||
if !self.layout_reflow(QueryMsg::ContentBoxesQuery(content_boxes_request)) {
|
||||
return vec![];
|
||||
}
|
||||
let ContentBoxesResponse(rects) = self.layout_rpc.content_boxes();
|
||||
|
@ -1395,14 +1399,14 @@ impl Window {
|
|||
}
|
||||
|
||||
pub fn client_rect_query(&self, node_geometry_request: TrustedNodeAddress) -> Rect<i32> {
|
||||
if !self.reflow(ReflowGoal::NodeGeometryQuery(node_geometry_request), ReflowReason::Query) {
|
||||
if !self.layout_reflow(QueryMsg::NodeGeometryQuery(node_geometry_request)) {
|
||||
return Rect::zero();
|
||||
}
|
||||
self.layout_rpc.node_geometry().client_rect
|
||||
}
|
||||
|
||||
pub fn scroll_area_query(&self, node: TrustedNodeAddress) -> Rect<i32> {
|
||||
if !self.reflow(ReflowGoal::NodeScrollGeometryQuery(node), ReflowReason::Query) {
|
||||
if !self.layout_reflow(QueryMsg::NodeScrollGeometryQuery(node)) {
|
||||
return Rect::zero();
|
||||
}
|
||||
self.layout_rpc.node_scroll_area().client_rect
|
||||
|
@ -1425,10 +1429,7 @@ impl Window {
|
|||
y_: f64,
|
||||
behavior: ScrollBehavior
|
||||
) {
|
||||
if !self.reflow(
|
||||
ReflowGoal::NodeScrollIdQuery(node.to_trusted_node_address()),
|
||||
ReflowReason::Query
|
||||
) {
|
||||
if !self.layout_reflow(QueryMsg::NodeScrollIdQuery(node.to_trusted_node_address())) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1452,8 +1453,7 @@ impl Window {
|
|||
element: TrustedNodeAddress,
|
||||
pseudo: Option<PseudoElement>,
|
||||
property: PropertyId) -> DOMString {
|
||||
if !self.reflow(ReflowGoal::ResolvedStyleQuery(element, pseudo, property),
|
||||
ReflowReason::Query) {
|
||||
if !self.layout_reflow(QueryMsg::ResolvedStyleQuery(element, pseudo, property)) {
|
||||
return DOMString::new();
|
||||
}
|
||||
let ResolvedStyleResponse(resolved) = self.layout_rpc.resolved_style();
|
||||
|
@ -1462,7 +1462,7 @@ impl Window {
|
|||
|
||||
#[allow(unsafe_code)]
|
||||
pub fn offset_parent_query(&self, node: TrustedNodeAddress) -> (Option<DomRoot<Element>>, Rect<Au>) {
|
||||
if !self.reflow(ReflowGoal::OffsetParentQuery(node), ReflowReason::Query) {
|
||||
if !self.layout_reflow(QueryMsg::OffsetParentQuery(node)) {
|
||||
return (None, Rect::zero());
|
||||
}
|
||||
|
||||
|
@ -1477,7 +1477,7 @@ impl Window {
|
|||
}
|
||||
|
||||
pub fn style_query(&self, node: TrustedNodeAddress) -> Option<servo_arc::Arc<ComputedValues>> {
|
||||
if !self.reflow(ReflowGoal::StyleQuery(node), ReflowReason::Query) {
|
||||
if !self.layout_reflow(QueryMsg::StyleQuery(node)) {
|
||||
return None
|
||||
}
|
||||
self.layout_rpc.style().0
|
||||
|
@ -1488,7 +1488,7 @@ impl Window {
|
|||
node: TrustedNodeAddress,
|
||||
point_in_node: Point2D<f32>
|
||||
) -> TextIndexResponse {
|
||||
if !self.reflow(ReflowGoal::TextIndexQuery(node, point_in_node), ReflowReason::Query) {
|
||||
if !self.layout_reflow(QueryMsg::TextIndexQuery(node, point_in_node)) {
|
||||
return TextIndexResponse(None);
|
||||
}
|
||||
self.layout_rpc.text_index()
|
||||
|
@ -1870,18 +1870,20 @@ fn debug_reflow_events(id: PipelineId, reflow_goal: &ReflowGoal, reason: &Reflow
|
|||
let mut debug_msg = format!("**** pipeline={}", id);
|
||||
debug_msg.push_str(match *reflow_goal {
|
||||
ReflowGoal::Full => "\tFull",
|
||||
ReflowGoal::ContentBoxQuery(_n) => "\tContentBoxQuery",
|
||||
ReflowGoal::ContentBoxesQuery(_n) => "\tContentBoxesQuery",
|
||||
ReflowGoal::NodesFromPointQuery(..) => "\tNodesFromPointQuery",
|
||||
ReflowGoal::NodeGeometryQuery(_n) => "\tNodeGeometryQuery",
|
||||
ReflowGoal::NodeScrollGeometryQuery(_n) => "\tNodeScrollGeometryQuery",
|
||||
ReflowGoal::NodeScrollIdQuery(_n) => "\tNodeScrollIdQuery",
|
||||
ReflowGoal::ResolvedStyleQuery(_, _, _) => "\tResolvedStyleQuery",
|
||||
ReflowGoal::OffsetParentQuery(_n) => "\tOffsetParentQuery",
|
||||
ReflowGoal::StyleQuery(_n) => "\tStyleQuery",
|
||||
ReflowGoal::TextIndexQuery(..) => "\tTextIndexQuery",
|
||||
ReflowGoal::TickAnimations => "\tTickAnimations",
|
||||
ReflowGoal::ElementInnerTextQuery(_) => "\tElementInnerTextQuery",
|
||||
ReflowGoal::LayoutQuery(ref query_msg, _) => match query_msg {
|
||||
&QueryMsg::ContentBoxQuery(_n) => "\tContentBoxQuery",
|
||||
&QueryMsg::ContentBoxesQuery(_n) => "\tContentBoxesQuery",
|
||||
&QueryMsg::NodesFromPointQuery(..) => "\tNodesFromPointQuery",
|
||||
&QueryMsg::NodeGeometryQuery(_n) => "\tNodeGeometryQuery",
|
||||
&QueryMsg::NodeScrollGeometryQuery(_n) => "\tNodeScrollGeometryQuery",
|
||||
&QueryMsg::NodeScrollIdQuery(_n) => "\tNodeScrollIdQuery",
|
||||
&QueryMsg::ResolvedStyleQuery(_, _, _) => "\tResolvedStyleQuery",
|
||||
&QueryMsg::OffsetParentQuery(_n) => "\tOffsetParentQuery",
|
||||
&QueryMsg::StyleQuery(_n) => "\tStyleQuery",
|
||||
&QueryMsg::TextIndexQuery(..) => "\tTextIndexQuery",
|
||||
&QueryMsg::ElementInnerTextQuery(_) => "\tElementInnerTextQuery",
|
||||
},
|
||||
});
|
||||
|
||||
debug_msg.push_str(match *reason {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue