Chromium Code Reviews| Index: third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinder.cpp |
| diff --git a/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinder.cpp b/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinder.cpp |
| index 51777eb381099c656b3338a2eac962f1aff9c8df..615151d5e9189c2b731cfc2ae2fea56edbbd70a2 100644 |
| --- a/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinder.cpp |
| +++ b/third_party/WebKit/Source/core/layout/compositing/CompositingReasonFinder.cpp |
| @@ -168,8 +168,15 @@ bool CompositingReasonFinder::requiresCompositingForAnimation(const ComputedStyl |
| bool CompositingReasonFinder::requiresCompositingForScrollDependentPosition(const PaintLayer* layer) const |
| { |
| - if (!(m_compositingTriggers & ViewportConstrainedPositionedTrigger)) |
| + if (layer->layoutObject()->style()->position() != FixedPosition |
| + && layer->layoutObject()->style()->position() != StickyPosition) |
|
flackr
2016/09/23 18:19:35
This is just an early out to prevent doing the wor
|
| return false; |
| + |
| + if (!(m_compositingTriggers & ViewportConstrainedPositionedTrigger) |
| + && (!RuntimeEnabledFeatures::compositeOpaqueFixedPositionEnabled() |
| + || !layer->backgroundIsKnownToBeOpaqueInRect(LayoutRect(layer->boundingBoxForCompositing())))) { |
| + return false; |
| + } |
| // Don't promote fixed position elements that are descendants of a non-view container, e.g. transformed elements. |
| // They will stay fixed wrt the container rather than the enclosing frame. |
| if (layer->scrollsWithViewport()) |