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

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

Issue 616133002: Make RenderFrame(Host) own a RenderWidget(Host). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: git cl format, changed WebWidget creation 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 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 106
107 RenderViewHostImpl* RenderFrameHostManager::pending_render_view_host() const { 107 RenderViewHostImpl* RenderFrameHostManager::pending_render_view_host() const {
108 if (!pending_render_frame_host_) 108 if (!pending_render_frame_host_)
109 return NULL; 109 return NULL;
110 return pending_render_frame_host_->render_view_host(); 110 return pending_render_frame_host_->render_view_host();
111 } 111 }
112 112
113 RenderWidgetHostView* RenderFrameHostManager::GetRenderWidgetHostView() const { 113 RenderWidgetHostView* RenderFrameHostManager::GetRenderWidgetHostView() const {
114 if (interstitial_page_) 114 if (interstitial_page_)
115 return interstitial_page_->GetView(); 115 return interstitial_page_->GetView();
116 if (!render_frame_host_) 116 if (!render_frame_host_ ||
117 !render_frame_host_->render_view_host()->GetMainFrame())
117 return NULL; 118 return NULL;
118 return render_frame_host_->render_view_host()->GetView(); 119 return static_cast<RenderFrameHostImpl*>(
120 render_frame_host_->render_view_host()->GetMainFrame())->GetView();
nasko 2014/12/17 22:51:30 Why return the view of the main frame? Shouldn't t
kenrb 2015/01/05 21:15:30 Not sure why I did it that way, but your comment s
119 } 121 }
120 122
121 RenderFrameProxyHost* RenderFrameHostManager::GetProxyToParent() { 123 RenderFrameProxyHost* RenderFrameHostManager::GetProxyToParent() {
122 if (frame_tree_node_->IsMainFrame()) 124 if (frame_tree_node_->IsMainFrame())
123 return NULL; 125 return NULL;
124 126
125 RenderFrameProxyHostMap::iterator iter = 127 RenderFrameProxyHostMap::iterator iter =
126 proxy_hosts_.find(frame_tree_node_->parent() 128 proxy_hosts_.find(frame_tree_node_->parent()
127 ->render_manager() 129 ->render_manager()
128 ->current_frame_host() 130 ->current_frame_host()
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 if (!InitRenderView(dest_render_frame_host->render_view_host(), 203 if (!InitRenderView(dest_render_frame_host->render_view_host(),
202 opener_route_id, 204 opener_route_id,
203 MSG_ROUTING_NONE, 205 MSG_ROUTING_NONE,
204 frame_tree_node_->IsMainFrame())) 206 frame_tree_node_->IsMainFrame()))
205 return NULL; 207 return NULL;
206 208
207 // Now that we've created a new renderer, be sure to hide it if it isn't 209 // Now that we've created a new renderer, be sure to hide it if it isn't
208 // our primary one. Otherwise, we might crash if we try to call Show() 210 // our primary one. Otherwise, we might crash if we try to call Show()
209 // on it later. 211 // on it later.
210 if (dest_render_frame_host != render_frame_host_ && 212 if (dest_render_frame_host != render_frame_host_ &&
211 dest_render_frame_host->render_view_host()->GetView()) { 213 dest_render_frame_host->GetView()) {
212 dest_render_frame_host->render_view_host()->GetView()->Hide(); 214 dest_render_frame_host->GetView()->Hide();
213 } else { 215 } else {
214 // Notify here as we won't be calling CommitPending (which does the 216 // Notify here as we won't be calling CommitPending (which does the
215 // notify). 217 // notify).
216 delegate_->NotifySwappedFromRenderManager( 218 delegate_->NotifySwappedFromRenderManager(
217 NULL, render_frame_host_.get(), frame_tree_node_->IsMainFrame()); 219 NULL, render_frame_host_.get(), frame_tree_node_->IsMainFrame());
218 } 220 }
219 } 221 }
220 222
221 // If entry includes the request ID of a request that is being transferred, 223 // If entry includes the request ID of a request that is being transferred,
222 // the destination render frame will take ownership, so release ownership of 224 // the destination render frame will take ownership, so release ownership of
(...skipping 802 matching lines...) Expand 10 before | Expand all | Expand 10 after
1025 SiteInstance* old_instance, 1027 SiteInstance* old_instance,
1026 SiteInstance* new_instance, 1028 SiteInstance* new_instance,
1027 bool is_main_frame) { 1029 bool is_main_frame) {
1028 int create_render_frame_flags = 0; 1030 int create_render_frame_flags = 0;
1029 if (is_main_frame) 1031 if (is_main_frame)
1030 create_render_frame_flags |= CREATE_RF_FOR_MAIN_FRAME_NAVIGATION; 1032 create_render_frame_flags |= CREATE_RF_FOR_MAIN_FRAME_NAVIGATION;
1031 1033
1032 if (delegate_->IsHidden()) 1034 if (delegate_->IsHidden())
1033 create_render_frame_flags |= CREATE_RF_HIDDEN; 1035 create_render_frame_flags |= CREATE_RF_HIDDEN;
1034 1036
1035 int opener_route_id = 1037 int opener_route_id = CreateOpenerRenderViewsIfNeeded(
1036 CreateOpenerRenderViewsIfNeeded(old_instance, new_instance); 1038 old_instance, new_instance, create_render_frame_flags);
1037 1039
1038 if (pending_render_frame_host_) 1040 if (pending_render_frame_host_)
1039 CancelPending(); 1041 CancelPending();
1040 1042
1041 // Create a non-swapped-out RFH with the given opener. 1043 // Create a non-swapped-out RFH with the given opener.
1042 pending_render_frame_host_ = 1044 pending_render_frame_host_ =
1043 CreateRenderFrame(new_instance, pending_web_ui(), opener_route_id, 1045 CreateRenderFrame(new_instance, pending_web_ui(), opener_route_id,
1044 create_render_frame_flags, nullptr); 1046 create_render_frame_flags, nullptr);
1045 } 1047 }
1046 1048
1047 int RenderFrameHostManager::CreateOpenerRenderViewsIfNeeded( 1049 int RenderFrameHostManager::CreateOpenerRenderViewsIfNeeded(
1048 SiteInstance* old_instance, 1050 SiteInstance* old_instance,
1049 SiteInstance* new_instance) { 1051 SiteInstance* new_instance,
1052 int& create_render_frame_flags) {
1050 int opener_route_id = MSG_ROUTING_NONE; 1053 int opener_route_id = MSG_ROUTING_NONE;
1051 if (new_instance->IsRelatedSiteInstance(old_instance)) { 1054 if (new_instance->IsRelatedSiteInstance(old_instance)) {
1052 opener_route_id = 1055 opener_route_id =
1053 delegate_->CreateOpenerRenderViewsForRenderManager(new_instance); 1056 delegate_->CreateOpenerRenderViewsForRenderManager(new_instance);
1054 if (CommandLine::ForCurrentProcess()->HasSwitch( 1057 if (CommandLine::ForCurrentProcess()->HasSwitch(
1055 switches::kSitePerProcess)) { 1058 switches::kSitePerProcess)) {
1056 // Ensure that the frame tree has RenderFrameProxyHosts for the new 1059 // Ensure that the frame tree has RenderFrameProxyHosts for the new
1057 // SiteInstance in all nodes except the current one. 1060 // SiteInstance in all nodes except the current one.
1058 frame_tree_node_->frame_tree()->CreateProxiesForSiteInstance( 1061 frame_tree_node_->frame_tree()->CreateProxiesForSiteInstance(
1059 frame_tree_node_, new_instance); 1062 frame_tree_node_, new_instance);
1063 // RenderFrames in different processes from their parent RenderFrames
1064 // in the frame tree require RenderWidgets for rendering and processing
1065 // input events.
1066 if (frame_tree_node_->parent() &&
1067 frame_tree_node_->parent()
1068 ->render_manager()
1069 ->current_frame_host()
1070 ->GetSiteInstance() != new_instance)
1071 create_render_frame_flags |= CREATE_RF_NEEDS_RENDER_WIDGET_HOST;
1060 } 1072 }
1061 } 1073 }
1062 return opener_route_id; 1074 return opener_route_id;
1063 } 1075 }
1064 1076
1065 scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrameHost( 1077 scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrameHost(
1066 SiteInstance* site_instance, 1078 SiteInstance* site_instance,
1067 int view_routing_id, 1079 int view_routing_id,
1068 int frame_routing_id, 1080 int frame_routing_id,
1069 int flags) { 1081 int flags) {
1070 if (frame_routing_id == MSG_ROUTING_NONE) 1082 if (frame_routing_id == MSG_ROUTING_NONE)
1071 frame_routing_id = site_instance->GetProcess()->GetNextRoutingID(); 1083 frame_routing_id = site_instance->GetProcess()->GetNextRoutingID();
1072 1084
1073 bool swapped_out = !!(flags & CREATE_RF_SWAPPED_OUT); 1085 bool swapped_out = flags & CREATE_RF_SWAPPED_OUT;
nasko 2014/12/17 22:51:30 Why remove it on one line and not the other?
kenrb 2015/01/05 21:15:30 Merge issue, it wasn't supposed to be removed. Fix
1074 bool hidden = !!(flags & CREATE_RF_HIDDEN); 1086 bool hidden = !!(flags & CREATE_RF_HIDDEN);
1075 1087
1076 // Create a RVH for main frames, or find the existing one for subframes. 1088 // Create a RVH for main frames, or find the existing one for subframes.
1077 FrameTree* frame_tree = frame_tree_node_->frame_tree(); 1089 FrameTree* frame_tree = frame_tree_node_->frame_tree();
1078 RenderViewHostImpl* render_view_host = NULL; 1090 RenderViewHostImpl* render_view_host = NULL;
1079 if (frame_tree_node_->IsMainFrame()) { 1091 if (frame_tree_node_->IsMainFrame()) {
1080 render_view_host = frame_tree->CreateRenderViewHost( 1092 render_view_host = frame_tree->CreateRenderViewHost(
1081 site_instance, view_routing_id, frame_routing_id, swapped_out, hidden); 1093 site_instance, view_routing_id, frame_routing_id, swapped_out, hidden);
1082 } else { 1094 } else {
1083 render_view_host = frame_tree->GetRenderViewHost(site_instance); 1095 render_view_host = frame_tree->GetRenderViewHost(site_instance);
1084 1096
1085 CHECK(render_view_host); 1097 CHECK(render_view_host);
1086 } 1098 }
1087 1099
1088 // TODO(creis): Pass hidden to RFH. 1100 // TODO(creis): Pass hidden to RFH.
1089 scoped_ptr<RenderFrameHostImpl> render_frame_host = 1101 scoped_ptr<RenderFrameHostImpl> render_frame_host = make_scoped_ptr(
1090 make_scoped_ptr(RenderFrameHostFactory::Create( 1102 RenderFrameHostFactory::Create(
1091 render_view_host, render_frame_delegate_, frame_tree, 1103 render_view_host, render_frame_delegate_, render_widget_delegate_,
1092 frame_tree_node_, frame_routing_id, flags).release()); 1104 frame_tree, frame_tree_node_, frame_routing_id, flags).release());
1093 return render_frame_host.Pass(); 1105 return render_frame_host.Pass();
1094 } 1106 }
1095 1107
1096 scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrame( 1108 scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrame(
1097 SiteInstance* instance, 1109 SiteInstance* instance,
1098 WebUIImpl* web_ui, 1110 WebUIImpl* web_ui,
1099 int opener_route_id, 1111 int opener_route_id,
1100 int flags, 1112 int flags,
1101 int* view_routing_id_ptr) { 1113 int* view_routing_id_ptr) {
1102 bool swapped_out = !!(flags & CREATE_RF_SWAPPED_OUT); 1114 bool swapped_out = !!(flags & CREATE_RF_SWAPPED_OUT);
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1169 if (frame_tree_node_->IsMainFrame()) 1181 if (frame_tree_node_->IsMainFrame())
1170 proxy->TakeFrameHostOwnership(new_render_frame_host.Pass()); 1182 proxy->TakeFrameHostOwnership(new_render_frame_host.Pass());
1171 } 1183 }
1172 1184
1173 success = 1185 success =
1174 InitRenderView(render_view_host, opener_route_id, proxy_routing_id, 1186 InitRenderView(render_view_host, opener_route_id, proxy_routing_id,
1175 !!(flags & CREATE_RF_FOR_MAIN_FRAME_NAVIGATION)); 1187 !!(flags & CREATE_RF_FOR_MAIN_FRAME_NAVIGATION));
1176 if (success) { 1188 if (success) {
1177 if (frame_tree_node_->IsMainFrame()) { 1189 if (frame_tree_node_->IsMainFrame()) {
1178 // Don't show the main frame's view until we get a DidNavigate from it. 1190 // Don't show the main frame's view until we get a DidNavigate from it.
1179 render_view_host->GetView()->Hide(); 1191 // Only top-level RenderViewHosts have RenderWidgetHostViews;
1192 // RenderWidgetHosts for out-of-process iframes will be created
1193 // later and hidden.
1194 if (render_view_host->GetView())
1195 render_view_host->GetView()->Hide();
1180 } else if (!swapped_out) { 1196 } else if (!swapped_out) {
1181 // Init the RFH, so a RenderFrame is created in the renderer. 1197 // Init the RFH, so a RenderFrame is created in the renderer.
1182 DCHECK(new_render_frame_host.get()); 1198 DCHECK(new_render_frame_host.get());
1183 success = InitRenderFrame(new_render_frame_host.get()); 1199 success = InitRenderFrame(new_render_frame_host.get());
1184 } 1200 }
1185 if (success) { 1201 if (success) {
1186 if (view_routing_id_ptr) 1202 if (view_routing_id_ptr)
1187 *view_routing_id_ptr = render_view_host->GetRoutingID(); 1203 *view_routing_id_ptr = render_view_host->GetRoutingID();
1188 // If a brand new RFH was created, announce it to observers. 1204 // If a brand new RFH was created, announce it to observers.
1189 if (new_render_frame_host) { 1205 if (new_render_frame_host) {
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
1317 // committing above and we're done. 1333 // committing above and we're done.
1318 if (!pending_render_frame_host_) { 1334 if (!pending_render_frame_host_) {
1319 if (will_focus_location_bar) 1335 if (will_focus_location_bar)
1320 delegate_->SetFocusToLocationBar(false); 1336 delegate_->SetFocusToLocationBar(false);
1321 return; 1337 return;
1322 } 1338 }
1323 1339
1324 // Remember if the page was focused so we can focus the new renderer in 1340 // Remember if the page was focused so we can focus the new renderer in
1325 // that case. 1341 // that case.
1326 bool focus_render_view = !will_focus_location_bar && 1342 bool focus_render_view = !will_focus_location_bar &&
1327 render_frame_host_->render_view_host()->GetView() && 1343 render_frame_host_->GetView() &&
1328 render_frame_host_->render_view_host()->GetView()->HasFocus(); 1344 render_frame_host_->GetView()->HasFocus();
1329 1345
1330 bool is_main_frame = frame_tree_node_->IsMainFrame(); 1346 bool is_main_frame = frame_tree_node_->IsMainFrame();
1331 1347
1332 // Swap in the pending frame and make it active. Also ensure the FrameTree 1348 // Swap in the pending frame and make it active. Also ensure the FrameTree
1333 // stays in sync. 1349 // stays in sync.
1334 scoped_ptr<RenderFrameHostImpl> old_render_frame_host = 1350 scoped_ptr<RenderFrameHostImpl> old_render_frame_host =
1335 SetRenderFrameHost(pending_render_frame_host_.Pass()); 1351 SetRenderFrameHost(pending_render_frame_host_.Pass());
1336 if (is_main_frame) 1352 if (is_main_frame)
1337 render_frame_host_->render_view_host()->AttachToFrameTree(); 1353 render_frame_host_->render_view_host()->AttachToFrameTree();
1338 1354
1339 // The process will no longer try to exit, so we can decrement the count. 1355 // The process will no longer try to exit, so we can decrement the count.
1340 render_frame_host_->GetProcess()->RemovePendingView(); 1356 render_frame_host_->GetProcess()->RemovePendingView();
1341 1357
1342 // Show the new view (or a sad tab) if necessary. 1358 // Show the new view (or a sad tab) if necessary.
1343 bool new_rfh_has_view = !!render_frame_host_->render_view_host()->GetView(); 1359 bool new_rfh_has_view = !!render_frame_host_->GetView();
1344 if (!delegate_->IsHidden() && new_rfh_has_view) { 1360 if (!delegate_->IsHidden() && new_rfh_has_view) {
1345 // In most cases, we need to show the new view. 1361 // In most cases, we need to show the new view.
1346 render_frame_host_->render_view_host()->GetView()->Show(); 1362 render_frame_host_->GetView()->Show();
1347 } 1363 }
1348 if (!new_rfh_has_view) { 1364 if (!new_rfh_has_view) {
1349 // If the view is gone, then this RenderViewHost died while it was hidden. 1365 // If the view is gone, then this RenderViewHost died while it was hidden.
1350 // We ignored the RenderProcessGone call at the time, so we should send it 1366 // We ignored the RenderProcessGone call at the time, so we should send it
1351 // now to make sure the sad tab shows up, etc. 1367 // now to make sure the sad tab shows up, etc.
1352 DCHECK(!render_frame_host_->IsRenderFrameLive()); 1368 DCHECK(!render_frame_host_->IsRenderFrameLive());
1353 DCHECK(!render_frame_host_->render_view_host()->IsRenderViewLive()); 1369 DCHECK(!render_frame_host_->render_view_host()->IsRenderViewLive());
1354 delegate_->RenderProcessGoneFromRenderManager( 1370 delegate_->RenderProcessGoneFromRenderManager(
1355 render_frame_host_->render_view_host()); 1371 render_frame_host_->render_view_host());
1356 } 1372 }
1357 1373
1358 // For top-level frames, also hide the old RenderViewHost's view. 1374 // For top-level frames, also hide the old RenderViewHost's view.
1359 // TODO(creis): As long as show/hide are on RVH, we don't want to hide on 1375 // TODO(creis): As long as show/hide are on RVH, we don't want to hide on
1360 // subframe navigations or we will interfere with the top-level frame. 1376 // subframe navigations or we will interfere with the top-level frame.
1361 if (is_main_frame && old_render_frame_host->render_view_host()->GetView()) 1377 if (is_main_frame && old_render_frame_host->render_view_host()->GetView())
1362 old_render_frame_host->render_view_host()->GetView()->Hide(); 1378 old_render_frame_host->render_view_host()->GetView()->Hide();
1363 1379
1364 // Make sure the size is up to date. (Fix for bug 1079768.) 1380 // Make sure the size is up to date. (Fix for bug 1079768.)
1365 delegate_->UpdateRenderViewSizeForRenderManager(); 1381 delegate_->UpdateRenderViewSizeForRenderManager();
1366 1382
1367 if (will_focus_location_bar) { 1383 if (will_focus_location_bar) {
1368 delegate_->SetFocusToLocationBar(false); 1384 delegate_->SetFocusToLocationBar(false);
1369 } else if (focus_render_view && 1385 } else if (focus_render_view && render_frame_host_->GetView()) {
1370 render_frame_host_->render_view_host()->GetView()) { 1386 render_frame_host_->GetView()->Focus();
1371 render_frame_host_->render_view_host()->GetView()->Focus();
1372 } 1387 }
1373 1388
1374 // Notify that we've swapped RenderFrameHosts. We do this before shutting down 1389 // Notify that we've swapped RenderFrameHosts. We do this before shutting down
1375 // the RFH so that we can clean up RendererResources related to the RFH first. 1390 // the RFH so that we can clean up RendererResources related to the RFH first.
1376 delegate_->NotifySwappedFromRenderManager( 1391 delegate_->NotifySwappedFromRenderManager(
1377 old_render_frame_host.get(), render_frame_host_.get(), is_main_frame); 1392 old_render_frame_host.get(), render_frame_host_.get(), is_main_frame);
1378 1393
1379 // Swap out the old frame now that the new one is visible. 1394 // Swap out the old frame now that the new one is visible.
1380 // This will swap it out and then put it on the proxy list (if there are other 1395 // This will swap it out and then put it on the proxy list (if there are other
1381 // active views in its SiteInstance) or schedule it for deletion when the swap 1396 // active views in its SiteInstance) or schedule it for deletion when the swap
1382 // out ack arrives (or immediately if the process isn't live). 1397 // out ack arrives (or immediately if the process isn't live).
1383 // In the --site-per-process case, old subframe RHFs are not kept alive inside 1398 // In the --site-per-process case, old subframe RHFs are not kept alive inside
1384 // the proxy. 1399 // the proxy.
1385 SwapOutOldFrame(old_render_frame_host.Pass()); 1400 SwapOutOldFrame(old_render_frame_host.Pass());
1386 1401
1387 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kSitePerProcess) && 1402 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kSitePerProcess) &&
1388 !is_main_frame) { 1403 !is_main_frame) {
1389 // If this is a subframe, it should have a CrossProcessFrameConnector 1404 // If this is a subframe, it should have a CrossProcessFrameConnector
1390 // created already. Use it to link the new RFH's view to the proxy that 1405 // created already. Use it to link the new RFH's view to the proxy that
1391 // belongs to the parent frame's SiteInstance. 1406 // belongs to the parent frame's SiteInstance.
1392 // Note: We do this after swapping out the old RFH because that may create 1407 // Note: We do this after swapping out the old RFH because that may create
1393 // the proxy we're looking for. 1408 // the proxy we're looking for.
1394 RenderFrameProxyHost* proxy_to_parent = GetProxyToParent(); 1409 RenderFrameProxyHost* proxy_to_parent = GetProxyToParent();
1395 if (proxy_to_parent) { 1410 if (proxy_to_parent) {
1396 proxy_to_parent->SetChildRWHView( 1411 proxy_to_parent->SetChildRWHView(render_frame_host_->GetView());
1397 render_frame_host_->render_view_host()->GetView());
1398 } 1412 }
1399 1413
1400 // Since the new RenderFrameHost is now committed, there must be no proxies 1414 // Since the new RenderFrameHost is now committed, there must be no proxies
1401 // for its SiteInstance. Delete any existing ones. 1415 // for its SiteInstance. Delete any existing ones.
1402 RenderFrameProxyHostMap::iterator iter = 1416 RenderFrameProxyHostMap::iterator iter =
1403 proxy_hosts_.find(render_frame_host_->GetSiteInstance()->GetId()); 1417 proxy_hosts_.find(render_frame_host_->GetSiteInstance()->GetId());
1404 if (iter != proxy_hosts_.end()) { 1418 if (iter != proxy_hosts_.end()) {
1405 delete iter->second; 1419 delete iter->second;
1406 proxy_hosts_.erase(iter); 1420 proxy_hosts_.erase(iter);
1407 } 1421 }
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
1679 void RenderFrameHostManager::DeleteRenderFrameProxyHost( 1693 void RenderFrameHostManager::DeleteRenderFrameProxyHost(
1680 SiteInstance* instance) { 1694 SiteInstance* instance) {
1681 RenderFrameProxyHostMap::iterator iter = proxy_hosts_.find(instance->GetId()); 1695 RenderFrameProxyHostMap::iterator iter = proxy_hosts_.find(instance->GetId());
1682 if (iter != proxy_hosts_.end()) { 1696 if (iter != proxy_hosts_.end()) {
1683 delete iter->second; 1697 delete iter->second;
1684 proxy_hosts_.erase(iter); 1698 proxy_hosts_.erase(iter);
1685 } 1699 }
1686 } 1700 }
1687 1701
1688 } // namespace content 1702 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698