Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(506)

Side by Side Diff: content/browser/frame_host/render_frame_host_manager.cc

Issue 799593004: Don't crash while detaching a pending child frame under --site-per-process. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Self-review fixes Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/frame_host/render_frame_host_manager.h" 5 #include "content/browser/frame_host/render_frame_host_manager.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 cross_navigation_pending_(false), 59 cross_navigation_pending_(false),
60 render_frame_delegate_(render_frame_delegate), 60 render_frame_delegate_(render_frame_delegate),
61 render_view_delegate_(render_view_delegate), 61 render_view_delegate_(render_view_delegate),
62 render_widget_delegate_(render_widget_delegate), 62 render_widget_delegate_(render_widget_delegate),
63 interstitial_page_(NULL), 63 interstitial_page_(NULL),
64 weak_factory_(this) { 64 weak_factory_(this) {
65 DCHECK(frame_tree_node_); 65 DCHECK(frame_tree_node_);
66 } 66 }
67 67
68 RenderFrameHostManager::~RenderFrameHostManager() { 68 RenderFrameHostManager::~RenderFrameHostManager() {
69 if (pending_render_frame_host_) 69 if (pending_render_frame_host_) {
70 CancelPending(); 70 pending_render_frame_host_->GetProcess()->RemovePendingView();
nasko 2014/12/11 23:49:53 Don't we need the RenderViewDevToolsAgentHost::OnC
ncarter (slow) 2014/12/12 20:21:06 I thought about this. OnCancelPendingNavigation wo
ncarter (slow) 2014/12/12 20:22:41 Whoops -- I published the wrong comment. Meant to
71 pending_render_frame_host_.reset();
nasko 2014/12/11 23:49:54 Does this need to be explicitly reset? If yes, it
ncarter (slow) 2014/12/12 20:21:06 I just wanted to preserve the existing relative de
72 }
71 73
72 // We should always have a current RenderFrameHost except in some tests. 74 // We should always have a current RenderFrameHost except in some tests.
73 SetRenderFrameHost(scoped_ptr<RenderFrameHostImpl>()); 75 SetRenderFrameHost(scoped_ptr<RenderFrameHostImpl>());
74 76
75 // Delete any swapped out RenderFrameHosts. 77 // Delete any swapped out RenderFrameHosts.
76 STLDeleteValues(&proxy_hosts_); 78 STLDeleteValues(&proxy_hosts_);
77 } 79 }
78 80
79 void RenderFrameHostManager::Init(BrowserContext* browser_context, 81 void RenderFrameHostManager::Init(BrowserContext* browser_context,
80 SiteInstance* site_instance, 82 SiteInstance* site_instance,
(...skipping 1593 matching lines...) Expand 10 before | Expand all | Expand 10 after
1674 void RenderFrameHostManager::DeleteRenderFrameProxyHost( 1676 void RenderFrameHostManager::DeleteRenderFrameProxyHost(
1675 SiteInstance* instance) { 1677 SiteInstance* instance) {
1676 RenderFrameProxyHostMap::iterator iter = proxy_hosts_.find(instance->GetId()); 1678 RenderFrameProxyHostMap::iterator iter = proxy_hosts_.find(instance->GetId());
1677 if (iter != proxy_hosts_.end()) { 1679 if (iter != proxy_hosts_.end()) {
1678 delete iter->second; 1680 delete iter->second;
1679 proxy_hosts_.erase(iter); 1681 proxy_hosts_.erase(iter);
1680 } 1682 }
1681 } 1683 }
1682 1684
1683 } // namespace content 1685 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698