Chromium Code Reviews| 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()); | |
|
nasko
2014/12/12 22:36:17
Looks actually quite nice! Thanks!
| |
| 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 |