| Index: third_party/mojo/src/mojo/public/java/application/src/org/chromium/mojo/application/ApplicationConnection.java
|
| diff --git a/third_party/mojo/src/mojo/public/java/application/src/org/chromium/mojo/application/ApplicationConnection.java b/third_party/mojo/src/mojo/public/java/application/src/org/chromium/mojo/application/ApplicationConnection.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b6676c6ff0ac317f0e4551d9e3b1dfdf98ca5953
|
| --- /dev/null
|
| +++ b/third_party/mojo/src/mojo/public/java/application/src/org/chromium/mojo/application/ApplicationConnection.java
|
| @@ -0,0 +1,108 @@
|
| +// 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.system.MessagePipeHandle;
|
| +import org.chromium.mojo.system.MojoException;
|
| +import org.chromium.mojom.mojo.ServiceProvider;
|
| +
|
| +import java.io.Closeable;
|
| +import java.util.HashMap;
|
| +import java.util.Map;
|
| +
|
| +/**
|
| + * Represents a connection to another application.
|
| + */
|
| +public class ApplicationConnection implements Closeable {
|
| + private final String mConnectionUrl;
|
| + private final ServiceProvider mExposedServices;
|
| + private final String mRequestorUrl;
|
| + private final ServiceProviderImpl mServiceProviderImpl;
|
| +
|
| + /**
|
| + * @param requestorUrl URL of the application requesting this connection.
|
| + * @param exposedServices ServiceProvider for services exposed by the remote application.
|
| + */
|
| + public ApplicationConnection(
|
| + String requestorUrl, ServiceProvider exposedServices, String connectionUrl) {
|
| + mRequestorUrl = requestorUrl;
|
| + mExposedServices = exposedServices;
|
| + mConnectionUrl = connectionUrl;
|
| + mServiceProviderImpl = new ServiceProviderImpl();
|
| + }
|
| +
|
| + /**
|
| + * @return URL of the application requesting this connection.
|
| + */
|
| + public String getRequestorUrl() {
|
| + return mRequestorUrl;
|
| + }
|
| +
|
| + /**
|
| + * @return URL that was used by the source application to establish this connection.
|
| + */
|
| + public String connectionUrl() {
|
| + return mConnectionUrl;
|
| + }
|
| +
|
| + /**
|
| + * @return ServiceProvider for services exposed by the remote application.
|
| + */
|
| + public ServiceProvider getRemoteServiceProvider() {
|
| + return mExposedServices;
|
| + }
|
| +
|
| + /**
|
| + * Add a new service for this application.
|
| + *
|
| + * @param binder Handle to a ServiceFactoryBinder which contains a service implementation.
|
| + */
|
| + public void addService(ServiceFactoryBinder<? extends Interface> binder) {
|
| + mServiceProviderImpl.addService(binder);
|
| + }
|
| +
|
| + /**
|
| + * @return ServiceProvider for this application.
|
| + */
|
| + public ServiceProvider getLocalServiceProvider() {
|
| + return mServiceProviderImpl;
|
| + }
|
| +
|
| + @Override
|
| + public void close() {
|
| + mServiceProviderImpl.close();
|
| + if (mExposedServices != null) {
|
| + mExposedServices.close();
|
| + }
|
| + }
|
| +}
|
| +
|
| +class ServiceProviderImpl implements ServiceProvider {
|
| + private final Map<String, ServiceFactoryBinder<? extends Interface>> mNameToServiceMap =
|
| + new HashMap<String, ServiceFactoryBinder<? extends Interface>>();
|
| +
|
| + ServiceProviderImpl() {}
|
| +
|
| + public void addService(ServiceFactoryBinder<? extends Interface> binder) {
|
| + mNameToServiceMap.put(binder.getInterfaceName(), binder);
|
| + }
|
| +
|
| + @Override
|
| + public void connectToService(String interfaceName, MessagePipeHandle pipe) {
|
| + if (mNameToServiceMap.containsKey(interfaceName)) {
|
| + mNameToServiceMap.get(interfaceName).bindNewInstanceToMessagePipe(pipe);
|
| + } else {
|
| + pipe.close();
|
| + }
|
| + }
|
| +
|
| + @Override
|
| + public void close() {}
|
| +
|
| + @Override
|
| + public void onConnectionError(MojoException e) {}
|
| +}
|
| +;
|
|
|