diff options
author | bors-servo <infra@servo.org> | 2023-05-04 11:35:25 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-04 11:35:25 +0200 |
commit | 4e37d07ea4f2bba124f78f17873fbb02c66d1cdb (patch) | |
tree | 7dc272f33fa36faf34423d42dfa2e4654be09843 /components/layout_2020/flow/construct.rs | |
parent | f29834608aee21c1845737067c16f92adfb77f08 (diff) | |
parent | 72302e2dae6c4726ae657f7b5b8b048f9f64ccf2 (diff) | |
download | servo-4e37d07ea4f2bba124f78f17873fbb02c66d1cdb.tar.gz servo-4e37d07ea4f2bba124f78f17873fbb02c66d1cdb.zip |
Auto merge of #29699 - mrobinson:add-html-body-tag, r=mukilan
Detect body elements during layout
During layout it is often useful, for various specification reasons, to know if an element is the `<body>` element of an `<html>` element root. There are a couple places where a brittle heuristic is used to detect `<body>` elements. This information is going to be even more important to properly handle `<html>` elements that inherit their overflow property from their `<body>` children.
Implementing this properly requires updating the DOM wrapper interface. This check does reach up to the parent of thread-safe nodes, but this is essentially the same kind of operation that `parent_style()` does, so is ostensibly safe.
This change should not change any behavior and is just a preparation step for properly handle `<body>` overflow.
<!-- Please describe your changes on the following line: -->
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests because it does not change behavior.
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
Diffstat (limited to 'components/layout_2020/flow/construct.rs')
-rw-r--r-- | components/layout_2020/flow/construct.rs | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/components/layout_2020/flow/construct.rs b/components/layout_2020/flow/construct.rs index 8241f2a0357..14b92cafa67 100644 --- a/components/layout_2020/flow/construct.rs +++ b/components/layout_2020/flow/construct.rs @@ -12,7 +12,6 @@ use crate::flow::float::FloatBox; use crate::flow::inline::{InlineBox, InlineFormattingContext, InlineLevelBox, TextRun}; use crate::flow::{BlockContainer, BlockFormattingContext, BlockLevelBox}; use crate::formatting_contexts::IndependentFormattingContext; -use crate::fragments::Tag; use crate::positioned::AbsolutelyPositionedBox; use crate::style_ext::{DisplayGeneratingBox, DisplayInside, DisplayOutside}; use rayon::iter::{IntoParallelIterator, ParallelIterator}; @@ -384,7 +383,7 @@ where if let Some(text) = new_text_run_contents { inlines.push(ArcRefCell::new(InlineLevelBox::TextRun(TextRun { - tag: Tag::from_node_and_style_info(info), + base_fragment_info: info.into(), parent_style: Arc::clone(&info.style), text, }))) @@ -495,7 +494,7 @@ where // Whatever happened before, all we need to do before recurring // is to remember this ongoing inline level box. self.ongoing_inline_boxes_stack.push(InlineBox { - tag: Tag::from_node_and_style_info(info), + base_fragment_info: info.into(), style: info.style.clone(), first_fragment: true, last_fragment: false, @@ -556,7 +555,7 @@ where .rev() .map(|ongoing| { let fragmented = InlineBox { - tag: ongoing.tag, + base_fragment_info: ongoing.base_fragment_info, style: ongoing.style.clone(), first_fragment: ongoing.first_fragment, // The fragmented boxes before the block level element @@ -755,7 +754,7 @@ where BlockLevelCreator::SameFormattingContextBlock(contents) => { let (contents, contains_floats) = contents.finish(context, info); let block_level_box = ArcRefCell::new(BlockLevelBox::SameFormattingContextBlock { - tag: Tag::from_node_and_style_info(info), + base_fragment_info: info.into(), contents, style: Arc::clone(&info.style), }); |