Implement Connection.setCallCapabilities
Change-Id: I90238eeefbcbfaa044881d80833b62e4474821d6
diff --git a/src/com/android/telecomm/Call.java b/src/com/android/telecomm/Call.java
index 5785ee7..f5229cc 100644
--- a/src/com/android/telecomm/Call.java
+++ b/src/com/android/telecomm/Call.java
@@ -67,7 +67,7 @@
void onFailedIncomingCall(Call call);
void onRequestingRingback(Call call, boolean requestingRingback);
void onPostDialWait(Call call, String remaining);
- void onIsConferenceCapableChanged(Call call, boolean isConferenceCapable);
+ void onCallCapabilitiesChanged(Call call);
void onExpiredConferenceCall(Call call);
void onConfirmedConferenceCall(Call call);
void onParentChanged(Call call);
@@ -96,7 +96,7 @@
@Override
public void onPostDialWait(Call call, String remaining) {}
@Override
- public void onIsConferenceCapableChanged(Call call, boolean isConferenceCapable) {}
+ public void onCallCapabilitiesChanged(Call call) {}
@Override
public void onExpiredConferenceCall(Call call) {}
@Override
@@ -216,7 +216,7 @@
/** Whether direct-to-voicemail query is pending. */
private boolean mDirectToVoicemailQueryPending;
- private boolean mIsConferenceCapable = false;
+ private int mCallCapabilities;
private boolean mIsConference = false;
@@ -419,15 +419,15 @@
mConnectTimeMillis = connectTimeMillis;
}
- boolean isConferenceCapable() {
- return mIsConferenceCapable;
+ int getCallCapabilities() {
+ return mCallCapabilities;
}
- void setIsConferenceCapable(boolean isConferenceCapable) {
- if (mIsConferenceCapable != isConferenceCapable) {
- mIsConferenceCapable = isConferenceCapable;
+ void setCallCapabilities(int callCapabilities) {
+ if (mCallCapabilities != callCapabilities) {
+ mCallCapabilities = callCapabilities;
for (Listener l : mListeners) {
- l.onIsConferenceCapableChanged(this, mIsConferenceCapable);
+ l.onCallCapabilitiesChanged(this);
}
}
}
diff --git a/src/com/android/telecomm/CallsManager.java b/src/com/android/telecomm/CallsManager.java
index ec23222..3811de1 100644
--- a/src/com/android/telecomm/CallsManager.java
+++ b/src/com/android/telecomm/CallsManager.java
@@ -57,7 +57,7 @@
void onForegroundCallChanged(Call oldForegroundCall, Call newForegroundCall);
void onAudioStateChanged(CallAudioState oldAudioState, CallAudioState newAudioState);
void onRequestingRingback(Call call, boolean ringback);
- void onIsConferenceCapableChanged(Call call, boolean isConferenceCapable);
+ void onCallCapabilitiesChanged(Call call);
void onIsConferencedChanged(Call call);
void onCannedSmsResponsesLoaded(Call call);
void onCallVideoProviderChanged(Call call);
@@ -161,9 +161,9 @@
}
@Override
- public void onIsConferenceCapableChanged(Call call, boolean isConferenceCapable) {
+ public void onCallCapabilitiesChanged(Call call) {
for (CallsManagerListener listener : mListeners) {
- listener.onIsConferenceCapableChanged(call, isConferenceCapable);
+ listener.onCallCapabilitiesChanged(call);
}
}
diff --git a/src/com/android/telecomm/CallsManagerListenerBase.java b/src/com/android/telecomm/CallsManagerListenerBase.java
index 77dc7b6..8073042 100644
--- a/src/com/android/telecomm/CallsManagerListenerBase.java
+++ b/src/com/android/telecomm/CallsManagerListenerBase.java
@@ -66,7 +66,7 @@
}
@Override
- public void onIsConferenceCapableChanged(Call call, boolean isConferenceCapable) {
+ public void onCallCapabilitiesChanged(Call call) {
}
@Override
diff --git a/src/com/android/telecomm/ConnectionServiceWrapper.java b/src/com/android/telecomm/ConnectionServiceWrapper.java
index e355890..b2dd085 100644
--- a/src/com/android/telecomm/ConnectionServiceWrapper.java
+++ b/src/com/android/telecomm/ConnectionServiceWrapper.java
@@ -68,7 +68,7 @@
private static final int MSG_SET_DISCONNECTED = 8;
private static final int MSG_SET_ON_HOLD = 9;
private static final int MSG_SET_REQUESTING_RINGBACK = 10;
- private static final int MSG_CAN_CONFERENCE = 11;
+ private static final int MSG_SET_CALL_CAPABILITIES = 11;
private static final int MSG_SET_IS_CONFERENCED = 12;
private static final int MSG_ADD_CONFERENCE_CALL = 13;
private static final int MSG_REMOVE_CALL = 14;
@@ -205,13 +205,13 @@
}
break;
}
- case MSG_CAN_CONFERENCE: {
+ case MSG_SET_CALL_CAPABILITIES: {
call = mCallIdMapper.getCall(msg.obj);
if (call != null) {
- call.setIsConferenceCapable(msg.arg1 == 1);
+ call.setCallCapabilities(msg.arg1);
} else {
//Log.w(ConnectionServiceWrapper.this,
- // "canConference, unknown call id: %s", msg.obj);
+ // "setCallCapabilities, unknown call id: %s", msg.obj);
}
break;
}
@@ -287,28 +287,16 @@
break;
}
case MSG_SET_FEATURES: {
- SomeArgs args = (SomeArgs) msg.obj;
- try {
- call = mCallIdMapper.getCall(args.arg1);
- int features = (int) args.argi1;
- if (call != null) {
- call.setFeatures(features);
- }
- } finally {
- args.recycle();
+ call = mCallIdMapper.getCall(msg.obj);
+ if (call != null) {
+ call.setFeatures(msg.arg1);
}
break;
}
case MSG_SET_AUDIO_MODE_IS_VOIP: {
- SomeArgs args = (SomeArgs) msg.obj;
- try {
- call = mCallIdMapper.getCall(args.arg1);
- boolean isVoip = args.argi1 == 1;
- if (call != null) {
- call.setAudioModeIsVoip(isVoip);
- }
- } finally {
- args.recycle();
+ call = mCallIdMapper.getCall(msg.obj);
+ if (call != null) {
+ call.setAudioModeIsVoip(msg.arg1 == 1);
}
break;
}
@@ -444,9 +432,9 @@
/** ${inheritDoc} */
@Override
- public void setCanConference(String callId, boolean canConference) {
- logIncoming("setCanConference %s %b", callId, canConference);
- mHandler.obtainMessage(MSG_CAN_CONFERENCE, canConference ? 1 : 0, 0, callId)
+ public void setCallCapabilities(String callId, int callCapabilities) {
+ logIncoming("setCallCapabilities %s %d", callId, callCapabilities);
+ mHandler.obtainMessage(MSG_SET_CALL_CAPABILITIES, callCapabilities, 0, callId)
.sendToTarget();
}
@@ -489,20 +477,15 @@
public void setFeatures(String callId, int features) {
logIncoming("setFeatures %s %d", callId, features);
mCallIdMapper.checkValidCallId(callId);
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.argi1 = features;
- mHandler.obtainMessage(MSG_SET_FEATURES, args).sendToTarget();
+ mHandler.obtainMessage(MSG_SET_FEATURES, features, 0, callId).sendToTarget();
}
@Override
public void setAudioModeIsVoip(String callId, boolean isVoip) {
logIncoming("setAudioModeIsVoip %s %d", callId, isVoip);
mCallIdMapper.checkValidCallId(callId);
- SomeArgs args = SomeArgs.obtain();
- args.arg1 = callId;
- args.argi1 = isVoip ? 1 : 0;
- mHandler.obtainMessage(MSG_SET_AUDIO_MODE_IS_VOIP, args).sendToTarget();
+ mHandler.obtainMessage(MSG_SET_AUDIO_MODE_IS_VOIP, isVoip ? 1 : 0, 0,
+ callId).sendToTarget();
}
@Override
diff --git a/src/com/android/telecomm/InCallController.java b/src/com/android/telecomm/InCallController.java
index 42d6a03..94f5b6e 100644
--- a/src/com/android/telecomm/InCallController.java
+++ b/src/com/android/telecomm/InCallController.java
@@ -133,7 +133,7 @@
}
@Override
- public void onIsConferenceCapableChanged(Call call, boolean isConferenceCapable) {
+ public void onCallCapabilitiesChanged(Call call) {
updateCall(call);
}
@@ -269,13 +269,14 @@
CallServiceDescriptor descriptor = call.getConnectionService() != null ?
call.getConnectionService().getDescriptor() : null;
- int capabilities = CallCapabilities.HOLD | CallCapabilities.MUTE;
- if (CallsManager.getInstance().isAddCallCapable(call)) {
- capabilities |= CallCapabilities.ADD_CALL;
+ int capabilities = call.getCallCapabilities();
+ if (!CallsManager.getInstance().isAddCallCapable(call)) {
+ capabilities &= ~CallCapabilities.ADD_CALL;
}
- if (call.isConferenceCapable()) {
- capabilities |= CallCapabilities.MERGE_CALLS;
+ if (call.isEmergencyCall()) {
+ capabilities &= ~CallCapabilities.MUTE;
}
+
CallState state = call.getState();
if (state == CallState.ABORTED) {
state = CallState.DISCONNECTED;