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.
5 define("mojo/services/public/js/shell", [
6 "mojo/public/js/bindings",
8 "mojo/public/js/connection",
9 "mojo/public/interfaces/application/shell.mojom",
10 "mojo/public/interfaces/application/service_provider.mojom",
11 "mojo/services/public/js/service_exchange",
12 ], function(bindings, core, connection, shellMojom, spMojom, serviceExchange) {
14 const ProxyBindings = bindings.ProxyBindings;
15 const StubBindings = bindings.StubBindings;
16 const ServiceExchange = serviceExchange.ServiceExchange;
17 const ServiceProviderInterface = spMojom.ServiceProvider;
18 const ShellInterface = shellMojom.Shell;
21 constructor(shellProxy) {
22 this.shellProxy = shellProxy;
23 this.applications_ = new Map();
26 connectToApplication(url) {
27 var application = this.applications_.get(url);
31 var application = new ServiceExchange();
32 this.shellProxy.connectToApplication(url,
33 function(servicesProxy) {
34 application.proxy = servicesProxy;
36 function(exposedServicesStub) {
37 application.stub = exposedServicesStub;
38 StubBindings(exposedServicesStub).delegate = application;
40 this.applications_.set(url, application);
44 connectToService(url, service) {
45 return this.connectToApplication(url).requestService(service);
49 this.applications_.forEach(function(application, url) {
52 ProxyBindings(this.shellProxy).close();
53 this.applications_.clear();
58 exports.Shell = Shell;