service_registry_js_wrapper.cc revision 5f1c94371a64b3196d4be9466099bb892df9b88e
15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "content/renderer/mojo/service_registry_js_wrapper.h" 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "content/common/mojo/service_registry_impl.h" 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "content/public/common/service_registry.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "mojo/bindings/js/handle.h" 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace content { 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)gin::WrapperInfo ServiceRegistryJsWrapper::kWrapperInfo = { 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) gin::kEmbedderNativeGin}; 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)const char ServiceRegistryJsWrapper::kModuleName[] = 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "content/public/renderer/service_provider"; 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)ServiceRegistryJsWrapper::~ServiceRegistryJsWrapper() { 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// static 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)gin::Handle<ServiceRegistryJsWrapper> ServiceRegistryJsWrapper::Create( 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) v8::Isolate* isolate, 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ServiceRegistry* service_registry) { 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return gin::CreateHandle( 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) isolate, 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new ServiceRegistryJsWrapper( 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static_cast<ServiceRegistryImpl*>(service_registry)->GetWeakPtr())); 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)gin::ObjectTemplateBuilder ServiceRegistryJsWrapper::GetObjectTemplateBuilder( 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) v8::Isolate* isolate) { 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return Wrappable<ServiceRegistryJsWrapper>::GetObjectTemplateBuilder(isolate). 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SetMethod("connectToService", 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) &ServiceRegistryJsWrapper::ConnectToService); 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)mojo::Handle ServiceRegistryJsWrapper::ConnectToService( 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& service_name) { 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) mojo::MessagePipe pipe; 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (service_registry_) 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) service_registry_->ConnectToRemoteService(service_name, 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) pipe.handle0.Pass()); 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return pipe.handle1.release(); 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)ServiceRegistryJsWrapper::ServiceRegistryJsWrapper( 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::WeakPtr<ServiceRegistry> service_registry) 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) : service_registry_(service_registry) { 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace content 53