| Index: mojo/services/public/js/service_provider.js
|
| diff --git a/mojo/services/public/js/service_provider.js b/mojo/services/public/js/service_provider.js
|
| index 956658325265353c7c6bcadf70abbf838fddb231..a6a81ca3b9b75f5a900ac5b32fa3bb8341cb69b6 100644
|
| --- a/mojo/services/public/js/service_provider.js
|
| +++ b/mojo/services/public/js/service_provider.js
|
| @@ -18,10 +18,12 @@ define("mojo/services/public/js/service_provider", [
|
| }
|
|
|
| class ServiceProvider {
|
| - constructor(service) {
|
| - this.proxy = service;
|
| + constructor(servicesRequest, exposedServicesProxy) {
|
| + this.proxy = exposedServicesProxy;
|
| this.providers_ = new Map(); // serviceName => see provideService() below
|
| this.pendingRequests_ = new Map(); // serviceName => serviceHandle
|
| + if (servicesRequest)
|
| + StubBindings(servicesRequest).delegate = this;
|
| }
|
|
|
| // Incoming requests
|
| @@ -34,11 +36,10 @@ define("mojo/services/public/js/service_provider", [
|
| this.pendingRequests_.set(serviceName, serviceHandle);
|
| return;
|
| }
|
| - var proxy = connection.bindProxyHandle(
|
| - serviceHandle, provider.service, provider.service.client);
|
| - if (ProxyBindings(proxy).local)
|
| - ProxyBindings(proxy).setLocalDelegate(new provider.factory(proxy));
|
| - provider.connections.push(ProxyBindings(proxy).connection);
|
| +
|
| + var stub = connection.bindHandleToStub(serviceHandle, provider.service);
|
| + StubBindings(stub).delegate = new provider.factory();
|
| + provider.connections.push(StubBindings(stub).connection);
|
| }
|
|
|
| provideService(service, factory) {
|
| @@ -66,12 +67,11 @@ define("mojo/services/public/js/service_provider", [
|
| if (!clientImpl && interfaceObject.client)
|
| throw new Error("Client implementation must be provided");
|
|
|
| - var remoteProxy;
|
| - var clientFactory = function(x) {remoteProxy = x; return clientImpl;};
|
| - var messagePipeHandle = connection.bindProxyClient(
|
| - clientFactory, interfaceObject.client, interfaceObject);
|
| - this.proxy.connectToService(interfaceObject.name, messagePipeHandle);
|
| - return remoteProxy;
|
| + var serviceProxy;
|
| + var serviceHandle = connection.bindProxy(
|
| + function(sp) {serviceProxy = sp;}, interfaceObject);
|
| + this.proxy.connectToService(interfaceObject.name, serviceHandle);
|
| + return serviceProxy;
|
| };
|
|
|
| close() {
|
|
|