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

Unified Diff: content/browser/frame_host/render_frame_host_manager.cc

Issue 345823002: Move ownership of ChildFrameCompositingHelper from frame to proxy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 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 side-by-side diff with in-line comments
Download patch
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..fc36df203e87d788ca13c13daa32b19010f9f31a 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,22 @@ RenderWidgetHostView* RenderFrameHostManager::GetRenderWidgetHostView() const {
return render_frame_host_->render_view_host()->GetView();
}
+RenderFrameProxyHost* RenderFrameHostManager::GetProxyToParent() {
+ if (frame_tree_node_->IsMainFrame())
+ return NULL;
+
+ RenderFrameProxyHostMap::iterator iter =
+ proxy_hosts_.find(frame_tree_node_->parent()
+ ->render_manager()
+ ->current_frame_host()
+ ->GetSiteInstance()
+ ->GetId());
+ if (iter == proxy_hosts_.end())
+ return NULL;
+
+ return iter->second;
+}
+
void RenderFrameHostManager::SetPendingWebUI(const NavigationEntryImpl& entry) {
pending_web_ui_.reset(
delegate_->CreateWebUIForRenderManager(entry.GetURL()));
@@ -496,24 +505,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 +912,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 +936,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 +1170,11 @@ 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 = GetProxyToParent();
+ if (proxy) {
+ proxy->SetChildRWHView(
+ render_frame_host_->render_view_host()->GetView());
+ }
}
}
}

Powered by Google App Engine
This is Rietveld 408576698