Add Connection.setCallCapabilities
This will be used to enable things like hold and
conferencing.
Change-Id: I90238eeefbcbfaa044881d80833b62e4474821d6
diff --git a/api/current.txt b/api/current.txt
index 29ec56b..896bfb3 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -27626,13 +27626,13 @@
ctor protected Connection();
method public final boolean getAudioModeIsVoip();
method public final android.telecomm.CallAudioState getCallAudioState();
+ method public final int getCallCapabilities();
method public final java.util.List<android.telecomm.Connection> getChildConnections();
method public final int getFeatures();
method public final android.net.Uri getHandle();
method public final android.telecomm.Connection getParentConnection();
method public final int getState();
method public final android.telecomm.StatusHints getStatusHints();
- method public final boolean isConferenceCapable();
method public final boolean isConferenceConnection();
method public final boolean isRequestingRingback();
method protected void onAbort();
@@ -27651,13 +27651,13 @@
method protected void onUnhold();
method public final void setActive();
method public final void setAudioModeIsVoip(boolean);
+ method public final void setCallCapabilities(int);
method public final void setCallVideoProvider(android.telecomm.CallVideoProvider);
method public final void setDestroyed();
method public final void setDialing();
method public final void setDisconnected(int, java.lang.String);
method public final void setFeatures(int);
method public final void setHandle(android.net.Uri);
- 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);
@@ -27814,6 +27814,7 @@
method public void answer();
method public void disconnect();
method public boolean getAudioModeIsVoip();
+ method public int getCallCapabilities();
method public int getDisconnectCause();
method public java.lang.String getDisconnectMessage();
method public int getFeatures();
@@ -27830,6 +27831,7 @@
}
public static abstract interface RemoteConnection.Listener {
+ method public abstract void onCallCapabilitiesChanged(android.telecomm.RemoteConnection, int);
method public abstract void onDestroyed(android.telecomm.RemoteConnection);
method public abstract void onDisconnected(android.telecomm.RemoteConnection, int, java.lang.String);
method public abstract void onFeaturesChanged(android.telecomm.RemoteConnection, int);
diff --git a/telecomm/java/android/telecomm/Connection.java b/telecomm/java/android/telecomm/Connection.java
index 770e385..2fd001a 100644
--- a/telecomm/java/android/telecomm/Connection.java
+++ b/telecomm/java/android/telecomm/Connection.java
@@ -41,7 +41,7 @@
void onPostDialWait(Connection c, String remaining);
void onRequestingRingback(Connection c, boolean ringback);
void onDestroyed(Connection c);
- void onConferenceCapableChanged(Connection c, boolean isConferenceCapable);
+ void onCallCapabilitiesChanged(Connection c, int callCapabilities);
void onParentConnectionChanged(Connection c, Connection parent);
void onSetCallVideoProvider(Connection c, CallVideoProvider callVideoProvider);
void onSetAudioModeIsVoip(Connection c, boolean isVoip);
@@ -76,7 +76,7 @@
public void onRequestingRingback(Connection c, boolean ringback) {}
@Override
- public void onConferenceCapableChanged(Connection c, boolean isConferenceCapable) {}
+ public void onCallCapabilitiesChanged(Connection c, int callCapabilities) {}
@Override
public void onParentConnectionChanged(Connection c, Connection parent) {}
@@ -110,7 +110,7 @@
private CallAudioState mCallAudioState;
private Uri mHandle;
private boolean mRequestingRingback = false;
- private boolean mIsConferenceCapable = false;
+ private int mCallCapabilities;
private Connection mParentConnection;
private boolean mAudioModeIsVoip;
private StatusHints mStatusHints;
@@ -279,10 +279,10 @@
}
/**
- * Returns whether this connection is capable of being conferenced.
+ * Returns the connection's {@link CallCapabilities}
*/
- public final boolean isConferenceCapable() {
- return mIsConferenceCapable;
+ public final int getCallCapabilities() {
+ return mCallCapabilities;
}
/**
@@ -394,13 +394,15 @@
}
/**
- * TODO(santoscordon): Needs documentation.
+ * Sets the connection's {@link CallCapabilities}.
+ *
+ * @param callCapabilities The new call capabilities.
*/
- public final void setIsConferenceCapable(boolean isConferenceCapable) {
- if (mIsConferenceCapable != isConferenceCapable) {
- mIsConferenceCapable = isConferenceCapable;
+ public final void setCallCapabilities(int callCapabilities) {
+ if (mCallCapabilities != callCapabilities) {
+ mCallCapabilities = callCapabilities;
for (Listener l : mListeners) {
- l.onConferenceCapableChanged(this, mIsConferenceCapable);
+ l.onCallCapabilitiesChanged(this, mCallCapabilities);
}
}
}
diff --git a/telecomm/java/android/telecomm/ConnectionService.java b/telecomm/java/android/telecomm/ConnectionService.java
index 905304e..1bc184b 100644
--- a/telecomm/java/android/telecomm/ConnectionService.java
+++ b/telecomm/java/android/telecomm/ConnectionService.java
@@ -346,9 +346,9 @@
}
@Override
- public void onConferenceCapableChanged(Connection c, boolean isConferenceCapable) {
+ public void onCallCapabilitiesChanged(Connection c, int callCapabilities) {
String id = mIdByConnection.get(c);
- mAdapter.setCanConference(id, isConferenceCapable);
+ mAdapter.setCallCapabilities(id, callCapabilities);
}
/** ${inheritDoc} */
diff --git a/telecomm/java/android/telecomm/ConnectionServiceAdapter.java b/telecomm/java/android/telecomm/ConnectionServiceAdapter.java
index 890513f..b60e7c6 100644
--- a/telecomm/java/android/telecomm/ConnectionServiceAdapter.java
+++ b/telecomm/java/android/telecomm/ConnectionServiceAdapter.java
@@ -221,16 +221,10 @@
}
}
- /**
- * Indicates that the specified call can conference with any of the specified list of calls.
- *
- * @param callId The unique ID of the call.
- * @param canConference Specified whether or not the call can be conferenced.
- */
- void setCanConference(String callId, boolean canConference) {
+ void setCallCapabilities(String callId, int capabilities) {
for (IConnectionServiceAdapter adapter : mAdapters) {
try {
- adapter.setCanConference(callId, canConference);
+ adapter.setCallCapabilities(callId, capabilities);
} catch (RemoteException ignored) {
}
}
diff --git a/telecomm/java/android/telecomm/RemoteConnection.java b/telecomm/java/android/telecomm/RemoteConnection.java
index 665a864..8ef283a 100644
--- a/telecomm/java/android/telecomm/RemoteConnection.java
+++ b/telecomm/java/android/telecomm/RemoteConnection.java
@@ -35,6 +35,7 @@
void onStateChanged(RemoteConnection connection, int state);
void onDisconnected(RemoteConnection connection, int cause, String message);
void onRequestingRingback(RemoteConnection connection, boolean ringback);
+ void onCallCapabilitiesChanged(RemoteConnection connection, int callCapabilities);
void onPostDialWait(RemoteConnection connection, String remainingDigits);
void onFeaturesChanged(RemoteConnection connection, int features);
void onSetAudioModeIsVoip(RemoteConnection connection, boolean isVoip);
@@ -51,6 +52,7 @@
private String mDisconnectMessage;
private boolean mRequestingRingback;
private boolean mConnected;
+ private int mCallCapabilities;
private int mFeatures;
private boolean mAudioModeIsVoip;
private StatusHints mStatusHints;
@@ -85,6 +87,10 @@
return mDisconnectMessage;
}
+ public int getCallCapabilities() {
+ return mCallCapabilities;
+ }
+
public int getFeatures() {
return mFeatures;
}
@@ -229,6 +235,16 @@
/**
* @hide
*/
+ void setCallCapabilities(int callCapabilities) {
+ mCallCapabilities = callCapabilities;
+ for (Listener l : mListeners) {
+ l.onCallCapabilitiesChanged(this, callCapabilities);
+ }
+ }
+
+ /**
+ * @hide
+ */
void setDestroyed() {
if (!mListeners.isEmpty()) {
// Make sure that the listeners are notified that the call is destroyed first.
diff --git a/telecomm/java/android/telecomm/RemoteConnectionService.java b/telecomm/java/android/telecomm/RemoteConnectionService.java
index 42a9f5f..c22005b 100644
--- a/telecomm/java/android/telecomm/RemoteConnectionService.java
+++ b/telecomm/java/android/telecomm/RemoteConnectionService.java
@@ -144,8 +144,10 @@
/** ${inheritDoc} */
@Override
- public void setCanConference(String connectionId, boolean canConference) {
- // not supported for remote connections.
+ public void setCallCapabilities(String connectionId, int callCapabilities) {
+ if (isCurrentConnection(connectionId)) {
+ mConnection.setCallCapabilities(callCapabilities);
+ }
}
/** ${inheritDoc} */
diff --git a/telecomm/java/com/android/internal/telecomm/IConnectionServiceAdapter.aidl b/telecomm/java/com/android/internal/telecomm/IConnectionServiceAdapter.aidl
index 47cc78e..e724bfb 100644
--- a/telecomm/java/com/android/internal/telecomm/IConnectionServiceAdapter.aidl
+++ b/telecomm/java/com/android/internal/telecomm/IConnectionServiceAdapter.aidl
@@ -50,7 +50,7 @@
void setRequestingRingback(String callId, boolean ringing);
- void setCanConference(String callId, boolean canConference);
+ void setCallCapabilities(String callId, int callCapabilities);
void setIsConferenced(String callId, String conferenceCallId);