| 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 135bfd6de0b96121bb8ddb321a768e14ee953a27..74ab0274cfb050fc42ac54e4718625e8fb4a569d 100644
|
| --- a/content/browser/frame_host/render_frame_host_impl.cc
|
| +++ b/content/browser/frame_host/render_frame_host_impl.cc
|
| @@ -54,6 +54,9 @@ RenderFrameHostImpl::RenderFrameHostImpl(
|
| frame_tree_node_(frame_tree_node),
|
| routing_id_(routing_id),
|
| is_swapped_out_(is_swapped_out) {
|
| + LOG(INFO) << "NEW RenderFrameHostImpl: process " << GetProcess()->GetID() <<
|
| + ", route " << routing_id_ << ", SID " <<
|
| + render_view_host_->GetSiteInstance()->GetId();
|
| frame_tree_->RegisterRenderFrameHost(this);
|
| GetProcess()->AddRoute(routing_id_, this);
|
| g_routing_id_frame_map.Get().insert(std::make_pair(
|
| @@ -62,6 +65,10 @@ RenderFrameHostImpl::RenderFrameHostImpl(
|
| }
|
|
|
| RenderFrameHostImpl::~RenderFrameHostImpl() {
|
| + LOG(INFO) << "DELETE RenderFrameHostImpl: process " <<
|
| + GetProcess()->GetID() << ", route " << routing_id_ << ", SID " <<
|
| + render_view_host_->GetSiteInstance()->GetId();
|
| +
|
| GetProcess()->RemoveRoute(routing_id_);
|
| g_routing_id_frame_map.Get().erase(
|
| RenderFrameHostID(GetProcess()->GetID(), routing_id_));
|
| @@ -97,6 +104,7 @@ bool RenderFrameHostImpl::OnMessageReceived(const IPC::Message &msg) {
|
| IPC_MESSAGE_HANDLER(FrameHostMsg_Detach, OnDetach)
|
| IPC_MESSAGE_HANDLER(FrameHostMsg_DidStartProvisionalLoadForFrame,
|
| OnDidStartProvisionalLoadForFrame)
|
| + IPC_MESSAGE_HANDLER(FrameHostMsg_SwapOut_ACK, OnSwapOutACK)
|
| IPC_END_MESSAGE_MAP_EX()
|
|
|
| if (!msg_is_ok) {
|
| @@ -118,13 +126,16 @@ void RenderFrameHostImpl::OnCreateChildFrame(int new_frame_routing_id,
|
| int64 frame_id,
|
| const std::string& frame_name) {
|
| RenderFrameHostImpl* new_frame = frame_tree_->AddFrame(
|
| - new_frame_routing_id, parent_frame_id, frame_id, frame_name);
|
| + render_view_host(), new_frame_routing_id, parent_frame_id, frame_id,
|
| + frame_name);
|
| if (delegate_)
|
| delegate_->RenderFrameCreated(new_frame);
|
| }
|
|
|
| void RenderFrameHostImpl::OnDetach(int64 parent_frame_id, int64 frame_id) {
|
| - frame_tree_->RemoveFrame(this, parent_frame_id, frame_id);
|
| + frame_tree_->RemoveFrame(
|
| + this, render_view_host()->GetFrameTreeNodeID(parent_frame_id),
|
| + render_view_host()->GetFrameTreeNodeID(frame_id), frame_id);
|
| }
|
|
|
| void RenderFrameHostImpl::OnDidStartProvisionalLoadForFrame(
|
| @@ -136,4 +147,22 @@ void RenderFrameHostImpl::OnDidStartProvisionalLoadForFrame(
|
| this, frame_id, parent_frame_id, is_main_frame, url);
|
| }
|
|
|
| +void RenderFrameHostImpl::SwapOut() {
|
| + if (render_view_host_->IsRenderViewLive()) {
|
| + Send(new FrameMsg_SwapOut(routing_id()));
|
| + } else {
|
| + // Our RenderViewHost doesn't have a live renderer, so just skip the unload
|
| + // event.
|
| + OnSwappedOut(true);
|
| + }
|
| +}
|
| +
|
| +void RenderFrameHostImpl::OnSwapOutACK() {
|
| + OnSwappedOut(false);
|
| +}
|
| +
|
| +void RenderFrameHostImpl::OnSwappedOut(bool timed_out) {
|
| + frame_tree_node_->render_manager()->SwappedOutFrame(this);
|
| +}
|
| +
|
| } // namespace content
|
|
|