| 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 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 RenderFrameHostID(GetProcess()->GetID(), routing_id_), | 195 RenderFrameHostID(GetProcess()->GetID(), routing_id_), |
| 196 this)); | 196 this)); |
| 197 | 197 |
| 198 if (is_swapped_out) { | 198 if (is_swapped_out) { |
| 199 rfh_state_ = STATE_SWAPPED_OUT; | 199 rfh_state_ = STATE_SWAPPED_OUT; |
| 200 } else { | 200 } else { |
| 201 rfh_state_ = STATE_DEFAULT; | 201 rfh_state_ = STATE_DEFAULT; |
| 202 GetSiteInstance()->increment_active_frame_count(); | 202 GetSiteInstance()->increment_active_frame_count(); |
| 203 } | 203 } |
| 204 | 204 |
| 205 if (GetProcess()->GetServiceRegistry()) { | 205 SetUpMojoIfNeeded(); |
| 206 GetProcess()->GetServiceRegistry()->ConnectToRemoteService( | |
| 207 &render_frame_setup_); | |
| 208 mojo::ServiceProviderPtr service_provider; | |
| 209 render_frame_setup_->GetServiceProviderForFrame( | |
| 210 routing_id_, mojo::GetProxy(&service_provider)); | |
| 211 service_registry_.BindRemoteServiceProvider( | |
| 212 service_provider.PassMessagePipe()); | |
| 213 | |
| 214 #if defined(OS_ANDROID) | |
| 215 service_registry_android_.reset( | |
| 216 new ServiceRegistryAndroid(&service_registry_)); | |
| 217 #endif | |
| 218 } | |
| 219 | 206 |
| 220 swapout_event_monitor_timeout_.reset(new TimeoutMonitor(base::Bind( | 207 swapout_event_monitor_timeout_.reset(new TimeoutMonitor(base::Bind( |
| 221 &RenderFrameHostImpl::OnSwappedOut, weak_ptr_factory_.GetWeakPtr()))); | 208 &RenderFrameHostImpl::OnSwappedOut, weak_ptr_factory_.GetWeakPtr()))); |
| 222 } | 209 } |
| 223 | 210 |
| 224 RenderFrameHostImpl::~RenderFrameHostImpl() { | 211 RenderFrameHostImpl::~RenderFrameHostImpl() { |
| 225 GetProcess()->RemoveRoute(routing_id_); | 212 GetProcess()->RemoveRoute(routing_id_); |
| 226 g_routing_id_frame_map.Get().erase( | 213 g_routing_id_frame_map.Get().erase( |
| 227 RenderFrameHostID(GetProcess()->GetID(), routing_id_)); | 214 RenderFrameHostID(GetProcess()->GetID(), routing_id_)); |
| 228 | 215 |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 Send(new FrameMsg_JavaScriptExecuteRequestForTests(routing_id_, | 295 Send(new FrameMsg_JavaScriptExecuteRequestForTests(routing_id_, |
| 309 javascript, | 296 javascript, |
| 310 0, false)); | 297 0, false)); |
| 311 } | 298 } |
| 312 | 299 |
| 313 RenderViewHost* RenderFrameHostImpl::GetRenderViewHost() { | 300 RenderViewHost* RenderFrameHostImpl::GetRenderViewHost() { |
| 314 return render_view_host_; | 301 return render_view_host_; |
| 315 } | 302 } |
| 316 | 303 |
| 317 ServiceRegistry* RenderFrameHostImpl::GetServiceRegistry() { | 304 ServiceRegistry* RenderFrameHostImpl::GetServiceRegistry() { |
| 318 return &service_registry_; | 305 return service_registry_.get(); |
| 319 } | 306 } |
| 320 | 307 |
| 321 bool RenderFrameHostImpl::Send(IPC::Message* message) { | 308 bool RenderFrameHostImpl::Send(IPC::Message* message) { |
| 322 if (IPC_MESSAGE_ID_CLASS(message->type()) == InputMsgStart) { | 309 if (IPC_MESSAGE_ID_CLASS(message->type()) == InputMsgStart) { |
| 323 return render_view_host_->input_router()->SendInput( | 310 return render_view_host_->input_router()->SendInput( |
| 324 make_scoped_ptr(message)); | 311 make_scoped_ptr(message)); |
| 325 } | 312 } |
| 326 | 313 |
| 327 // Route IPCs through the RenderFrameProxyHost when in swapped out state. | 314 // Route IPCs through the RenderFrameProxyHost when in swapped out state. |
| 328 // Note: For subframes in --site-per-process mode, we don't use swapped out | 315 // Note: For subframes in --site-per-process mode, we don't use swapped out |
| (...skipping 1077 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1406 routing_id_, response->head, body->GetURL(), | 1393 routing_id_, response->head, body->GetURL(), |
| 1407 common_params, commit_params)); | 1394 common_params, commit_params)); |
| 1408 // TODO(clamy): Check if we should start the throbber for non javascript urls | 1395 // TODO(clamy): Check if we should start the throbber for non javascript urls |
| 1409 // here. | 1396 // here. |
| 1410 | 1397 |
| 1411 // TODO(clamy): Release the stream handle once the renderer has finished | 1398 // TODO(clamy): Release the stream handle once the renderer has finished |
| 1412 // reading it. | 1399 // reading it. |
| 1413 stream_handle_ = body.Pass(); | 1400 stream_handle_ = body.Pass(); |
| 1414 } | 1401 } |
| 1415 | 1402 |
| 1403 void RenderFrameHostImpl::SetUpMojoIfNeeded() { |
| 1404 if (service_registry_.get()) |
| 1405 return; |
| 1406 |
| 1407 service_registry_.reset(new ServiceRegistryImpl()); |
| 1408 if (!GetProcess()->GetServiceRegistry()) |
| 1409 return; |
| 1410 |
| 1411 RenderFrameSetupPtr setup; |
| 1412 GetProcess()->GetServiceRegistry()->ConnectToRemoteService(&setup); |
| 1413 mojo::ServiceProviderPtr service_provider; |
| 1414 setup->GetServiceProviderForFrame(routing_id_, |
| 1415 mojo::GetProxy(&service_provider)); |
| 1416 service_registry_->BindRemoteServiceProvider( |
| 1417 service_provider.PassMessagePipe()); |
| 1418 |
| 1419 #if defined(OS_ANDROID) |
| 1420 service_registry_android_.reset( |
| 1421 new ServiceRegistryAndroid(service_registry_.get())); |
| 1422 #endif |
| 1423 } |
| 1424 |
| 1425 void RenderFrameHostImpl::InvalidateMojoConnection() { |
| 1426 service_registry_.reset(); |
| 1427 #if defined(OS_ANDROID) |
| 1428 service_registry_android_.reset(); |
| 1429 #endif |
| 1430 } |
| 1431 |
| 1416 void RenderFrameHostImpl::PlatformNotificationPermissionRequestDone( | 1432 void RenderFrameHostImpl::PlatformNotificationPermissionRequestDone( |
| 1417 int request_id, blink::WebNotificationPermission permission) { | 1433 int request_id, blink::WebNotificationPermission permission) { |
| 1418 Send(new PlatformNotificationMsg_PermissionRequestComplete( | 1434 Send(new PlatformNotificationMsg_PermissionRequestComplete( |
| 1419 routing_id_, request_id, permission)); | 1435 routing_id_, request_id, permission)); |
| 1420 } | 1436 } |
| 1421 | 1437 |
| 1422 void RenderFrameHostImpl::UpdateCrossProcessIframeAccessibility( | 1438 void RenderFrameHostImpl::UpdateCrossProcessIframeAccessibility( |
| 1423 const std::map<int32, int> node_to_frame_routing_id_map) { | 1439 const std::map<int32, int> node_to_frame_routing_id_map) { |
| 1424 std::map<int32, int>::const_iterator iter; | 1440 std::map<int32, int>::const_iterator iter; |
| 1425 for (iter = node_to_frame_routing_id_map.begin(); | 1441 for (iter = node_to_frame_routing_id_map.begin(); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1563 // Clear any state if a pending navigation is canceled or preempted. | 1579 // Clear any state if a pending navigation is canceled or preempted. |
| 1564 if (suspended_nav_params_) | 1580 if (suspended_nav_params_) |
| 1565 suspended_nav_params_.reset(); | 1581 suspended_nav_params_.reset(); |
| 1566 | 1582 |
| 1567 TRACE_EVENT_ASYNC_END0("navigation", | 1583 TRACE_EVENT_ASYNC_END0("navigation", |
| 1568 "RenderFrameHostImpl navigation suspended", this); | 1584 "RenderFrameHostImpl navigation suspended", this); |
| 1569 navigations_suspended_ = false; | 1585 navigations_suspended_ = false; |
| 1570 } | 1586 } |
| 1571 | 1587 |
| 1572 } // namespace content | 1588 } // namespace content |
| OLD | NEW |