gecko-dev/testing/web-platform/tests/css/css-pseudo/first-letter-and-sibling-display-change.html
Rune Lillesveen 454c57d2e6 Bug 1480059 [wpt PR 12253] - Don't re-attach ::first-letter during style recalc., a=testonly
Automatic update from web-platform-testsDon't re-attach ::first-letter during style recalc.

Update (create or destroy) the FirstLetterPseudoElement and its style
at the point where the block level element's layout sub-tree is up-to-
date. This means we will always attach the layout tree for the
::first-letter element in Element::AttachLayoutTree, but the pseudo
element and its style may be created/updated at style recalc time,
layout tree rebuild time, or layout tree attachment time depending on
when we know what will be the LayoutText from which we will format the
first letter if any.

UpdateFirstLetterPseudoElement is split out from UpdatePseudoElement to
make the code easier to read as the former case has some exceptional
cases.

We no longer use the pseudo style cache for ::first-letter as we will
now compute the style only once per pass with the correct inheritance
parent.

Bug: 847218
Change-Id: I7a1e2a60122891fa38998ff85e566bec0a38b513
Reviewed-on: https://chromium-review.googlesource.com/1155591
Reviewed-by: Anders Ruud <andruud@chromium.org>
Commit-Queue: Rune Lillesveen <futhark@chromium.org>
Cr-Commit-Position: refs/heads/master@{#581320}

--

wpt-commits: 3dd27ccc5876d3ad06ccce491da49b477d623621
wpt-pr: 12253
2018-08-14 16:45:12 +00:00

16 lines
657 B
HTML

<!DOCTYPE html>
<title>CSS Test: Changing ::first-letter color while sibling changes display type.</title>
<link rel="author" title="Rune Lillesveen" href="mailto:futhark@chromium.org">
<link rel="match" href="first-letter-block-to-inline-ref.html">
<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#first-letter-pseudo">
<style>
div { color: green }
div::first-letter { color: red }
.green::first-letter { color: green }
</style>
<div>This text should be green.<span></span></div>
<script>
document.body.offsetTop;
document.querySelector("span").style.display = "block";
document.querySelector("div").className = "green";
</script>