Index: mojo/services/public/js/shell.js |
diff --git a/mojo/services/public/js/shell.js b/mojo/services/public/js/shell.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..82d52929f16633402f269fdd9ec4135aed1fe914 |
--- /dev/null |
+++ b/mojo/services/public/js/shell.js |
@@ -0,0 +1,43 @@ |
+// 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. |
+ |
+define("mojo/services/public/js/shell", [ |
+ "mojo/public/interfaces/application/service_provider.mojom", |
+ "mojo/services/public/js/service_provider", |
+], function(spInterfaceModule, spModule) { |
+ |
+ class Shell { |
+ constructor(appShell) { |
+ this.appShell_ = appShell; |
+ this.applications_ = new Map(); |
+ } |
+ |
+ connectToApplication(url) { |
+ var application = this.applications_.get(url); |
+ if (application) |
+ return application; |
+ |
+ var proxy = new spInterfaceModule.ServiceProvider.proxyClass; |
+ this.appShell_.connectToApplication(url, proxy); |
+ application = new spModule.ServiceProvider(proxy); |
+ this.applications_.set(url, application); |
+ return application; |
+ } |
+ |
+ connectToService(url, service, client) { |
+ return this.connectToApplication(url).connectToService(service, client); |
+ }; |
+ |
+ close() { |
+ this.applications_.forEach(function(application, url) { |
+ application.close(); |
+ }); |
+ this.applications_.clear(); |
+ } |
+ } |
+ |
+ var exports = {}; |
+ exports.Shell = Shell; |
+ return exports; |
+}); |