mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
layout: Use ServoLayoutNode
directly instead of a generic impl
(#36876)
This makes it so that layout is no longer generic on the node type, depending directly on `script`'s `ServoLayoutNode`. In addition to greatly simplifying layout, this is necessary because incremental layout needs to be able to create pseudo-element styles without having a handle on the original `impl LayoutNode`. We feel this is a reasonable tradeoff. Testing: No functional changes, so covered by existing WPT tests. Signed-off-by: Martin Robinson <mrobinson@igalia.com> Co-authored-by: Oriol Brufau <obrufau@igalia.com>
This commit is contained in:
parent
51b95a6246
commit
d5e008fd6a
16 changed files with 217 additions and 309 deletions
|
@ -13,10 +13,12 @@ use euclid::{Scale, Size2D};
|
|||
use malloc_size_of_derive::MallocSizeOf;
|
||||
use net_traits::image_cache::{ImageOrMetadataAvailable, UsePlaceholder};
|
||||
use pixels::Image;
|
||||
use script::layout_dom::ServoLayoutNode;
|
||||
use script_layout_interface::IFrameSize;
|
||||
use servo_arc::Arc as ServoArc;
|
||||
use style::Zero;
|
||||
use style::computed_values::object_fit::T as ObjectFit;
|
||||
use style::dom::TNode;
|
||||
use style::logical_geometry::{Direction, WritingMode};
|
||||
use style::properties::ComputedValues;
|
||||
use style::servo::url::ComputedUrl;
|
||||
|
@ -120,7 +122,7 @@ pub(crate) enum ReplacedContentKind {
|
|||
}
|
||||
|
||||
impl ReplacedContents {
|
||||
pub fn for_element<'dom>(element: impl NodeExt<'dom>, context: &LayoutContext) -> Option<Self> {
|
||||
pub fn for_element(element: ServoLayoutNode<'_>, context: &LayoutContext) -> Option<Self> {
|
||||
if let Some(ref data_attribute_string) = element.as_typeless_object_with_data_attribute() {
|
||||
if let Some(url) = try_to_parse_image_data_url(data_attribute_string) {
|
||||
return Self::from_image_url(
|
||||
|
@ -184,8 +186,8 @@ impl ReplacedContents {
|
|||
})
|
||||
}
|
||||
|
||||
pub fn from_image_url<'dom>(
|
||||
element: impl NodeExt<'dom>,
|
||||
pub fn from_image_url(
|
||||
element: ServoLayoutNode<'_>,
|
||||
context: &LayoutContext,
|
||||
image_url: &ComputedUrl,
|
||||
) -> Option<Self> {
|
||||
|
@ -213,8 +215,8 @@ impl ReplacedContents {
|
|||
None
|
||||
}
|
||||
|
||||
pub fn from_image<'dom>(
|
||||
element: impl NodeExt<'dom>,
|
||||
pub fn from_image(
|
||||
element: ServoLayoutNode<'_>,
|
||||
context: &LayoutContext,
|
||||
image: &ComputedImage,
|
||||
) -> Option<Self> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue