Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |