Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1796)

Unified Diff: Source/core/rendering/compositing/CompositingReasonFinder.cpp

Issue 197533013: CompositingReasonFinder should use a virtual function instead of a nest of branches (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Add missing file Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/rendering/compositing/CompositingReasonFinder.cpp
diff --git a/Source/core/rendering/compositing/CompositingReasonFinder.cpp b/Source/core/rendering/compositing/CompositingReasonFinder.cpp
index a65ae9056e53ac1b3842a3553ee70e436c62d7c9..435104343db7ee6d010dbe440d683c1f5ddeeed8 100644
--- a/Source/core/rendering/compositing/CompositingReasonFinder.cpp
+++ b/Source/core/rendering/compositing/CompositingReasonFinder.cpp
@@ -34,7 +34,7 @@ namespace WebCore {
CompositingReasonFinder::CompositingReasonFinder(RenderView& renderView)
: m_renderView(renderView)
- , m_compositingTriggers(static_cast<ChromeClient::CompositingTriggerFlags>(ChromeClient::AllTriggers))
+ , m_compositingTriggers(static_cast<CompositingTriggerFlags>(AllCompositingTriggers))
{
}
@@ -45,12 +45,12 @@ void CompositingReasonFinder::updateTriggers()
bool CompositingReasonFinder::has3DTransformTrigger() const
{
- return m_compositingTriggers & ChromeClient::ThreeDTransformTrigger;
+ return m_compositingTriggers & ThreeDTransformTrigger;
}
bool CompositingReasonFinder::hasAnimationTrigger() const
{
- return m_compositingTriggers & ChromeClient::AnimationTrigger;
+ return m_compositingTriggers & AnimationTrigger;
}
bool CompositingReasonFinder::isMainFrame() const
@@ -68,11 +68,8 @@ CompositingReasons CompositingReasonFinder::directReasons(const RenderLayer* lay
directReasons |= CompositingReason3DTransform;
// Only zero or one of the following conditions will be true for a given RenderLayer.
- if (requiresCompositingForVideo(renderer))
- directReasons |= CompositingReasonVideo;
- else if (requiresCompositingForCanvas(renderer))
- directReasons |= CompositingReasonCanvas;
- else if (requiresCompositingForPlugin(renderer, needToRecomputeCompositingRequirements))
+ // FIXME: These should be handled by overrides of RenderObject::additionalCompositingReasons.
+ if (requiresCompositingForPlugin(renderer, needToRecomputeCompositingRequirements))
directReasons |= CompositingReasonPlugin;
else if (requiresCompositingForFrame(renderer, needToRecomputeCompositingRequirements))
directReasons |= CompositingReasonIFrame;
@@ -104,6 +101,8 @@ CompositingReasons CompositingReasonFinder::directReasons(const RenderLayer* lay
if (requiresCompositingForWillChange(renderer))
directReasons |= CompositingReasonWillChange;
+ directReasons |= renderer->additionalCompositingReasons(m_compositingTriggers);
+
return directReasons;
}
@@ -114,7 +113,7 @@ bool CompositingReasonFinder::requiresCompositingForScrollableFrame() const
if (isMainFrame())
return false;
- if (!(m_compositingTriggers & ChromeClient::ScrollableInnerFrameTrigger))
+ if (!(m_compositingTriggers & ScrollableInnerFrameTrigger))
return false;
FrameView* frameView = m_renderView.frameView();
@@ -123,7 +122,7 @@ bool CompositingReasonFinder::requiresCompositingForScrollableFrame() const
bool CompositingReasonFinder::requiresCompositingForTransform(RenderObject* renderer) const
{
- if (!(m_compositingTriggers & ChromeClient::ThreeDTransformTrigger))
+ if (!(m_compositingTriggers & ThreeDTransformTrigger))
return false;
RenderStyle* style = renderer->style();
@@ -132,39 +131,9 @@ bool CompositingReasonFinder::requiresCompositingForTransform(RenderObject* rend
return renderer->hasTransform() && style->transform().has3DOperation();
}
-bool CompositingReasonFinder::requiresCompositingForVideo(RenderObject* renderer) const
-{
- if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled() && renderer->isVideo()) {
- HTMLMediaElement* media = toHTMLMediaElement(renderer->node());
- if (media->isFullscreen())
- return true;
- }
-
- if (!(m_compositingTriggers & ChromeClient::VideoTrigger))
- return false;
-
- if (renderer->isVideo()) {
- RenderVideo* video = toRenderVideo(renderer);
- return video->shouldDisplayVideo() && video->supportsAcceleratedRendering();
- }
- return false;
-}
-
-bool CompositingReasonFinder::requiresCompositingForCanvas(RenderObject* renderer) const
-{
- if (!(m_compositingTriggers & ChromeClient::CanvasTrigger))
- return false;
-
- if (renderer->isCanvas()) {
- HTMLCanvasElement* canvas = toHTMLCanvasElement(renderer->node());
- return canvas->renderingContext() && canvas->renderingContext()->isAccelerated();
- }
- return false;
-}
-
bool CompositingReasonFinder::requiresCompositingForPlugin(RenderObject* renderer, bool* needToRecomputeCompositingRequirements) const
{
- if (!(m_compositingTriggers & ChromeClient::PluginTrigger))
+ if (!(m_compositingTriggers & PluginTrigger))
return false;
if (!renderer->isEmbeddedObject() || !toRenderEmbeddedObject(renderer)->allowsAcceleratedCompositing())
@@ -214,7 +183,7 @@ bool CompositingReasonFinder::requiresCompositingForFrame(RenderObject* renderer
bool CompositingReasonFinder::requiresCompositingForBackfaceVisibilityHidden(RenderObject* renderer) const
{
- if (!(m_compositingTriggers & ChromeClient::ThreeDTransformTrigger))
+ if (!(m_compositingTriggers & ThreeDTransformTrigger))
return false;
return renderer->style()->backfaceVisibility() == BackfaceVisibilityHidden;
@@ -222,7 +191,7 @@ bool CompositingReasonFinder::requiresCompositingForBackfaceVisibilityHidden(Ren
bool CompositingReasonFinder::requiresCompositingForAnimation(RenderObject* renderer) const
{
- if (!(m_compositingTriggers & ChromeClient::AnimationTrigger))
+ if (!(m_compositingTriggers & AnimationTrigger))
return false;
return shouldCompositeForActiveAnimations(*renderer);
@@ -230,7 +199,7 @@ bool CompositingReasonFinder::requiresCompositingForAnimation(RenderObject* rend
bool CompositingReasonFinder::requiresCompositingForTransition(RenderObject* renderer) const
{
- if (!(m_compositingTriggers & ChromeClient::AnimationTrigger))
+ if (!(m_compositingTriggers & AnimationTrigger))
return false;
if (Settings* settings = m_renderView.document().settings()) {
@@ -245,7 +214,7 @@ bool CompositingReasonFinder::requiresCompositingForTransition(RenderObject* ren
bool CompositingReasonFinder::requiresCompositingForFilters(RenderObject* renderer) const
{
- if (!(m_compositingTriggers & ChromeClient::FilterTrigger))
+ if (!(m_compositingTriggers & FilterTrigger))
return false;
return renderer->hasFilter();
« no previous file with comments | « Source/core/rendering/compositing/CompositingReasonFinder.h ('k') | Source/core/rendering/compositing/CompositingTriggers.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698