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..574870999eae7af492d705f6be77b5696f8f61e5 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,15 @@ GuestViewContainer* GuestViewContainer::FromID(int element_instance_id) { |
return it == guest_view_containers->end() ? nullptr : it->second; |
} |
+void GuestViewContainer::Destroy() { |
+ if (in_destruction_) |
+ return; |
+ |
Fady Samuel
2015/06/05 17:31:12
set in_destruction_ to true here.
lazyboy
2015/06/05 21:24:00
Incorrect patch, sorry about that.
Done.
|
+ OnDestroy(); |
+ |
+ delete this; |
+} |
+ |
void GuestViewContainer::RenderFrameDestroyed() { |
OnRenderFrameDestroyed(); |
render_frame_ = nullptr; |
@@ -146,4 +156,8 @@ void GuestViewContainer::SetElementInstanceID(int element_instance_id) { |
std::make_pair(element_instance_id, this)); |
} |
+void GuestViewContainer::WillDestroy() { |
+ OnDestroy(); |
+} |
+ |
} // namespace guest_view |