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 11 matching lines...) Expand all Loading... |
206 frame_tree_->UnregisterRenderFrameHost(this); | 207 frame_tree_->UnregisterRenderFrameHost(this); |
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 // Shutdown causes the RenderWidgetHost to delete itself. |
| 219 render_widget_host_->Shutdown(); |
| 220 } |
218 } | 221 } |
219 | 222 |
220 int RenderFrameHostImpl::GetRoutingID() { | 223 int RenderFrameHostImpl::GetRoutingID() { |
221 return routing_id_; | 224 return routing_id_; |
222 } | 225 } |
223 | 226 |
224 SiteInstanceImpl* RenderFrameHostImpl::GetSiteInstance() { | 227 SiteInstanceImpl* RenderFrameHostImpl::GetSiteInstance() { |
225 return site_instance_.get(); | 228 return site_instance_.get(); |
226 } | 229 } |
227 | 230 |
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
589 } | 592 } |
590 | 593 |
591 Send(new FrameMsg_NewFrame(routing_id_, parent_routing_id, proxy_routing_id, | 594 Send(new FrameMsg_NewFrame(routing_id_, parent_routing_id, proxy_routing_id, |
592 frame_tree_node()->current_replication_state(), | 595 frame_tree_node()->current_replication_state(), |
593 widget_params)); | 596 widget_params)); |
594 | 597 |
595 // The RenderWidgetHost takes ownership of its view. It is tied to the | 598 // The RenderWidgetHost takes ownership of its view. It is tied to the |
596 // lifetime of the current RenderProcessHost for this RenderFrameHost. | 599 // lifetime of the current RenderProcessHost for this RenderFrameHost. |
597 if (render_widget_host_) { | 600 if (render_widget_host_) { |
598 RenderWidgetHostView* rwhv = | 601 RenderWidgetHostView* rwhv = |
599 new RenderWidgetHostViewChildFrame(render_widget_host_.get()); | 602 new RenderWidgetHostViewChildFrame(render_widget_host_); |
600 rwhv->Hide(); | 603 rwhv->Hide(); |
601 } | 604 } |
602 | 605 |
603 if (proxy_routing_id != MSG_ROUTING_NONE) { | 606 if (proxy_routing_id != MSG_ROUTING_NONE) { |
604 RenderFrameProxyHost* proxy = RenderFrameProxyHost::FromID( | 607 RenderFrameProxyHost* proxy = RenderFrameProxyHost::FromID( |
605 GetProcess()->GetID(), proxy_routing_id); | 608 GetProcess()->GetID(), proxy_routing_id); |
606 // We have also created a RenderFrameProxy in FrameMsg_NewFrame above, so | 609 // We have also created a RenderFrameProxy in FrameMsg_NewFrame above, so |
607 // remember that. | 610 // remember that. |
608 proxy->set_render_frame_proxy_created(true); | 611 proxy->set_render_frame_proxy_created(true); |
609 } | 612 } |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
864 void RenderFrameHostImpl::OnDidDropNavigation() { | 867 void RenderFrameHostImpl::OnDidDropNavigation() { |
865 // At the end of Navigate(), the FrameTreeNode's DidStartLoading is called to | 868 // 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. | 869 // 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 | 870 // If it turns out that the renderer dropped the navigation, the spinner needs |
868 // to be turned off. | 871 // to be turned off. |
869 frame_tree_node_->DidStopLoading(); | 872 frame_tree_node_->DidStopLoading(); |
870 } | 873 } |
871 | 874 |
872 RenderWidgetHostImpl* RenderFrameHostImpl::GetRenderWidgetHost() { | 875 RenderWidgetHostImpl* RenderFrameHostImpl::GetRenderWidgetHost() { |
873 if (render_widget_host_) | 876 if (render_widget_host_) |
874 return render_widget_host_.get(); | 877 return render_widget_host_; |
875 | 878 |
876 // TODO(kenrb): When RenderViewHost no longer inherits RenderWidgetHost, | 879 // TODO(kenrb): When RenderViewHost no longer inherits RenderWidgetHost, |
877 // we can remove this fallback. Currently it is only used for the main | 880 // we can remove this fallback. Currently it is only used for the main |
878 // frame. | 881 // frame. |
879 if (!GetParent()) | 882 if (!GetParent()) |
880 return static_cast<RenderWidgetHostImpl*>(render_view_host_); | 883 return static_cast<RenderWidgetHostImpl*>(render_view_host_); |
881 | 884 |
882 return nullptr; | 885 return nullptr; |
883 } | 886 } |
884 | 887 |
(...skipping 1175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2060 return; | 2063 return; |
2061 | 2064 |
2062 permission_manager->RegisterPermissionUsage( | 2065 permission_manager->RegisterPermissionUsage( |
2063 PermissionType::GEOLOCATION, | 2066 PermissionType::GEOLOCATION, |
2064 GetLastCommittedURL().GetOrigin(), | 2067 GetLastCommittedURL().GetOrigin(), |
2065 frame_tree_node()->frame_tree()->GetMainFrame() | 2068 frame_tree_node()->frame_tree()->GetMainFrame() |
2066 ->GetLastCommittedURL().GetOrigin()); | 2069 ->GetLastCommittedURL().GetOrigin()); |
2067 } | 2070 } |
2068 | 2071 |
2069 } // namespace content | 2072 } // namespace content |
OLD | NEW |