Index: mojo/public/java/application/src/org/chromium/mojo/application/ShellHelper.java |
diff --git a/mojo/public/java/application/src/org/chromium/mojo/application/ShellHelper.java b/mojo/public/java/application/src/org/chromium/mojo/application/ShellHelper.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..705e22e12c1b9ff6f339130782993da2896a4bf9 |
--- /dev/null |
+++ b/mojo/public/java/application/src/org/chromium/mojo/application/ShellHelper.java |
@@ -0,0 +1,40 @@ |
+// Copyright 2015 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. |
+ |
+package org.chromium.mojo.application; |
+ |
+import org.chromium.mojo.bindings.Interface; |
+import org.chromium.mojo.bindings.Interface.Proxy; |
+import org.chromium.mojo.bindings.InterfaceRequest; |
+import org.chromium.mojo.system.Core; |
+import org.chromium.mojo.system.Pair; |
+import org.chromium.mojom.mojo.ServiceProvider; |
+import org.chromium.mojom.mojo.Shell; |
+ |
+/** |
+ * Helper class to help connecting to other application through the shell. |
+ */ |
+public class ShellHelper { |
+ /** |
+ * Connects to a service in another application. |
+ * |
+ * @param core Implementation of the {@link Core} api. |
+ * @param shell Instance of the shell. |
+ * @param application URL to the application to use. |
+ * @param manager {@link org.chromium.mojo.bindings.Interface.Manager} for the service to |
+ * connect to. |
+ * @return a proxy to the service. |
+ */ |
+ public static <I extends Interface, P extends Proxy> P connectToService( |
+ Core core, Shell shell, String application, Interface.Manager<I, P> manager) { |
+ Pair<ServiceProvider.Proxy, InterfaceRequest<ServiceProvider>> providerRequest = |
+ ServiceProvider.MANAGER.getInterfaceRequest(core); |
+ try (ServiceProvider.Proxy provider = providerRequest.first) { |
+ shell.connectToApplication(application, providerRequest.second, null); |
+ Pair<P, InterfaceRequest<I>> serviceRequest = manager.getInterfaceRequest(core); |
+ provider.connectToService(manager.getName(), serviceRequest.second.passHandle()); |
+ return serviceRequest.first; |
+ } |
+ } |
+} |