| Index: third_party/mojo/src/mojo/public/java/bindings/src/org/chromium/mojo/bindings/Interface.java
|
| diff --git a/third_party/mojo/src/mojo/public/java/bindings/src/org/chromium/mojo/bindings/Interface.java b/third_party/mojo/src/mojo/public/java/bindings/src/org/chromium/mojo/bindings/Interface.java
|
| index c3b26a205dd6e13580ec1824ea782b8aee4c0583..4c828db04c22ed67fc34d513bc494616cb198b2d 100644
|
| --- a/third_party/mojo/src/mojo/public/java/bindings/src/org/chromium/mojo/bindings/Interface.java
|
| +++ b/third_party/mojo/src/mojo/public/java/bindings/src/org/chromium/mojo/bindings/Interface.java
|
| @@ -30,84 +30,129 @@ public interface Interface extends ConnectionErrorHandler, Closeable {
|
| * {@link MessageReceiverWithResponder}, along with the response callback if needed.
|
| */
|
| public interface Proxy extends Interface {
|
| -
|
| /**
|
| - * Set the {@link ConnectionErrorHandler} that will be notified of errors.
|
| + * Class allowing to interact with the proxy itself.
|
| */
|
| - public void setErrorHandler(ConnectionErrorHandler errorHandler);
|
| + public interface Handler extends Closeable {
|
| + /**
|
| + * Sets the {@link ConnectionErrorHandler} that will be notified of errors.
|
| + */
|
| + public void setErrorHandler(ConnectionErrorHandler errorHandler);
|
| + }
|
|
|
| + /**
|
| + * Returns the {@link Handler} object allowing to interact with the proxy itself.
|
| + */
|
| + public Handler getProxyHandler();
|
| }
|
|
|
| /**
|
| * Base implementation of {@link Proxy}.
|
| */
|
| abstract class AbstractProxy implements Proxy {
|
| -
|
| /**
|
| - * The {@link Core} implementation to use.
|
| + * Implementation of {@link Handler}.
|
| */
|
| - private final Core mCore;
|
| + protected static class HandlerImpl implements Proxy.Handler, ConnectionErrorHandler {
|
| + /**
|
| + * The {@link Core} implementation to use.
|
| + */
|
| + private final Core mCore;
|
| +
|
| + /**
|
| + * The {@link MessageReceiverWithResponder} that will receive a serialized message for
|
| + * each method call.
|
| + */
|
| + private final MessageReceiverWithResponder mMessageReceiver;
|
| +
|
| + /**
|
| + * The {@link ConnectionErrorHandler} that will be notified of errors.
|
| + */
|
| + private ConnectionErrorHandler mErrorHandler = null;
|
| +
|
| + /**
|
| + * Constructor.
|
| + *
|
| + * @param core the Core implementation used to create pipes and access the async waiter.
|
| + * @param messageReceiver the message receiver to send message to.
|
| + */
|
| + protected HandlerImpl(Core core, MessageReceiverWithResponder messageReceiver) {
|
| + this.mCore = core;
|
| + this.mMessageReceiver = messageReceiver;
|
| + }
|
|
|
| - /**
|
| - * The {@link MessageReceiverWithResponder} that will receive a serialized message for each
|
| - * method call.
|
| - */
|
| - private final MessageReceiverWithResponder mMessageReceiver;
|
| + /**
|
| + * Returns the message receiver to send message to.
|
| + */
|
| + public MessageReceiverWithResponder getMessageReceiver() {
|
| + return mMessageReceiver;
|
| + }
|
|
|
| - /**
|
| - * The {@link ConnectionErrorHandler} that will be notified of errors.
|
| - */
|
| - private ConnectionErrorHandler mErrorHandler = null;
|
| + /**
|
| + * Returns the Core implementation.
|
| + */
|
| + public Core getCore() {
|
| + return mCore;
|
| + }
|
|
|
| - /**
|
| - * Constructor.
|
| - *
|
| - * @param core the Core implementation used to create pipes and access the async waiter.
|
| - * @param messageReceiver the message receiver to send message to.
|
| - */
|
| - protected AbstractProxy(Core core, MessageReceiverWithResponder messageReceiver) {
|
| - this.mCore = core;
|
| - this.mMessageReceiver = messageReceiver;
|
| - }
|
| + /**
|
| + * Sets the {@link ConnectionErrorHandler} that will be notified of errors.
|
| + */
|
| + @Override
|
| + public void setErrorHandler(ConnectionErrorHandler errorHandler) {
|
| + this.mErrorHandler = errorHandler;
|
| + }
|
|
|
| - /**
|
| - * Returns the message receiver to send message to.
|
| - */
|
| - protected MessageReceiverWithResponder getMessageReceiver() {
|
| - return mMessageReceiver;
|
| + /**
|
| + * @see ConnectionErrorHandler#onConnectionError(MojoException)
|
| + */
|
| + @Override
|
| + public void onConnectionError(MojoException e) {
|
| + if (mErrorHandler != null) {
|
| + mErrorHandler.onConnectionError(e);
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * @see Closeable#close()
|
| + */
|
| + @Override
|
| + public void close() {
|
| + mMessageReceiver.close();
|
| + }
|
| }
|
|
|
| /**
|
| - * Returns the Core implementation.
|
| + * The handler associated with this proxy.
|
| */
|
| - protected Core getCore() {
|
| - return mCore;
|
| + private final HandlerImpl mHandler;
|
| +
|
| + protected AbstractProxy(Core core, MessageReceiverWithResponder messageReceiver) {
|
| + mHandler = new HandlerImpl(core, messageReceiver);
|
| }
|
|
|
| /**
|
| - * @see Proxy#setErrorHandler(ConnectionErrorHandler)
|
| + * @see Interface#close()
|
| */
|
| @Override
|
| - public void setErrorHandler(ConnectionErrorHandler errorHandler) {
|
| - this.mErrorHandler = errorHandler;
|
| + public void close() {
|
| + mHandler.close();
|
| }
|
|
|
| /**
|
| - * @see ConnectionErrorHandler#onConnectionError(MojoException)
|
| + * @see Proxy#getProxyHandler()
|
| */
|
| @Override
|
| - public void onConnectionError(MojoException e) {
|
| - if (mErrorHandler != null) {
|
| - mErrorHandler.onConnectionError(e);
|
| - }
|
| + public HandlerImpl getProxyHandler() {
|
| + return mHandler;
|
| }
|
|
|
| /**
|
| - * @see Closeable#close()
|
| + * @see ConnectionErrorHandler#onConnectionError(org.chromium.mojo.system.MojoException)
|
| */
|
| @Override
|
| - public void close() {
|
| - mMessageReceiver.close();
|
| + public void onConnectionError(MojoException e) {
|
| + mHandler.onConnectionError(e);
|
| }
|
| }
|
|
|
|
|