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

Commit 5beba8c4 authored by Brad Ebinger's avatar Brad Ebinger
Browse files

Modify ConnectionServiceAdapter to include Session

Modifies the ConnectionServiceAdapter to include Session Information in
the AIDL interface so that external Sessions can be started in Telecom
from Telephony.

Test: Manual testing and Unit Tests pass
Bug: 26571395
Change-Id: I31bbfe433dd062a50bd05083e1a639dd4cd03403
parent 8bcd1592
Loading
Loading
Loading
Loading
+35 −30
Original line number Original line Diff line number Diff line
@@ -93,7 +93,8 @@ final class ConnectionServiceAdapter implements DeathRecipient {
            ParcelableConnection connection) {
            ParcelableConnection connection) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.handleCreateConnectionComplete(id, request, connection);
                adapter.handleCreateConnectionComplete(id, request, connection,
                        Log.getExternalSession());
            } catch (RemoteException e) {
            } catch (RemoteException e) {
            }
            }
        }
        }
@@ -108,7 +109,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
    void setActive(String callId) {
    void setActive(String callId) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.setActive(callId);
                adapter.setActive(callId, Log.getExternalSession());
            } catch (RemoteException e) {
            } catch (RemoteException e) {
            }
            }
        }
        }
@@ -122,7 +123,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
    void setRinging(String callId) {
    void setRinging(String callId) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.setRinging(callId);
                adapter.setRinging(callId, Log.getExternalSession());
            } catch (RemoteException e) {
            } catch (RemoteException e) {
            }
            }
        }
        }
@@ -136,7 +137,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
    void setDialing(String callId) {
    void setDialing(String callId) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.setDialing(callId);
                adapter.setDialing(callId, Log.getExternalSession());
            } catch (RemoteException e) {
            } catch (RemoteException e) {
            }
            }
        }
        }
@@ -152,7 +153,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
    void setDisconnected(String callId, DisconnectCause disconnectCause) {
    void setDisconnected(String callId, DisconnectCause disconnectCause) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.setDisconnected(callId, disconnectCause);
                adapter.setDisconnected(callId, disconnectCause, Log.getExternalSession());
            } catch (RemoteException e) {
            } catch (RemoteException e) {
            }
            }
        }
        }
@@ -166,7 +167,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
    void setOnHold(String callId) {
    void setOnHold(String callId) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.setOnHold(callId);
                adapter.setOnHold(callId, Log.getExternalSession());
            } catch (RemoteException e) {
            } catch (RemoteException e) {
            }
            }
        }
        }
@@ -181,7 +182,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
    void setRingbackRequested(String callId, boolean ringback) {
    void setRingbackRequested(String callId, boolean ringback) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.setRingbackRequested(callId, ringback);
                adapter.setRingbackRequested(callId, ringback, Log.getExternalSession());
            } catch (RemoteException e) {
            } catch (RemoteException e) {
            }
            }
        }
        }
