mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 07:30:19 +00:00
LibWeb: Prevent elements with no layout box from modifying counters
This commit is contained in:
parent
898e3bd898
commit
696ccc1aa9
Notes:
github-actions[bot]
2024-07-26 10:05:23 +00:00
Author: https://github.com/AtkinsSJ Commit: https://github.com/LadybirdBrowser/ladybird/commit/696ccc1aa99 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/720 Reviewed-by: https://github.com/tcl3
3 changed files with 82 additions and 0 deletions
|
@ -0,0 +1,67 @@
|
|||
Viewport <#document> at (0,0) content-size 800x600 children: not-inline
|
||||
BlockContainer <html> at (0,0) content-size 800x600 [BFC] children: not-inline
|
||||
BlockContainer <body> at (8,16) content-size 784x149 children: not-inline
|
||||
BlockContainer <p> at (8,16) content-size 784x17 children: inline
|
||||
frag 0 from TextNode start: 0, length: 1, rect: [26,16 14.265625x17] baseline: 13.296875
|
||||
"A"
|
||||
InlineNode <(anonymous)>
|
||||
frag 0 from TextNode start: 0, length: 3, rect: [8,16 18.125x17] baseline: 13.296875
|
||||
"1: "
|
||||
TextNode <#text>
|
||||
TextNode <#text>
|
||||
BlockContainer <p> at (8,49) content-size 784x17 children: inline
|
||||
frag 0 from TextNode start: 0, length: 1, rect: [29,49 9.34375x17] baseline: 13.296875
|
||||
"B"
|
||||
InlineNode <(anonymous)>
|
||||
frag 0 from TextNode start: 0, length: 3, rect: [8,49 20.59375x17] baseline: 13.296875
|
||||
"2: "
|
||||
TextNode <#text>
|
||||
TextNode <#text>
|
||||
BlockContainer <p> at (8,82) content-size 784x17 children: inline
|
||||
frag 0 from TextNode start: 0, length: 1, rect: [29,82 10.3125x17] baseline: 13.296875
|
||||
"C"
|
||||
InlineNode <(anonymous)>
|
||||
frag 0 from TextNode start: 0, length: 3, rect: [8,82 20.875x17] baseline: 13.296875
|
||||
"3: "
|
||||
TextNode <#text>
|
||||
TextNode <#text>
|
||||
BlockContainer <p> at (8,115) content-size 784x17 children: inline
|
||||
frag 0 from TextNode start: 0, length: 1, rect: [28,115 11.140625x17] baseline: 13.296875
|
||||
"D"
|
||||
InlineNode <(anonymous)>
|
||||
frag 0 from TextNode start: 0, length: 3, rect: [8,115 19.53125x17] baseline: 13.296875
|
||||
"4: "
|
||||
TextNode <#text>
|
||||
TextNode <#text>
|
||||
BlockContainer <p> at (8,148) content-size 784x17 children: inline
|
||||
frag 0 from TextNode start: 0, length: 1, rect: [28,148 11.859375x17] baseline: 13.296875
|
||||
"E"
|
||||
InlineNode <(anonymous)>
|
||||
frag 0 from TextNode start: 0, length: 3, rect: [8,148 20.234375x17] baseline: 13.296875
|
||||
"5: "
|
||||
TextNode <#text>
|
||||
TextNode <#text>
|
||||
|
||||
ViewportPaintable (Viewport<#document>) [0,0 800x600]
|
||||
PaintableWithLines (BlockContainer<HTML>) [0,0 800x600]
|
||||
PaintableWithLines (BlockContainer<BODY>) [8,16 784x149]
|
||||
PaintableWithLines (BlockContainer<P>) [8,16 784x17]
|
||||
InlinePaintable (InlineNode(anonymous))
|
||||
TextPaintable (TextNode<#text>)
|
||||
TextPaintable (TextNode<#text>)
|
||||
PaintableWithLines (BlockContainer<P>) [8,49 784x17]
|
||||
InlinePaintable (InlineNode(anonymous))
|
||||
TextPaintable (TextNode<#text>)
|
||||
TextPaintable (TextNode<#text>)
|
||||
PaintableWithLines (BlockContainer<P>) [8,82 784x17]
|
||||
InlinePaintable (InlineNode(anonymous))
|
||||
TextPaintable (TextNode<#text>)
|
||||
TextPaintable (TextNode<#text>)
|
||||
PaintableWithLines (BlockContainer<P>) [8,115 784x17]
|
||||
InlinePaintable (InlineNode(anonymous))
|
||||
TextPaintable (TextNode<#text>)
|
||||
TextPaintable (TextNode<#text>)
|
||||
PaintableWithLines (BlockContainer<P>) [8,148 784x17]
|
||||
InlinePaintable (InlineNode(anonymous))
|
||||
TextPaintable (TextNode<#text>)
|
||||
TextPaintable (TextNode<#text>)
|
|
@ -0,0 +1,8 @@
|
|||
<style>
|
||||
p {
|
||||
counter-increment: a;
|
||||
}
|
||||
p::before {
|
||||
content: counter(a) ": ";
|
||||
}
|
||||
</style><p>A<p>B<p>C<p style="display:none">SECRET<p>D<p>E
|
|
@ -2718,6 +2718,13 @@ void Element::resolve_counters(CSS::StyleProperties& style)
|
|||
// 1. Existing counters are inherited from previous elements.
|
||||
inherit_counters();
|
||||
|
||||
// https://drafts.csswg.org/css-lists-3/#counters-without-boxes
|
||||
// An element that does not generate a box (for example, an element with display set to none,
|
||||
// or a pseudo-element with content set to none) cannot set, reset, or increment a counter.
|
||||
// The counter properties are still valid on such an element, but they must have no effect.
|
||||
if (style.display().is_none())
|
||||
return;
|
||||
|
||||
// 2. New counters are instantiated (counter-reset).
|
||||
auto counter_reset = style.counter_data(CSS::PropertyID::CounterReset);
|
||||
for (auto const& counter : counter_reset)
|
||||
|
|
Loading…
Reference in a new issue