diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc index 2eee6d48f5ad07..cd1232fa128de9 100644 --- a/cc/layers/layer_impl.cc +++ b/cc/layers/layer_impl.cc @@ -84,7 +84,7 @@ LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, int id) DCHECK(layer_tree_impl_); layer_tree_impl_->RegisterLayer(this); - layer_tree_impl_->AddToElementMap(this); + layer_tree_impl_->AddToElementLayerList(element_id_); SetNeedsPushProperties(); } @@ -92,7 +92,7 @@ LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, int id) LayerImpl::~LayerImpl() { DCHECK_EQ(DRAW_MODE_NONE, current_draw_mode_); layer_tree_impl_->UnregisterLayer(this); - layer_tree_impl_->RemoveFromElementMap(this); + layer_tree_impl_->RemoveFromElementLayerList(element_id_); TRACE_EVENT_OBJECT_DELETED_WITH_ID( TRACE_DISABLED_BY_DEFAULT("cc.debug"), "cc::LayerImpl", this); } @@ -643,9 +643,9 @@ void LayerImpl::SetElementId(ElementId element_id) { TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("cc.debug"), "LayerImpl::SetElementId", "element", element_id.AsValue().release()); - layer_tree_impl_->RemoveFromElementMap(this); + layer_tree_impl_->RemoveFromElementLayerList(element_id_); element_id_ = element_id; - layer_tree_impl_->AddToElementMap(this); + layer_tree_impl_->AddToElementLayerList(element_id_); SetNeedsPushProperties(); } diff --git a/cc/layers/scrollbar_layer_unittest.cc b/cc/layers/scrollbar_layer_unittest.cc index 1b9146d89c01b4..dc36e46df127ba 100644 --- a/cc/layers/scrollbar_layer_unittest.cc +++ b/cc/layers/scrollbar_layer_unittest.cc @@ -965,10 +965,6 @@ TEST_F(AuraScrollbarLayerTest, ScrollbarLayerCreateAfterSetScrollable) { layer_tree_host_->CommitAndCreatePendingTree(); host_impl->ActivateSyncTree(); - LayerImpl* scroll_layer_impl = - host_impl->active_tree()->LayerByElementId(scroll_layer->element_id()); - EXPECT_TRUE(scroll_layer_impl->needs_show_scrollbars()); - std::unique_ptr scrollbar(new FakeScrollbar(false, true, true)); scoped_refptr scrollbar_layer = SolidColorScrollbarLayer::Create( scrollbar->Orientation(), kThumbThickness, kTrackStart, diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc index 9f318b90c8ff41..c4f24272545913 100644 --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc @@ -5161,18 +5161,11 @@ bool LayerTreeHostImpl::ScrollAnimationUpdateTarget( bool LayerTreeHostImpl::IsElementInList(ElementId element_id, ElementListType list_type) const { - if (list_type == ElementListType::ACTIVE) { - return active_tree() - ? active_tree()->LayerByElementId(element_id) != nullptr - : false; - } else { - if (pending_tree() && pending_tree()->LayerByElementId(element_id)) - return true; - if (recycle_tree() && recycle_tree()->LayerByElementId(element_id)) - return true; + if (list_type == ElementListType::ACTIVE) + return active_tree() && active_tree()->IsElementInLayerList(element_id); - return false; - } + return (pending_tree() && pending_tree()->IsElementInLayerList(element_id)) || + (recycle_tree() && recycle_tree()->IsElementInLayerList(element_id)); } void LayerTreeHostImpl::SetMutatorsNeedCommit() {} diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc index fdffd78c9dbf07..d6643c2534f222 100644 --- a/cc/trees/layer_tree_impl.cc +++ b/cc/trees/layer_tree_impl.cc @@ -596,52 +596,47 @@ LayerImplList::reverse_iterator LayerTreeImpl::rend() { return layer_list_.rend(); } -LayerImpl* LayerTreeImpl::LayerByElementId(ElementId element_id) const { - auto iter = element_layers_map_.find(element_id); - return (iter == element_layers_map_.end()) ? nullptr - : LayerById(iter->second); +bool LayerTreeImpl::IsElementInLayerList(ElementId element_id) const { + return elements_in_layer_list_.count(element_id); } ElementListType LayerTreeImpl::GetElementTypeForAnimation() const { return IsActiveTree() ? ElementListType::ACTIVE : ElementListType::PENDING; } -void LayerTreeImpl::AddToElementMap(LayerImpl* layer) { - ElementId element_id = layer->element_id(); +void LayerTreeImpl::AddToElementLayerList(ElementId element_id) { if (!element_id) return; - TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("layer-element"), - "LayerTreeImpl::AddToElementMap", "element", - element_id.AsValue().release(), "layer_id", layer->id()); + TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("layer-element"), + "LayerTreeImpl::AddToElementLayerList", "element", + element_id.AsValue().release()); #if DCHECK_IS_ON() - LayerImpl* existing_layer = LayerByElementId(element_id); bool element_id_collision_detected = - existing_layer && existing_layer != layer; + elements_in_layer_list_.count(element_id); DCHECK(!element_id_collision_detected); #endif - element_layers_map_[element_id] = layer->id(); + elements_in_layer_list_.insert(element_id); host_impl_->mutator_host()->RegisterElement(element_id, GetElementTypeForAnimation()); } -void LayerTreeImpl::RemoveFromElementMap(LayerImpl* layer) { - if (!layer->element_id()) +void LayerTreeImpl::RemoveFromElementLayerList(ElementId element_id) { + if (!element_id) return; - TRACE_EVENT2(TRACE_DISABLED_BY_DEFAULT("layer-element"), - "LayerTreeImpl::RemoveFromElementMap", "element", - layer->element_id().AsValue().release(), "layer_id", - layer->id()); + TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("layer-element"), + "LayerTreeImpl::RemoveFromElementLayerList", "element", + element_id.AsValue().release()); - host_impl_->mutator_host()->UnregisterElement(layer->element_id(), + host_impl_->mutator_host()->UnregisterElement(element_id, GetElementTypeForAnimation()); - element_layers_map_.erase(layer->element_id()); + elements_in_layer_list_.erase(element_id); } void LayerTreeImpl::SetTransformMutated(ElementId element_id, diff --git a/cc/trees/layer_tree_impl.h b/cc/trees/layer_tree_impl.h index 252138929a9cf4..739a35a7ff51c2 100644 --- a/cc/trees/layer_tree_impl.h +++ b/cc/trees/layer_tree_impl.h @@ -381,11 +381,9 @@ class CC_EXPORT LayerTreeImpl { LayerImpl* LayerById(int id) const; - // TODO(jaydasika): this is deprecated. It is used by - // scrolling animation to look up layers to mutate. - LayerImpl* LayerByElementId(ElementId element_id) const; - void AddToElementMap(LayerImpl* layer); - void RemoveFromElementMap(LayerImpl* layer); + bool IsElementInLayerList(ElementId element_id) const; + void AddToElementLayerList(ElementId element_id); + void RemoveFromElementLayerList(ElementId element_id); void SetSurfaceLayerIds( const base::flat_set& surface_layer_ids); @@ -622,7 +620,8 @@ class CC_EXPORT LayerTreeImpl { // Set of layers that need to push properties. std::unordered_set layers_that_should_push_properties_; - std::unordered_map element_layers_map_; + // Set of ElementIds which are present in the |layer_list_|. + std::unordered_set elements_in_layer_list_; std::unordered_map element_id_to_opacity_animations_;