Index: chrome/browser/renderer_host/render_widget_host_view_views.cc |
diff --git a/chrome/browser/renderer_host/render_widget_host_view_views.cc b/chrome/browser/renderer_host/render_widget_host_view_views.cc |
index 80804ad5b531c015aeb45955a65dcc86cdb923bc..54c3402b76d08b2311d6e24cce535777554e16b0 100644 |
--- a/chrome/browser/renderer_host/render_widget_host_view_views.cc |
+++ b/chrome/browser/renderer_host/render_widget_host_view_views.cc |
@@ -130,8 +130,9 @@ RenderWidgetHostViewViews::RenderWidgetHostViewViews(RenderWidgetHost* host) |
} |
RenderWidgetHostViewViews::~RenderWidgetHostViewViews() { |
- RenderViewGone(base::TERMINATION_STATUS_NORMAL_TERMINATION, |
- ResultCodes::NORMAL_EXIT); |
+ if (GetRenderWidgetHost()) |
+ RenderViewGone(base::TERMINATION_STATUS_NORMAL_TERMINATION, |
Greg Spencer (Chromium)
2011/01/19 21:59:38
Hmm. I can see what you mean, and in fact this is
|
+ ResultCodes::NORMAL_EXIT); |
} |
void RenderWidgetHostViewViews::InitAsChild() { |
@@ -293,8 +294,12 @@ void RenderWidgetHostViewViews::RenderViewGone(base::TerminationStatus status, |
} |
void RenderWidgetHostViewViews::Destroy() { |
- // TODO(anicolao): deal with any special popup cleanup |
- NOTIMPLEMENTED(); |
+ // host_'s destruction brought us here, null it out so we don't use it |
+ host_ = NULL; |
+ |
+ if (GetParent()) |
+ GetParent()->RemoveChildView(this); |
+ MessageLoop::current()->DeleteSoon(FROM_HERE, this); |
} |
void RenderWidgetHostViewViews::SetTooltipText(const std::wstring& tip) { |