Chromium Code Reviews| Index: content/browser/android/content_view_render_view.cc |
| diff --git a/content/browser/android/content_view_render_view.cc b/content/browser/android/content_view_render_view.cc |
| index 4faa4df97aaaabe29e9f145a98c4bb58a3538924..5ba2bd06f9dd7179281fda457bb466e9ab722950 100644 |
| --- a/content/browser/android/content_view_render_view.cc |
| +++ b/content/browser/android/content_view_render_view.cc |
| @@ -53,12 +53,32 @@ void ContentViewRenderView::SetCurrentContentView( |
| InitCompositor(); |
| ContentViewCoreImpl* content_view = |
| reinterpret_cast<ContentViewCoreImpl*>(native_content_view); |
| - if (content_view) |
| + if (content_view) { |
| compositor_->SetRootLayer(content_view->GetLayer()); |
| - else |
| + RenderWidgetHostViewAndroid* rwhva = |
| + content_view->GetRenderWidgetHostViewAndroid(); |
| + if (rwhva) { |
|
no sievers
2013/10/10 17:48:03
This is the sort of logic I was afraid of :)
And
powei
2013/10/16 22:42:35
Done. Good point. Please take a look at the new
|
| + compositor_->AddObserver(rwhva); |
| + } |
| + } else |
| compositor_->SetRootLayer(cc::Layer::Create()); |
| } |
| +void ContentViewRenderView::RemovePreviousContentView(JNIEnv* env, |
| + jobject obj, |
| + int native_content_view) { |
| + DCHECK(compositor_); |
| + ContentViewCoreImpl* content_view = |
| + reinterpret_cast<ContentViewCoreImpl*>(native_content_view); |
| + if (content_view) { |
| + RenderWidgetHostViewAndroid* rwhva = |
| + content_view->GetRenderWidgetHostViewAndroid(); |
| + if (rwhva) { |
| + compositor_->RemoveObserver(rwhva); |
| + } |
| + } |
| +} |
| + |
| void ContentViewRenderView::SurfaceCreated( |
| JNIEnv* env, jobject obj, jobject jsurface) { |
| InitCompositor(); |