| Index: content/browser/renderer_host/render_widget_host_impl.cc
|
| diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
|
| index c02b51aeef383a7dec78d64262fea8961339d576..4a4945d3f1eb4e021bada1f78c1b4d6fff66b563 100644
|
| --- a/content/browser/renderer_host/render_widget_host_impl.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_impl.cc
|
| @@ -184,6 +184,7 @@ RenderWidgetHostImpl::RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate,
|
| allow_privileged_mouse_lock_(false),
|
| has_touch_handler_(false),
|
| next_browser_snapshot_id_(1),
|
| + owned_by_render_frame_host_(false),
|
| weak_factory_(this) {
|
| CHECK(delegate_);
|
| if (routing_id_ == MSG_ROUTING_NONE) {
|
| @@ -414,6 +415,12 @@ void RenderWidgetHostImpl::Init() {
|
| WasResized();
|
| }
|
|
|
| +void RenderWidgetHostImpl::InitForFrame() {
|
| + DCHECK(process_->HasConnection());
|
| + owned_by_render_frame_host_ = true;
|
| + renderer_initialized_ = true;
|
| +}
|
| +
|
| void RenderWidgetHostImpl::Shutdown() {
|
| RejectMouseLockOrUnlockIfNecessary();
|
|
|
| @@ -1331,7 +1338,10 @@ void RenderWidgetHostImpl::Destroy() {
|
| if (view_)
|
| view_->Destroy();
|
|
|
| - delete this;
|
| + // RenderFrameHost owns a RenderWidgetHost when it needs one, in which case
|
| + // it handles destruction.
|
| + if (!owned_by_render_frame_host_)
|
| + delete this;
|
| }
|
|
|
| void RenderWidgetHostImpl::RendererIsUnresponsive() {
|
|
|