| 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) {
|
|
|