Chromium Code Reviews| 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; |
| + } |
| } |
| } |