Chromium Code Reviews| Index: third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp |
| diff --git a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp |
| index 57eeda916ab7246c8b4a67294ae3ca4249041205..eefb88370c1e808f4b07c4a53b20fb7db212ac42 100644 |
| --- a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp |
| +++ b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp |
| @@ -123,6 +123,16 @@ static inline bool isAcceleratedCanvas(const LayoutObject* layoutObject) |
| return false; |
| } |
| +static inline bool isCanvasTransferedFromOffscreen(const LayoutObject* layoutObject) |
|
Justin Novosad
2016/05/20 19:58:26
isCanvasControlledByOffscreen
|
| +{ |
| + if (layoutObject->isCanvas()) { |
| + HTMLCanvasElement* canvas = toHTMLCanvasElement(layoutObject->node()); |
| + if (!!canvas->surfaceLayerBridge()) |
|
Justin Novosad
2016/05/20 19:58:26
"!!" is not necessary
|
| + return true; |
| + } |
| + return false; |
| +} |
| + |
| static bool hasBoxDecorationsOrBackgroundImage(const ComputedStyle& style) |
| { |
| return style.hasBoxDecorations() || style.hasBackgroundImage(); |
| @@ -538,6 +548,10 @@ bool CompositedLayerMapping::updateGraphicsLayerConfiguration() |
| } else if (layoutObject->isVideo()) { |
| HTMLMediaElement* mediaElement = toHTMLMediaElement(layoutObject->node()); |
| m_graphicsLayer->setContentsToPlatformLayer(mediaElement->platformLayer()); |
| + } else if (isCanvasTransferedFromOffscreen(layoutObject)) { |
| + HTMLCanvasElement* canvas = toHTMLCanvasElement(layoutObject->node()); |
| + m_graphicsLayer->setContentsToPlatformLayer(canvas->surfaceLayerBridge()->getWebLayer()); |
| + layerConfigChanged = true; |
| } else if (isAcceleratedCanvas(layoutObject)) { |
| HTMLCanvasElement* canvas = toHTMLCanvasElement(layoutObject->node()); |
| if (CanvasRenderingContext* context = canvas->renderingContext()) |