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 bfe0f811010370b8e67ac3a2d0429ed7e8d3f6b9..e633758f1dd925854fa4a93ad66f81f900af8b57 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 |
@@ -125,14 +125,24 @@ void StaticTabSceneLayer::SetContentSceneLayer(JNIEnv* env, |
jobject jobj, |
jobject jcontent_scene_layer) { |
SceneLayer* content_scene_layer = FromJavaObject(env, jcontent_scene_layer); |
- if (content_scene_layer && content_scene_layer->layer()) { |
- content_scene_layer_ = content_scene_layer->layer(); |
- if (content_scene_layer_.get()) |
- layer_->AddChild(content_scene_layer_); |
- } else if (content_scene_layer_) { |
+ scoped_refptr<cc::Layer> layer = content_scene_layer ? |
+ content_scene_layer->layer() : nullptr; |
+ |
+ if (content_scene_layer_ && content_scene_layer_ != layer) { |
content_scene_layer_->RemoveFromParent(); |
content_scene_layer_ = nullptr; |
} |
+ |
+ // TODO(pedrosimonetti): Consider being smarter with regards to when to |
+ // add the layer to the hierarchy. For now, we need to keep adding the |
+ // content_scene_layer on every frame because the content_layer is also |
+ // added on every frame. This means that if we only add it once, the |
+ // content_layer will be added again on the next frame and will |
+ // occlude the content_scene_layer. |
+ if (layer) { |
+ content_scene_layer_ = layer; |
+ layer_->AddChild(layer); |
+ } |
} |
static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& jobj) { |