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 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 // static | 111 // static |
112 RenderFrameHostImpl* RenderFrameHostImpl::FromID(int process_id, | 112 RenderFrameHostImpl* RenderFrameHostImpl::FromID(int process_id, |
113 int routing_id) { | 113 int routing_id) { |
114 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 114 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
115 RoutingIDFrameMap* frames = g_routing_id_frame_map.Pointer(); | 115 RoutingIDFrameMap* frames = g_routing_id_frame_map.Pointer(); |
116 RoutingIDFrameMap::iterator it = frames->find( | 116 RoutingIDFrameMap::iterator it = frames->find( |
117 RenderFrameHostID(process_id, routing_id)); | 117 RenderFrameHostID(process_id, routing_id)); |
118 return it == frames->end() ? NULL : it->second; | 118 return it == frames->end() ? NULL : it->second; |
119 } | 119 } |
120 | 120 |
121 RenderFrameHostImpl::RenderFrameHostImpl(RenderViewHostImpl* render_view_host, | 121 RenderFrameHostImpl::RenderFrameHostImpl(SiteInstance* site_instance, |
| 122 RenderViewHostImpl* render_view_host, |
122 RenderFrameHostDelegate* delegate, | 123 RenderFrameHostDelegate* delegate, |
123 RenderWidgetHostDelegate* rwh_delegate, | 124 RenderWidgetHostDelegate* rwh_delegate, |
124 FrameTree* frame_tree, | 125 FrameTree* frame_tree, |
125 FrameTreeNode* frame_tree_node, | 126 FrameTreeNode* frame_tree_node, |
126 int routing_id, | 127 int routing_id, |
127 int flags) | 128 int flags) |
128 : render_view_host_(render_view_host), | 129 : render_view_host_(render_view_host), |
129 delegate_(delegate), | 130 delegate_(delegate), |
| 131 site_instance_(static_cast<SiteInstanceImpl*>(site_instance)), |
| 132 process_(site_instance->GetProcess()), |
130 cross_process_frame_connector_(NULL), | 133 cross_process_frame_connector_(NULL), |
131 render_frame_proxy_host_(NULL), | 134 render_frame_proxy_host_(NULL), |
132 frame_tree_(frame_tree), | 135 frame_tree_(frame_tree), |
133 frame_tree_node_(frame_tree_node), | 136 frame_tree_node_(frame_tree_node), |
134 routing_id_(routing_id), | 137 routing_id_(routing_id), |
135 render_frame_created_(false), | 138 render_frame_created_(false), |
136 navigations_suspended_(false), | 139 navigations_suspended_(false), |
137 is_waiting_for_beforeunload_ack_(false), | 140 is_waiting_for_beforeunload_ack_(false), |
138 unload_ack_is_for_cross_site_transition_(false), | 141 unload_ack_is_for_cross_site_transition_(false), |
139 accessibility_reset_token_(0), | 142 accessibility_reset_token_(0), |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 | 194 |
192 if (render_widget_host_) | 195 if (render_widget_host_) |
193 render_widget_host_->Cleanup(); | 196 render_widget_host_->Cleanup(); |
194 } | 197 } |
195 | 198 |
196 int RenderFrameHostImpl::GetRoutingID() { | 199 int RenderFrameHostImpl::GetRoutingID() { |
197 return routing_id_; | 200 return routing_id_; |
198 } | 201 } |
199 | 202 |
200 SiteInstanceImpl* RenderFrameHostImpl::GetSiteInstance() { | 203 SiteInstanceImpl* RenderFrameHostImpl::GetSiteInstance() { |
201 return render_view_host_->GetSiteInstance(); | 204 return site_instance_.get(); |
202 } | 205 } |
203 | 206 |
204 RenderProcessHost* RenderFrameHostImpl::GetProcess() { | 207 RenderProcessHost* RenderFrameHostImpl::GetProcess() { |
205 // TODO(nasko): This should return its own process, once we have working | 208 return process_; |
206 // cross-process navigation for subframes. | |
207 return render_view_host_->GetProcess(); | |
208 } | 209 } |
209 | 210 |
210 RenderFrameHost* RenderFrameHostImpl::GetParent() { | 211 RenderFrameHost* RenderFrameHostImpl::GetParent() { |
211 FrameTreeNode* parent_node = frame_tree_node_->parent(); | 212 FrameTreeNode* parent_node = frame_tree_node_->parent(); |
212 if (!parent_node) | 213 if (!parent_node) |
213 return NULL; | 214 return NULL; |
214 return parent_node->current_frame_host(); | 215 return parent_node->current_frame_host(); |
215 } | 216 } |
216 | 217 |
217 const std::string& RenderFrameHostImpl::GetFrameName() { | 218 const std::string& RenderFrameHostImpl::GetFrameName() { |
(...skipping 1517 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1735 void RenderFrameHostImpl::DidUseGeolocationPermission() { | 1736 void RenderFrameHostImpl::DidUseGeolocationPermission() { |
1736 RenderFrameHost* top_frame = frame_tree_node()->frame_tree()->GetMainFrame(); | 1737 RenderFrameHost* top_frame = frame_tree_node()->frame_tree()->GetMainFrame(); |
1737 GetContentClient()->browser()->RegisterPermissionUsage( | 1738 GetContentClient()->browser()->RegisterPermissionUsage( |
1738 PERMISSION_GEOLOCATION, | 1739 PERMISSION_GEOLOCATION, |
1739 delegate_->GetAsWebContents(), | 1740 delegate_->GetAsWebContents(), |
1740 GetLastCommittedURL().GetOrigin(), | 1741 GetLastCommittedURL().GetOrigin(), |
1741 top_frame->GetLastCommittedURL().GetOrigin()); | 1742 top_frame->GetLastCommittedURL().GetOrigin()); |
1742 } | 1743 } |
1743 | 1744 |
1744 } // namespace content | 1745 } // namespace content |
OLD | NEW |