DescriptionExpand PaintLayer clip to account for hidden URL bar with document.rootScroller
In previous patches, the document.rootScroller would disable clipping on all
parent layers in the compositor. This was fine in terms of visibility; however,
hit testing is done on PaintLayers which come before compositor layers in the
lifecycle. This means hit testing would still be blocked by parent layers, even
if the area is visible.
This is particularily problematic in terms of the top controls expansion. In
order for a root scroller deeper in the frame hierarchy to get hit tested in
the area exposed by the hidden URL bar, we need to use the root frame's visible
content area when recursing down the PaintLayer tree for hit testing.
This patch makes a few changes:
-For hit testing entry, PaintLayers that are ancestors of the global
RootScroller will use the root FrameView's size for clipping. In order for
this to work, local LayoutBox hit testing needs to use the top LayoutView's
overflowClipRect. There's an exception for SVG viewports since those appear to
need clipping based on the SVG root rather than the viewport. I've also tried
to consolidate this logic inside TopDocumentRootScrollerController and reuse it
across call-sites.
-Since we're expanding the clipping on PaintLayers, we no longer need to do the
URL bar adjustment for root scrollers in CompositedLayerMapping.
-PaintLayerClipper uses treats the local root scroller as the clipping root.
-Had to fix BlockBoundTest in WebFrameTest as it didn't have a WebView size so
it's FrameView had (0, 0) size which was now causing a failed hit test.
BUG=505516
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Patch Set 1 #Patch Set 2 : Minor Changes #Patch Set 3 : Fixes for broken tests #Patch Set 4 : Fix for hittesting scrollbars #Patch Set 5 : Cleanup #Patch Set 6 : Rebase #
Total comments: 5
Messages
Total messages: 35 (28 generated)
|