Merge "Update call capabilities when call is removed" into lmp-dev
diff --git a/src/com/android/server/telecom/Call.java b/src/com/android/server/telecom/Call.java
index edb3a38..a0a8a62 100644
--- a/src/com/android/server/telecom/Call.java
+++ b/src/com/android/server/telecom/Call.java
@@ -557,8 +557,12 @@
}
void setCallCapabilities(int callCapabilities) {
+ setCallCapabilities(callCapabilities, false /* forceUpdate */);
+ }
+
+ void setCallCapabilities(int callCapabilities, boolean forceUpdate) {
Log.v(this, "setCallCapabilities: %s", PhoneCapabilities.toString(callCapabilities));
- if (mCallCapabilities != callCapabilities) {
+ if (forceUpdate || mCallCapabilities != callCapabilities) {
mCallCapabilities = callCapabilities;
for (Listener l : mListeners) {
l.onCallCapabilitiesChanged(this);
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index d422db6..d714a6b 100644
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -996,6 +996,14 @@
}
updateForegroundCall();
}
+
+ // Now that a call has been removed, other calls may gain new call capabilities (for
+ // example, if only one call is left, it is now add-call capable again). Trigger the
+ // recalculation of the call's current capabilities by forcing an update. (See
+ // InCallController.toParcelableCall()).
+ for (Call otherCall : mCalls) {
+ otherCall.setCallCapabilities(call.getCallCapabilities(), true /* forceUpdate */);
+ }
}
/**