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 622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
633 } | 633 } |
634 | 634 |
635 void RenderFrameHostImpl::SaveImageAt(int x, int y) { | 635 void RenderFrameHostImpl::SaveImageAt(int x, int y) { |
636 Send(new FrameMsg_SaveImageAt(routing_id_, x, y)); | 636 Send(new FrameMsg_SaveImageAt(routing_id_, x, y)); |
637 } | 637 } |
638 | 638 |
639 RenderViewHost* RenderFrameHostImpl::GetRenderViewHost() { | 639 RenderViewHost* RenderFrameHostImpl::GetRenderViewHost() { |
640 return render_view_host_; | 640 return render_view_host_; |
641 } | 641 } |
642 | 642 |
643 service_manager::InterfaceRegistry* | 643 service_manager::BinderRegistry* RenderFrameHostImpl::GetInterfaceRegistry() { |
644 RenderFrameHostImpl::GetInterfaceRegistry() { | |
645 return interface_registry_.get(); | 644 return interface_registry_.get(); |
646 } | 645 } |
647 | 646 |
648 service_manager::InterfaceProvider* RenderFrameHostImpl::GetRemoteInterfaces() { | 647 service_manager::InterfaceProvider* RenderFrameHostImpl::GetRemoteInterfaces() { |
649 return remote_interfaces_.get(); | 648 return remote_interfaces_.get(); |
650 } | 649 } |
651 | 650 |
652 AssociatedInterfaceProvider* | 651 AssociatedInterfaceProvider* |
653 RenderFrameHostImpl::GetRemoteAssociatedInterfaces() { | 652 RenderFrameHostImpl::GetRemoteAssociatedInterfaces() { |
654 if (!remote_associated_interfaces_) { | 653 if (!remote_associated_interfaces_) { |
(...skipping 1996 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2651 base::Unretained(media_stream_manager)), | 2650 base::Unretained(media_stream_manager)), |
2652 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)); | 2651 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)); |
2653 } | 2652 } |
2654 #endif | 2653 #endif |
2655 | 2654 |
2656 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2655 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2657 GetInterfaceRegistry()->AddInterface(base::Bind( | 2656 GetInterfaceRegistry()->AddInterface(base::Bind( |
2658 &RemoterFactoryImpl::Bind, GetProcess()->GetID(), GetRoutingID())); | 2657 &RemoterFactoryImpl::Bind, GetProcess()->GetID(), GetRoutingID())); |
2659 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2658 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2660 | 2659 |
2661 GetContentClient()->browser()->RegisterRenderFrameMojoInterfaces( | 2660 GetContentClient()->browser()->ExposeInterfacesToFrame(GetInterfaceRegistry(), |
2662 GetInterfaceRegistry(), this); | 2661 this); |
2663 } | 2662 } |
2664 | 2663 |
2665 void RenderFrameHostImpl::ResetWaitingState() { | 2664 void RenderFrameHostImpl::ResetWaitingState() { |
2666 DCHECK(is_active()); | 2665 DCHECK(is_active()); |
2667 | 2666 |
2668 // Whenever we reset the RFH state, we should not be waiting for beforeunload | 2667 // Whenever we reset the RFH state, we should not be waiting for beforeunload |
2669 // or close acks. We clear them here to be safe, since they can cause | 2668 // or close acks. We clear them here to be safe, since they can cause |
2670 // navigations to be ignored in OnDidCommitProvisionalLoad. | 2669 // navigations to be ignored in OnDidCommitProvisionalLoad. |
2671 if (is_waiting_for_beforeunload_ack_) { | 2670 if (is_waiting_for_beforeunload_ack_) { |
2672 is_waiting_for_beforeunload_ack_ = false; | 2671 is_waiting_for_beforeunload_ack_ = false; |
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2997 // An error page is expected to commit, hence why is_loading_ is set to true. | 2996 // An error page is expected to commit, hence why is_loading_ is set to true. |
2998 is_loading_ = true; | 2997 is_loading_ = true; |
2999 frame_tree_node_->ResetNavigationRequest(true, true); | 2998 frame_tree_node_->ResetNavigationRequest(true, true); |
3000 } | 2999 } |
3001 | 3000 |
3002 void RenderFrameHostImpl::SetUpMojoIfNeeded() { | 3001 void RenderFrameHostImpl::SetUpMojoIfNeeded() { |
3003 if (interface_registry_.get()) | 3002 if (interface_registry_.get()) |
3004 return; | 3003 return; |
3005 | 3004 |
3006 associated_registry_ = base::MakeUnique<AssociatedInterfaceRegistryImpl>(); | 3005 associated_registry_ = base::MakeUnique<AssociatedInterfaceRegistryImpl>(); |
3007 interface_registry_ = base::MakeUnique<service_manager::InterfaceRegistry>( | 3006 interface_registry_ = base::MakeUnique<service_manager::BinderRegistry>(); |
3008 mojom::kNavigation_FrameSpec); | |
3009 | 3007 |
3010 auto make_binding = [](RenderFrameHostImpl* impl, | 3008 auto make_binding = [](RenderFrameHostImpl* impl, |
3011 mojom::FrameHostAssociatedRequest request) { | 3009 mojom::FrameHostAssociatedRequest request) { |
3012 impl->frame_host_associated_binding_.Bind(std::move(request)); | 3010 impl->frame_host_associated_binding_.Bind(std::move(request)); |
3013 }; | 3011 }; |
3014 static_cast<AssociatedInterfaceRegistry*>(associated_registry_.get()) | 3012 static_cast<AssociatedInterfaceRegistry*>(associated_registry_.get()) |
3015 ->AddInterface(base::Bind(make_binding, base::Unretained(this))); | 3013 ->AddInterface(base::Bind(make_binding, base::Unretained(this))); |
3016 | 3014 |
3017 ServiceManagerConnection* service_manager_connection = | 3015 ServiceManagerConnection* service_manager_connection = |
3018 BrowserContext::GetServiceManagerConnectionFor( | 3016 BrowserContext::GetServiceManagerConnectionFor( |
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3325 Send(new FrameMsg_RunFileChooserResponse(routing_id_, files)); | 3323 Send(new FrameMsg_RunFileChooserResponse(routing_id_, files)); |
3326 } | 3324 } |
3327 | 3325 |
3328 bool RenderFrameHostImpl::HasSelection() { | 3326 bool RenderFrameHostImpl::HasSelection() { |
3329 return has_selection_; | 3327 return has_selection_; |
3330 } | 3328 } |
3331 | 3329 |
3332 void RenderFrameHostImpl::GetInterfaceProvider( | 3330 void RenderFrameHostImpl::GetInterfaceProvider( |
3333 service_manager::mojom::InterfaceProviderRequest interfaces) { | 3331 service_manager::mojom::InterfaceProviderRequest interfaces) { |
3334 service_manager::Identity child_identity = GetProcess()->GetChildIdentity(); | 3332 service_manager::Identity child_identity = GetProcess()->GetChildIdentity(); |
3335 child_identity.set_user_id( | |
3336 BrowserContext::GetServiceUserIdFor(GetProcess()->GetBrowserContext())); | |
3337 service_manager::Connector* connector = | 3333 service_manager::Connector* connector = |
3338 BrowserContext::GetConnectorFor(GetProcess()->GetBrowserContext()); | 3334 BrowserContext::GetConnectorFor(GetProcess()->GetBrowserContext()); |
3339 connector->FilterInterfaces( | 3335 connector->FilterInterfaces( |
3340 mojom::kNavigation_FrameSpec, child_identity, std::move(interfaces), | 3336 mojom::kNavigation_FrameSpec, child_identity, std::move(interfaces), |
3341 interface_provider_bindings_.CreateInterfacePtrAndBind(this)); | 3337 interface_provider_bindings_.CreateInterfacePtrAndBind(this)); |
3342 } | 3338 } |
3343 | 3339 |
3344 #if BUILDFLAG(USE_EXTERNAL_POPUP_MENU) | 3340 #if BUILDFLAG(USE_EXTERNAL_POPUP_MENU) |
3345 #if defined(OS_MACOSX) | 3341 #if defined(OS_MACOSX) |
3346 | 3342 |
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3635 | 3631 |
3636 void RenderFrameHostImpl::OnMediaInterfaceFactoryConnectionError() { | 3632 void RenderFrameHostImpl::OnMediaInterfaceFactoryConnectionError() { |
3637 DCHECK(media_interface_proxy_); | 3633 DCHECK(media_interface_proxy_); |
3638 media_interface_proxy_.reset(); | 3634 media_interface_proxy_.reset(); |
3639 } | 3635 } |
3640 | 3636 |
3641 void RenderFrameHostImpl::GetInterface( | 3637 void RenderFrameHostImpl::GetInterface( |
3642 const std::string& interface_name, | 3638 const std::string& interface_name, |
3643 mojo::ScopedMessagePipeHandle interface_pipe) { | 3639 mojo::ScopedMessagePipeHandle interface_pipe) { |
3644 if (interface_registry_.get()) { | 3640 if (interface_registry_.get()) { |
3645 interface_registry_->BindInterface(interface_name, | 3641 interface_registry_->BindInterface(GetProcess()->GetChildIdentity(), |
| 3642 interface_name, |
3646 std::move(interface_pipe)); | 3643 std::move(interface_pipe)); |
3647 } | 3644 } |
3648 } | 3645 } |
3649 | 3646 |
3650 std::unique_ptr<NavigationHandleImpl> | 3647 std::unique_ptr<NavigationHandleImpl> |
3651 RenderFrameHostImpl::TakeNavigationHandleForCommit( | 3648 RenderFrameHostImpl::TakeNavigationHandleForCommit( |
3652 const FrameHostMsg_DidCommitProvisionalLoad_Params& params) { | 3649 const FrameHostMsg_DidCommitProvisionalLoad_Params& params) { |
3653 bool is_browser_initiated = (params.nav_entry_id != 0); | 3650 bool is_browser_initiated = (params.nav_entry_id != 0); |
3654 | 3651 |
3655 if (params.was_within_same_document) { | 3652 if (params.was_within_same_document) { |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3792 } | 3789 } |
3793 | 3790 |
3794 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( | 3791 void RenderFrameHostImpl::ForwardGetInterfaceToRenderFrame( |
3795 const std::string& interface_name, | 3792 const std::string& interface_name, |
3796 mojo::ScopedMessagePipeHandle pipe) { | 3793 mojo::ScopedMessagePipeHandle pipe) { |
3797 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); | 3794 GetRemoteInterfaces()->GetInterface(interface_name, std::move(pipe)); |
3798 } | 3795 } |
3799 #endif | 3796 #endif |
3800 | 3797 |
3801 } // namespace content | 3798 } // namespace content |
OLD | NEW |