@@ -190,7 +191,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
    void setConnectionCapabilities(String callId, int capabilities) {
    void setConnectionCapabilities(String callId, int capabilities) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.setConnectionCapabilities(callId, capabilities);
                adapter.setConnectionCapabilities(callId, capabilities, Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
@@ -199,7 +200,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
    void setConnectionProperties(String callId, int properties) {
    void setConnectionProperties(String callId, int properties) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.setConnectionProperties(callId, properties);
                adapter.setConnectionProperties(callId, properties, Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
@@ -217,7 +218,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                Log.d(this, "sending connection %s with conference %s", callId, conferenceCallId);
                Log.d(this, "sending connection %s with conference %s", callId, conferenceCallId);
                adapter.setIsConferenced(callId, conferenceCallId);
                adapter.setIsConferenced(callId, conferenceCallId, Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
@@ -232,7 +233,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                Log.d(this, "merge failed for call %s", callId);
                Log.d(this, "merge failed for call %s", callId);
                adapter.setConferenceMergeFailed(callId);
                adapter.setConferenceMergeFailed(callId, Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
@@ -247,7 +248,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
    void removeCall(String callId) {
    void removeCall(String callId) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.removeCall(callId);
                adapter.removeCall(callId, Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
@@ -256,7 +257,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
    void onPostDialWait(String callId, String remaining) {
    void onPostDialWait(String callId, String remaining) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.onPostDialWait(callId, remaining);
                adapter.onPostDialWait(callId, remaining, Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
@@ -265,7 +266,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
    void onPostDialChar(String callId, char nextChar) {
    void onPostDialChar(String callId, char nextChar) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.onPostDialChar(callId, nextChar);
                adapter.onPostDialChar(callId, nextChar, Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
@@ -279,7 +280,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
    void addConferenceCall(String callId, ParcelableConference parcelableConference) {
    void addConferenceCall(String callId, ParcelableConference parcelableConference) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.addConferenceCall(callId, parcelableConference);
                adapter.addConferenceCall(callId, parcelableConference, Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
@@ -292,7 +293,8 @@ final class ConnectionServiceAdapter implements DeathRecipient {
        // Only supported when there is only one adapter.
        // Only supported when there is only one adapter.
        if (mAdapters.size() == 1) {
        if (mAdapters.size() == 1) {
            try {
            try {
                mAdapters.iterator().next().queryRemoteConnectionServices(callback);
                mAdapters.iterator().next().queryRemoteConnectionServices(callback,
                        Log.getExternalSession());
            } catch (RemoteException e) {
            } catch (RemoteException e) {
                Log.e(this, e, "Exception trying to query for remote CSs");
                Log.e(this, e, "Exception trying to query for remote CSs");
            }
            }
@@ -311,7 +313,8 @@ final class ConnectionServiceAdapter implements DeathRecipient {
            try {
            try {
                adapter.setVideoProvider(
                adapter.setVideoProvider(
                        callId,
                        callId,
                        videoProvider == null ? null : videoProvider.getInterface());
                        videoProvider == null ? null : videoProvider.getInterface(),
                        Log.getExternalSession());
            } catch (RemoteException e) {
            } catch (RemoteException e) {
            }
            }
        }
        }
@@ -326,7 +329,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
    void setIsVoipAudioMode(String callId, boolean isVoip) {
    void setIsVoipAudioMode(String callId, boolean isVoip) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.setIsVoipAudioMode(callId, isVoip);
                adapter.setIsVoipAudioMode(callId, isVoip, Log.getExternalSession());
            } catch (RemoteException e) {
            } catch (RemoteException e) {
            }
            }
        }
        }
@@ -335,7 +338,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
    void setStatusHints(String callId, StatusHints statusHints) {
    void setStatusHints(String callId, StatusHints statusHints) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.setStatusHints(callId, statusHints);
                adapter.setStatusHints(callId, statusHints, Log.getExternalSession());
            } catch (RemoteException e) {
            } catch (RemoteException e) {
            }
            }
        }
        }
@@ -344,7 +347,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
    void setAddress(String callId, Uri address, int presentation) {
    void setAddress(String callId, Uri address, int presentation) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.setAddress(callId, address, presentation);
                adapter.setAddress(callId, address, presentation, Log.getExternalSession());
            } catch (RemoteException e) {
            } catch (RemoteException e) {
            }
            }
        }
        }
@@ -353,7 +356,8 @@ final class ConnectionServiceAdapter implements DeathRecipient {
    void setCallerDisplayName(String callId, String callerDisplayName, int presentation) {
    void setCallerDisplayName(String callId, String callerDisplayName, int presentation) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.setCallerDisplayName(callId, callerDisplayName, presentation);
                adapter.setCallerDisplayName(callId, callerDisplayName, presentation,
                        Log.getExternalSession());
            } catch (RemoteException e) {
            } catch (RemoteException e) {
            }
            }
        }
        }
@@ -374,7 +378,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
        Log.v(this, "setVideoState: %d", videoState);
        Log.v(this, "setVideoState: %d", videoState);
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.setVideoState(callId, videoState);
                adapter.setVideoState(callId, videoState, Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
@@ -384,7 +388,8 @@ final class ConnectionServiceAdapter implements DeathRecipient {
        Log.v(this, "setConferenceableConnections: %s, %s", callId, conferenceableCallIds);
        Log.v(this, "setConferenceableConnections: %s, %s", callId, conferenceableCallIds);
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.setConferenceableConnections(callId, conferenceableCallIds);
                adapter.setConferenceableConnections(callId, conferenceableCallIds,
                        Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
@@ -400,7 +405,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
        Log.v(this, "addExistingConnection: %s", callId);
        Log.v(this, "addExistingConnection: %s", callId);
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.addExistingConnection(callId, connection);
                adapter.addExistingConnection(callId, connection, Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
@@ -416,7 +421,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
        Log.v(this, "putExtras: %s", callId);
        Log.v(this, "putExtras: %s", callId);
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.putExtras(callId, extras);
                adapter.putExtras(callId, extras, Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
@@ -435,7 +440,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
            try {
            try {
                Bundle bundle = new Bundle();
                Bundle bundle = new Bundle();
                bundle.putBoolean(key, value);
                bundle.putBoolean(key, value);
                adapter.putExtras(callId, bundle);
                adapter.putExtras(callId, bundle, Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
@@ -454,7 +459,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
            try {
            try {
                Bundle bundle = new Bundle();
                Bundle bundle = new Bundle();
                bundle.putInt(key, value);
                bundle.putInt(key, value);
                adapter.putExtras(callId, bundle);
                adapter.putExtras(callId, bundle, Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
@@ -473,7 +478,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
            try {
            try {
                Bundle bundle = new Bundle();
                Bundle bundle = new Bundle();
                bundle.putString(key, value);
                bundle.putString(key, value);
                adapter.putExtras(callId, bundle);
                adapter.putExtras(callId, bundle, Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
@@ -488,7 +493,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
        Log.v(this, "removeExtras: %s %s", callId, keys);
        Log.v(this, "removeExtras: %s %s", callId, keys);
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.removeExtras(callId, keys);
                adapter.removeExtras(callId, keys, Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
@@ -505,7 +510,7 @@ final class ConnectionServiceAdapter implements DeathRecipient {
        Log.v(this, "onConnectionEvent: %s", event);
        Log.v(this, "onConnectionEvent: %s", event);
        for (IConnectionServiceAdapter adapter : mAdapters) {
        for (IConnectionServiceAdapter adapter : mAdapters) {
            try {
            try {
                adapter.onConnectionEvent(callId, event, extras);
                adapter.onConnectionEvent(callId, event, extras, Log.getExternalSession());
            } catch (RemoteException ignored) {
            } catch (RemoteException ignored) {
            }
            }
        }
        }
+96 −59

File changed.

Preview size limit exceeded, changes collapsed.

+40 −29
Original line number Original line Diff line number Diff line
@@ -21,6 +21,7 @@ import android.os.Bundle;
import android.os.IBinder;
import android.os.IBinder;
import android.os.IBinder.DeathRecipient;
import android.os.IBinder.DeathRecipient;
import android.os.RemoteException;
import android.os.RemoteException;
import android.telecom.Logging.Session;


import com.android.internal.telecom.IConnectionService;
import com.android.internal.telecom.IConnectionService;
import com.android.internal.telecom.IConnectionServiceAdapter;
import com.android.internal.telecom.IConnectionServiceAdapter;
@@ -54,7 +55,8 @@ final class RemoteConnectionService {
        public void handleCreateConnectionComplete(
        public void handleCreateConnectionComplete(
                String id,
                String id,
                ConnectionRequest request,
                ConnectionRequest request,
                ParcelableConnection parcel) {
                ParcelableConnection parcel,
                Session.Info info) {
            RemoteConnection connection =
            RemoteConnection connection =
                    findConnectionForAction(id, "handleCreateConnectionSuccessful");
                    findConnectionForAction(id, "handleCreateConnectionSuccessful");
            if (connection != NULL_CONNECTION && mPendingConnections.contains(connection)) {
            if (connection != NULL_CONNECTION && mPendingConnections.contains(connection)) {
@@ -95,7 +97,7 @@ final class RemoteConnectionService {
        }
        }


        @Override
        @Override
        public void setActive(String callId) {
        public void setActive(String callId, Session.Info sessionInfo) {
            if (mConnectionById.containsKey(callId)) {
            if (mConnectionById.containsKey(callId)) {
                findConnectionForAction(callId, "setActive")
                findConnectionForAction(callId, "setActive")
                        .setState(Connection.STATE_ACTIVE);
                        .setState(Connection.STATE_ACTIVE);
@@ -106,19 +108,20 @@ final class RemoteConnectionService {
        }
        }


        @Override
        @Override
        public void setRinging(String callId) {
        public void setRinging(String callId, Session.Info sessionInfo) {
            findConnectionForAction(callId, "setRinging")
            findConnectionForAction(callId, "setRinging")
                    .setState(Connection.STATE_RINGING);
                    .setState(Connection.STATE_RINGING);
        }
        }


        @Override
        @Override
        public void setDialing(String callId) {
        public void setDialing(String callId, Session.Info sessionInfo) {
            findConnectionForAction(callId, "setDialing")
            findConnectionForAction(callId, "setDialing")
                    .setState(Connection.STATE_DIALING);
                    .setState(Connection.STATE_DIALING);
        }
        }


        @Override
        @Override
        public void setDisconnected(String callId, DisconnectCause disconnectCause) {
        public void setDisconnected(String callId, DisconnectCause disconnectCause,
                Session.Info sessionInfo) {
            if (mConnectionById.containsKey(callId)) {
            if (mConnectionById.containsKey(callId)) {
                findConnectionForAction(callId, "setDisconnected")
                findConnectionForAction(callId, "setDisconnected")
                        .setDisconnected(disconnectCause);
                        .setDisconnected(disconnectCause);
@@ -129,7 +132,7 @@ final class RemoteConnectionService {
        }
        }


        @Override
        @Override
        public void setOnHold(String callId) {
        public void setOnHold(String callId, Session.Info sessionInfo) {
            if (mConnectionById.containsKey(callId)) {
            if (mConnectionById.containsKey(callId)) {
                findConnectionForAction(callId, "setOnHold")
                findConnectionForAction(callId, "setOnHold")
                        .setState(Connection.STATE_HOLDING);
                        .setState(Connection.STATE_HOLDING);
@@ -140,13 +143,14 @@ final class RemoteConnectionService {
        }
        }


        @Override
        @Override
        public void setRingbackRequested(String callId, boolean ringing) {
        public void setRingbackRequested(String callId, boolean ringing, Session.Info sessionInfo) {
            findConnectionForAction(callId, "setRingbackRequested")
            findConnectionForAction(callId, "setRingbackRequested")
                    .setRingbackRequested(ringing);
                    .setRingbackRequested(ringing);
        }
        }


        @Override
        @Override
        public void setConnectionCapabilities(String callId, int connectionCapabilities) {
        public void setConnectionCapabilities(String callId, int connectionCapabilities,
                Session.Info sessionInfo) {
            if (mConnectionById.containsKey(callId)) {
            if (mConnectionById.containsKey(callId)) {
                findConnectionForAction(callId, "setConnectionCapabilities")
                findConnectionForAction(callId, "setConnectionCapabilities")
                        .setConnectionCapabilities(connectionCapabilities);
                        .setConnectionCapabilities(connectionCapabilities);
@@ -157,7 +161,8 @@ final class RemoteConnectionService {
        }
        }


        @Override
        @Override
        public void setConnectionProperties(String callId, int connectionProperties) {
        public void setConnectionProperties(String callId, int connectionProperties,
                Session.Info sessionInfo) {
            if (mConnectionById.containsKey(callId)) {
            if (mConnectionById.containsKey(callId)) {
                findConnectionForAction(callId, "setConnectionProperties")
                findConnectionForAction(callId, "setConnectionProperties")
                        .setConnectionProperties(connectionProperties);
                        .setConnectionProperties(connectionProperties);
@@ -168,7 +173,8 @@ final class RemoteConnectionService {
        }
        }


        @Override
        @Override
        public void setIsConferenced(String callId, String conferenceCallId) {
        public void setIsConferenced(String callId, String conferenceCallId,
                Session.Info sessionInfo) {
            // Note: callId should not be null; conferenceCallId may be null
            // Note: callId should not be null; conferenceCallId may be null
            RemoteConnection connection =
            RemoteConnection connection =
                    findConnectionForAction(callId, "setIsConferenced");
                    findConnectionForAction(callId, "setIsConferenced");
@@ -189,7 +195,7 @@ final class RemoteConnectionService {
        }
        }


        @Override
        @Override
        public void setConferenceMergeFailed(String callId) {
        public void setConferenceMergeFailed(String callId, Session.Info sessionInfo) {
            // Nothing to do here.
            // Nothing to do here.
            // The event has already been handled and there is no state to update
            // The event has already been handled and there is no state to update
            // in the underlying connection or conference objects
            // in the underlying connection or conference objects
@@ -197,8 +203,7 @@ final class RemoteConnectionService {


        @Override
        @Override
        public void addConferenceCall(
        public void addConferenceCall(
                final String callId,
                final String callId, ParcelableConference parcel, Session.Info sessionInfo) {
                ParcelableConference parcel) {
            RemoteConference conference = new RemoteConference(callId,
            RemoteConference conference = new RemoteConference(callId,
                    mOutgoingConnectionServiceRpc);
                    mOutgoingConnectionServiceRpc);


@@ -231,7 +236,7 @@ final class RemoteConnectionService {
        }
        }


        @Override
        @Override
        public void removeCall(String callId) {
        public void removeCall(String callId, Session.Info sessionInfo) {
            if (mConnectionById.containsKey(callId)) {
            if (mConnectionById.containsKey(callId)) {
                findConnectionForAction(callId, "removeCall")
                findConnectionForAction(callId, "removeCall")
                        .setDestroyed();
                        .setDestroyed();
@@ -242,24 +247,26 @@ final class RemoteConnectionService {
        }
        }


        @Override
        @Override
        public void onPostDialWait(String callId, String remaining) {
        public void onPostDialWait(String callId, String remaining, Session.Info sessionInfo) {
            findConnectionForAction(callId, "onPostDialWait")
            findConnectionForAction(callId, "onPostDialWait")
                    .setPostDialWait(remaining);
                    .setPostDialWait(remaining);
        }
        }


        @Override
        @Override
        public void onPostDialChar(String callId, char nextChar) {
        public void onPostDialChar(String callId, char nextChar, Session.Info sessionInfo) {
            findConnectionForAction(callId, "onPostDialChar")
            findConnectionForAction(callId, "onPostDialChar")
                    .onPostDialChar(nextChar);
                    .onPostDialChar(nextChar);
        }
        }


        @Override
        @Override
        public void queryRemoteConnectionServices(RemoteServiceCallback callback) {
        public void queryRemoteConnectionServices(RemoteServiceCallback callback,
                Session.Info sessionInfo) {
            // Not supported from remote connection service.
            // Not supported from remote connection service.
        }
        }


        @Override
        @Override
        public void setVideoProvider(String callId, IVideoProvider videoProvider) {
        public void setVideoProvider(String callId, IVideoProvider videoProvider,
                Session.Info sessionInfo) {
            RemoteConnection.VideoProvider remoteVideoProvider = null;
            RemoteConnection.VideoProvider remoteVideoProvider = null;
            if (videoProvider != null) {
            if (videoProvider != null) {
                remoteVideoProvider = new RemoteConnection.VideoProvider(videoProvider);
                remoteVideoProvider = new RemoteConnection.VideoProvider(videoProvider);
@@ -269,32 +276,34 @@ final class RemoteConnectionService {
        }
        }


        @Override
        @Override
        public void setVideoState(String callId, int videoState) {
        public void setVideoState(String callId, int videoState, Session.Info sessionInfo) {
            findConnectionForAction(callId, "setVideoState")
            findConnectionForAction(callId, "setVideoState")
                    .setVideoState(videoState);
                    .setVideoState(videoState);
        }
        }


        @Override
        @Override
        public void setIsVoipAudioMode(String callId, boolean isVoip) {
        public void setIsVoipAudioMode(String callId, boolean isVoip, Session.Info sessionInfo) {
            findConnectionForAction(callId, "setIsVoipAudioMode")
            findConnectionForAction(callId, "setIsVoipAudioMode")
                    .setIsVoipAudioMode(isVoip);
                    .setIsVoipAudioMode(isVoip);
        }
        }


        @Override
        @Override
        public void setStatusHints(String callId, StatusHints statusHints) {
        public void setStatusHints(String callId, StatusHints statusHints,
                Session.Info sessionInfo) {
            findConnectionForAction(callId, "setStatusHints")
            findConnectionForAction(callId, "setStatusHints")
                    .setStatusHints(statusHints);
                    .setStatusHints(statusHints);
        }
        }


        @Override
        @Override
        public void setAddress(String callId, Uri address, int presentation) {
        public void setAddress(String callId, Uri address, int presentation,
                Session.Info sessionInfo) {
            findConnectionForAction(callId, "setAddress")
            findConnectionForAction(callId, "setAddress")
                    .setAddress(address, presentation);
                    .setAddress(address, presentation);
        }
        }


        @Override
        @Override
        public void setCallerDisplayName(String callId, String callerDisplayName,
        public void setCallerDisplayName(String callId, String callerDisplayName,
                int presentation) {
                int presentation, Session.Info sessionInfo) {
            findConnectionForAction(callId, "setCallerDisplayName")
            findConnectionForAction(callId, "setCallerDisplayName")
                    .setCallerDisplayName(callerDisplayName, presentation);
                    .setCallerDisplayName(callerDisplayName, presentation);
        }
        }
@@ -305,8 +314,8 @@ final class RemoteConnectionService {
        }
        }


        @Override
        @Override
        public final void setConferenceableConnections(
        public final void setConferenceableConnections(String callId,
                String callId, List<String> conferenceableConnectionIds) {
                List<String> conferenceableConnectionIds, Session.Info sessionInfo) {
            List<RemoteConnection> conferenceable = new ArrayList<>();
            List<RemoteConnection> conferenceable = new ArrayList<>();
            for (String id : conferenceableConnectionIds) {
            for (String id : conferenceableConnectionIds) {
                if (mConnectionById.containsKey(id)) {
                if (mConnectionById.containsKey(id)) {
@@ -324,7 +333,8 @@ final class RemoteConnectionService {
        }
        }


        @Override
        @Override
        public void addExistingConnection(String callId, ParcelableConnection connection) {
        public void addExistingConnection(String callId, ParcelableConnection connection,
                Session.Info sessionInfo) {
            // TODO: add contents of this method
            // TODO: add contents of this method
            RemoteConnection remoteConnction = new RemoteConnection(callId,
            RemoteConnection remoteConnction = new RemoteConnection(callId,
                    mOutgoingConnectionServiceRpc, connection);
                    mOutgoingConnectionServiceRpc, connection);
@@ -333,7 +343,7 @@ final class RemoteConnectionService {
        }
        }


        @Override
        @Override
        public void putExtras(String callId, Bundle extras) {
        public void putExtras(String callId, Bundle extras, Session.Info sessionInfo) {
            if (hasConnection(callId)) {
            if (hasConnection(callId)) {
                findConnectionForAction(callId, "putExtras").putExtras(extras);
                findConnectionForAction(callId, "putExtras").putExtras(extras);
            } else {
            } else {
@@ -342,7 +352,7 @@ final class RemoteConnectionService {
        }
        }


        @Override
        @Override
        public void removeExtras(String callId, List<String> keys) {
        public void removeExtras(String callId, List<String> keys, Session.Info sessionInfo) {
            if (hasConnection(callId)) {
            if (hasConnection(callId)) {
                findConnectionForAction(callId, "removeExtra").removeExtras(keys);
                findConnectionForAction(callId, "removeExtra").removeExtras(keys);
            } else {
            } else {
@@ -351,7 +361,8 @@ final class RemoteConnectionService {
        }
        }


        @Override
        @Override
        public void onConnectionEvent(String callId, String event, Bundle extras) {
        public void onConnectionEvent(String callId, String event, Bundle extras,
                Session.Info sessionInfo) {
            if (mConnectionById.containsKey(callId)) {
            if (mConnectionById.containsKey(callId)) {
                findConnectionForAction(callId, "onConnectionEvent").onConnectionEvent(event,
                findConnectionForAction(callId, "onConnectionEvent").onConnectionEvent(event,
                        extras);
                        extras);
+37 −27
Original line number Original line Diff line number Diff line
@@ -21,6 +21,7 @@ import android.net.Uri;
import android.os.Bundle;
import android.os.Bundle;
import android.telecom.ConnectionRequest;
import android.telecom.ConnectionRequest;
import android.telecom.DisconnectCause;
import android.telecom.DisconnectCause;
import android.telecom.Logging.Session;
import android.telecom.ParcelableConnection;
import android.telecom.ParcelableConnection;
import android.telecom.ParcelableConference;
import android.telecom.ParcelableConference;
import android.telecom.StatusHints;
import android.telecom.StatusHints;
@@ -39,57 +40,66 @@ oneway interface IConnectionServiceAdapter {
    void handleCreateConnectionComplete(
    void handleCreateConnectionComplete(
            String callId,
            String callId,
            in ConnectionRequest request,
            in ConnectionRequest request,
            in ParcelableConnection connection);
            in ParcelableConnection connection,
            in Session.Info sessionInfo);


    void setActive(String callId);
    void setActive(String callId, in Session.Info sessionInfo);


    void setRinging(String callId);
    void setRinging(String callId, in Session.Info sessionInfo);


    void setDialing(String callId);
    void setDialing(String callId, in Session.Info sessionInfo);


    void setDisconnected(String callId, in DisconnectCause disconnectCause);
    void setDisconnected(String callId, in DisconnectCause disconnectCause,
    in Session.Info sessionInfo);


    void setOnHold(String callId);
    void setOnHold(String callId, in Session.Info sessionInfo);


    void setRingbackRequested(String callId, boolean ringing);
    void setRingbackRequested(String callId, boolean ringing, in Session.Info sessionInfo);


    void setConnectionCapabilities(String callId, int connectionCapabilities);
    void setConnectionCapabilities(String callId, int connectionCapabilities,
    in Session.Info sessionInfo);


    void setConnectionProperties(String callId, int connectionProperties);
    void setConnectionProperties(String callId, int connectionProperties,
    in Session.Info sessionInfo);


    void setIsConferenced(String callId, String conferenceCallId);
    void setIsConferenced(String callId, String conferenceCallId, in Session.Info sessionInfo);


    void setConferenceMergeFailed(String callId);
    void setConferenceMergeFailed(String callId, in Session.Info sessionInfo);


    void addConferenceCall(String callId, in ParcelableConference conference);
    void addConferenceCall(String callId, in ParcelableConference conference,
    in Session.Info sessionInfo);


    void removeCall(String callId);
    void removeCall(String callId, in Session.Info sessionInfo);


    void onPostDialWait(String callId, String remaining);
    void onPostDialWait(String callId, String remaining, in Session.Info sessionInfo);


    void onPostDialChar(String callId, char nextChar);
    void onPostDialChar(String callId, char nextChar, in Session.Info sessionInfo);


    void queryRemoteConnectionServices(RemoteServiceCallback callback);
    void queryRemoteConnectionServices(RemoteServiceCallback callback, in Session.Info sessionInfo);


    void setVideoProvider(String callId, IVideoProvider videoProvider);
    void setVideoProvider(String callId, IVideoProvider videoProvider, in Session.Info sessionInfo);


    void setVideoState(String callId, int videoState);
    void setVideoState(String callId, int videoState, in Session.Info sessionInfo);


    void setIsVoipAudioMode(String callId, boolean isVoip);
    void setIsVoipAudioMode(String callId, boolean isVoip, in Session.Info sessionInfo);


    void setStatusHints(String callId, in StatusHints statusHints);
    void setStatusHints(String callId, in StatusHints statusHints, in Session.Info sessionInfo);


    void setAddress(String callId, in Uri address, int presentation);
    void setAddress(String callId, in Uri address, int presentation, in Session.Info sessionInfo);


    void setCallerDisplayName(String callId, String callerDisplayName, int presentation);
    void setCallerDisplayName(String callId, String callerDisplayName, int presentation,
    in Session.Info sessionInfo);


    void setConferenceableConnections(String callId, in List<String> conferenceableCallIds);
    void setConferenceableConnections(String callId, in List<String> conferenceableCallIds,
    in Session.Info sessionInfo);


    void addExistingConnection(String callId, in ParcelableConnection connection);
    void addExistingConnection(String callId, in ParcelableConnection connection,
    in Session.Info sessionInfo);


    void putExtras(String callId, in Bundle extras);
    void putExtras(String callId, in Bundle extras, in Session.Info sessionInfo);


    void removeExtras(String callId, in List<String> keys);
    void removeExtras(String callId, in List<String> keys, in Session.Info sessionInfo);


    void onConnectionEvent(String callId, String event, in Bundle extras);
    void onConnectionEvent(String callId, String event, in Bundle extras,
    in Session.Info sessionInfo);
}
}