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 9daccaf0230176950c136827b4cd06c43b25b49a..6d3121bd6a75db04bc750c64f870f330007f6bba 100644 |
| --- a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp |
| +++ b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp |
| @@ -555,7 +555,8 @@ bool CompositedLayerMapping::updateGraphicsLayerConfiguration() |
| if (layerConfigChanged || maskLayerChanged) |
| updatePaintingPhases(); |
| - updateElementIdAndCompositorMutableProperties(); |
| + updateCompositorElementId(); |
| + updateCompositorMutableProperties(); |
| return layerConfigChanged; |
| } |
| @@ -741,7 +742,8 @@ void CompositedLayerMapping::updateGraphicsLayerGeometry(const PaintLayer* compo |
| updateContentsRect(); |
| updateBackgroundColor(); |
| updateDrawsContent(); |
| - updateElementIdAndCompositorMutableProperties(); |
| + updateCompositorElementId(); |
| + updateCompositorMutableProperties(); |
| updateContentsOpaque(); |
| updateAfterPartResize(); |
| updateRenderingContext(); |
| @@ -1488,14 +1490,32 @@ void CompositedLayerMapping::updateShouldFlattenTransform() |
| } |
| } |
| -void CompositedLayerMapping::updateElementIdAndCompositorMutableProperties() |
| +void CompositedLayerMapping::updateCompositorElementId() |
| +{ |
| + if (Node* owningNode = m_owningLayer.layoutObject()->generatingNode()) { |
|
esprehn
2016/05/10 22:55:13
we can just keep a data member on CompositedLayerM
loyso (OOO)
2016/05/12 06:02:15
Do you mean
Node* CompositedLayerMapping::m_owning
|
| + if (owningNode->isElementNode()) { |
| + Element* owningElement = toElement(owningNode); |
| + if (owningElement->layoutObject() == m_owningLayer.layoutObject()) { |
| + CompositorElementId elementId = owningElement->compositorElementId(); |
| + if (m_scrollingContentsLayer.get()) { |
| + // Any scrolling layer may attract compositor-initiated |
| + // animation, so assign an id in advance. |
| + elementId = owningElement->assignCompositorElementId(); |
| + m_scrollingContentsLayer->setElementId(elementId); |
| + } |
| + m_graphicsLayer->setElementId(elementId); |
| + } |
| + } |
| + } |
| +} |
| + |
| +void CompositedLayerMapping::updateCompositorMutableProperties() |
| { |
| if (!RuntimeEnabledFeatures::compositorWorkerEnabled()) |
| return; |
| TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), "CompositedLayerMapping::updateElementId()"); |
| - CompositorElementId elementId = 0; |
| uint32_t mainMutableProperties = CompositorMutableProperty::kNone; |
| uint32_t scrollMutableProperties = CompositorMutableProperty::kNone; |
| @@ -1503,22 +1523,23 @@ void CompositedLayerMapping::updateElementIdAndCompositorMutableProperties() |
| if (Node* owningNode = m_owningLayer.layoutObject()->generatingNode()) { |
| if (owningNode->isElementNode()) { |
| Element* owningElement = toElement(owningNode); |
| - uint32_t compositorMutableProperties = owningElement->compositorMutableProperties(); |
| - elementId = owningElement->assignCompositorElementId(); |
| + |
| + const CompositorElementId elementId = owningElement->assignCompositorElementId(); |
| CompositorIdToElementMap::registerElement(*owningElement); |
| + m_graphicsLayer->setElementId(elementId); |
| + if (m_scrollingContentsLayer.get()) |
| + m_scrollingContentsLayer->setElementId(elementId); |
| + |
| + uint32_t compositorMutableProperties = owningElement->compositorMutableProperties(); |
| mainMutableProperties = (CompositorMutableProperty::kOpacity | CompositorMutableProperty::kTransform) & compositorMutableProperties; |
| scrollMutableProperties = (CompositorMutableProperty::kScrollLeft | CompositorMutableProperty::kScrollTop) & compositorMutableProperties; |
| } |
| } |
| } |
| - m_graphicsLayer->setElementId(elementId); |
| m_graphicsLayer->setCompositorMutableProperties(mainMutableProperties); |
| - |
| - if (m_scrollingContentsLayer.get()) { |
| - m_scrollingContentsLayer->setElementId(elementId); |
| + if (m_scrollingContentsLayer.get()) |
| m_scrollingContentsLayer->setCompositorMutableProperties(scrollMutableProperties); |
| - } |
| } |
| bool CompositedLayerMapping::updateForegroundLayer(bool needsForegroundLayer) |