DescriptionThere are two interesting components to this patch.
1) I've added an ancestor scroll clipping layer to the RLB's hierarchy. This is
used to ensure that the clip required by scroll children is processed in cc
before we visit the scroll children. In previous versions of this patch, this
required some awkward math, but I realized that this layer shares the same
size and position as our scroll parent's m_scrollingLayer, so I could just
steal those values. However, to use this I had to...
2) update RLC::rebuildCompositingLayerTree and RLC::updateLayerTreeGeometry so
that we visit our children in an order that guarantees scroll parents will
be visited before scroll children.
This turned out to be relatively simple. We can visit the children in any order,
provided that when we're rebuilding the layer tree we populate the list of child
layers in the correct order. So we can visit the normal flow list first (which
is where the scroll parent will usually live and where scroll children -- who
must be stacking containers -- will not live), and modify the pos/neg z-order
list traversal so that we could visit scroll parents ahead of time, if necessary
(the scroll parent can potentially be in the pos z-order list (with z-index 0) if
it has a positioned ancestor).
This is blink-side patch 5 of https://docs.google.com/a/chromium.org/document/d/1Ln57_v6_4RmuuvtWnpsfBOUeDFrPsYNFW13dwuQ8UD8 and was written by vollick@chromium.org.
BUG=249349, 249357
Patch Set 1 #Patch Set 2 : #Patch Set 3 : #Patch Set 4 : #
Total comments: 2
Patch Set 5 : rebase #
Total comments: 11
Patch Set 6 : fix rebase error #Patch Set 7 : . #Patch Set 8 : . #Messages
Total messages: 2 (0 generated)
|