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 |