Chromium Code Reviews| Index: content/browser/frame_host/render_frame_host_manager.cc |
| diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc |
| index 0c219d17c2a91b7374701dea0798986ece652e96..077432f0941bb5ec35a2775cedd46e7d4f6154f4 100644 |
| --- a/content/browser/frame_host/render_frame_host_manager.cc |
| +++ b/content/browser/frame_host/render_frame_host_manager.cc |
| @@ -12,7 +12,6 @@ |
| #include "base/stl_util.h" |
| #include "content/browser/child_process_security_policy_impl.h" |
| #include "content/browser/devtools/render_view_devtools_agent_host.h" |
| -#include "content/browser/frame_host/cross_process_frame_connector.h" |
| #include "content/browser/frame_host/cross_site_transferring_request.h" |
| #include "content/browser/frame_host/debug_urls.h" |
| #include "content/browser/frame_host/interstitial_page_impl.h" |
| @@ -22,11 +21,9 @@ |
| #include "content/browser/frame_host/render_frame_host_factory.h" |
| #include "content/browser/frame_host/render_frame_host_impl.h" |
| #include "content/browser/frame_host/render_frame_proxy_host.h" |
| -#include "content/browser/frame_host/render_widget_host_view_child_frame.h" |
| #include "content/browser/renderer_host/render_process_host_impl.h" |
| #include "content/browser/renderer_host/render_view_host_factory.h" |
| #include "content/browser/renderer_host/render_view_host_impl.h" |
| -#include "content/browser/renderer_host/render_widget_host_view_base.h" |
| #include "content/browser/site_instance_impl.h" |
| #include "content/browser/webui/web_ui_controller_factory_registry.h" |
| #include "content/browser/webui/web_ui_impl.h" |
| @@ -80,7 +77,6 @@ RenderFrameHostManager::RenderFrameHostManager( |
| render_view_delegate_(render_view_delegate), |
| render_widget_delegate_(render_widget_delegate), |
| interstitial_page_(NULL), |
| - cross_process_frame_connector_(NULL), |
| weak_factory_(this) { |
| DCHECK(frame_tree_node_); |
| } |
| @@ -89,9 +85,6 @@ RenderFrameHostManager::~RenderFrameHostManager() { |
| if (pending_render_frame_host_) |
| CancelPending(); |
| - if (cross_process_frame_connector_) |
| - delete cross_process_frame_connector_; |
| - |
| // We should always have a current RenderFrameHost except in some tests. |
| SetRenderFrameHost(scoped_ptr<RenderFrameHostImpl>()); |
| @@ -143,6 +136,31 @@ RenderWidgetHostView* RenderFrameHostManager::GetRenderWidgetHostView() const { |
| return render_frame_host_->render_view_host()->GetView(); |
| } |
| +RenderFrameProxyHost* RenderFrameHostManager::ProxyToParent() { |
| + if (frame_tree_node_->IsMainFrame()) { |
| + LOG(ERROR) << "RFHM::ProxyToParent[" << this << "]: main frame"; |
| + return NULL; |
| + } |
| + |
| + RenderFrameProxyHostMap::iterator iter = |
| + proxy_hosts_.find( |
| + frame_tree_node_->parent()->render_manager()->current_frame_host() |
| + ->GetSiteInstance()->GetId()); |
| + if (iter == proxy_hosts_.end()) { |
| + LOG(ERROR) << "RFHM::ProxyToParent[" << this << "]:" |
| + << " proxy for " << |
| + frame_tree_node_->parent()->render_manager()->current_frame_host() |
| + ->GetSiteInstance()->GetSiteURL() |
| + << " not found"; |
| + return NULL; |
| + } |
| + |
| + LOG(ERROR) << "RFHM::ProxyToParent[" << this << "]:" |
| + << " proxy:" << iter->second |
| + << ", site:" << iter->second->GetSiteInstance()->GetSiteURL(); |
| + return iter->second; |
| +} |
| + |
| void RenderFrameHostManager::SetPendingWebUI(const NavigationEntryImpl& entry) { |
| pending_web_ui_.reset( |
| delegate_->CreateWebUIForRenderManager(entry.GetURL())); |
| @@ -496,24 +514,6 @@ void RenderFrameHostManager::SwapOutOldPage() { |
| // no longer on the stack when we send the SwapOut message. |
| delegate_->CancelModalDialogsForRenderManager(); |
| - if (!frame_tree_node_->IsMainFrame()) { |
| - // The RenderFrameHost being swapped out becomes the proxy for this |
| - // frame in its parent's process. CrossProcessFrameConnector |
| - // initialization only needs to happen on an initial cross-process |
| - // navigation, when the RenderFrame leaves the same process as its parent. |
| - // The same CrossProcessFrameConnector is used for subsequent cross- |
| - // process navigations, but it will be destroyed if the Frame is |
| - // navigated back to the same site instance as its parent. |
| - // TODO(kenrb): This will change when RenderFrameProxyHost is created. |
| - // TODO(nasko): Move CrossProcessFrameConnector to be owned by |
| - // RenderFrameProxyHost instead of RenderFrameHostManager once proxy |
| - // support lands. |
| - if (!cross_process_frame_connector_) { |
| - cross_process_frame_connector_ = |
| - new CrossProcessFrameConnector(render_frame_host_.get()); |
| - } |
| - } |
| - |
| // Create the RenderFrameProxyHost that will replace the |
| // RenderFrameHost which is swapping out. If one exists, ensure it is deleted |
| // from the map and not leaked. |
| @@ -921,8 +921,6 @@ int RenderFrameHostManager::CreateRenderFrame( |
| // remove it from the list of swapped out hosts if it commits. |
| RenderFrameProxyHost* proxy = GetRenderFrameProxyHost(instance); |
| - FrameTreeNode* parent_node = frame_tree_node_->parent(); |
| - |
| if (proxy) { |
| routing_id = proxy->GetRenderViewHost()->GetRoutingID(); |
| // Delete the existing RenderFrameProxyHost, but reuse the RenderFrameHost. |
| @@ -947,15 +945,6 @@ int RenderFrameHostManager::CreateRenderFrame( |
| rvh->AllowBindings(required_bindings); |
| } |
| } |
| - } else { |
| - // Detect if this is a cross-process child frame that is navigating |
| - // back to the same SiteInstance as its parent. |
| - if (parent_node && cross_process_frame_connector_ && |
| - render_frame_host_->GetSiteInstance() == parent_node-> |
| - render_manager()->current_frame_host()->GetSiteInstance()) { |
| - delete cross_process_frame_connector_; |
| - cross_process_frame_connector_ = NULL; |
| - } |
| } |
| } else { |
| // Create a new RenderFrameHost if we don't find an existing one. |
| @@ -1190,11 +1179,9 @@ void RenderFrameHostManager::CommitPending() { |
| // created already and we just need to link it to the proper view in the |
| // new process. |
| if (!is_main_frame) { |
| - RenderWidgetHostView* rwhv = |
| - render_frame_host_->render_view_host()->GetView(); |
| - RenderWidgetHostViewChildFrame* rwhv_child = |
| - static_cast<RenderWidgetHostViewChildFrame*>(rwhv); |
| - cross_process_frame_connector_->set_view(rwhv_child); |
| + RenderFrameProxyHost* proxy = ProxyToParent(); |
| + if (proxy) |
| + proxy->SetView(render_frame_host_->render_view_host()->GetView()); |
|
kenrb
2014/06/06 16:10:56
Is this the wrong view being set? We are trying to
kenrb
2014/06/06 18:06:02
Ah, never mind. This should be happening in the ch
|
| } |
| } |
| } |