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

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: Rebase Created 5 years, 11 months 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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 112
113 RenderViewHostImpl* RenderFrameHostManager::pending_render_view_host() const { 113 RenderViewHostImpl* RenderFrameHostManager::pending_render_view_host() const {
114 if (!pending_render_frame_host_) 114 if (!pending_render_frame_host_)
115 return NULL; 115 return NULL;
116 return pending_render_frame_host_->render_view_host(); 116 return pending_render_frame_host_->render_view_host();
117 } 117 }
118 118
119 RenderWidgetHostView* RenderFrameHostManager::GetRenderWidgetHostView() const { 119 RenderWidgetHostView* RenderFrameHostManager::GetRenderWidgetHostView() const {
120 if (interstitial_page_) 120 if (interstitial_page_)
121 return interstitial_page_->GetView(); 121 return interstitial_page_->GetView();
122 if (!render_frame_host_) 122 if (!render_frame_host_ ||
123 !render_frame_host_->GetView())
Charlie Reis 2015/01/07 23:58:41 This line looks unnecessary. If render_frame_host
kenrb 2015/01/14 18:13:56 Done.
123 return NULL; 124 return NULL;
124 return render_frame_host_->render_view_host()->GetView(); 125 return render_frame_host_->GetView();
125 } 126 }
126 127
127 RenderFrameProxyHost* RenderFrameHostManager::GetProxyToParent() { 128 RenderFrameProxyHost* RenderFrameHostManager::GetProxyToParent() {
128 if (frame_tree_node_->IsMainFrame()) 129 if (frame_tree_node_->IsMainFrame())
129 return NULL; 130 return NULL;
130 131
131 RenderFrameProxyHostMap::iterator iter = 132 RenderFrameProxyHostMap::iterator iter =
132 proxy_hosts_.find(frame_tree_node_->parent() 133 proxy_hosts_.find(frame_tree_node_->parent()
133 ->render_manager() 134 ->render_manager()
134 ->current_frame_host() 135 ->current_frame_host()
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 if (!InitRenderView(dest_render_frame_host->render_view_host(), 206 if (!InitRenderView(dest_render_frame_host->render_view_host(),
206 opener_route_id, 207 opener_route_id,
207 MSG_ROUTING_NONE, 208 MSG_ROUTING_NONE,
208 frame_tree_node_->IsMainFrame())) 209 frame_tree_node_->IsMainFrame()))
209 return NULL; 210 return NULL;
210 211
211 // Now that we've created a new renderer, be sure to hide it if it isn't 212 // Now that we've created a new renderer, be sure to hide it if it isn't
212 // our primary one. Otherwise, we might crash if we try to call Show() 213 // our primary one. Otherwise, we might crash if we try to call Show()
213 // on it later. 214 // on it later.
214 if (dest_render_frame_host != render_frame_host_ && 215 if (dest_render_frame_host != render_frame_host_ &&
215 dest_render_frame_host->render_view_host()->GetView()) { 216 dest_render_frame_host->GetView()) {
216 dest_render_frame_host->render_view_host()->GetView()->Hide(); 217 dest_render_frame_host->GetView()->Hide();
217 } else { 218 } else {
218 // Notify here as we won't be calling CommitPending (which does the 219 // Notify here as we won't be calling CommitPending (which does the
219 // notify). 220 // notify).
220 delegate_->NotifySwappedFromRenderManager( 221 delegate_->NotifySwappedFromRenderManager(
221 NULL, render_frame_host_.get(), frame_tree_node_->IsMainFrame()); 222 NULL, render_frame_host_.get(), frame_tree_node_->IsMainFrame());
222 } 223 }
223 } 224 }
224 225
225 // If entry includes the request ID of a request that is being transferred, 226 // If entry includes the request ID of a request that is being transferred,
226 // the destination render frame will take ownership, so release ownership of 227 // the destination render frame will take ownership, so release ownership of
(...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after
1044 SiteInstance* old_instance, 1045 SiteInstance* old_instance,
1045 SiteInstance* new_instance, 1046 SiteInstance* new_instance,
1046 bool is_main_frame) { 1047 bool is_main_frame) {
1047 int create_render_frame_flags = 0; 1048 int create_render_frame_flags = 0;
1048 if (is_main_frame) 1049 if (is_main_frame)
1049 create_render_frame_flags |= CREATE_RF_FOR_MAIN_FRAME_NAVIGATION; 1050 create_render_frame_flags |= CREATE_RF_FOR_MAIN_FRAME_NAVIGATION;
1050 1051
1051 if (delegate_->IsHidden()) 1052 if (delegate_->IsHidden())
1052 create_render_frame_flags |= CREATE_RF_HIDDEN; 1053 create_render_frame_flags |= CREATE_RF_HIDDEN;
1053 1054
1054 int opener_route_id = 1055 int opener_route_id = CreateOpenerRenderViewsIfNeeded(
1055 CreateOpenerRenderViewsIfNeeded(old_instance, new_instance); 1056 old_instance, new_instance, &create_render_frame_flags);
1056 1057
1057 if (pending_render_frame_host_) 1058 if (pending_render_frame_host_)
1058 CancelPending(); 1059 CancelPending();
1059 1060
1060 // Create a non-swapped-out RFH with the given opener. 1061 // Create a non-swapped-out RFH with the given opener.
1061 pending_render_frame_host_ = 1062 pending_render_frame_host_ =
1062 CreateRenderFrame(new_instance, pending_web_ui(), opener_route_id, 1063 CreateRenderFrame(new_instance, pending_web_ui(), opener_route_id,
1063 create_render_frame_flags, nullptr); 1064 create_render_frame_flags, nullptr);
1064 } 1065 }
1065 1066
1066 int RenderFrameHostManager::CreateOpenerRenderViewsIfNeeded( 1067 int RenderFrameHostManager::CreateOpenerRenderViewsIfNeeded(
1067 SiteInstance* old_instance, 1068 SiteInstance* old_instance,
1068 SiteInstance* new_instance) { 1069 SiteInstance* new_instance,
1070 int* create_render_frame_flags) {
1069 int opener_route_id = MSG_ROUTING_NONE; 1071 int opener_route_id = MSG_ROUTING_NONE;
1070 if (new_instance->IsRelatedSiteInstance(old_instance)) { 1072 if (new_instance->IsRelatedSiteInstance(old_instance)) {
1071 opener_route_id = 1073 opener_route_id =
1072 delegate_->CreateOpenerRenderViewsForRenderManager(new_instance); 1074 delegate_->CreateOpenerRenderViewsForRenderManager(new_instance);
1073 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 1075 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
1074 switches::kSitePerProcess)) { 1076 switches::kSitePerProcess)) {
1075 // Ensure that the frame tree has RenderFrameProxyHosts for the new 1077 // Ensure that the frame tree has RenderFrameProxyHosts for the new
1076 // SiteInstance in all nodes except the current one. 1078 // SiteInstance in all nodes except the current one.
1077 frame_tree_node_->frame_tree()->CreateProxiesForSiteInstance( 1079 frame_tree_node_->frame_tree()->CreateProxiesForSiteInstance(
1078 frame_tree_node_, new_instance); 1080 frame_tree_node_, new_instance);
1081 // RenderFrames in different processes from their parent RenderFrames
1082 // in the frame tree require RenderWidgets for rendering and processing
1083 // input events.
1084 if (frame_tree_node_->parent() &&
1085 frame_tree_node_->parent()
Charlie Reis 2015/01/07 23:58:41 Unfortunate that we can't use RFHI::IsCrossProcess
kenrb 2015/01/14 18:13:56 Done.
1086 ->render_manager()
1087 ->current_frame_host()
1088 ->GetSiteInstance() != new_instance)
1089 *create_render_frame_flags |= CREATE_RF_NEEDS_RENDER_WIDGET_HOST;
1079 } 1090 }
1080 } 1091 }
1081 return opener_route_id; 1092 return opener_route_id;
1082 } 1093 }
1083 1094
1084 scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrameHost( 1095 scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrameHost(
1085 SiteInstance* site_instance, 1096 SiteInstance* site_instance,
1086 int view_routing_id, 1097 int view_routing_id,
1087 int frame_routing_id, 1098 int frame_routing_id,
1088 int flags) { 1099 int flags) {
1089 if (frame_routing_id == MSG_ROUTING_NONE) 1100 if (frame_routing_id == MSG_ROUTING_NONE)
1090 frame_routing_id = site_instance->GetProcess()->GetNextRoutingID(); 1101 frame_routing_id = site_instance->GetProcess()->GetNextRoutingID();
1091 1102
1092 bool swapped_out = !!(flags & CREATE_RF_SWAPPED_OUT); 1103 bool swapped_out = !!(flags & CREATE_RF_SWAPPED_OUT);
1093 bool hidden = !!(flags & CREATE_RF_HIDDEN); 1104 bool hidden = !!(flags & CREATE_RF_HIDDEN);
1094 1105
1095 // Create a RVH for main frames, or find the existing one for subframes. 1106 // Create a RVH for main frames, or find the existing one for subframes.
1096 FrameTree* frame_tree = frame_tree_node_->frame_tree(); 1107 FrameTree* frame_tree = frame_tree_node_->frame_tree();
1097 RenderViewHostImpl* render_view_host = NULL; 1108 RenderViewHostImpl* render_view_host = NULL;
1098 if (frame_tree_node_->IsMainFrame()) { 1109 if (frame_tree_node_->IsMainFrame()) {
1099 render_view_host = frame_tree->CreateRenderViewHost( 1110 render_view_host = frame_tree->CreateRenderViewHost(
1100 site_instance, view_routing_id, frame_routing_id, swapped_out, hidden); 1111 site_instance, view_routing_id, frame_routing_id, swapped_out, hidden);
1101 } else { 1112 } else {
1102 render_view_host = frame_tree->GetRenderViewHost(site_instance); 1113 render_view_host = frame_tree->GetRenderViewHost(site_instance);
1103 1114
1104 CHECK(render_view_host); 1115 CHECK(render_view_host);
1105 } 1116 }
1106 1117
1107 // TODO(creis): Pass hidden to RFH. 1118 // TODO(creis): Pass hidden to RFH.
1108 scoped_ptr<RenderFrameHostImpl> render_frame_host = 1119 scoped_ptr<RenderFrameHostImpl> render_frame_host = make_scoped_ptr(
1109 make_scoped_ptr(RenderFrameHostFactory::Create( 1120 RenderFrameHostFactory::Create(
1110 render_view_host, render_frame_delegate_, frame_tree, 1121 render_view_host, render_frame_delegate_, render_widget_delegate_,
1111 frame_tree_node_, frame_routing_id, flags).release()); 1122 frame_tree, frame_tree_node_, frame_routing_id, flags).release());
1112 return render_frame_host.Pass(); 1123 return render_frame_host.Pass();
1113 } 1124 }
1114 1125
1115 scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrame( 1126 scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::CreateRenderFrame(
1116 SiteInstance* instance, 1127 SiteInstance* instance,
1117 WebUIImpl* web_ui, 1128 WebUIImpl* web_ui,
1118 int opener_route_id, 1129 int opener_route_id,
1119 int flags, 1130 int flags,
1120 int* view_routing_id_ptr) { 1131 int* view_routing_id_ptr) {
1121 bool swapped_out = !!(flags & CREATE_RF_SWAPPED_OUT); 1132 bool swapped_out = !!(flags & CREATE_RF_SWAPPED_OUT);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
1186 proxy_routing_id = proxy->GetRoutingID(); 1197 proxy_routing_id = proxy->GetRoutingID();
1187 proxy->TakeFrameHostOwnership(new_render_frame_host.Pass()); 1198 proxy->TakeFrameHostOwnership(new_render_frame_host.Pass());
1188 } 1199 }
1189 1200
1190 success = 1201 success =
1191 InitRenderView(render_view_host, opener_route_id, proxy_routing_id, 1202 InitRenderView(render_view_host, opener_route_id, proxy_routing_id,
1192 !!(flags & CREATE_RF_FOR_MAIN_FRAME_NAVIGATION)); 1203 !!(flags & CREATE_RF_FOR_MAIN_FRAME_NAVIGATION));
1193 if (success) { 1204 if (success) {
1194 if (frame_tree_node_->IsMainFrame()) { 1205 if (frame_tree_node_->IsMainFrame()) {
1195 // Don't show the main frame's view until we get a DidNavigate from it. 1206 // Don't show the main frame's view until we get a DidNavigate from it.
1196 render_view_host->GetView()->Hide(); 1207 // Only top-level RenderViewHosts have RenderWidgetHostViews;
Charlie Reis 2015/01/07 23:58:41 nit: Only the RenderViewHost for the top-level Ren
kenrb 2015/01/14 18:13:56 Done.
1208 // RenderWidgetHosts for out-of-process iframes will be created
1209 // later and hidden.
1210 if (render_view_host->GetView())
1211 render_view_host->GetView()->Hide();
1197 } else if (!swapped_out) { 1212 } else if (!swapped_out) {
1198 // Init the RFH, so a RenderFrame is created in the renderer. 1213 // Init the RFH, so a RenderFrame is created in the renderer.
1199 DCHECK(new_render_frame_host.get()); 1214 DCHECK(new_render_frame_host.get());
1200 success = InitRenderFrame(new_render_frame_host.get()); 1215 success = InitRenderFrame(new_render_frame_host.get());
1201 } 1216 }
1202 } 1217 }
1203 1218
1204 if (success) { 1219 if (success) {
1205 if (view_routing_id_ptr) 1220 if (view_routing_id_ptr)
1206 *view_routing_id_ptr = render_view_host->GetRoutingID(); 1221 *view_routing_id_ptr = render_view_host->GetRoutingID();
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
1337 // committing above and we're done. 1352 // committing above and we're done.
1338 if (!pending_render_frame_host_) { 1353 if (!pending_render_frame_host_) {
1339 if (will_focus_location_bar) 1354 if (will_focus_location_bar)
1340 delegate_->SetFocusToLocationBar(false); 1355 delegate_->SetFocusToLocationBar(false);
1341 return; 1356 return;
1342 } 1357 }
1343 1358
1344 // Remember if the page was focused so we can focus the new renderer in 1359 // Remember if the page was focused so we can focus the new renderer in
1345 // that case. 1360 // that case.
1346 bool focus_render_view = !will_focus_location_bar && 1361 bool focus_render_view = !will_focus_location_bar &&
1347 render_frame_host_->render_view_host()->GetView() && 1362 render_frame_host_->GetView() &&
1348 render_frame_host_->render_view_host()->GetView()->HasFocus(); 1363 render_frame_host_->GetView()->HasFocus();
1349 1364
1350 bool is_main_frame = frame_tree_node_->IsMainFrame(); 1365 bool is_main_frame = frame_tree_node_->IsMainFrame();
1351 1366
1352 // Swap in the pending frame and make it active. Also ensure the FrameTree 1367 // Swap in the pending frame and make it active. Also ensure the FrameTree
1353 // stays in sync. 1368 // stays in sync.
1354 scoped_ptr<RenderFrameHostImpl> old_render_frame_host = 1369 scoped_ptr<RenderFrameHostImpl> old_render_frame_host =
1355 SetRenderFrameHost(pending_render_frame_host_.Pass()); 1370 SetRenderFrameHost(pending_render_frame_host_.Pass());
1356 if (is_main_frame) 1371 if (is_main_frame)
1357 render_frame_host_->render_view_host()->AttachToFrameTree(); 1372 render_frame_host_->render_view_host()->AttachToFrameTree();
1358 1373
1359 // The process will no longer try to exit, so we can decrement the count. 1374 // The process will no longer try to exit, so we can decrement the count.
1360 render_frame_host_->GetProcess()->RemovePendingView(); 1375 render_frame_host_->GetProcess()->RemovePendingView();
1361 1376
1362 // Show the new view (or a sad tab) if necessary. 1377 // Show the new view (or a sad tab) if necessary.
1363 bool new_rfh_has_view = !!render_frame_host_->render_view_host()->GetView(); 1378 bool new_rfh_has_view = !!render_frame_host_->GetView();
1364 if (!delegate_->IsHidden() && new_rfh_has_view) { 1379 if (!delegate_->IsHidden() && new_rfh_has_view) {
1365 // In most cases, we need to show the new view. 1380 // In most cases, we need to show the new view.
1366 render_frame_host_->render_view_host()->GetView()->Show(); 1381 render_frame_host_->GetView()->Show();
1367 } 1382 }
1368 if (!new_rfh_has_view) { 1383 if (!new_rfh_has_view) {
1369 // If the view is gone, then this RenderViewHost died while it was hidden. 1384 // If the view is gone, then this RenderViewHost died while it was hidden.
1370 // We ignored the RenderProcessGone call at the time, so we should send it 1385 // We ignored the RenderProcessGone call at the time, so we should send it
1371 // now to make sure the sad tab shows up, etc. 1386 // now to make sure the sad tab shows up, etc.
1372 DCHECK(!render_frame_host_->IsRenderFrameLive()); 1387 DCHECK(!render_frame_host_->IsRenderFrameLive());
1373 DCHECK(!render_frame_host_->render_view_host()->IsRenderViewLive()); 1388 DCHECK(!render_frame_host_->render_view_host()->IsRenderViewLive());
1374 delegate_->RenderProcessGoneFromRenderManager( 1389 delegate_->RenderProcessGoneFromRenderManager(
1375 render_frame_host_->render_view_host()); 1390 render_frame_host_->render_view_host());
1376 } 1391 }
1377 1392
1378 // For top-level frames, also hide the old RenderViewHost's view. 1393 // For top-level frames, also hide the old RenderViewHost's view.
1379 // TODO(creis): As long as show/hide are on RVH, we don't want to hide on 1394 // TODO(creis): As long as show/hide are on RVH, we don't want to hide on
1380 // subframe navigations or we will interfere with the top-level frame. 1395 // subframe navigations or we will interfere with the top-level frame.
1381 if (is_main_frame && old_render_frame_host->render_view_host()->GetView()) 1396 if (is_main_frame && old_render_frame_host->render_view_host()->GetView())
1382 old_render_frame_host->render_view_host()->GetView()->Hide(); 1397 old_render_frame_host->render_view_host()->GetView()->Hide();
1383 1398
1384 // Make sure the size is up to date. (Fix for bug 1079768.) 1399 // Make sure the size is up to date. (Fix for bug 1079768.)
1385 delegate_->UpdateRenderViewSizeForRenderManager(); 1400 delegate_->UpdateRenderViewSizeForRenderManager();
1386 1401
1387 if (will_focus_location_bar) { 1402 if (will_focus_location_bar) {
1388 delegate_->SetFocusToLocationBar(false); 1403 delegate_->SetFocusToLocationBar(false);
1389 } else if (focus_render_view && 1404 } else if (focus_render_view && render_frame_host_->GetView()) {
1390 render_frame_host_->render_view_host()->GetView()) { 1405 render_frame_host_->GetView()->Focus();
1391 render_frame_host_->render_view_host()->GetView()->Focus();
1392 } 1406 }
1393 1407
1394 // Notify that we've swapped RenderFrameHosts. We do this before shutting down 1408 // Notify that we've swapped RenderFrameHosts. We do this before shutting down
1395 // the RFH so that we can clean up RendererResources related to the RFH first. 1409 // the RFH so that we can clean up RendererResources related to the RFH first.
1396 delegate_->NotifySwappedFromRenderManager( 1410 delegate_->NotifySwappedFromRenderManager(
1397 old_render_frame_host.get(), render_frame_host_.get(), is_main_frame); 1411 old_render_frame_host.get(), render_frame_host_.get(), is_main_frame);
1398 1412
1399 // Swap out the old frame now that the new one is visible. 1413 // Swap out the old frame now that the new one is visible.
1400 // This will swap it out and then put it on the proxy list (if there are other 1414 // This will swap it out and then put it on the proxy list (if there are other
1401 // active views in its SiteInstance) or schedule it for deletion when the swap 1415 // active views in its SiteInstance) or schedule it for deletion when the swap
1402 // out ack arrives (or immediately if the process isn't live). 1416 // out ack arrives (or immediately if the process isn't live).
1403 // In the --site-per-process case, old subframe RHFs are not kept alive inside 1417 // In the --site-per-process case, old subframe RHFs are not kept alive inside
1404 // the proxy. 1418 // the proxy.
1405 SwapOutOldFrame(old_render_frame_host.Pass()); 1419 SwapOutOldFrame(old_render_frame_host.Pass());
1406 1420
1407 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 1421 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
1408 switches::kSitePerProcess) && 1422 switches::kSitePerProcess) &&
1409 !is_main_frame) { 1423 !is_main_frame) {
1410 // If this is a subframe, it should have a CrossProcessFrameConnector 1424 // If this is a subframe, it should have a CrossProcessFrameConnector
1411 // created already. Use it to link the new RFH's view to the proxy that 1425 // created already. Use it to link the new RFH's view to the proxy that
1412 // belongs to the parent frame's SiteInstance. 1426 // belongs to the parent frame's SiteInstance.
1413 // Note: We do this after swapping out the old RFH because that may create 1427 // Note: We do this after swapping out the old RFH because that may create
1414 // the proxy we're looking for. 1428 // the proxy we're looking for.
1415 RenderFrameProxyHost* proxy_to_parent = GetProxyToParent(); 1429 RenderFrameProxyHost* proxy_to_parent = GetProxyToParent();
1416 if (proxy_to_parent) { 1430 if (proxy_to_parent) {
1417 proxy_to_parent->SetChildRWHView( 1431 proxy_to_parent->SetChildRWHView(render_frame_host_->GetView());
1418 render_frame_host_->render_view_host()->GetView());
1419 } 1432 }
1420 1433
1421 // Since the new RenderFrameHost is now committed, there must be no proxies 1434 // Since the new RenderFrameHost is now committed, there must be no proxies
1422 // for its SiteInstance. Delete any existing ones. 1435 // for its SiteInstance. Delete any existing ones.
1423 RenderFrameProxyHostMap::iterator iter = 1436 RenderFrameProxyHostMap::iterator iter =
1424 proxy_hosts_.find(render_frame_host_->GetSiteInstance()->GetId()); 1437 proxy_hosts_.find(render_frame_host_->GetSiteInstance()->GetId());
1425 if (iter != proxy_hosts_.end()) { 1438 if (iter != proxy_hosts_.end()) {
1426 delete iter->second; 1439 delete iter->second;
1427 proxy_hosts_.erase(iter); 1440 proxy_hosts_.erase(iter);
1428 } 1441 }
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
1707 void RenderFrameHostManager::DeleteRenderFrameProxyHost( 1720 void RenderFrameHostManager::DeleteRenderFrameProxyHost(
1708 SiteInstance* instance) { 1721 SiteInstance* instance) {
1709 RenderFrameProxyHostMap::iterator iter = proxy_hosts_.find(instance->GetId()); 1722 RenderFrameProxyHostMap::iterator iter = proxy_hosts_.find(instance->GetId());
1710 if (iter != proxy_hosts_.end()) { 1723 if (iter != proxy_hosts_.end()) {
1711 delete iter->second; 1724 delete iter->second;
1712 proxy_hosts_.erase(iter); 1725 proxy_hosts_.erase(iter);
1713 } 1726 }
1714 } 1727 }
1715 1728
1716 } // namespace content 1729 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698