New issue
Advanced search Search tips

Issue 854813 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jun 2018
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

LayoutNG: not painting of borders for AtomicInlines with layers

Project Member Reported by atotic@chromium.org, Jun 20 2018

Issue description

compositing/geometry/foreground-layer.html
compositing/geometry/repaint-foreground-layer.html

do not paint borders correctly in NG. 

I've attached the reduced test case border_nopaint.html

I've enabled paint tracing, and the output is attached as NG.json

CSS properties that are necessary to trigger the bug:
display: inline-block; (triggers PaintAtomicInline)
transform: translateZ(0);
overflow: hidden;
z-index: -1;

My guess is that some interaction between paint layers, and NG is causing this. If you look at NG display items, there is a 
"Child Containment Layer" which I assume clips its children, so 
that border painted by its children does not show up.

Interesting facts:
DIV.box first child is "Child Containment Layer"
DIV.box paints its border in DIV.box (foreground) Layer which is a child of the "Child Containment Layer"

My knowledge of CSS paint algorithm is not very deep, so I need some help trying to figure out what should be happening instead.

DIV.box is an AtomicInline, and only paints all of its parts at
once in PaintPhase::kForeground phase.

I think that the solution is something like "if AtomicInline has its
own layer, it should get painted using regular paint algorithm, and
not all at once during PaintPhase::kForeground"




 
border_nopaint.html
785 bytes View Download
NG.json
11.7 KB View Download

Comment 1 by atotic@chromium.org, Jun 20 2018

Components: Blink>Layout

Comment 2 by atotic@chromium.org, Jun 26 2018

Status: Fixed (was: Assigned)

Sign in to add a comment