Adds support for DISCONNECTING state

Bug: 10808537
Change-Id: I012c05baa04c4d5fa6691e2f89d724dad57373c7
diff --git a/src/com/android/phone/CallHandlerServiceProxy.java b/src/com/android/phone/CallHandlerServiceProxy.java
index 2f71457..7ef3399 100644
--- a/src/com/android/phone/CallHandlerServiceProxy.java
+++ b/src/com/android/phone/CallHandlerServiceProxy.java
@@ -154,7 +154,7 @@
             Log.d(TAG, "onIncoming: " + call);
         }
         try {
-            // TODO(klp): check RespondViaSmsManager.allowRespondViaSmsForCall()
+            // TODO: check RespondViaSmsManager.allowRespondViaSmsForCall()
             // must refactor call method to accept proper call object.
             synchronized (mServiceAndQueueLock) {
                 if (mCallHandlerServiceGuarded != null) {
diff --git a/src/com/android/phone/CallModeler.java b/src/com/android/phone/CallModeler.java
index 75da0be..8e99b38 100644
--- a/src/com/android/phone/CallModeler.java
+++ b/src/com/android/phone/CallModeler.java
@@ -224,7 +224,8 @@
                     state == Call.State.CONFERENCED ||
                     state == Call.State.DIALING ||
                     state == Call.State.INCOMING ||
-                    state == Call.State.ONHOLD) {
+                    state == Call.State.ONHOLD ||
+                    state == Call.State.DISCONNECTING) {
                 return true;
             }
         }
@@ -353,12 +354,16 @@
         for (com.android.internal.telephony.Call telephonyCall : telephonyCalls) {
 
             for (Connection connection : telephonyCall.getConnections()) {
-                if (DBG) Log.d(TAG, "connection: " + connection);
+                if (DBG) Log.d(TAG, "connection: " + connection + connection.getState());
 
                 // We only send updates for live calls which are not incoming (ringing).
                 // Disconnected and incoming calls are handled by onDisconnect and
                 // onNewRingingConnection.
-                boolean shouldUpdate = connection.getState().isAlive() &&
+                boolean shouldUpdate =
+                        connection.getState() !=
+                                com.android.internal.telephony.Call.State.DISCONNECTED &&
+                        connection.getState() !=
+                                com.android.internal.telephony.Call.State.IDLE &&
                         !connection.getState().isRinging();
 
                 // New connections return a Call with INVALID state, which does not translate to
@@ -705,8 +710,10 @@
             case HOLDING:
                 retval = State.ONHOLD;
                 break;
-            case DISCONNECTED:
             case DISCONNECTING:
+                retval = State.DISCONNECTING;
+                break;
+            case DISCONNECTED:
                 retval = State.DISCONNECTED;
             default:
         }
diff --git a/src/com/android/phone/PhoneUtils.java b/src/com/android/phone/PhoneUtils.java
index c3abd9f..6e8abfd 100644
--- a/src/com/android/phone/PhoneUtils.java
+++ b/src/com/android/phone/PhoneUtils.java
@@ -2415,7 +2415,7 @@
             if (DBG) log("activateSpeakerIfDocked(): In a dock -> may need to turn on speaker.");
             final PhoneGlobals app = PhoneGlobals.getInstance();
 
-            // TODO(klp): This function should move to AudioRouter
+            // TODO: This function should move to AudioRouter
             final BluetoothManager btManager = app.getBluetoothManager();
             final WiredHeadsetManager wiredHeadset = app.getWiredHeadsetManager();
             final AudioRouter audioRouter = app.getAudioRouter();