Index: Source/core/rendering/compositing/CompositedLayerMapping.cpp |
diff --git a/Source/core/rendering/compositing/CompositedLayerMapping.cpp b/Source/core/rendering/compositing/CompositedLayerMapping.cpp |
index 9c33d6d5a627ad1c672af4faa32e030e5a80ff4d..592739d51bfde55c970559e0f205bcec517f5235 100644 |
--- a/Source/core/rendering/compositing/CompositedLayerMapping.cpp |
+++ b/Source/core/rendering/compositing/CompositedLayerMapping.cpp |
@@ -136,6 +136,17 @@ static bool contentLayerSupportsDirectBackgroundComposition(const RenderObject* |
return contentsRect(renderer).contains(backgroundRect(renderer)); |
} |
+static blink::WebLayer* platformLayerForPlugin(RenderObject* renderer) |
+{ |
+ if (!renderer->isEmbeddedObject()) |
+ return 0; |
+ Widget* widget = toRenderEmbeddedObject(renderer)->widget(); |
+ if (!widget || !widget->isPluginView()) |
+ return 0; |
+ return toPluginView(widget)->platformLayer(); |
+ |
+} |
+ |
static inline bool isAcceleratedContents(RenderObject* renderer) |
{ |
return isAcceleratedCanvas(renderer) |
@@ -530,9 +541,8 @@ bool CompositedLayerMapping::updateGraphicsLayerConfiguration() |
if (isDirectlyCompositedImage()) |
updateImageContents(); |
- if (renderer->isEmbeddedObject() && toRenderEmbeddedObject(renderer)->requiresAcceleratedCompositing()) { |
- PluginView* pluginView = toPluginView(toRenderWidget(renderer)->widget()); |
- m_graphicsLayer->setContentsToPlatformLayer(pluginView->platformLayer()); |
+ if (blink::WebLayer* layer = platformLayerForPlugin(renderer)) { |
+ m_graphicsLayer->setContentsToPlatformLayer(layer); |
} else if (renderer->node() && renderer->node()->isFrameOwnerElement() && toHTMLFrameOwnerElement(renderer->node())->contentFrame()) { |
blink::WebLayer* layer = toHTMLFrameOwnerElement(renderer->node())->contentFrame()->remotePlatformLayer(); |
if (layer) |