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

Issue 660735 link

Starred by 11 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Nov 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Mac
Pri: 2
Type: Bug-Regression



Sign in to add a comment

Pseudo-elements don't cause repaint on visibility changes

Reported by guilherm...@sencha.com, Oct 30 2016

Issue description

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36

Steps to reproduce the problem:
1. Render an element with an icon (fontawesome will do just fine)
2. Hide this element using visibility: hidden
3. Change the icon while the element is hidden
4. Show the element using visibility: visible

What is the expected behavior?
The new icon would be shown

What went wrong?
It still shows the icon until you give this element a nudge, like adding/removing some random class.

Did this work before? Yes 53

Does this work in other browsers? Yes

Chrome version: 54.0.2840.71  Channel: stable
OS Version: OS X 10.12.1
Flash Version: Shockwave Flash 23.0 r0
 
fontAwesomeTest.html
747 bytes View Download
Adding attachment, showing erratic behavior and how to work around causing it to repaint.
fontAwesomeTest.html
982 bytes View Download
Please address this. Loading icon fonts is a pretty common use case

Comment 3 by pdr@chromium.org, Oct 31 2016

Components: Blink>Fonts
Labels: Needs-Bisect
Status: Untriaged (was: Unconfirmed)
Confirmed.

Test team, please bisect use the following url: http://jsbin.com/vokeja
Cc: nyerramilli@chromium.org
Labels: -Needs-Bisect hasbisect-per-revision M-56 OS-Linux OS-Windows
Owner: sashab@chromium.org
Status: Assigned (was: Untriaged)
Per-revision bisect result:
-------------------------
Good build: 54.0.2836.0 (Revision 413363)
Bad build: 54.0.2838.0 (Revision 413929)

You are probably looking for a change made after 413405 (known good), but no later than 413406 (first known bad).
CHANGELOG URL:
  https://chromium.googlesource.com/chromium/src/+log/bfd1b37e43efa00f282a93a2d8e4bb1bb210eccd..d0c57905368c76aba662dbda3b4e13cb9bd454bf

https://chromium.googlesource.com/chromium/src/+/d0c57905368c76aba662dbda3b4e13cb9bd454bf, sashab@, could you please check the issue and update.

Able to reproduce on Win7, Mac OS X10.11.6, Ubuntu 14.04 using chrome Canary # 56.0.2905.0, Dev 56.0.2902.0, Stable 54.0.2840.71
Labels: -M-56 M-54
Components: -Blink>Paint Blink>CSS

Comment 7 by a...@logjam.co.uk, Nov 3 2016

Also seeing this error when the content is changed on a :before pseudo element (whilst still visible)

Comment 8 by sashab@chromium.org, Nov 10 2016

This should be fixed by https://codereview.chromium.org/2492783002/. Will work on merging this into stable.

Comment 9 by sashab@chromium.org, Nov 10 2016

Labels: Merge-Request-54
Cc: sashab@chromium.org hdodda@chromium.org
 Issue 660089  has been merged into this issue.
Summary: Pseudo-elements don't cause repaint on visibility changes (was: Font Icons don't repaint correctly with visibility: hidden)
Project Member

Comment 12 by bugdroid1@chromium.org, Nov 11 2016

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

commit 998f4790884a34c5ac5167876a13b7cb7495a617
Author: rune <rune@opera.com>
Date: Fri Nov 11 00:50:20 2016

Skip independent inherited property propagation to pseudo elements.

UpdatePseudoElements and IndependentInherit conflict in the following
way. If we both have an independent inherit change on the actual dom
element, and we detect that we need to update the style for the pseudo
element we need to signal the inheritance propagation to the real dom
children and signal the pseudo element recalc to the pseudo element
children. If we return IndependentInherit, we lose the information
about the need for a pseudo element recalc, and if we return
UpdatePseudoElement, we lose the inheritance propagation for the actual
dom children.

We could introduce a new IndependentInheritAndUpdatePseudoElements, but
if there exists pseudo element, we would always return this constant,
so instead just force recalc on pseudo elements on IndependentInherit.

R=sashab@chromium.org
BUG= 660735 , 660089 , 657283 

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

[add] https://crrev.com/998f4790884a34c5ac5167876a13b7cb7495a617/third_party/WebKit/LayoutTests/fast/css/independent-inherit-update-pseudo.html
[modify] https://crrev.com/998f4790884a34c5ac5167876a13b7cb7495a617/third_party/WebKit/Source/core/dom/Element.cpp

Cc: gov...@chromium.org
Labels: M-55
Is this merge CRITICAL for M54 ?If yes please tag the bug with Release Block Stable.

As of now we do not have plan for a Stable Refresh for M54.

