| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "content/renderer/mojo/service_registry_js_wrapper.h" |
| |
| #include "content/common/mojo/service_registry_impl.h" |
| #include "content/public/common/service_registry.h" |
| #include "third_party/mojo/src/mojo/edk/js/handle.h" |
| |
| namespace content { |
| |
| gin::WrapperInfo ServiceRegistryJsWrapper::kWrapperInfo = { |
| gin::kEmbedderNativeGin}; |
| const char ServiceRegistryJsWrapper::kModuleName[] = |
| "content/public/renderer/service_provider"; |
| |
| ServiceRegistryJsWrapper::~ServiceRegistryJsWrapper() { |
| } |
| |
| // static |
| gin::Handle<ServiceRegistryJsWrapper> ServiceRegistryJsWrapper::Create( |
| v8::Isolate* isolate, |
| ServiceRegistry* service_registry) { |
| return gin::CreateHandle( |
| isolate, |
| new ServiceRegistryJsWrapper( |
| static_cast<ServiceRegistryImpl*>(service_registry)->GetWeakPtr())); |
| } |
| |
| gin::ObjectTemplateBuilder ServiceRegistryJsWrapper::GetObjectTemplateBuilder( |
| v8::Isolate* isolate) { |
| return Wrappable<ServiceRegistryJsWrapper>::GetObjectTemplateBuilder(isolate). |
| SetMethod("connectToService", |
| &ServiceRegistryJsWrapper::ConnectToService); |
| } |
| |
| mojo::Handle ServiceRegistryJsWrapper::ConnectToService( |
| const std::string& service_name) { |
| mojo::MessagePipe pipe; |
| if (service_registry_) |
| service_registry_->ConnectToRemoteService(service_name, |
| pipe.handle0.Pass()); |
| return pipe.handle1.release(); |
| } |
| |
| ServiceRegistryJsWrapper::ServiceRegistryJsWrapper( |
| base::WeakPtr<ServiceRegistry> service_registry) |
| : service_registry_(service_registry) { |
| } |
| |
| } // namespace content |