Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Missing ClearNeedsStyleRecalc() for ::first-letter.
A FirstLetterPseudoElement is marked for style recalc when the text node
the first letter belongs to is removed from the DOM tree. On the next
style recalc, if the first-letter's originating element is inside a
subtree marked for layout tree re-attachment, or one of its descendants
are marked for re-attachment, we delay the first-letter style update
until UpdateFirstLetterPseudoElement is called for the
kRebuildLayoutTree or kAttachLayoutTree phases. For the former, we call
RecalcStyle which will ClearNeedsStyleRecalc, but ofr the
kAttachLayoutTree phase, we called StyleForLayoutObject without clearing
the dirty flag.

Bug: 1064595
Change-Id: Ibebb9c358b473f61b1cff49a7c5ec43bf6894408
  • Loading branch information
Rune Lillesveen authored and chromium-wpt-export-bot committed Mar 26, 2020
1 parent bd2362e commit ab55783
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions css/css-pseudo/first-letter-text-and-display-change.html
@@ -0,0 +1,18 @@
<!doctype html>
<title>CSS Test: Change display for the ::first-letter container while replacing text node</title>
<link rel="help" href="https://drafts.csswg.org/css-pseudo/#first-letter-pseudo">
<link rel="match" href="../reference/pass_if_letter_uppercase.html">
<style>
#container::first-letter { text-transform: uppercase }
#container.ib { display: inline-block }
</style>
<body>
<p>Test passes if the letter "F" in the words "Filler Text" below is in upper-case.</p>
<div id="container">Test not run</div>
</body>
<script>
container.offsetTop;
container.className = "ib";
container.appendChild(document.createTextNode("filler Text"));
container.firstChild.remove();
</script>

0 comments on commit ab55783

Please sign in to comment.