Fix problems with wiring of initializing calls (2/2)
Bug: 16993846
Change-Id: Iee3b33fb01d1a567532d791496aa03f908c22bf6
diff --git a/src/com/android/telecomm/Call.java b/src/com/android/telecomm/Call.java
index 9d587ab..147bdfa 100644
--- a/src/com/android/telecomm/Call.java
+++ b/src/com/android/telecomm/Call.java
@@ -1200,6 +1200,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 9cade3d..0d10b17 100644
--- a/src/com/android/telecomm/CallsManager.java
+++ b/src/com/android/telecomm/CallsManager.java
@@ -642,6 +642,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 2d5ade2..88b2fa4 100644
--- a/src/com/android/telecomm/ConnectionServiceWrapper.java
+++ b/src/com/android/telecomm/ConnectionServiceWrapper.java
@@ -236,8 +236,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 {
@@ -475,6 +485,9 @@
@Override
public void removeCall(String callId) {
logIncoming("removeCall %s", callId);
+ if (mCallIdMapper.isValidCallId(callId)) {
+ mHandler.obtainMessage(MSG_REMOVE_CALL, callId).sendToTarget();
+ }
}
@Override