diff options
Diffstat (limited to 'mojo/services/public/js/application.js')
-rw-r--r-- | mojo/services/public/js/application.js | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/mojo/services/public/js/application.js b/mojo/services/public/js/application.js index ed41628..d4aa1e6 100644 --- a/mojo/services/public/js/application.js +++ b/mojo/services/public/js/application.js @@ -4,30 +4,41 @@ define("mojo/services/public/js/application", [ "mojo/public/js/bindings", + "mojo/public/js/core", + "mojo/public/js/connection", "mojo/public/js/threading", + "mojo/public/interfaces/application/application.mojom", "mojo/services/public/js/service_provider", "mojo/services/public/js/shell", -], function(bindings, threading, serviceProvider, shell) { +], function(bindings, core, connection, threading, applicationMojom, serviceProvider, shell) { + const ApplicationInterface = applicationMojom.Application; const ProxyBindings = bindings.ProxyBindings; const ServiceProvider = serviceProvider.ServiceProvider; const Shell = shell.Shell; class Application { - constructor(shellHandle, url) { + constructor(appRequestHandle, url) { this.url = url; this.serviceProviders = []; this.exposedServiceProviders = []; - this.shellHandle_ = shellHandle; - this.shell = new Shell(shellHandle, { - initialize: this.initialize.bind(this), - acceptConnection: this.doAcceptConnection.bind(this), - }); + this.appRequestHandle_ = appRequestHandle; + this.appStub_ = + connection.bindHandleToStub(appRequestHandle, ApplicationInterface); + bindings.StubBindings(this.appStub_).delegate = { + initialize: this.doInitialize.bind(this), + acceptConnection: this.doAcceptConnection.bind(this), + }; } - initialize(args) { + doInitialize(shellProxy, args) { + this.shellProxy_ = shellProxy; + this.shell = new Shell(shellProxy); + this.initialize(args); } + initialize(args) {} + // The mojom signature of this function is: // AcceptConnection(string requestor_url, // ServiceProvider&? services, @@ -39,23 +50,20 @@ define("mojo/services/public/js/application", [ doAcceptConnection(requestorUrl, servicesRequest, exposedServicesProxy) { // Construct a new js ServiceProvider that can make outgoing calls on // exposedServicesProxy. - var serviceProvider = new ServiceProvider(exposedServicesProxy); + var serviceProvider = + new ServiceProvider(servicesRequest, exposedServicesProxy); this.serviceProviders.push(serviceProvider); - - // Then associate incoming calls with the serviceProvider. - ProxyBindings(servicesRequest).setLocalDelegate(serviceProvider); - this.acceptConnection(requestorUrl, serviceProvider); } - acceptConnection(requestorUrl, serviceProvider) { - } + acceptConnection(requestorUrl, serviceProvider) {} quit() { this.serviceProviders.forEach(function(sp) { sp.close(); }); this.shell.close(); + core.close(this.appRequestHandle_); threading.quit(); } } |