summaryrefslogtreecommitdiffstats
path: root/mojo/shell/public/java/src/org/chromium/mojo/application/ShellHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'mojo/shell/public/java/src/org/chromium/mojo/application/ShellHelper.java')
-rw-r--r--mojo/shell/public/java/src/org/chromium/mojo/application/ShellHelper.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/mojo/shell/public/java/src/org/chromium/mojo/application/ShellHelper.java b/mojo/shell/public/java/src/org/chromium/mojo/application/ShellHelper.java
new file mode 100644
index 0000000..705e22e
--- /dev/null
+++ b/mojo/shell/public/java/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;
+ }
+ }
+}