Created attachment 203444 [details] Test case fast/regions/overflow-size-change-with-stacking-context.html is failing for some time.
It fails from https://bugs.webkit.org/show_bug.cgi?id=76486 because the clip rects get transformed in RenderView coordinates - through associated render regions - while the layer bounds are still in flow thread coordinates (the flow thread is the root layer). Because of that, the intersection between the layer bounds and the clip rects fails and the layer is not displayed.
Created attachment 203697 [details] Patch
Comment on attachment 203697 [details] Patch r=me
Created attachment 203765 [details] Patch for landing
Comment on attachment 203765 [details] Patch for landing Clearing flags on attachment: 203765 Committed r151202: <http://trac.webkit.org/changeset/151202>
All reviewed patches have been landed. Closing bug.
(In reply to comment #6) > All reviewed patches have been landed. Closing bug. It's better if you just moved this functionality to RenderFlowThread::mapLocalToContainer. That's for two reasons: 1) the RenderFlowThread check will only be hit when there's a RenderFlowThread object on the chain. 2) other non-RenderBox objects will benefit from that change. void RenderFlowThread::mapLocalToContainer(const RenderLayerModelObject* repaintContainer, TransformState& transformState, MapCoordinatesFlags mode, bool* wasFixed) const { if (repaintContainer == this) return; // Transform from render flow coordinates into region coordinates. if (RenderRegion* region = mapFromFlowToRegion(transformState)) static_cast<RenderObject*>(region)->mapLocalToContainer(region->containerForRepaint(), transformState, mode, wasFixed); }
(In reply to comment #7) > (In reply to comment #6) > > All reviewed patches have been landed. Closing bug. > > It's better if you just moved this functionality to > RenderFlowThread::mapLocalToContainer. > > That's for two reasons: > 1) the RenderFlowThread check will only be hit when there's a RenderFlowThread object > on the chain. > 2) other non-RenderBox objects will benefit from that change. > > void RenderFlowThread::mapLocalToContainer(const RenderLayerModelObject* > repaintContainer, TransformState& transformState, MapCoordinatesFlags mode, > bool* wasFixed) const > { > if (repaintContainer == this) > return; > > // Transform from render flow coordinates into region coordinates. > if (RenderRegion* region = mapFromFlowToRegion(transformState)) > > static_cast<RenderObject*>(region)->mapLocalToContainer(region->containerForRepaint(), > transformState, mode, wasFixed); > } Ok, i will fix in https://bugs.webkit.org/show_bug.cgi?id=117290
> void RenderFlowThread::mapLocalToContainer(const RenderLayerModelObject* repaintContainer, TransformState& transformState, MapCoordinatesFlags mode, bool* wasFixed) const > if (RenderRegion* region = mapFromFlowToRegion(transformState)) > static_cast<RenderObject*>(region)->mapLocalToContainer(region->containerForRepaint(), transformState, mode, wasFixed); You need to either make RenderRegion::mapLocalToContainer public or make RenderFlowThread a friend class RenderRegion in order to call mapLocalToContainer from RenderFlowThread (instead of using static_cast to RenderObject).