Index: cc/layers/layer.cc |
diff --git a/cc/layers/layer.cc b/cc/layers/layer.cc |
index c0687de426dc8d62aca496b0d7cf3a3ff5aeb4d3..c13813481dded163550bb075ed748daa239ac0f5 100644 |
--- a/cc/layers/layer.cc |
+++ b/cc/layers/layer.cc |
@@ -121,10 +121,14 @@ void Layer::SetLayerTreeHost(LayerTreeHost* host) { |
if (layer_tree_host_) { |
layer_tree_host_->property_trees()->needs_rebuild = true; |
layer_tree_host_->UnregisterLayer(this); |
+ if (element_id()) |
+ layer_tree_host_->UnregisterLayerForElementId(this); |
} |
if (host) { |
host->property_trees()->needs_rebuild = true; |
host->RegisterLayer(this); |
+ if (element_id()) |
+ host->RegisterLayerForElementId(this); |
} |
layer_tree_host_ = host; |
@@ -839,7 +843,15 @@ void Layer::SetScrollClipLayerId(int clip_layer_id) { |
DCHECK(IsPropertyChangeAllowed()); |
if (scroll_clip_layer_id_ == clip_layer_id) |
return; |
+ |
+ if (layer_tree_host_ && element_id()) |
+ layer_tree_host_->UnregisterLayerForElementId(this); |
+ |
scroll_clip_layer_id_ = clip_layer_id; |
+ |
+ if (layer_tree_host_ && element_id()) |
+ layer_tree_host_->RegisterLayerForElementId(this); |
+ |
SetNeedsCommit(); |
} |
@@ -1723,7 +1735,14 @@ void Layer::SetElementId(ElementId id) { |
return; |
TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("compositor-worker"), |
"Layer::SetElementId", "id", id); |
+ if (layer_tree_host_ && element_id()) |
+ layer_tree_host_->UnregisterLayerForElementId(this); |
+ |
element_id_ = id; |
+ |
+ if (layer_tree_host_ && element_id()) |
+ layer_tree_host_->RegisterLayerForElementId(this); |
+ |
SetNeedsCommit(); |
} |