Merge "Fix problems with wiring of initializing calls (2/2)" into lmp-dev
diff --git a/src/com/android/telecomm/Call.java b/src/com/android/telecomm/Call.java
index 48fb21c..203aa84 100644
--- a/src/com/android/telecomm/Call.java
+++ b/src/com/android/telecomm/Call.java
@@ -1212,6 +1212,8 @@
private int getStateFromConnectionState(int state) {
switch (state) {
+ case Connection.STATE_INITIALIZING:
+ return CallState.CONNECTING;
case Connection.STATE_ACTIVE:
return CallState.ACTIVE;
case Connection.STATE_DIALING:
diff --git a/src/com/android/telecomm/CallsManager.java b/src/com/android/telecomm/CallsManager.java
index f09b751..aff1885 100644
--- a/src/com/android/telecomm/CallsManager.java
+++ b/src/com/android/telecomm/CallsManager.java
@@ -650,6 +650,13 @@
}
/**
+ * Removes an existing disconnected call, and notifies the in-call app.
+ */
+ void markCallAsRemoved(Call call) {
+ removeCall(call);
+ }
+
+ /**
* Cleans up any calls currently associated with the specified connection service when the
* service binder disconnects unexpectedly.
*
diff --git a/src/com/android/telecomm/ConnectionServiceWrapper.java b/src/com/android/telecomm/ConnectionServiceWrapper.java
index d8f2c91..23ffab7 100644
--- a/src/com/android/telecomm/ConnectionServiceWrapper.java
+++ b/src/com/android/telecomm/ConnectionServiceWrapper.java
@@ -237,8 +237,18 @@
}
break;
}
- case MSG_REMOVE_CALL:
+ case MSG_REMOVE_CALL: {
+ call = mCallIdMapper.getCall(msg.obj);
+ if (call != null) {
+ if (call.isActive()) {
+ mCallsManager.markCallAsDisconnected(
+ call, DisconnectCause.NORMAL, null);
+ } else {
+ mCallsManager.markCallAsRemoved(call);
+ }
+ }
break;
+ }
case MSG_ON_POST_DIAL_WAIT: {
SomeArgs args = (SomeArgs) msg.obj;
try {
@@ -476,6 +486,9 @@
@Override
public void removeCall(String callId) {
logIncoming("removeCall %s", callId);
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_REMOVE_CALL, callId).sendToTarget();
+ }
}
@Override