Chromium Code Reviews| Index: components/guest_view/renderer/guest_view_container.cc |
| diff --git a/components/guest_view/renderer/guest_view_container.cc b/components/guest_view/renderer/guest_view_container.cc |
| index 1c13456b5d543b22120e10fc69812c9bc2898967..a7321134fc50c0916641da403d62dd47d271f1eb 100644 |
| --- a/components/guest_view/renderer/guest_view_container.cc |
| +++ b/components/guest_view/renderer/guest_view_container.cc |
| @@ -49,7 +49,8 @@ void GuestViewContainer::RenderFrameLifetimeObserver::OnDestruct() { |
| GuestViewContainer::GuestViewContainer(content::RenderFrame* render_frame) |
| : element_instance_id_(guest_view::kInstanceIDNone), |
| render_frame_(render_frame), |
| - ready_(false) { |
| + ready_(false), |
| + in_destruction_(false) { |
| render_frame_lifetime_observer_.reset( |
| new RenderFrameLifetimeObserver(this, render_frame_)); |
| } |
| @@ -77,6 +78,16 @@ GuestViewContainer* GuestViewContainer::FromID(int element_instance_id) { |
| return it == guest_view_containers->end() ? nullptr : it->second; |
| } |
| +void GuestViewContainer::Destroy() { |
| + if (in_destruction_) |
| + return; |
| + |
| + in_destruction_ = true; |
| + OnDestroy(); |
|
Fady Samuel
2015/06/05 18:52:33
Add a comment here that this gives the derived cla
lazyboy
2015/06/05 21:24:01
Done.
|
| + |
| + delete this; |
| +} |
| + |
| void GuestViewContainer::RenderFrameDestroyed() { |
| OnRenderFrameDestroyed(); |
| render_frame_ = nullptr; |
|
Fady Samuel
2015/06/05 18:52:32
Call Destroy() here too?
lazyboy
2015/06/05 21:24:01
Done.
|
| @@ -146,4 +157,8 @@ void GuestViewContainer::SetElementInstanceID(int element_instance_id) { |
| std::make_pair(element_instance_id, this)); |
| } |
| +void GuestViewContainer::WillDestroy() { |
|
Fady Samuel
2015/06/05 18:52:33
Call this maybe ElementDestroyed
lazyboy
2015/06/05 21:24:01
Done.
|
| + OnDestroy(); |
|
Fady Samuel
2015/06/05 18:52:32
Destroy()?
lazyboy
2015/06/05 21:24:01
Done.
|
| +} |
| + |
| } // namespace guest_view |