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

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

Issue 950223006: Fix RenderFrameHostChanged WebContentsObserver methods (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove leftover log and empty lines Created 5 years, 9 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/logging.h" 10 #include "base/logging.h"
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 // Create a RenderViewHost and RenderFrameHost, once we have an instance. It 102 // Create a RenderViewHost and RenderFrameHost, once we have an instance. It
103 // is important to immediately give this SiteInstance to a RenderViewHost so 103 // is important to immediately give this SiteInstance to a RenderViewHost so
104 // that the SiteInstance is ref counted. 104 // that the SiteInstance is ref counted.
105 if (!site_instance) 105 if (!site_instance)
106 site_instance = SiteInstance::Create(browser_context); 106 site_instance = SiteInstance::Create(browser_context);
107 107
108 int flags = delegate_->IsHidden() ? CREATE_RF_HIDDEN : 0; 108 int flags = delegate_->IsHidden() ? CREATE_RF_HIDDEN : 0;
109 SetRenderFrameHost(CreateRenderFrameHost(site_instance, view_routing_id, 109 SetRenderFrameHost(CreateRenderFrameHost(site_instance, view_routing_id,
110 frame_routing_id, flags)); 110 frame_routing_id, flags));
111 111
112 // Notify the delegate of the creation of the current RenderFrameHost.
113 // Note: do it only for subframes, as the main frame case is taken care of
Charlie Reis 2015/03/02 18:38:25 "Note: do it" -> "Do this"
nasko 2015/03/02 19:30:53 Done.
114 // by WebContentsImpl::Init.
115 if (!frame_tree_node_->IsMainFrame()) {
116 delegate_->NotifySwappedFromRenderManager(
117 nullptr, render_frame_host_.get(), false);
118 }
119
112 // Keep track of renderer processes as they start to shut down or are 120 // Keep track of renderer processes as they start to shut down or are
113 // crashed/killed. 121 // crashed/killed.
114 registrar_.Add(this, NOTIFICATION_RENDERER_PROCESS_CLOSED, 122 registrar_.Add(this, NOTIFICATION_RENDERER_PROCESS_CLOSED,
115 NotificationService::AllSources()); 123 NotificationService::AllSources());
116 registrar_.Add(this, NOTIFICATION_RENDERER_PROCESS_CLOSING, 124 registrar_.Add(this, NOTIFICATION_RENDERER_PROCESS_CLOSING,
117 NotificationService::AllSources()); 125 NotificationService::AllSources());
118 } 126 }
119 127
120 RenderViewHostImpl* RenderFrameHostManager::current_host() const { 128 RenderViewHostImpl* RenderFrameHostManager::current_host() const {
121 if (!render_frame_host_) 129 if (!render_frame_host_)
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 dest_render_frame_host->GetSiteInstance()); 225 dest_render_frame_host->GetSiteInstance());
218 if (!InitRenderView(dest_render_frame_host->render_view_host(), 226 if (!InitRenderView(dest_render_frame_host->render_view_host(),
219 opener_route_id, 227 opener_route_id,
220 MSG_ROUTING_NONE, 228 MSG_ROUTING_NONE,
221 frame_tree_node_->IsMainFrame())) 229 frame_tree_node_->IsMainFrame()))
222 return NULL; 230 return NULL;
223 231
224 // Now that we've created a new renderer, be sure to hide it if it isn't 232 // Now that we've created a new renderer, be sure to hide it if it isn't
225 // our primary one. Otherwise, we might crash if we try to call Show() 233 // our primary one. Otherwise, we might crash if we try to call Show()
226 // on it later. 234 // on it later.
227 if (dest_render_frame_host != render_frame_host_ && 235 if (dest_render_frame_host != render_frame_host_) {
228 dest_render_frame_host->GetView()) { 236 if (dest_render_frame_host->GetView())
229 dest_render_frame_host->GetView()->Hide(); 237 dest_render_frame_host->GetView()->Hide();
230 } else { 238 } else {
231 // Notify here as we won't be calling CommitPending (which does the 239 // TODO(nasko): This is a very ugly hack. The Chrome extensions process
232 // notify). 240 // manager still uses NotificationService and expects to see a
233 delegate_->NotifySwappedFromRenderManager( 241 // RenderViewHost changed notification after WebContents and
234 NULL, render_frame_host_.get(), frame_tree_node_->IsMainFrame()); 242 // RenderFrameHostManager are completely initialized. This should be
243 // removed once the process manager moves away from NotificationService.
244 // See https://crbug.com/462682
Charlie Reis 2015/03/02 18:38:25 nit: End with period.
nasko 2015/03/02 19:30:54 Done.
245 delegate_->NotifyMainFrameSwappedFromRenderManager(
246 nullptr, render_frame_host_.get());
235 } 247 }
236 } 248 }
237 249
238 // If entry includes the request ID of a request that is being transferred, 250 // If entry includes the request ID of a request that is being transferred,
239 // the destination render frame will take ownership, so release ownership of 251 // the destination render frame will take ownership, so release ownership of
240 // the request. 252 // the request.
241 if (cross_site_transferring_request_.get() && 253 if (cross_site_transferring_request_.get() &&
242 cross_site_transferring_request_->request_id() == 254 cross_site_transferring_request_->request_id() ==
243 entry.transferred_global_request_id()) { 255 entry.transferred_global_request_id()) {
244 cross_site_transferring_request_->ReleaseRequest(); 256 cross_site_transferring_request_->ReleaseRequest();
(...skipping 1705 matching lines...) Expand 10 before | Expand all | Expand 10 after
1950 void RenderFrameHostManager::DeleteRenderFrameProxyHost( 1962 void RenderFrameHostManager::DeleteRenderFrameProxyHost(
1951 SiteInstance* instance) { 1963 SiteInstance* instance) {
1952 RenderFrameProxyHostMap::iterator iter = proxy_hosts_.find(instance->GetId()); 1964 RenderFrameProxyHostMap::iterator iter = proxy_hosts_.find(instance->GetId());
1953 if (iter != proxy_hosts_.end()) { 1965 if (iter != proxy_hosts_.end()) {
1954 delete iter->second; 1966 delete iter->second;
1955 proxy_hosts_.erase(iter); 1967 proxy_hosts_.erase(iter);
1956 } 1968 }
1957 } 1969 }
1958 1970
1959 } // namespace content 1971 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698