[css-highlight-api-1] Don't paint highlights that cross contain boundaries #6734
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
If a StaticRange crosses a
contain
boundary and the boundary point inside the contained element is removed, UAs would have to stop painting the full extent of the range. This would violate thecontain
invariant, since a change inside the element withcontain
would have affected the appearance of content outside of that element.To eliminate this problem, never paint ranges that cross
contain
boundaries.A slightly more scoped solution would be to apply this limitation only for highlights specified with
StaticRange
, but since there doesn't seem to be any use case for applying highlights acrosscontain
boundaries, the limitation is applied to liveRange
s as well for consistency's sake.This PR changes the range-painting criteria into an algorithm, since precisely expressing the concept of "crossing a contain boundary" is clumsy in prose.
Resolves #4598.