Index: content/gpu/gpu_child_thread.cc |
diff --git a/content/gpu/gpu_child_thread.cc b/content/gpu/gpu_child_thread.cc |
index f2ad57e72cf35fc1b8d1729bf3e3297ad92fae2f..f2083af5fda1e0bd04eae8590db7ed8276110ced 100644 |
--- a/content/gpu/gpu_child_thread.cc |
+++ b/content/gpu/gpu_child_thread.cc |
@@ -17,13 +17,14 @@ |
#include "content/public/common/content_switches.h" |
#include "content/public/common/service_manager_connection.h" |
#include "content/public/common/service_names.mojom.h" |
+#include "content/public/common/simple_connection_filter.h" |
#include "content/public/gpu/content_gpu_client.h" |
#include "gpu/command_buffer/common/activity_flags.h" |
#include "gpu/ipc/service/gpu_watchdog_thread.h" |
#include "ipc/ipc_sync_message_filter.h" |
#include "media/gpu/ipc/service/media_gpu_channel_manager.h" |
+#include "services/service_manager/public/cpp/binder_registry.h" |
#include "services/service_manager/public/cpp/connector.h" |
-#include "services/service_manager/public/cpp/interface_registry.h" |
#include "services/ui/gpu/interfaces/gpu_service.mojom.h" |
#if defined(USE_OZONE) |
@@ -47,6 +48,7 @@ ChildThreadImpl::Options GetOptions() { |
builder.AddStartupFilter(message_filter); |
#endif |
+ builder.AutoStartServiceManagerConnection(false); |
builder.ConnectToBrowser(true); |
return builder.Build(); |
@@ -119,10 +121,6 @@ void GpuChildThread::Init(const base::Time& process_start_time) { |
media::SetMediaDrmBridgeClient( |
GetContentClient()->GetMediaDrmBridgeClient()); |
#endif |
- // We don't want to process any incoming interface requests until |
- // OnInitialize() is invoked. |
- GetInterfaceRegistry()->PauseBinding(); |
- |
if (GetContentClient()->gpu()) // NULL in tests. |
GetContentClient()->gpu()->Initialize(this); |
AssociatedInterfaceRegistry* registry = &associated_interfaces_; |
@@ -196,16 +194,17 @@ void GpuChildThread::CreateGpuService( |
service_factory_.reset(new GpuServiceFactory( |
gpu_service_->media_gpu_channel_manager()->AsWeakPtr())); |
- GetInterfaceRegistry()->AddInterface(base::Bind( |
- &GpuChildThread::BindServiceFactoryRequest, base::Unretained(this))); |
+ auto registry = base::MakeUnique<service_manager::BinderRegistry>(); |
+ registry->AddInterface(base::Bind(&GpuChildThread::BindServiceFactoryRequest, |
+ base::Unretained(this)), |
+ base::ThreadTaskRunnerHandle::Get()); |
+ GetServiceManagerConnection()->AddConnectionFilter( |
+ base::MakeUnique<SimpleConnectionFilter>(std::move(registry))); |
- if (GetContentClient()->gpu()) { // NULL in tests. |
- GetContentClient()->gpu()->ExposeInterfacesToBrowser(GetInterfaceRegistry(), |
- gpu_preferences); |
- GetContentClient()->gpu()->ConsumeInterfacesFromBrowser(GetConnector()); |
- } |
+ if (GetContentClient()->gpu()) // NULL in tests. |
+ GetContentClient()->gpu()->GpuServiceInitialized(gpu_preferences); |
- GetInterfaceRegistry()->ResumeBinding(); |
+ StartServiceManagerConnection(); |
} |
void GpuChildThread::CreateFrameSinkManager( |