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/debug/trace_event.h" | 10 #include "base/debug/trace_event.h" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 render_frame_delegate_(render_frame_delegate), | 60 render_frame_delegate_(render_frame_delegate), |
61 render_view_delegate_(render_view_delegate), | 61 render_view_delegate_(render_view_delegate), |
62 render_widget_delegate_(render_widget_delegate), | 62 render_widget_delegate_(render_widget_delegate), |
63 interstitial_page_(NULL), | 63 interstitial_page_(NULL), |
64 weak_factory_(this) { | 64 weak_factory_(this) { |
65 DCHECK(frame_tree_node_); | 65 DCHECK(frame_tree_node_); |
66 } | 66 } |
67 | 67 |
68 RenderFrameHostManager::~RenderFrameHostManager() { | 68 RenderFrameHostManager::~RenderFrameHostManager() { |
69 if (pending_render_frame_host_) | 69 if (pending_render_frame_host_) |
70 CancelPending(); | 70 UnsetPendingRenderFrameHost(); |
71 | 71 |
72 // We should always have a current RenderFrameHost except in some tests. | 72 // We should always have a current RenderFrameHost except in some tests. |
73 SetRenderFrameHost(scoped_ptr<RenderFrameHostImpl>()); | 73 SetRenderFrameHost(scoped_ptr<RenderFrameHostImpl>()); |
74 | 74 |
75 // Delete any swapped out RenderFrameHosts. | 75 // Delete any swapped out RenderFrameHosts. |
76 STLDeleteValues(&proxy_hosts_); | 76 STLDeleteValues(&proxy_hosts_); |
77 } | 77 } |
78 | 78 |
79 void RenderFrameHostManager::Init(BrowserContext* browser_context, | 79 void RenderFrameHostManager::Init(BrowserContext* browser_context, |
80 SiteInstance* site_instance, | 80 SiteInstance* site_instance, |
(...skipping 1503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1584 new ViewMsg_EnableViewSourceMode( | 1584 new ViewMsg_EnableViewSourceMode( |
1585 render_frame_host_->render_view_host()->GetRoutingID())); | 1585 render_frame_host_->render_view_host()->GetRoutingID())); |
1586 } | 1586 } |
1587 | 1587 |
1588 return render_frame_host_.get(); | 1588 return render_frame_host_.get(); |
1589 } | 1589 } |
1590 | 1590 |
1591 void RenderFrameHostManager::CancelPending() { | 1591 void RenderFrameHostManager::CancelPending() { |
1592 TRACE_EVENT1("navigation", "RenderFrameHostManager::CancelPending", | 1592 TRACE_EVENT1("navigation", "RenderFrameHostManager::CancelPending", |
1593 "FrameTreeNode id", frame_tree_node_->frame_tree_node_id()); | 1593 "FrameTreeNode id", frame_tree_node_->frame_tree_node_id()); |
| 1594 DiscardUnusedFrame(UnsetPendingRenderFrameHost()); |
| 1595 } |
| 1596 |
| 1597 scoped_ptr<RenderFrameHostImpl> |
| 1598 RenderFrameHostManager::UnsetPendingRenderFrameHost() { |
1594 scoped_ptr<RenderFrameHostImpl> pending_render_frame_host = | 1599 scoped_ptr<RenderFrameHostImpl> pending_render_frame_host = |
1595 pending_render_frame_host_.Pass(); | 1600 pending_render_frame_host_.Pass(); |
1596 | 1601 |
1597 RenderViewDevToolsAgentHost::OnCancelPendingNavigation( | 1602 RenderViewDevToolsAgentHost::OnCancelPendingNavigation( |
1598 pending_render_frame_host->render_view_host(), | 1603 pending_render_frame_host->render_view_host(), |
1599 render_frame_host_->render_view_host()); | 1604 render_frame_host_->render_view_host()); |
1600 | 1605 |
1601 // We no longer need to prevent the process from exiting. | 1606 // We no longer need to prevent the process from exiting. |
1602 pending_render_frame_host->GetProcess()->RemovePendingView(); | 1607 pending_render_frame_host->GetProcess()->RemovePendingView(); |
1603 | 1608 |
1604 DiscardUnusedFrame(pending_render_frame_host.Pass()); | |
1605 | |
1606 pending_web_ui_.reset(); | 1609 pending_web_ui_.reset(); |
1607 pending_and_current_web_ui_.reset(); | 1610 pending_and_current_web_ui_.reset(); |
| 1611 |
| 1612 return pending_render_frame_host.Pass(); |
1608 } | 1613 } |
1609 | 1614 |
1610 scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::SetRenderFrameHost( | 1615 scoped_ptr<RenderFrameHostImpl> RenderFrameHostManager::SetRenderFrameHost( |
1611 scoped_ptr<RenderFrameHostImpl> render_frame_host) { | 1616 scoped_ptr<RenderFrameHostImpl> render_frame_host) { |
1612 // Swap the two. | 1617 // Swap the two. |
1613 scoped_ptr<RenderFrameHostImpl> old_render_frame_host = | 1618 scoped_ptr<RenderFrameHostImpl> old_render_frame_host = |
1614 render_frame_host_.Pass(); | 1619 render_frame_host_.Pass(); |
1615 render_frame_host_ = render_frame_host.Pass(); | 1620 render_frame_host_ = render_frame_host.Pass(); |
1616 | 1621 |
1617 if (frame_tree_node_->IsMainFrame()) { | 1622 if (frame_tree_node_->IsMainFrame()) { |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1679 void RenderFrameHostManager::DeleteRenderFrameProxyHost( | 1684 void RenderFrameHostManager::DeleteRenderFrameProxyHost( |
1680 SiteInstance* instance) { | 1685 SiteInstance* instance) { |
1681 RenderFrameProxyHostMap::iterator iter = proxy_hosts_.find(instance->GetId()); | 1686 RenderFrameProxyHostMap::iterator iter = proxy_hosts_.find(instance->GetId()); |
1682 if (iter != proxy_hosts_.end()) { | 1687 if (iter != proxy_hosts_.end()) { |
1683 delete iter->second; | 1688 delete iter->second; |
1684 proxy_hosts_.erase(iter); | 1689 proxy_hosts_.erase(iter); |
1685 } | 1690 } |
1686 } | 1691 } |
1687 | 1692 |
1688 } // namespace content | 1693 } // namespace content |
OLD | NEW |