mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
layout: Remove the obsolete layout tracing functionality (#35001)
There were two kinds of layout tracing controlled by the same debugging option: - modern layout: Functionality that dumped a JSON serialization of the layout tree before and after layout. - legacy layout: A scope based tracing that reported the process of layout in a structured way. I don't think anyone working on layout is using either of these two features. For modern layout requiring data structure to implement `serde` serialization is incredibly inconvenient and also generates a lot of extra code. We also have a more modern tracing functionality based on perfetto that we have started to use for layout and IMO it's actually being used and more robust. Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
2cd5e1356c
commit
e81951a973
45 changed files with 64 additions and 675 deletions
|
@ -4,25 +4,19 @@
|
|||
|
||||
use bitflags::bitflags;
|
||||
use script_layout_interface::{combine_id_with_fragment_type, FragmentType};
|
||||
use serde::Serialize;
|
||||
use style::dom::OpaqueNode;
|
||||
use style::selector_parser::PseudoElement;
|
||||
|
||||
use crate::layout_debug::DebugId;
|
||||
|
||||
/// This data structure stores fields that are common to all non-base
|
||||
/// Fragment types and should generally be the first member of all
|
||||
/// concrete fragments.
|
||||
#[derive(Clone, Debug, Serialize)]
|
||||
#[derive(Clone, Debug)]
|
||||
pub(crate) struct BaseFragment {
|
||||
/// A tag which identifies the DOM node and pseudo element of this
|
||||
/// Fragment's content. If this fragment isn't related to any DOM
|
||||
/// node at all, the tag will be None.
|
||||
pub tag: Option<Tag>,
|
||||
|
||||
/// An id used to uniquely identify this Fragment in debug builds.
|
||||
pub debug_id: DebugId,
|
||||
|
||||
/// Flags which various information about this fragment used during
|
||||
/// layout.
|
||||
pub flags: FragmentFlags,
|
||||
|
@ -32,7 +26,6 @@ impl BaseFragment {
|
|||
pub(crate) fn anonymous() -> Self {
|
||||
BaseFragment {
|
||||
tag: None,
|
||||
debug_id: DebugId::new(),
|
||||
flags: FragmentFlags::empty(),
|
||||
}
|
||||
}
|
||||
|
@ -45,7 +38,7 @@ impl BaseFragment {
|
|||
}
|
||||
|
||||
/// Information necessary to construct a new BaseFragment.
|
||||
#[derive(Clone, Copy, Debug, Serialize)]
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
pub(crate) struct BaseFragmentInfo {
|
||||
/// The tag to use for the new BaseFragment, if it is not an anonymous Fragment.
|
||||
pub tag: Option<Tag>,
|
||||
|
@ -74,7 +67,6 @@ impl From<BaseFragmentInfo> for BaseFragment {
|
|||
fn from(info: BaseFragmentInfo) -> Self {
|
||||
Self {
|
||||
tag: info.tag,
|
||||
debug_id: DebugId::new(),
|
||||
flags: info.flags,
|
||||
}
|
||||
}
|
||||
|
@ -82,7 +74,7 @@ impl From<BaseFragmentInfo> for BaseFragment {
|
|||
|
||||
bitflags! {
|
||||
/// Flags used to track various information about a DOM node during layout.
|
||||
#[derive(Clone, Copy, Debug, Serialize)]
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
pub(crate) struct FragmentFlags: u8 {
|
||||
/// Whether or not the node that created this fragment is a `<body>` element on an HTML document.
|
||||
const IS_BODY_ELEMENT_OF_HTML_ELEMENT_ROOT = 1 << 0;
|
||||
|
@ -113,7 +105,7 @@ bitflags! {
|
|||
|
||||
/// A data structure used to hold DOM and pseudo-element information about
|
||||
/// a particular layout object.
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
|
||||
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
|
||||
pub(crate) struct Tag {
|
||||
pub(crate) node: OpaqueNode,
|
||||
pub(crate) pseudo: Option<PseudoElement>,
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
use app_units::Au;
|
||||
use atomic_refcell::AtomicRefCell;
|
||||
use base::print_tree::PrintTree;
|
||||
use serde::Serialize;
|
||||
use servo_arc::Arc as ServoArc;
|
||||
use style::computed_values::overflow_x::T as ComputedOverflow;
|
||||
use style::computed_values::position::T as ComputedPosition;
|
||||
|
@ -47,11 +46,9 @@ pub(crate) enum SpecificLayoutInfo {
|
|||
TableOrTableCell(Box<SpecificTableOrTableCellInfo>),
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub(crate) struct BoxFragment {
|
||||
pub base: BaseFragment,
|
||||
|
||||
#[serde(skip_serializing)]
|
||||
pub style: ServoArc<ComputedValues>,
|
||||
pub children: Vec<Fragment>,
|
||||
|
||||
|
@ -84,14 +81,11 @@ pub(crate) struct BoxFragment {
|
|||
/// The resolved box insets if this box is `position: sticky`. These are calculated
|
||||
/// during stacking context tree construction because they rely on the size of the
|
||||
/// scroll container.
|
||||
#[serde(skip_serializing)]
|
||||
pub(crate) resolved_sticky_insets: AtomicRefCell<Option<PhysicalSides<AuOrAuto>>>,
|
||||
|
||||
#[serde(skip_serializing)]
|
||||
pub background_mode: BackgroundMode,
|
||||
|
||||
/// Additional information of from layout that could be used by Javascripts and devtools.
|
||||
#[serde(skip_serializing)]
|
||||
pub detailed_layout_info: Option<SpecificLayoutInfo>,
|
||||
}
|
||||
|
||||
|
|
|
@ -5,10 +5,9 @@
|
|||
use std::sync::Arc;
|
||||
|
||||
use app_units::Au;
|
||||
use base::id::{BrowsingContextId, PipelineId};
|
||||
use base::id::PipelineId;
|
||||
use base::print_tree::PrintTree;
|
||||
use fonts::{FontMetrics, GlyphStore};
|
||||
use serde::Serialize;
|
||||
use servo_arc::Arc as ServoArc;
|
||||
use style::properties::ComputedValues;
|
||||
use style::values::specified::text::TextDecorationLine;
|
||||
|
@ -23,7 +22,7 @@ use crate::cell::ArcRefCell;
|
|||
use crate::geom::{LogicalSides, PhysicalRect};
|
||||
use crate::style_ext::ComputedValuesExt;
|
||||
|
||||
#[derive(Clone, Serialize)]
|
||||
#[derive(Clone)]
|
||||
pub(crate) enum Fragment {
|
||||
Box(ArcRefCell<BoxFragment>),
|
||||
/// Floating content. A floated fragment is very similar to a normal
|
||||
|
@ -46,27 +45,23 @@ pub(crate) enum Fragment {
|
|||
IFrame(ArcRefCell<IFrameFragment>),
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub(crate) struct CollapsedBlockMargins {
|
||||
pub collapsed_through: bool,
|
||||
pub start: CollapsedMargin,
|
||||
pub end: CollapsedMargin,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, Serialize)]
|
||||
#[derive(Clone, Copy, Debug)]
|
||||
pub(crate) struct CollapsedMargin {
|
||||
max_positive: Au,
|
||||
min_negative: Au,
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub(crate) struct TextFragment {
|
||||
pub base: BaseFragment,
|
||||
#[serde(skip_serializing)]
|
||||
pub parent_style: ServoArc<ComputedValues>,
|
||||
pub rect: PhysicalRect<Au>,
|
||||
pub font_metrics: FontMetrics,
|
||||
#[serde(skip_serializing)]
|
||||
pub font_key: FontInstanceKey,
|
||||
pub glyphs: Vec<Arc<GlyphStore>>,
|
||||
|
||||
|
@ -77,24 +72,18 @@ pub(crate) struct TextFragment {
|
|||
pub justification_adjustment: Au,
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub(crate) struct ImageFragment {
|
||||
pub base: BaseFragment,
|
||||
#[serde(skip_serializing)]
|
||||
pub style: ServoArc<ComputedValues>,
|
||||
pub rect: PhysicalRect<Au>,
|
||||
pub clip: PhysicalRect<Au>,
|
||||
#[serde(skip_serializing)]
|
||||
pub image_key: Option<ImageKey>,
|
||||
}
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub(crate) struct IFrameFragment {
|
||||
pub base: BaseFragment,
|
||||
pub pipeline_id: PipelineId,
|
||||
pub browsing_context_id: BrowsingContextId,
|
||||
pub rect: PhysicalRect<Au>,
|
||||
#[serde(skip_serializing)]
|
||||
pub style: ServoArc<ComputedValues>,
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,6 @@ use app_units::Au;
|
|||
use base::print_tree::PrintTree;
|
||||
use euclid::default::{Point2D, Rect, Size2D};
|
||||
use fxhash::FxHashSet;
|
||||
use serde::Serialize;
|
||||
use style::animation::AnimationSetKey;
|
||||
use style::dom::OpaqueNode;
|
||||
use webrender_api::units;
|
||||
|
@ -17,7 +16,6 @@ use crate::display_list::StackingContext;
|
|||
use crate::flow::CanvasBackground;
|
||||
use crate::geom::PhysicalRect;
|
||||
|
||||
#[derive(Serialize)]
|
||||
pub struct FragmentTree {
|
||||
/// Fragments at the top-level of the tree.
|
||||
///
|
||||
|
@ -37,7 +35,6 @@ pub struct FragmentTree {
|
|||
pub(crate) initial_containing_block: PhysicalRect<Au>,
|
||||
|
||||
/// <https://drafts.csswg.org/css-backgrounds/#special-backgrounds>
|
||||
#[serde(skip)]
|
||||
pub(crate) canvas_background: CanvasBackground,
|
||||
|
||||
/// Whether or not the root element is sensitive to scroll input events.
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use app_units::Au;
|
||||
use serde::Serialize;
|
||||
use style::logical_geometry::WritingMode;
|
||||
use style::values::specified::align::AlignFlags;
|
||||
|
||||
|
@ -13,7 +12,6 @@ use crate::geom::{LogicalVec2, PhysicalRect, PhysicalVec};
|
|||
/// A reference to a Fragment which is shared between `HoistedAbsolutelyPositionedBox`
|
||||
/// and its placeholder `AbsoluteOrFixedPositionedFragment` in the original tree position.
|
||||
/// This will be used later in order to paint this hoisted box in tree order.
|
||||
#[derive(Serialize)]
|
||||
pub(crate) struct HoistedSharedFragment {
|
||||
pub fragment: Option<Fragment>,
|
||||
/// The "static-position rect" of this absolutely positioned box. This is defined by the
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
|
||||
use app_units::Au;
|
||||
use base::print_tree::PrintTree;
|
||||
use serde::Serialize;
|
||||
use servo_arc::Arc as ServoArc;
|
||||
use style::properties::ComputedValues;
|
||||
|
||||
|
@ -15,7 +14,6 @@ use crate::geom::PhysicalRect;
|
|||
/// Can contain child fragments with relative coordinates, but does not contribute to painting
|
||||
/// itself. [`PositioningFragment`]s may be completely anonymous, or just non-painting Fragments
|
||||
/// generated by boxes.
|
||||
#[derive(Serialize)]
|
||||
pub(crate) struct PositioningFragment {
|
||||
pub base: BaseFragment,
|
||||
pub rect: PhysicalRect<Au>,
|
||||
|
@ -24,7 +22,6 @@ pub(crate) struct PositioningFragment {
|
|||
pub scrollable_overflow: PhysicalRect<Au>,
|
||||
|
||||
/// If this fragment was created with a style, the style of the fragment.
|
||||
#[serde(skip_serializing)]
|
||||
pub style: Option<ServoArc<ComputedValues>>,
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue