New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 698451 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
NOT IN USE
Closed: Mar 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 3
Type: Bug



Sign in to add a comment

::first-line not invalidated if ::first-letter rule matches the same element

Reported by r...@opera.com, Mar 4 2017

Issue description

A combination of ::first-line and ::first-letter for the same container will not invalidate for ::first-line changes.

 
fl.html
396 bytes View Download

Comment 1 by r...@opera.com, Mar 6 2017

Status: Started (was: Assigned)
Project Member

Comment 2 by bugdroid1@chromium.org, Mar 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f193ee6d21e6548ed425746ec80fb71faa7998a5

commit f193ee6d21e6548ed425746ec80fb71faa7998a5
Author: rune <rune@opera.com>
Date: Mon Mar 06 11:33:42 2017

Bit-mask incorrectly removed first-line pseudo bit.

The m_pseudoBits member only contains the 8 bits for the public pseudo
element bits, yet we used a mask to retrieve them. That mask was
incorrectly set to 0x1fe when it should have been 0xff. Anyway, that
mask is unnecessary and removed.

The mask issue caused StylePropagationDiff, returned from
diffPseudoStyles, to be NoChange for pure ::first-line changes. That
NoChange return were the only case which triggered first-line
invalidation properly.

Instead, always check for pseudo style changes in
pseudoStyleCacheIsInvalid. This fixes  issue 698451 .

The pseudoStyleCacheIsInvalid method has a weird name, has bugs, and
should be put on LayoutObject and called as part of setStyle instead.
That is for follow-up CLs.

R=meade@chromium.org,mstensho@opera.com
BUG= 698451 

Review-Url: https://codereview.chromium.org/2729373003
Cr-Commit-Position: refs/heads/master@{#454850}

[add] https://crrev.com/f193ee6d21e6548ed425746ec80fb71faa7998a5/third_party/WebKit/LayoutTests/paint/invalidation/first-line-with-first-letter-expected.html
[add] https://crrev.com/f193ee6d21e6548ed425746ec80fb71faa7998a5/third_party/WebKit/LayoutTests/paint/invalidation/first-line-with-first-letter.html
[modify] https://crrev.com/f193ee6d21e6548ed425746ec80fb71faa7998a5/third_party/WebKit/Source/core/dom/Element.cpp
[modify] https://crrev.com/f193ee6d21e6548ed425746ec80fb71faa7998a5/third_party/WebKit/Source/core/dom/Element.h
[modify] https://crrev.com/f193ee6d21e6548ed425746ec80fb71faa7998a5/third_party/WebKit/Source/core/style/ComputedStyle.h
[modify] https://crrev.com/f193ee6d21e6548ed425746ec80fb71faa7998a5/third_party/WebKit/Source/core/style/ComputedStyleConstants.h
[modify] https://crrev.com/f193ee6d21e6548ed425746ec80fb71faa7998a5/third_party/WebKit/Source/core/style/ComputedStyleTest.cpp

Comment 3 by r...@opera.com, Mar 6 2017

Status: Fixed (was: Started)

Sign in to add a comment