Index: Source/core/rendering/compositing/CompositingReasonFinder.cpp |
diff --git a/Source/core/rendering/compositing/CompositingReasonFinder.cpp b/Source/core/rendering/compositing/CompositingReasonFinder.cpp |
index b0ecb32a2b5f900abed73e086c34a4d824dd8994..66447ea40cc0e322a6dd6b4de8fbd9416fce5cab 100644 |
--- a/Source/core/rendering/compositing/CompositingReasonFinder.cpp |
+++ b/Source/core/rendering/compositing/CompositingReasonFinder.cpp |
@@ -205,7 +205,7 @@ bool CompositingReasonFinder::requiresCompositingForScrollBlocksOn(const RenderO |
// Optimizing this fully would avoid layer explosion in pathological cases like '*' rules. |
// We could consider tracking the current state in CompositingRequirementsUpdater::update. |
- // Ensure iframes don't get composited when they require no more blocking than the root. |
+ // Ensure iframes don't get composited when they require no more blocking than their parent. |
if (renderer->isRenderView()) { |
if (const FrameView* parentFrame = toRenderView(renderer)->frameView()->parentFrameView()) { |
if (const RenderView* parentRenderer = parentFrame->renderView()) { |
@@ -213,6 +213,11 @@ bool CompositingReasonFinder::requiresCompositingForScrollBlocksOn(const RenderO |
if (!(style->scrollBlocksOn() & ~parentRenderer->style()->scrollBlocksOn())) |
return false; |
} |
+ } else { |
+ // The root frame will either always already be composited, or compositing will be disabled. |
+ // Either way, we don't need to require compositing for scroll blocks on. This avoids |
+ // enabling compositing by default, and avoids cluttering the root layers compositing reasons. |
+ return false; |
} |
} |