| 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( | 
|  |