1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "content/renderer/mojo/service_registry_js_wrapper.h" 6 7 #include "content/common/mojo/service_registry_impl.h" 8 #include "content/public/common/service_registry.h" 9 #include "mojo/bindings/js/handle.h" 10 11 namespace content { 12 13 gin::WrapperInfo ServiceRegistryJsWrapper::kWrapperInfo = { 14 gin::kEmbedderNativeGin}; 15 const char ServiceRegistryJsWrapper::kModuleName[] = 16 "content/public/renderer/service_provider"; 17 18 ServiceRegistryJsWrapper::~ServiceRegistryJsWrapper() { 19 } 20 21 // static 22 gin::Handle<ServiceRegistryJsWrapper> ServiceRegistryJsWrapper::Create( 23 v8::Isolate* isolate, 24 ServiceRegistry* service_registry) { 25 return gin::CreateHandle( 26 isolate, 27 new ServiceRegistryJsWrapper( 28 static_cast<ServiceRegistryImpl*>(service_registry)->GetWeakPtr())); 29 } 30 31 gin::ObjectTemplateBuilder ServiceRegistryJsWrapper::GetObjectTemplateBuilder( 32 v8::Isolate* isolate) { 33 return Wrappable<ServiceRegistryJsWrapper>::GetObjectTemplateBuilder(isolate). 34 SetMethod("connectToService", 35 &ServiceRegistryJsWrapper::ConnectToService); 36 } 37 38 mojo::Handle ServiceRegistryJsWrapper::ConnectToService( 39 const std::string& service_name) { 40 mojo::MessagePipe pipe; 41 if (service_registry_) 42 service_registry_->ConnectToRemoteService(service_name, 43 pipe.handle0.Pass()); 44 return pipe.handle1.release(); 45 } 46 47 ServiceRegistryJsWrapper::ServiceRegistryJsWrapper( 48 base::WeakPtr<ServiceRegistry> service_registry) 49 : service_registry_(service_registry) { 50 } 51 52 } // namespace content 53