Index: content/browser/frame_host/render_frame_host_impl.cc |
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc |
index a5ff5cdcd4a29898e5344cda5b1777c0d969d2ed..e40e72c8193e623326beafdda7975c9f24c46086 100644 |
--- a/content/browser/frame_host/render_frame_host_impl.cc |
+++ b/content/browser/frame_host/render_frame_host_impl.cc |
@@ -15,6 +15,7 @@ |
#include "content/browser/frame_host/frame_tree_node.h" |
#include "content/browser/frame_host/navigator.h" |
#include "content/browser/frame_host/render_frame_host_delegate.h" |
+#include "content/browser/frame_host/render_frame_proxy_host.h" |
#include "content/browser/renderer_host/input/input_router.h" |
#include "content/browser/renderer_host/input/timeout_monitor.h" |
#include "content/browser/renderer_host/render_view_host_impl.h" |
@@ -244,6 +245,11 @@ bool RenderFrameHostImpl::Send(IPC::Message* message) { |
make_scoped_ptr(message)); |
} |
+ if (render_view_host_->IsSwappedOut()) { |
+ DCHECK(render_frame_proxy_); |
+ return render_frame_proxy_->Send(message); |
+ } |
+ |
return GetProcess()->Send(message); |
} |
@@ -508,7 +514,7 @@ void RenderFrameHostImpl::OnCrossSiteResponse( |
should_replace_current_entry); |
} |
-void RenderFrameHostImpl::SwapOut() { |
+void RenderFrameHostImpl::SwapOut(RenderFrameProxyHost* proxy) { |
// TODO(creis): Move swapped out state to RFH. Until then, only update it |
// when swapping out the main frame. |
if (!GetParent()) { |
@@ -524,8 +530,10 @@ void RenderFrameHostImpl::SwapOut() { |
RenderViewHostImpl::kUnloadTimeoutMS)); |
} |
+ set_render_frame_proxy(proxy); |
+ |
if (render_view_host_->IsRenderViewLive()) |
- Send(new FrameMsg_SwapOut(routing_id_)); |
+ Send(new FrameMsg_SwapOut(routing_id_, proxy->GetRoutingID())); |
if (!GetParent()) |
delegate_->SwappedOut(this); |