Chromium Code Reviews| Index: cc/trees/layer_tree_impl.cc |
| diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc |
| index 74603d51fbc0f1016e5cc45cfd7ffa8a6b09b4a4..5cc14543da1a5605580dd9d3da8c40ff6e73eda5 100644 |
| --- a/cc/trees/layer_tree_impl.cc |
| +++ b/cc/trees/layer_tree_impl.cc |
| @@ -484,6 +484,10 @@ void LayerTreeImpl::RemoveFromElementMap(LayerImpl* layer) { |
| element_layers_map_.erase(layer->element_id()); |
| } |
| +void LayerTreeImpl::AddToOpacityAnimationsMap(int id, float opacity) { |
| + opacity_animations_map_[id] = opacity; |
| +} |
| + |
| LayerTreeImpl::ElementLayers LayerTreeImpl::GetMutableLayers( |
| uint64_t element_id) { |
| auto iter = element_layers_map_.find(element_id); |
| @@ -562,6 +566,19 @@ void LayerTreeImpl::UpdatePropertyTreeScrollingAndAnimationFromMainThread() { |
| // frame to a newly-committed property tree. |
| if (!root_layer()) |
| return; |
| + for (auto& layer_id_to_opacity : opacity_animations_map_) { |
| + if (LayerImpl* layer = LayerById(layer_id_to_opacity.first)) { |
|
ajuma
2016/05/11 00:10:59
We'll need a map from layer ids to node ids (which
jaydasika
2016/05/11 01:00:54
Acknowledged.
|
| + EffectNode* node = |
| + property_trees_.effect_tree.Node(layer->effect_tree_index()); |
| + if (node->owner_id != layer->id() || |
| + !node->data.is_currently_animating_opacity) |
| + continue; |
| + DCHECK_EQ(layer->opacity(), layer_id_to_opacity.second); |
| + node->data.opacity = layer_id_to_opacity.second; |
| + property_trees_.effect_tree.set_needs_update(true); |
| + } |
| + } |
| + opacity_animations_map_.clear(); |
|
ajuma
2016/05/11 00:11:00
What kind of test coverage do we have for this log
jaydasika
2016/05/11 01:00:54
There is only one unit test hitting this path : La
|
| LayerTreeHostCommon::CallFunctionForEveryLayer(this, [](LayerImpl* layer) { |
| layer->UpdatePropertyTreeForScrollingAndAnimationIfNeeded(); |
| }); |