Guessing we can take this change for M55 once the CL is baked and verified in canary.
Please request a merge to M55 once CL is baked/verified in Canary and safe to merge if needed. Thank you.

Comment 15 by dimu@chromium.org, Nov 12 2016

Labels: -Merge-Request-54 Merge-Review-54 Hotlist-Merge-Review
[Automated comment] Request affecting a post-stable build (M54), manual review required.
 Issue 657283  has been merged into this issue.
Sorry, can we please merge into M55 instead.

Can confirm this is working in both tip-of-tree and Version 56.0.2918.0 canary (64-bit) on Windows 10.
re: #17, please request a merge to M55 by applying "Merge-Request-55" label. Thank you.
Labels: -Merge-Review-54 Merge-Request-55
Labels: -M-54
M54 is already in Stable now we may not do any more refresh.

Comment 21 by dimu@google.com, Nov 17 2016

Labels: -Hotlist-Merge-Review

Comment 22 by dimu@google.com, Nov 17 2016

Labels: -Merge-Request-55 Merge-Review-55 Hotlist-Merge-Review
[Automated comment] There appears to be on-going work (i.e. bugroid changes), needs manual review.

Comment 23 by dimu@google.com, Nov 17 2016

Labels: -Hotlist-Merge-Review -Merge-Review-55 Merge-Request-55
The script treated this bug as manual review in progress because of the Hotlist-Merge-Review label. Also it won't auto approval merge-request more than 24hrs old. So applying merge-request-55 manually now.

Comment 24 by dimu@google.com, Nov 17 2016

Labels: -Merge-Request-55 Merge-Approved-55 Hotlist-Merge-Approved
Your change meets the bar and is auto-approved for M55 (branch: 2883)
Thanks! Will the patch be auto-merged or do I do that manually myself?

Comment 26 by r...@opera.com, Nov 17 2016

I think you need to do it yourself, or I could drover it.

Comment 27 by r...@opera.com, Nov 17 2016

Since it's evening in Sydney, I'll start drover now.

Project Member

Comment 28 by bugdroid1@chromium.org, Nov 17 2016

Labels: -merge-approved-55 merge-merged-2883
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9bbebf3ba3a5b8ff0a645d026a0ede213135521d

commit 9bbebf3ba3a5b8ff0a645d026a0ede213135521d
Author: Rune Lillesveen <rune@opera.com>
Date: Thu Nov 17 10:53:20 2016

Skip independent inherited property propagation to pseudo elements.

UpdatePseudoElements and IndependentInherit conflict in the following
way. If we both have an independent inherit change on the actual dom
element, and we detect that we need to update the style for the pseudo
element we need to signal the inheritance propagation to the real dom
children and signal the pseudo element recalc to the pseudo element
children. If we return IndependentInherit, we lose the information
about the need for a pseudo element recalc, and if we return
UpdatePseudoElement, we lose the inheritance propagation for the actual
dom children.

We could introduce a new IndependentInheritAndUpdatePseudoElements, but
if there exists pseudo element, we would always return this constant,
so instead just force recalc on pseudo elements on IndependentInherit.

R=sashab@chromium.org
BUG= 660735 , 660089 , 657283 

Review-Url: https://codereview.chromium.org/2492783002
Cr-Commit-Position: refs/heads/master@{#431430}
(cherry picked from commit 998f4790884a34c5ac5167876a13b7cb7495a617)

Review URL: https://codereview.chromium.org/2511073002 .

Cr-Commit-Position: refs/branch-heads/2883@{#598}
Cr-Branched-From: 614d31daee2f61b0180df403a8ad43f20b9f6dd7-refs/heads/master@{#423768}

[add] https://crrev.com/9bbebf3ba3a5b8ff0a645d026a0ede213135521d/third_party/WebKit/LayoutTests/fast/css/independent-inherit-update-pseudo.html
[modify] https://crrev.com/9bbebf3ba3a5b8ff0a645d026a0ede213135521d/third_party/WebKit/Source/core/dom/Element.cpp

Comment 29 by r...@opera.com, Nov 17 2016

Status: Fixed (was: Assigned)
Tyvm rune!
Labels: TE-Verified-55.0.2883.59 TE-Verified-M55
Verified the fix on Windows 10, Ubuntu 14.04 and Mac 10.11.6 using Chrome Beta version #55.0.2883.59 as per the comment #3.

Observed that the fix is working as expected.

Attaching the screencast for reference

Hence, adding the verified labels
Issue 660735.mp4
445 KB View Download

Comment 32 by r...@opera.com, Nov 22 2016

Cc: rbasuvula@chromium.org r...@opera.com
 Issue 666918  has been merged into this issue.

Sign in to add a comment