Index: chrome/browser/android/compositor/scene_layer/static_tab_scene_layer.cc |
diff --git a/chrome/browser/android/compositor/scene_layer/static_tab_scene_layer.cc b/chrome/browser/android/compositor/scene_layer/static_tab_scene_layer.cc |
index 26d7e8a22b82cfbc55b6ee71f2a5485ea7e1cf6e..a6e3995fe57c3dd05837f292210dc02836bbeae4 100644 |
--- a/chrome/browser/android/compositor/scene_layer/static_tab_scene_layer.cc |
+++ b/chrome/browser/android/compositor/scene_layer/static_tab_scene_layer.cc |
@@ -127,13 +127,20 @@ void StaticTabSceneLayer::SetContentSceneLayer( |
const JavaParamRef<jobject>& jobj, |
const JavaParamRef<jobject>& jcontent_scene_layer) { |
SceneLayer* content_scene_layer = FromJavaObject(env, jcontent_scene_layer); |
+ // If |content_scene_layer| is null, or different from the previously added |
David Trainor- moved to gerrit
2015/12/02 16:34:13
Would this be easier if we just pulled out the act
pedro (no code reviews)
2015/12/02 23:56:14
As we've discussed offline, the problem is that th
|
+ // layer (which means a new scene layer will replace the old one), then |
+ // the layer should be removed from the hierarchy. |
+ if (content_scene_layer_ && (!content_scene_layer || (content_scene_layer && |
+ content_scene_layer->layer().get() != content_scene_layer_.get()))) { |
+ content_scene_layer_->RemoveFromParent(); |
+ content_scene_layer_ = nullptr; |
+ } |
+ |
if (content_scene_layer && content_scene_layer->layer()) { |
content_scene_layer_ = content_scene_layer->layer(); |
- if (content_scene_layer_.get()) |
+ if (content_scene_layer_.get()) { |
layer_->AddChild(content_scene_layer_); |
- } else if (content_scene_layer_) { |
- content_scene_layer_->RemoveFromParent(); |
- content_scene_layer_ = nullptr; |
+ } |
} |
} |