Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(105)

Side by Side Diff: content/child/child_thread_impl.cc

Issue 2456493003: Add frame-specific InterfaceProviderSpec. (Closed)
Patch Set: . Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/child/child_thread_impl.h" 5 #include "content/child/child_thread_impl.h"
6 6
7 #include <signal.h> 7 #include <signal.h>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 639 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 void ChildThreadImpl::RecordComputedAction(const std::string& action) { 650 void ChildThreadImpl::RecordComputedAction(const std::string& action) {
651 NOTREACHED(); 651 NOTREACHED();
652 } 652 }
653 653
654 ServiceManagerConnection* ChildThreadImpl::GetServiceManagerConnection() { 654 ServiceManagerConnection* ChildThreadImpl::GetServiceManagerConnection() {
655 return service_manager_connection_.get(); 655 return service_manager_connection_.get();
656 } 656 }
657 657
658 service_manager::InterfaceRegistry* ChildThreadImpl::GetInterfaceRegistry() { 658 service_manager::InterfaceRegistry* ChildThreadImpl::GetInterfaceRegistry() {
659 if (!interface_registry_.get()) { 659 if (!interface_registry_.get()) {
660 interface_registry_ = base::MakeUnique<service_manager::InterfaceRegistry>( 660 interface_registry_ =
661 service_manager::Identity(), service_manager::InterfaceProviderSpec()); 661 base::MakeUnique<service_manager::InterfaceRegistry>();
662 } 662 }
663 return interface_registry_.get(); 663 return interface_registry_.get();
664 } 664 }
665 665
666 service_manager::InterfaceProvider* ChildThreadImpl::GetRemoteInterfaces() { 666 service_manager::InterfaceProvider* ChildThreadImpl::GetRemoteInterfaces() {
667 if (browser_connection_) 667 if (browser_connection_)
668 return browser_connection_->GetRemoteInterfaces(); 668 return browser_connection_->GetRemoteInterfaces();
669 669
670 if (!remote_interfaces_.get()) 670 if (!remote_interfaces_.get())
671 remote_interfaces_.reset(new service_manager::InterfaceProvider); 671 remote_interfaces_.reset(new service_manager::InterfaceProvider);
672 return remote_interfaces_.get(); 672 return remote_interfaces_.get();
673 } 673 }
674 674
675 const service_manager::ServiceInfo&
676 ChildThreadImpl::GetChildServiceInfo() const {
677 return child_info_;
678 }
679
680 const service_manager::ServiceInfo&
681 ChildThreadImpl::GetBrowserServiceInfo() const {
682 return browser_info_;
683 }
684
675 IPC::MessageRouter* ChildThreadImpl::GetRouter() { 685 IPC::MessageRouter* ChildThreadImpl::GetRouter() {
676 DCHECK(message_loop_->task_runner()->BelongsToCurrentThread()); 686 DCHECK(message_loop_->task_runner()->BelongsToCurrentThread());
677 return &router_; 687 return &router_;
678 } 688 }
679 689
680 mojom::RouteProvider* ChildThreadImpl::GetRemoteRouteProvider() { 690 mojom::RouteProvider* ChildThreadImpl::GetRemoteRouteProvider() {
681 if (!remote_route_provider_) { 691 if (!remote_route_provider_) {
682 DCHECK(channel_); 692 DCHECK(channel_);
683 channel_->GetRemoteAssociatedInterface(&remote_route_provider_); 693 channel_->GetRemoteAssociatedInterface(&remote_route_provider_);
684 } 694 }
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
758 768
759 if (msg.routing_id() == MSG_ROUTING_CONTROL) 769 if (msg.routing_id() == MSG_ROUTING_CONTROL)
760 return OnControlMessageReceived(msg); 770 return OnControlMessageReceived(msg);
761 771
762 return router_.OnMessageReceived(msg); 772 return router_.OnMessageReceived(msg);
763 } 773 }
764 774
765 void ChildThreadImpl::StartServiceManagerConnection() { 775 void ChildThreadImpl::StartServiceManagerConnection() {
766 DCHECK(service_manager_connection_); 776 DCHECK(service_manager_connection_);
767 service_manager_connection_->Start(); 777 service_manager_connection_->Start();
778 // We don't care about storing the id, since if this pipe closes we're toast.
779 service_manager_connection_->AddOnConnectHandler(
780 base::Bind(&ChildThreadImpl::OnConnect, weak_factory_.GetWeakPtr()));
768 } 781 }
769 782
770 bool ChildThreadImpl::OnControlMessageReceived(const IPC::Message& msg) { 783 bool ChildThreadImpl::OnControlMessageReceived(const IPC::Message& msg) {
771 return false; 784 return false;
772 } 785 }
773 786
774 void ChildThreadImpl::OnProcessBackgrounded(bool backgrounded) { 787 void ChildThreadImpl::OnProcessBackgrounded(bool backgrounded) {
775 // Set timer slack to maximum on main thread when in background. 788 // Set timer slack to maximum on main thread when in background.
776 base::TimerSlack timer_slack = base::TIMER_SLACK_NONE; 789 base::TimerSlack timer_slack = base::TIMER_SLACK_NONE;
777 if (backgrounded) 790 if (backgrounded)
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
861 void ChildThreadImpl::GetAssociatedInterface( 874 void ChildThreadImpl::GetAssociatedInterface(
862 const std::string& name, 875 const std::string& name,
863 mojom::AssociatedInterfaceAssociatedRequest request) { 876 mojom::AssociatedInterfaceAssociatedRequest request) {
864 int32_t routing_id = static_cast<int32_t>(reinterpret_cast<uintptr_t>( 877 int32_t routing_id = static_cast<int32_t>(reinterpret_cast<uintptr_t>(
865 associated_interface_provider_bindings_.dispatch_context())); 878 associated_interface_provider_bindings_.dispatch_context()));
866 Listener* route = router_.GetRoute(routing_id); 879 Listener* route = router_.GetRoute(routing_id);
867 if (route) 880 if (route)
868 route->OnAssociatedInterfaceRequest(name, request.PassHandle()); 881 route->OnAssociatedInterfaceRequest(name, request.PassHandle());
869 } 882 }
870 883
884 void ChildThreadImpl::OnConnect(
885 const service_manager::ServiceInfo& local_info,
886 const service_manager::ServiceInfo& remote_info) {
887 if (remote_info.identity.name() != kBrowserServiceName)
888 return;
889 child_info_ = local_info;
890 browser_info_ = remote_info;
891 }
892
871 bool ChildThreadImpl::IsInBrowserProcess() const { 893 bool ChildThreadImpl::IsInBrowserProcess() const {
872 return static_cast<bool>(browser_process_io_runner_); 894 return static_cast<bool>(browser_process_io_runner_);
873 } 895 }
874 896
875 } // namespace content 897 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698