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 <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 1671 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1682 | 1682 |
1683 bool deleted = | 1683 bool deleted = |
1684 frame_tree_node_->render_manager()->DeleteFromPendingList(this); | 1684 frame_tree_node_->render_manager()->DeleteFromPendingList(this); |
1685 CHECK(deleted); | 1685 CHECK(deleted); |
1686 } | 1686 } |
1687 | 1687 |
1688 void RenderFrameHostImpl::DisableSwapOutTimerForTesting() { | 1688 void RenderFrameHostImpl::DisableSwapOutTimerForTesting() { |
1689 swapout_event_monitor_timeout_.reset(); | 1689 swapout_event_monitor_timeout_.reset(); |
1690 } | 1690 } |
1691 | 1691 |
1692 void RenderFrameHostImpl::OnRendererConnect( | |
1693 const service_manager::ServiceInfo& local_info, | |
1694 const service_manager::ServiceInfo& remote_info) { | |
1695 if (remote_info.identity.name() != mojom::kRendererServiceName) | |
1696 return; | |
1697 browser_info_ = local_info; | |
1698 renderer_info_ = remote_info; | |
1699 } | |
1700 | |
1701 void RenderFrameHostImpl::OnContextMenu(const ContextMenuParams& params) { | 1692 void RenderFrameHostImpl::OnContextMenu(const ContextMenuParams& params) { |
1702 if (!is_active()) | 1693 if (!is_active()) |
1703 return; | 1694 return; |
1704 | 1695 |
1705 // Validate the URLs in |params|. If the renderer can't request the URLs | 1696 // Validate the URLs in |params|. If the renderer can't request the URLs |
1706 // directly, don't show them in the context menu. | 1697 // directly, don't show them in the context menu. |
1707 ContextMenuParams validated_params(params); | 1698 ContextMenuParams validated_params(params); |
1708 RenderProcessHost* process = GetProcess(); | 1699 RenderProcessHost* process = GetProcess(); |
1709 | 1700 |
1710 // We don't validate |unfiltered_link_url| so that this field can be used | 1701 // We don't validate |unfiltered_link_url| so that this field can be used |
(...skipping 1369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3080 associated_registry_ = base::MakeUnique<AssociatedInterfaceRegistryImpl>(); | 3071 associated_registry_ = base::MakeUnique<AssociatedInterfaceRegistryImpl>(); |
3081 interface_registry_ = base::MakeUnique<service_manager::BinderRegistry>(); | 3072 interface_registry_ = base::MakeUnique<service_manager::BinderRegistry>(); |
3082 | 3073 |
3083 auto make_binding = [](RenderFrameHostImpl* impl, | 3074 auto make_binding = [](RenderFrameHostImpl* impl, |
3084 mojom::FrameHostAssociatedRequest request) { | 3075 mojom::FrameHostAssociatedRequest request) { |
3085 impl->frame_host_associated_binding_.Bind(std::move(request)); | 3076 impl->frame_host_associated_binding_.Bind(std::move(request)); |
3086 }; | 3077 }; |
3087 static_cast<AssociatedInterfaceRegistry*>(associated_registry_.get()) | 3078 static_cast<AssociatedInterfaceRegistry*>(associated_registry_.get()) |
3088 ->AddInterface(base::Bind(make_binding, base::Unretained(this))); | 3079 ->AddInterface(base::Bind(make_binding, base::Unretained(this))); |
3089 | 3080 |
3090 ServiceManagerConnection* service_manager_connection = | |
3091 BrowserContext::GetServiceManagerConnectionFor( | |
3092 GetProcess()->GetBrowserContext()); | |
3093 // |service_manager_connection| may not be set in unit tests using | |
3094 // TestBrowserContext. | |
3095 if (service_manager_connection) { | |
3096 on_connect_handler_id_ = service_manager_connection->AddOnConnectHandler( | |
3097 base::Bind(&RenderFrameHostImpl::OnRendererConnect, | |
3098 weak_ptr_factory_.GetWeakPtr())); | |
3099 } | |
3100 | |
3101 RegisterMojoInterfaces(); | 3081 RegisterMojoInterfaces(); |
3102 mojom::FrameFactoryPtr frame_factory; | 3082 mojom::FrameFactoryPtr frame_factory; |
3103 BindInterface(GetProcess(), &frame_factory); | 3083 BindInterface(GetProcess(), &frame_factory); |
3104 frame_factory->CreateFrame( | 3084 frame_factory->CreateFrame( |
3105 routing_id_, MakeRequest(&frame_), | 3085 routing_id_, MakeRequest(&frame_), |
3106 frame_host_interface_broker_binding_.CreateInterfacePtrAndBind()); | 3086 frame_host_interface_broker_binding_.CreateInterfacePtrAndBind()); |
3107 | 3087 |
3108 service_manager::mojom::InterfaceProviderPtr remote_interfaces; | 3088 service_manager::mojom::InterfaceProviderPtr remote_interfaces; |
3109 service_manager::mojom::InterfaceProviderRequest remote_interfaces_request( | 3089 service_manager::mojom::InterfaceProviderRequest remote_interfaces_request( |
3110 &remote_interfaces); | 3090 &remote_interfaces); |
3111 remote_interfaces_.reset(new service_manager::InterfaceProvider); | 3091 remote_interfaces_.reset(new service_manager::InterfaceProvider); |
3112 remote_interfaces_->Bind(std::move(remote_interfaces)); | 3092 remote_interfaces_->Bind(std::move(remote_interfaces)); |
3113 frame_->GetInterfaceProvider(std::move(remote_interfaces_request)); | 3093 frame_->GetInterfaceProvider(std::move(remote_interfaces_request)); |
3114 } | 3094 } |
3115 | 3095 |
3116 void RenderFrameHostImpl::InvalidateMojoConnection() { | 3096 void RenderFrameHostImpl::InvalidateMojoConnection() { |
3117 interface_registry_.reset(); | 3097 interface_registry_.reset(); |
3118 | 3098 |
3119 ServiceManagerConnection* service_manager_connection = | |
3120 BrowserContext::GetServiceManagerConnectionFor( | |
3121 GetProcess()->GetBrowserContext()); | |
3122 // |service_manager_connection| may be null in tests using TestBrowserContext. | |
3123 if (service_manager_connection) { | |
3124 service_manager_connection->RemoveOnConnectHandler(on_connect_handler_id_); | |
3125 on_connect_handler_id_ = 0; | |
3126 } | |
3127 | |
3128 frame_.reset(); | 3099 frame_.reset(); |
3129 frame_host_interface_broker_binding_.Close(); | 3100 frame_host_interface_broker_binding_.Close(); |
3130 frame_bindings_control_.reset(); | 3101 frame_bindings_control_.reset(); |
3131 | 3102 |
3132 // Disconnect with ImageDownloader Mojo service in RenderFrame. | 3103 // Disconnect with ImageDownloader Mojo service in RenderFrame. |
3133 mojo_image_downloader_.reset(); | 3104 mojo_image_downloader_.reset(); |
3134 } | 3105 } |
3135 | 3106 |
3136 bool RenderFrameHostImpl::IsFocused() { | 3107 bool RenderFrameHostImpl::IsFocused() { |
3137 return GetRenderWidgetHost()->is_focused() && | 3108 return GetRenderWidgetHost()->is_focused() && |
(...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3881 } | 3852 } |
3882 | 3853 |
3883 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( | 3854 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( |
3884 const std::string& interface_name, | 3855 const std::string& interface_name, |
3885 mojo::ScopedMessagePipeHandle pipe) { | 3856 mojo::ScopedMessagePipeHandle pipe) { |
3886 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); | 3857 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); |
3887 } | 3858 } |
3888 #endif | 3859 #endif |
3889 | 3860 |
3890 } // namespace content | 3861 } // namespace content |
OLD | NEW |