Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 92222a00 authored by Sailesh Nepal's avatar Sailesh Nepal Committed by Android (Google) Code Review
Browse files

Merge "More fixes for Connection and RemoteConnection"

parents 80c7a40d 091768c3
Loading
Loading
Loading
Loading
+12 −46
Original line number Diff line number Diff line
@@ -27485,7 +27485,6 @@ package android.telecomm {
    method public abstract void onAudioStateChanged(java.lang.String, android.telecomm.CallAudioState);
    method public final android.os.IBinder onBind(android.content.Intent);
    method public void onPostDialContinue(java.lang.String, boolean);
    method public void onPostDialWait(android.telecomm.Connection, java.lang.String);
    method public abstract void playDtmfTone(java.lang.String, char);
    method public abstract void reject(java.lang.String);
    method public abstract void setIncomingCallId(java.lang.String, android.os.Bundle);
@@ -27617,39 +27616,13 @@ package android.telecomm {
    method public final void setIsConferenceCapable(boolean);
    method public final void setOnHold();
    method public final void setParentConnection(android.telecomm.Connection);
    method public final void setPostDialWait(java.lang.String);
    method public final void setRequestingRingback(boolean);
    method public final void setRinging();
    method public final void setSignal(android.os.Bundle);
    method public static java.lang.String stateToString(int);
  }
  public static abstract interface Connection.Listener {
    method public abstract void onAudioStateChanged(android.telecomm.Connection, android.telecomm.CallAudioState);
    method public abstract void onConferenceCapableChanged(android.telecomm.Connection, boolean);
    method public abstract void onDestroyed(android.telecomm.Connection);
    method public abstract void onDisconnected(android.telecomm.Connection, int, java.lang.String);
    method public abstract void onHandleChanged(android.telecomm.Connection, android.net.Uri);
    method public abstract void onParentConnectionChanged(android.telecomm.Connection, android.telecomm.Connection);
    method public abstract void onRequestingRingback(android.telecomm.Connection, boolean);
    method public abstract void onSetCallVideoProvider(android.telecomm.Connection, android.telecomm.CallVideoProvider);
    method public abstract void onSignalChanged(android.telecomm.Connection, android.os.Bundle);
    method public abstract void onStateChanged(android.telecomm.Connection, int);
  }
  public static class Connection.ListenerBase implements android.telecomm.Connection.Listener {
    ctor public Connection.ListenerBase();
    method public void onAudioStateChanged(android.telecomm.Connection, android.telecomm.CallAudioState);
    method public void onConferenceCapableChanged(android.telecomm.Connection, boolean);
    method public void onDestroyed(android.telecomm.Connection);
    method public void onDisconnected(android.telecomm.Connection, int, java.lang.String);
    method public void onHandleChanged(android.telecomm.Connection, android.net.Uri);
    method public void onParentConnectionChanged(android.telecomm.Connection, android.telecomm.Connection);
    method public void onRequestingRingback(android.telecomm.Connection, boolean);
    method public void onSetCallVideoProvider(android.telecomm.Connection, android.telecomm.CallVideoProvider);
    method public void onSignalChanged(android.telecomm.Connection, android.os.Bundle);
    method public void onStateChanged(android.telecomm.Connection, int);
  }
  public final class Connection.State {
    field public static final int ACTIVE = 3; // 0x3
    field public static final int DIALING = 2; // 0x2
@@ -27677,20 +27650,18 @@ package android.telecomm {
    method public final void abort(java.lang.String);
    method public final void answer(java.lang.String);
    method public final void call(android.telecomm.CallInfo);
    method public void createRemoteOutgoingConnection(android.telecomm.ConnectionRequest, android.telecomm.ConnectionService.OutgoingCallResponse<android.telecomm.RemoteConnection>);
    method public final void createRemoteOutgoingConnection(android.telecomm.ConnectionRequest, android.telecomm.ConnectionService.OutgoingCallResponse<android.telecomm.RemoteConnection>);
    method public final void disconnect(java.lang.String);
    method public java.util.Collection<android.telecomm.Connection> getAllConnections();
    method public final java.util.Collection<android.telecomm.Connection> getAllConnections();
    method public final void hold(java.lang.String);
    method public void lookupRemoteSubscriptions(android.net.Uri, android.telecomm.SimpleResponse<android.net.Uri, java.util.List<android.telecomm.Subscription>>);
    method public void maybeRespondToSubscriptionLookup();
    method public final void lookupRemoteSubscriptions(android.net.Uri, android.telecomm.SimpleResponse<android.net.Uri, java.util.List<android.telecomm.Subscription>>);
    method public final void maybeRespondToSubscriptionLookup();
    method public final void onAudioStateChanged(java.lang.String, android.telecomm.CallAudioState);
    method public void onConnectionAdded(android.telecomm.Connection);
    method public void onConnectionRemoved(android.telecomm.Connection);
    method public void onCreateConferenceConnection(java.lang.String, android.telecomm.Connection, android.telecomm.Response<java.lang.String, android.telecomm.Connection>);
    method public void onCreateConnections(android.telecomm.ConnectionRequest, android.telecomm.ConnectionService.OutgoingCallResponse<android.telecomm.Connection>);
    method public void onCreateIncomingConnection(android.telecomm.ConnectionRequest, android.telecomm.Response<android.telecomm.ConnectionRequest, android.telecomm.Connection>);
    method public final void onPostDialContinue(java.lang.String, boolean);
    method public final void onPostDialWait(android.telecomm.Connection, java.lang.String);
    method protected void onConnectionAdded(android.telecomm.Connection);
    method protected void onConnectionRemoved(android.telecomm.Connection);
    method protected void onCreateConferenceConnection(java.lang.String, android.telecomm.Connection, android.telecomm.Response<java.lang.String, android.telecomm.Connection>);
    method protected void onCreateConnections(android.telecomm.ConnectionRequest, android.telecomm.ConnectionService.OutgoingCallResponse<android.telecomm.Connection>);
    method protected void onCreateIncomingConnection(android.telecomm.ConnectionRequest, android.telecomm.Response<android.telecomm.ConnectionRequest, android.telecomm.Connection>);
    method public final void playDtmfTone(java.lang.String, char);
    method public final void reject(java.lang.String);
    method public final void setIncomingCallId(java.lang.String, android.os.Bundle);
@@ -27766,6 +27737,7 @@ package android.telecomm {
  }
  public final class RemoteConnection {
    method public void abort();
    method public void addListener(android.telecomm.RemoteConnection.Listener);
    method public void answer();
    method public void disconnect();
@@ -27776,12 +27748,12 @@ package android.telecomm {
    method public void postDialContinue(boolean);
    method public void reject();
    method public void removeListener(android.telecomm.RemoteConnection.Listener);
    method public void setAudioState(android.telecomm.CallAudioState);
    method public void stopDtmf();
    method public void unhold();
  }
  public static abstract interface RemoteConnection.Listener {
    method public abstract void onAudioStateChanged(android.telecomm.RemoteConnection, android.telecomm.CallAudioState);
    method public abstract void onDestroyed(android.telecomm.RemoteConnection);
    method public abstract void onDisconnected(android.telecomm.RemoteConnection, int, java.lang.String);
    method public abstract void onPostDialWait(android.telecomm.RemoteConnection, java.lang.String);
@@ -27789,12 +27761,6 @@ package android.telecomm {
    method public abstract void onStateChanged(android.telecomm.RemoteConnection, int);
  }
  public class RemoteConnectionService implements android.os.IBinder.DeathRecipient {
    method public void binderDied();
    method public void createOutgoingConnection(android.telecomm.ConnectionRequest, android.telecomm.ConnectionService.OutgoingCallResponse<android.telecomm.RemoteConnection>);
    method public java.util.List<android.telecomm.Subscription> lookupSubscriptions(android.net.Uri);
  }
  public abstract interface Response {
    method public abstract void onError(IN, int, java.lang.String);
    method public abstract void onResult(IN, OUT...);
+0 −1
Original line number Diff line number Diff line
@@ -408,5 +408,4 @@ public abstract class CallService extends Service {
    public abstract void splitFromConference(String callId);

    public void onPostDialContinue(String callId, boolean proceed) {}
    public void onPostDialWait(Connection conn, String remaining) {}
}
+16 −15
Original line number Diff line number Diff line
@@ -31,12 +31,14 @@ import java.util.Set;
 */
public abstract class Connection {

    /** @hide */
    public interface Listener {
        void onStateChanged(Connection c, int state);
        void onAudioStateChanged(Connection c, CallAudioState state);
        void onHandleChanged(Connection c, Uri newHandle);
        void onSignalChanged(Connection c, Bundle details);
        void onDisconnected(Connection c, int cause, String message);
        void onPostDialWait(Connection c, String remaining);
        void onRequestingRingback(Connection c, boolean ringback);
        void onDestroyed(Connection c);
        void onConferenceCapableChanged(Connection c, boolean isConferenceCapable);
@@ -44,44 +46,38 @@ public abstract class Connection {
        void onSetCallVideoProvider(Connection c, CallVideoProvider callVideoProvider);
    }

    /** @hide */
    public static class ListenerBase implements Listener {
        /** {@inheritDoc} */
        @Override
        public void onStateChanged(Connection c, int state) {}

        /** {@inheritDoc} */
         @Override
        public void onAudioStateChanged(Connection c, CallAudioState state) {}

        /** {@inheritDoc} */
        @Override
        public void onHandleChanged(Connection c, Uri newHandle) {}

        /** {@inheritDoc} */
        @Override
        public void onSignalChanged(Connection c, Bundle details) {}

        /** {@inheritDoc} */
        @Override
        public void onDisconnected(Connection c, int cause, String message) {}

        /** {@inheritDoc} */
        @Override
        public void onDestroyed(Connection c) {}

        /** {@inheritDoc} */
        @Override
        public void onPostDialWait(Connection c, String remaining) {}

        @Override
        public void onRequestingRingback(Connection c, boolean ringback) {}

        /** ${inheritDoc} */
        @Override
        public void onConferenceCapableChanged(Connection c, boolean isConferenceCapable) {}

        /** ${inheritDoc} */
        @Override
        public void onParentConnectionChanged(Connection c, Connection parent) {}

        /** {@inheritDoc} */
        @Override
        public void onSetCallVideoProvider(Connection c, CallVideoProvider callVideoProvider) {}
    }
@@ -383,7 +379,6 @@ public abstract class Connection {
     */
    public final void setHandle(Uri handle) {
        Log.d(this, "setHandle %s", handle);
        // TODO: Enforce super called
        mHandle = handle;
        for (Listener l : mListeners) {
            l.onHandleChanged(this, handle);
@@ -431,10 +426,7 @@ public abstract class Connection {
    }

    /**
     * Sets state to disconnected. This will first notify listeners with an
     * {@link Listener#onStateChanged(Connection, int)} event, then will fire an
     * {@link Listener#onDisconnected(Connection, int, String)} event with additional
     * details.
     * Sets state to disconnected.
     *
     * @param cause The reason for the disconnection, any of
     *         {@link android.telephony.DisconnectCause}.
@@ -448,6 +440,15 @@ public abstract class Connection {
        }
    }

    /**
     * TODO(santoscordon): Needs documentation.
     */
    public final void setPostDialWait(String remaining) {
        for (Listener l : mListeners) {
            l.onPostDialWait(this, remaining);
        }
    }

    /**
     * Requests that the framework play a ringback tone. This is to be invoked by implementations
     * that do not play a ringback tone themselves in the call's audio stream.
+29 −17
Original line number Diff line number Diff line
@@ -135,6 +135,13 @@ public abstract class ConnectionService extends CallService {
            removeConnection(c);
        }

        @Override
        public final void onPostDialWait(Connection c, String remaining) {
            String id = mIdByConnection.get(c);
            Log.d(this, "Adapter onPostDialWait %s, %s", c, remaining);
            getAdapter().onPostDialWait(id, remaining);
        }

        @Override
        public void onRequestingRingback(Connection c, boolean ringback) {
            String id = mIdByConnection.get(c);
@@ -163,6 +170,7 @@ public abstract class ConnectionService extends CallService {
        }
    };

    /** @hide */
    @Override
    public final void call(final CallInfo callInfo) {
        Log.d(this, "call %s", callInfo);
@@ -193,12 +201,14 @@ public abstract class ConnectionService extends CallService {
        );
    }

    /** @hide */
    @Override
    public final void abort(String callId) {
        Log.d(this, "abort %s", callId);
        findConnectionForAction(callId, "abort").abort();
    }

    /** @hide */
    @Override
    public final void setIncomingCallId(final String callId, Bundle extras) {
        Log.d(this, "setIncomingCallId %s %s", callId, extras);
@@ -241,48 +251,56 @@ public abstract class ConnectionService extends CallService {
        );
    }

    /** @hide */
    @Override
    public final void answer(String callId) {
        Log.d(this, "answer %s", callId);
        findConnectionForAction(callId, "answer").answer();
    }

    /** @hide */
    @Override
    public final void reject(String callId) {
        Log.d(this, "reject %s", callId);
        findConnectionForAction(callId, "reject").reject();
    }

    /** @hide */
    @Override
    public final void disconnect(String callId) {
        Log.d(this, "disconnect %s", callId);
        findConnectionForAction(callId, "disconnect").disconnect();
    }

    /** @hide */
    @Override
    public final void hold(String callId) {
        Log.d(this, "hold %s", callId);
        findConnectionForAction(callId, "hold").hold();
    }

    /** @hide */
    @Override
    public final void unhold(String callId) {
        Log.d(this, "unhold %s", callId);
        findConnectionForAction(callId, "unhold").unhold();
    }

    /** @hide */
    @Override
    public final void playDtmfTone(String callId, char digit) {
        Log.d(this, "playDtmfTone %s %c", callId, digit);
        findConnectionForAction(callId, "playDtmfTone").playDtmfTone(digit);
    }

    /** @hide */
    @Override
    public final void stopDtmfTone(String callId) {
        Log.d(this, "stopDtmfTone %s", callId);
        findConnectionForAction(callId, "stopDtmfTone").stopDtmfTone();
    }

    /** @hide */
    @Override
    public final void onAudioStateChanged(String callId, CallAudioState audioState) {
        Log.d(this, "onAudioStateChanged %s %s", callId, audioState);
@@ -338,6 +356,7 @@ public abstract class ConnectionService extends CallService {
        // TODO(santoscordon): Find existing conference call and invoke split(connection).
    }

    /** @hide */
    @Override
    public final void onPostDialContinue(String callId, boolean proceed) {
        Log.d(this, "onPostDialContinue(%s)", callId);
@@ -350,18 +369,11 @@ public abstract class ConnectionService extends CallService {
        connection.onPostDialContinue(proceed);
    }

    @Override
    public final void onPostDialWait(Connection conn, String remaining) {
        Log.d(this, "onPostDialWait(%s, %s)", conn, remaining);

        getAdapter().onPostDialWait(mIdByConnection.get(conn), remaining);
    }

    /**
     * @hide
     */
    @Override
    protected void onAdapterAttached(CallServiceAdapter adapter) {
    protected final void onAdapterAttached(CallServiceAdapter adapter) {
        if (mAreSubscriptionsInitialized) {
            // No need to query again if we already did it.
            return;
@@ -398,14 +410,14 @@ public abstract class ConnectionService extends CallService {
        });
    }

    public void lookupRemoteSubscriptions(
    public final void lookupRemoteSubscriptions(
            Uri handle, SimpleResponse<Uri, List<Subscription>> response) {
        mSubscriptionLookupResponse = response;
        mSubscriptionLookupHandle = handle;
        maybeRespondToSubscriptionLookup();
    }

    public void maybeRespondToSubscriptionLookup() {
    public final void maybeRespondToSubscriptionLookup() {
        if (mAreSubscriptionsInitialized && mSubscriptionLookupResponse != null) {
            mSubscriptionLookupResponse.onResult(
                    mSubscriptionLookupHandle,
@@ -416,7 +428,7 @@ public abstract class ConnectionService extends CallService {
        }
    }

    public void createRemoteOutgoingConnection(
    public final void createRemoteOutgoingConnection(
            ConnectionRequest request,
            OutgoingCallResponse<RemoteConnection> response) {
        mRemoteConnectionManager.createOutgoingConnection(request, response);
@@ -425,7 +437,7 @@ public abstract class ConnectionService extends CallService {
    /**
     * Returns all connections currently associated with this connection service.
     */
    public Collection<Connection> getAllConnections() {
    public final Collection<Connection> getAllConnections() {
        return mConnectionById.values();
    }

@@ -435,7 +447,7 @@ public abstract class ConnectionService extends CallService {
     * @param request Data encapsulating details of the desired Connection.
     * @param callback A callback for providing the result.
     */
    public void onCreateConnections(
    protected void onCreateConnections(
            ConnectionRequest request,
            OutgoingCallResponse<Connection> callback) {}

@@ -449,7 +461,7 @@ public abstract class ConnectionService extends CallService {
     * @param token The token to be passed into the response callback.
     * @param callback The callback for providing the potentially-new conference connection.
     */
    public void onCreateConferenceConnection(
    protected void onCreateConferenceConnection(
            String token,
            Connection connection,
            Response<String, Connection> callback) {}
@@ -465,7 +477,7 @@ public abstract class ConnectionService extends CallService {
     * @param request Data encapsulating details of the desired Connection.
     * @param callback A callback for providing the result.
     */
    public void onCreateIncomingConnection(
    protected void onCreateIncomingConnection(
            ConnectionRequest request,
            Response<ConnectionRequest, Connection> callback) {}

@@ -474,14 +486,14 @@ public abstract class ConnectionService extends CallService {
     *
     * @param connection The connection which was added.
     */
    public void onConnectionAdded(Connection connection) {}
    protected void onConnectionAdded(Connection connection) {}

    /**
     * Notified that a connection has been removed from this connection service.
     *
     * @param connection The connection which was removed.
     */
    public void onConnectionRemoved(Connection connection) {}
    protected void onConnectionRemoved(Connection connection) {}

    static String toLogSafePhoneNumber(String number) {
        // For unknown number, log empty string.
+18 −10
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ import java.util.Set;
public final class RemoteConnection {
    public interface Listener {
        void onStateChanged(RemoteConnection connection, int state);
        void onAudioStateChanged(RemoteConnection connection, CallAudioState state);
        void onDisconnected(RemoteConnection connection, int cause, String message);
        void onRequestingRingback(RemoteConnection connection, boolean ringback);
        void onPostDialWait(RemoteConnection connection, String remainingDigits);
@@ -76,6 +75,15 @@ public final class RemoteConnection {
        return mDisconnectMessage;
    }

    public void abort() {
        try {
            if (mConnected) {
                mCallService.abort(mConnectionId);
            }
        } catch (RemoteException ignored) {
        }
    }

    public void answer() {
        try {
            if (mConnected) {
@@ -148,6 +156,15 @@ public final class RemoteConnection {
        }
    }

    public void setAudioState(CallAudioState state) {
        try {
            if (mConnected) {
                mCallService.onAudioStateChanged(mConnectionId, state);
            }
        } catch (RemoteException ignored) {
        }
    }

    /**
     * @hide
     */
@@ -160,15 +177,6 @@ public final class RemoteConnection {
        }
    }

    /**
     * @hide
     */
    void setAudioState(CallAudioState state) {
        for (Listener l: mListeners) {
            l.onAudioStateChanged(this, state);
        }
    }

    /**
     * @hide
     */
Loading