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_impl.h" | 5 #include "content/browser/frame_host/render_frame_host_impl.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/containers/hash_tables.h" | 9 #include "base/containers/hash_tables.h" |
| 10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 142 int routing_id, | 142 int routing_id, |
| 143 int flags) | 143 int flags) |
| 144 : render_view_host_(render_view_host), | 144 : render_view_host_(render_view_host), |
| 145 delegate_(delegate), | 145 delegate_(delegate), |
| 146 site_instance_(static_cast<SiteInstanceImpl*>(site_instance)), | 146 site_instance_(static_cast<SiteInstanceImpl*>(site_instance)), |
| 147 process_(site_instance->GetProcess()), | 147 process_(site_instance->GetProcess()), |
| 148 cross_process_frame_connector_(NULL), | 148 cross_process_frame_connector_(NULL), |
| 149 render_frame_proxy_host_(NULL), | 149 render_frame_proxy_host_(NULL), |
| 150 frame_tree_(frame_tree), | 150 frame_tree_(frame_tree), |
| 151 frame_tree_node_(frame_tree_node), | 151 frame_tree_node_(frame_tree_node), |
| 152 render_widget_host_(nullptr), | |
| 152 routing_id_(routing_id), | 153 routing_id_(routing_id), |
| 153 render_frame_created_(false), | 154 render_frame_created_(false), |
| 154 navigations_suspended_(false), | 155 navigations_suspended_(false), |
| 155 is_waiting_for_beforeunload_ack_(false), | 156 is_waiting_for_beforeunload_ack_(false), |
| 156 unload_ack_is_for_navigation_(false), | 157 unload_ack_is_for_navigation_(false), |
| 157 is_loading_(false), | 158 is_loading_(false), |
| 158 pending_commit_(false), | 159 pending_commit_(false), |
| 159 accessibility_reset_token_(0), | 160 accessibility_reset_token_(0), |
| 160 accessibility_reset_count_(0), | 161 accessibility_reset_count_(0), |
| 161 no_create_browser_accessibility_manager_for_testing_(false), | 162 no_create_browser_accessibility_manager_for_testing_(false), |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 173 } else { | 174 } else { |
| 174 rfh_state_ = STATE_DEFAULT; | 175 rfh_state_ = STATE_DEFAULT; |
| 175 GetSiteInstance()->increment_active_frame_count(); | 176 GetSiteInstance()->increment_active_frame_count(); |
| 176 } | 177 } |
| 177 | 178 |
| 178 SetUpMojoIfNeeded(); | 179 SetUpMojoIfNeeded(); |
| 179 swapout_event_monitor_timeout_.reset(new TimeoutMonitor(base::Bind( | 180 swapout_event_monitor_timeout_.reset(new TimeoutMonitor(base::Bind( |
| 180 &RenderFrameHostImpl::OnSwappedOut, weak_ptr_factory_.GetWeakPtr()))); | 181 &RenderFrameHostImpl::OnSwappedOut, weak_ptr_factory_.GetWeakPtr()))); |
| 181 | 182 |
| 182 if (flags & CREATE_RF_NEEDS_RENDER_WIDGET_HOST) { | 183 if (flags & CREATE_RF_NEEDS_RENDER_WIDGET_HOST) { |
| 183 render_widget_host_.reset(new RenderWidgetHostImpl( | 184 render_widget_host_ = new RenderWidgetHostImpl(rwh_delegate, GetProcess(), |
| 184 rwh_delegate, GetProcess(), MSG_ROUTING_NONE, hidden)); | 185 MSG_ROUTING_NONE, hidden); |
| 185 render_widget_host_->set_owned_by_render_frame_host(true); | 186 render_widget_host_->set_owned_by_render_frame_host(true); |
| 186 } | 187 } |
| 187 } | 188 } |
| 188 | 189 |
| 189 RenderFrameHostImpl::~RenderFrameHostImpl() { | 190 RenderFrameHostImpl::~RenderFrameHostImpl() { |
| 190 GetProcess()->RemoveRoute(routing_id_); | 191 GetProcess()->RemoveRoute(routing_id_); |
| 191 g_routing_id_frame_map.Get().erase( | 192 g_routing_id_frame_map.Get().erase( |
| 192 RenderFrameHostID(GetProcess()->GetID(), routing_id_)); | 193 RenderFrameHostID(GetProcess()->GetID(), routing_id_)); |
| 193 | 194 |
| 194 if (delegate_ && render_frame_created_) | 195 if (delegate_ && render_frame_created_) |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 207 | 208 |
| 208 // NULL out the swapout timer; in crash dumps this member will be null only if | 209 // NULL out the swapout timer; in crash dumps this member will be null only if |
| 209 // the dtor has run. | 210 // the dtor has run. |
| 210 swapout_event_monitor_timeout_.reset(); | 211 swapout_event_monitor_timeout_.reset(); |
| 211 | 212 |
| 212 for (const auto& iter: visual_state_callbacks_) { | 213 for (const auto& iter: visual_state_callbacks_) { |
| 213 iter.second.Run(false); | 214 iter.second.Run(false); |
| 214 } | 215 } |
| 215 | 216 |
| 216 if (render_widget_host_) | 217 if (render_widget_host_) |
| 217 render_widget_host_->Cleanup(); | 218 render_widget_host_->Shutdown(); |
|
kenrb
2015/04/23 21:39:18
Worthwhile to add a comment that the RenderWidgetH
lfg
2015/04/23 22:19:54
Done.
| |
| 218 } | 219 } |
| 219 | 220 |
| 220 int RenderFrameHostImpl::GetRoutingID() { | 221 int RenderFrameHostImpl::GetRoutingID() { |
| 221 return routing_id_; | 222 return routing_id_; |
| 222 } | 223 } |
| 223 | 224 |
| 224 SiteInstanceImpl* RenderFrameHostImpl::GetSiteInstance() { | 225 SiteInstanceImpl* RenderFrameHostImpl::GetSiteInstance() { |
| 225 return site_instance_.get(); | 226 return site_instance_.get(); |
| 226 } | 227 } |
| 227 | 228 |
| (...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 589 } | 590 } |
| 590 | 591 |
| 591 Send(new FrameMsg_NewFrame(routing_id_, parent_routing_id, proxy_routing_id, | 592 Send(new FrameMsg_NewFrame(routing_id_, parent_routing_id, proxy_routing_id, |
| 592 frame_tree_node()->current_replication_state(), | 593 frame_tree_node()->current_replication_state(), |
| 593 widget_params)); | 594 widget_params)); |
| 594 | 595 |
| 595 // The RenderWidgetHost takes ownership of its view. It is tied to the | 596 // The RenderWidgetHost takes ownership of its view. It is tied to the |
| 596 // lifetime of the current RenderProcessHost for this RenderFrameHost. | 597 // lifetime of the current RenderProcessHost for this RenderFrameHost. |
| 597 if (render_widget_host_) { | 598 if (render_widget_host_) { |
| 598 RenderWidgetHostView* rwhv = | 599 RenderWidgetHostView* rwhv = |
| 599 new RenderWidgetHostViewChildFrame(render_widget_host_.get()); | 600 new RenderWidgetHostViewChildFrame(render_widget_host_); |
| 600 rwhv->Hide(); | 601 rwhv->Hide(); |
| 601 } | 602 } |
| 602 | 603 |
| 603 if (proxy_routing_id != MSG_ROUTING_NONE) { | 604 if (proxy_routing_id != MSG_ROUTING_NONE) { |
| 604 RenderFrameProxyHost* proxy = RenderFrameProxyHost::FromID( | 605 RenderFrameProxyHost* proxy = RenderFrameProxyHost::FromID( |
| 605 GetProcess()->GetID(), proxy_routing_id); | 606 GetProcess()->GetID(), proxy_routing_id); |
| 606 // We have also created a RenderFrameProxy in FrameMsg_NewFrame above, so | 607 // We have also created a RenderFrameProxy in FrameMsg_NewFrame above, so |
| 607 // remember that. | 608 // remember that. |
| 608 proxy->set_render_frame_proxy_created(true); | 609 proxy->set_render_frame_proxy_created(true); |
| 609 } | 610 } |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 864 void RenderFrameHostImpl::OnDidDropNavigation() { | 865 void RenderFrameHostImpl::OnDidDropNavigation() { |
| 865 // At the end of Navigate(), the FrameTreeNode's DidStartLoading is called to | 866 // At the end of Navigate(), the FrameTreeNode's DidStartLoading is called to |
| 866 // force the spinner to start, even if the renderer didn't yet begin the load. | 867 // force the spinner to start, even if the renderer didn't yet begin the load. |
| 867 // If it turns out that the renderer dropped the navigation, the spinner needs | 868 // If it turns out that the renderer dropped the navigation, the spinner needs |
| 868 // to be turned off. | 869 // to be turned off. |
| 869 frame_tree_node_->DidStopLoading(); | 870 frame_tree_node_->DidStopLoading(); |
| 870 } | 871 } |
| 871 | 872 |
| 872 RenderWidgetHostImpl* RenderFrameHostImpl::GetRenderWidgetHost() { | 873 RenderWidgetHostImpl* RenderFrameHostImpl::GetRenderWidgetHost() { |
| 873 if (render_widget_host_) | 874 if (render_widget_host_) |
| 874 return render_widget_host_.get(); | 875 return render_widget_host_; |
| 875 | 876 |
| 876 // TODO(kenrb): When RenderViewHost no longer inherits RenderWidgetHost, | 877 // TODO(kenrb): When RenderViewHost no longer inherits RenderWidgetHost, |
| 877 // we can remove this fallback. Currently it is only used for the main | 878 // we can remove this fallback. Currently it is only used for the main |
| 878 // frame. | 879 // frame. |
| 879 if (!GetParent()) | 880 if (!GetParent()) |
| 880 return static_cast<RenderWidgetHostImpl*>(render_view_host_); | 881 return static_cast<RenderWidgetHostImpl*>(render_view_host_); |
| 881 | 882 |
| 882 return nullptr; | 883 return nullptr; |
| 883 } | 884 } |
| 884 | 885 |
| (...skipping 1175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2060 return; | 2061 return; |
| 2061 | 2062 |
| 2062 permission_manager->RegisterPermissionUsage( | 2063 permission_manager->RegisterPermissionUsage( |
| 2063 PermissionType::GEOLOCATION, | 2064 PermissionType::GEOLOCATION, |
| 2064 GetLastCommittedURL().GetOrigin(), | 2065 GetLastCommittedURL().GetOrigin(), |
| 2065 frame_tree_node()->frame_tree()->GetMainFrame() | 2066 frame_tree_node()->frame_tree()->GetMainFrame() |
| 2066 ->GetLastCommittedURL().GetOrigin()); | 2067 ->GetLastCommittedURL().GetOrigin()); |
| 2067 } | 2068 } |
| 2068 | 2069 |
| 2069 } // namespace content | 2070 } // namespace content |
| OLD | NEW |