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

Unified Diff: third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp

Issue 1973083002: Use element id's for animations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: get element id's from scroll node data directly. Created 4 years, 7 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: 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 d36b46bdf321ddeb49160399dbc4ad3b18f0d130..68bce2b36f7119d518a863ff3a6813da6a25cdbf 100644
--- a/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
+++ b/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
@@ -1522,34 +1522,32 @@ void CompositedLayerMapping::updateShouldFlattenTransform()
void CompositedLayerMapping::updateElementIdAndCompositorMutableProperties()
{
- if (!RuntimeEnabledFeatures::compositorWorkerEnabled())
- return;
-
- TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), "CompositedLayerMapping::updateElementId()");
-
uint64_t elementId = 0;
uint32_t mainMutableProperties = CompositorMutableProperty::kNone;
uint32_t scrollMutableProperties = CompositorMutableProperty::kNone;
- if (m_owningLayer.layoutObject()->style()->hasCompositorProxy()) {
- if (Node* owningNode = m_owningLayer.layoutObject()->generatingNode()) {
- if (owningNode->isElementNode()) {
- Element* owningElement = toElement(owningNode);
- uint32_t compositorMutableProperties = owningElement->compositorMutableProperties();
- elementId = DOMNodeIds::idForNode(owningNode);
- mainMutableProperties = (CompositorMutableProperty::kOpacity | CompositorMutableProperty::kTransform) & compositorMutableProperties;
- scrollMutableProperties = (CompositorMutableProperty::kScrollLeft | CompositorMutableProperty::kScrollTop) & compositorMutableProperties;
- }
- }
+ Node* owningNode = m_owningLayer.layoutObject()->generatingNode();
+ Element* owningElement = nullptr;
+ if (owningNode && owningNode->isElementNode())
+ owningElement = toElement(owningNode);
+
+ if (RuntimeEnabledFeatures::compositorWorkerEnabled() && owningElement && m_owningLayer.layoutObject()->style()->hasCompositorProxy()) {
+ uint32_t compositorMutableProperties = owningElement->compositorMutableProperties();
+ elementId = DOMNodeIds::idForNode(owningNode);
+ mainMutableProperties = (CompositorMutableProperty::kOpacity | CompositorMutableProperty::kTransform) & compositorMutableProperties;
ajuma 2016/06/01 23:53:42 Nit: maybe call this something like primaryMutable
Ian Vollick 2016/06/02 19:03:11 Done.
+ scrollMutableProperties = (CompositorMutableProperty::kScrollLeft | CompositorMutableProperty::kScrollTop) & compositorMutableProperties;
}
- m_graphicsLayer->setElementId(elementId);
+ if (m_owningLayer.layoutObject()->style()->shouldCompositeForCurrentAnimations() && owningNode)
+ elementId = DOMNodeIds::idForNode(owningNode);
+
+ m_graphicsLayer->setElementId(CompositorElementId(elementId));
m_graphicsLayer->setCompositorMutableProperties(mainMutableProperties);
- if (m_scrollingContentsLayer.get()) {
- m_scrollingContentsLayer->setElementId(elementId);
+ // We always set the elementId for m_scrollingContentsLayer since it can be
+ // animated for smooth scrolling.
+ if (m_scrollingContentsLayer.get())
m_scrollingContentsLayer->setCompositorMutableProperties(scrollMutableProperties);
- }
}
bool CompositedLayerMapping::updateForegroundLayer(bool needsForegroundLayer)
@@ -1636,6 +1634,12 @@ bool CompositedLayerMapping::updateScrollingLayers(bool needsScrollingLayers)
// Inner layer which renders the content that scrolls.
m_scrollingContentsLayer = createGraphicsLayer(CompositingReasonLayerForScrollingContents);
+
+ if (Node* owningNode = m_owningLayer.layoutObject()->generatingNode()) {
+ m_scrollingContentsLayer->setElementId(CompositorElementId(DOMNodeIds::idForNode(owningNode) | kScrollSubElement));
Ian Vollick 2016/06/01 18:08:26 NB: this is some of the glue code that knows about
ajuma 2016/06/01 23:53:42 I'm probably missing something obvious, but should
Ian Vollick 2016/06/02 19:03:11 It should indeed be shifted. I'd started implement
+ m_scrollingContentsLayer->setCompositorMutableProperties(CompositorMutableProperty::kScrollLeft | CompositorMutableProperty::kScrollTop);
+ }
+
m_scrollingLayer->addChild(m_scrollingContentsLayer.get());
layerChanged = true;

Powered by Google App Engine
This is Rietveld 408576698