Ims: Add support to add participants to existing call am: 8771b58372
Change-Id: Ic3699a1b297906089b7069c3609311d480f65973
diff --git a/src/com/android/server/telecom/Call.java b/src/com/android/server/telecom/Call.java
index ed6a20a..9a36d3e 100644
--- a/src/com/android/server/telecom/Call.java
+++ b/src/com/android/server/telecom/Call.java
@@ -2555,6 +2555,15 @@
}
}
+ public void addConferenceParticipants(List<Uri> participants) {
+ if (mConnectionService == null) {
+ Log.w(this, "adding conference participants without a connection service.");
+ } else if (can(Connection.CAPABILITY_ADD_PARTICIPANT)) {
+ Log.addEvent(this, LogUtils.Events.ADD_PARTICIPANT);
+ mConnectionService.addConferenceParticipants(this, participants);
+ }
+ }
+
/**
* Initiates a request to the connection service to pull this call.
* <p>
diff --git a/src/com/android/server/telecom/ConnectionServiceWrapper.java b/src/com/android/server/telecom/ConnectionServiceWrapper.java
index 248374d..b089db6 100644
--- a/src/com/android/server/telecom/ConnectionServiceWrapper.java
+++ b/src/com/android/server/telecom/ConnectionServiceWrapper.java
@@ -1680,6 +1680,18 @@
}
}
+ void addConferenceParticipants(Call call, List<Uri> participants) {
+ final String callId = mCallIdMapper.getCallId(call);
+ if (callId != null && isServiceValid("addConferenceParticipants")) {
+ try {
+ logOutgoing("addConferenceParticipants %s", callId);
+ mServiceInterface.addConferenceParticipants(callId, participants,
+ Log.getExternalSession());
+ } catch (RemoteException ignored) {
+ }
+ }
+ }
+
@VisibleForTesting
public void pullExternalCall(Call call) {
final String callId = mCallIdMapper.getCallId(call);
diff --git a/src/com/android/server/telecom/InCallAdapter.java b/src/com/android/server/telecom/InCallAdapter.java
index 3e2fa12..f47f212 100644
--- a/src/com/android/server/telecom/InCallAdapter.java
+++ b/src/com/android/server/telecom/InCallAdapter.java
@@ -474,6 +474,29 @@
}
@Override
+ public void addConferenceParticipants(String callId, List<Uri> participants) {
+ try {
+ Log.startSession("ICA.aCP", mOwnerPackageName);
+ long token = Binder.clearCallingIdentity();
+ try {
+ synchronized (mLock) {
+ Call call = mCallIdMapper.getCall(callId);
+ if (call != null) {
+ call.addConferenceParticipants(participants);
+ } else {
+ Log.w(this, "addConferenceParticipants, unknown call id: %s", callId);
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ } finally {
+ Log.endSession();
+ }
+ }
+
+
+ @Override
public void pullExternalCall(String callId) {
try {
Log.startSession("ICA.pEC", mOwnerPackageName);
diff --git a/src/com/android/server/telecom/LogUtils.java b/src/com/android/server/telecom/LogUtils.java
index f586a9d..0b7a1b5 100644
--- a/src/com/android/server/telecom/LogUtils.java
+++ b/src/com/android/server/telecom/LogUtils.java
@@ -127,6 +127,7 @@
public static final String CONFERENCE_WITH = "CONF_WITH";
public static final String SPLIT_FROM_CONFERENCE = "CONF_SPLIT";
public static final String SWAP = "SWAP";
+ public static final String ADD_PARTICIPANT = "ADD_PARTICIPANT";
public static final String ADD_CHILD = "ADD_CHILD";
public static final String REMOVE_CHILD = "REMOVE_CHILD";
public static final String SET_PARENT = "SET_PARENT";
diff --git a/src/com/android/server/telecom/ParcelableCallUtils.java b/src/com/android/server/telecom/ParcelableCallUtils.java
index d1d8f0d..9f90874 100644
--- a/src/com/android/server/telecom/ParcelableCallUtils.java
+++ b/src/com/android/server/telecom/ParcelableCallUtils.java
@@ -514,7 +514,9 @@
android.telecom.Call.Details.CAPABILITY_CAN_PULL_CALL,
Connection.CAPABILITY_SUPPORT_DEFLECT,
- android.telecom.Call.Details.CAPABILITY_SUPPORT_DEFLECT
+ android.telecom.Call.Details.CAPABILITY_SUPPORT_DEFLECT,
+ Connection.CAPABILITY_ADD_PARTICIPANT,
+ android.telecom.Call.Details.CAPABILITY_ADD_PARTICIPANT
};
private static int convertConnectionToCallCapabilities(int connectionCapabilities) {
diff --git a/tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java b/tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java
index 315b074..fb04577 100644
--- a/tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java
+++ b/tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java
@@ -359,6 +359,12 @@
Session.Info info) throws RemoteException { }
@Override
+ public void addConferenceParticipants(String CallId, List<Uri> participants,
+ Session.Info sessionInfo) throws RemoteException {
+
+ }
+
+ @Override
public void onPostDialContinue(String callId, boolean proceed,
Session.Info info) throws RemoteException { }