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

Issue 609414 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: May 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Regression: Unnecessary trace of highlight is seen on ‘MD History’ page.

Reported by dmascare...@etouch.net, May 5 2016

Issue description

Chrome Version:52.0.2725.0 (Official Build) 3bfc96772d01d42a50683cae507a53cf07bb606d-refs/heads/master@{#391707} 32/64 bit
OS: Windows (7,8,10) , Linux

Pre-condition: 1. Enable ‘Material Design History’ flag.
               2. Navigate to any 2-3 webpages such that history is generated.

What steps will reproduce the problem?
1. Launch chrome and navigate to ‘chrome://history'
2. Click on first check box of the page and  press ‘Tab’ such that focus travel over every link.
3. Observe trace beside the links

Actual: Unnecessary traces of highlight is seen.
Expected: Traces should not be seen.

This is regression issue, broken in ‘M 52’ and below is narrow bisect:
https://chromium.googlesource.com/chromium/src/+log/74d1a68fa838d973b6104ddb4af4d88881fb901c..de7ae34361ba945b6d1ec7b3c679fecf5d94d35b?pretty=fuller&n=100

Suspecting: r387862 ?

Good build: 52.0.2711.0
Bad build: 52.0.2712.0

Note: Above issue is not reproducible on Mac OS.
 
Actual history.png
33.8 KB View Download
Labels: Proj-MaterialDesign-WebUI
Labels: ReleaseBlock-Stable
Marking the above issue as RB-Stable as this is a recent regression.

Feel free to change accordingly.

Thank you!
609414.html
261 bytes View Download
Cc: wangxianzhu@chromium.org
@wangxianzhu: when you tab on to the #title in this test case it gets a focus ring, even though there's an overflow clip that should prevent it:

<!DOCTYPE HTML>
<div style="display:inline-block; height: 20px; width: 20px;" tabindex=0></div>
<div id="test" style="overflow:hidden;">
    <a id="title" style="display: inline-block;" href="">TEXT</a>
</div>

What do you think, should we display the focus ring or not?

Do you happen to know what is allowing the ring to paint despite the overflow clip? I can't see what prevents it getting treated like a normal outline (which does get clipped).

In WebKit/blink focus-rings are just special outlines. They are clipped by overflow clip like normal outlines.

How does you change affect this?
Strangely enough they're not. Try putting a normal outline on #title in my example above - it gets clipped. However a focus ring does not.

Any idea why? (FF clips them, not clipping them seems like a bug.)

My change bumps up against this because we're now relying on paint invalidations to clean up the highlight. Because it's not getting clipped when it ought to be the paint invalidation doesn't know it's there and needs cleaning up.

Components: Blink>Layout
Labels: -OS-Linux -OS-Windows OS-All
This doesn't look like an under-invalidation because we actually invalidate rasterization per tile which is normally bigger than the invalidation rect and it's unlikely to just leave all outsets of the focus ring not invalidated.

Just did some debug and found we just miss the clipping. With your change reverted, we do output the clipping. It seems that with your change we miss updating of ancestor contentsVisualOverflowRect() when a descendant changes visual overflow (where 'ancestor' is the 'div id="test"' and 'descendant' is the 'a' element in the test case). In BoxClipper.cpp, we output clipping only if the contents really overflows the container. The clipping is missing because the contentsVisualOverflowRect() is wrong.
I also reproduced this bug with the attached test case with a normal outline. The behavior is unstable. You can reload the test multiple times to see the different behaviors.
outline-overflow.html
377 bytes View Download
So the focus ring shouldn't be clipped out in the first place? Like in FF?
It should be clipped. It's not clipped because we miss updating ancestor contentsVisualOverflowRect() when descendant changes overflow.
Friendly Ping. Request someone to update on the above issue?

I really appreciate the help.

Thank you!
Status: Started (was: Assigned)
Project Member

Comment 13 by bugdroid1@chromium.org, May 17 2016

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

commit ed8035039a5d5a4424ae8f11d80d7b20ebb92537
Author: robhogan <robhogan@gmail.com>
Date: Tue May 17 19:22:50 2016

Clear knownToHaveNoOverflow() for line boxes when recomputing overflow without layout

knownToHaveNoOverflow() typically gets reset during layout. When we're just
recomputing overflow without a layout we have to clear it ourselves on any
lineboxes that we identify as needing overflow recalculated, otherwise computeOverflow()
on the linebox returns early.

BUG= 609414 

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

[add] https://crrev.com/ed8035039a5d5a4424ae8f11d80d7b20ebb92537/third_party/WebKit/LayoutTests/fast/repaint/inline-box-overflow-repaint-expected.html
[add] https://crrev.com/ed8035039a5d5a4424ae8f11d80d7b20ebb92537/third_party/WebKit/LayoutTests/fast/repaint/inline-box-overflow-repaint.html
[modify] https://crrev.com/ed8035039a5d5a4424ae8f11d80d7b20ebb92537/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp

Cc: kavvaru@chromium.org
Labels: Needs-Feedback
Still able to reproduce the issue on windows 7, Linux Ubuntu 14.04 using chrome latest version 52.0.2740.0.Able to see the traces of highlight before the links.

robhoga@ Could you please find the attached screen cast and confirm any other fix yet to land.

Thanks,
609414.mp4
801 KB Download

Comment 15 by ajha@chromium.org, May 20 2016

Labels: -Needs-Feedback TE-Verified-M52 TE-Verified-52.0.2743.0
Tested the same, along with kavvaru@(from C#14) and this seems to be working fine on the latest canary(52.0.2743.0) on Windows-7, Linux Ubuntu 14.04. Hence marking this as Verified.

Comment 16 by robho...@gmail.com, May 21 2016

Status: Fixed (was: Started)
Labels: Merge-TBD
[Auto-generated comment by a script] We noticed that this issue is targeted for M-52; it appears the fix may have landed after branch point, meaning a merge might be required. Please confirm if a merge is required here - if so add Merge-Request-52 label, otherwise remove Merge-TBD label. Thanks.
Labels: -Merge-TBD
[Bulk edit]

Our blockerbot script was offline; it was recently brought back online, and thus labeled many old issues (including this one) erroneously.  Removing Merge-TBD label since all milestones for this issue are already completed; no further work should be done.

Sign in to add a comment