Merge klp-dev-plus-aosp into stage-aosp-master

Change-Id: I9f294587991055d15c369b3c1c4e23663ce35b9a
diff --git a/src/com/android/incallui/CallCardFragment.java b/src/com/android/incallui/CallCardFragment.java
index 0d26b82..9b452cd 100644
--- a/src/com/android/incallui/CallCardFragment.java
+++ b/src/com/android/incallui/CallCardFragment.java
@@ -22,6 +22,7 @@
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
+import android.telephony.DisconnectCause;
 import android.text.TextUtils;
 import android.view.Gravity;
 import android.view.LayoutInflater;
@@ -233,7 +234,7 @@
     }
 
     @Override
-    public void setCallState(int state, Call.DisconnectCause cause, boolean bluetoothOn,
+    public void setCallState(int state, int cause, boolean bluetoothOn,
             String gatewayLabel, String gatewayNumber) {
         String callStateLabel = null;
 
@@ -241,7 +242,7 @@
         callStateLabel = getCallStateLabelFromState(state, cause);
 
         Log.v(this, "setCallState " + callStateLabel);
-        Log.v(this, "DisconnectCause " + cause);
+        Log.v(this, "DisconnectCause " + DisconnectCause.toString(cause));
         Log.v(this, "bluetooth on " + bluetoothOn);
         Log.v(this, "gateway " + gatewayLabel + gatewayNumber);
 
@@ -360,7 +361,7 @@
      * Gets the call state label based on the state of the call and
      * cause of disconnect
      */
-    private String getCallStateLabelFromState(int state, Call.DisconnectCause cause) {
+    private String getCallStateLabelFromState(int state, int cause) {
         final Context context = getView().getContext();
         String callStateLabel = null;  // Label to display as part of the call banner
 
@@ -401,8 +402,10 @@
 
     /**
      * Maps the disconnect cause to a resource string.
+     *
+     * @param cause disconnect cause as defined in {@link DisconnectCause}
      */
-    private String getCallFailedString(Call.DisconnectCause cause) {
+    private String getCallFailedString(int cause) {
         int resID = R.string.card_title_call_ended;
 
         // TODO: The card *title* should probably be "Call ended" in all
@@ -410,61 +413,61 @@
         // probably also display the specific failure reason somewhere...
 
         switch (cause) {
-            case BUSY:
+            case DisconnectCause.BUSY:
                 resID = R.string.callFailed_userBusy;
                 break;
 
-            case CONGESTION:
+            case DisconnectCause.CONGESTION:
                 resID = R.string.callFailed_congestion;
                 break;
 
-            case TIMED_OUT:
+            case DisconnectCause.TIMED_OUT:
                 resID = R.string.callFailed_timedOut;
                 break;
 
-            case SERVER_UNREACHABLE:
+            case DisconnectCause.SERVER_UNREACHABLE:
                 resID = R.string.callFailed_server_unreachable;
                 break;
 
-            case NUMBER_UNREACHABLE:
+            case DisconnectCause.NUMBER_UNREACHABLE:
                 resID = R.string.callFailed_number_unreachable;
                 break;
 
-            case INVALID_CREDENTIALS:
+            case DisconnectCause.INVALID_CREDENTIALS:
                 resID = R.string.callFailed_invalid_credentials;
                 break;
 
-            case SERVER_ERROR:
+            case DisconnectCause.SERVER_ERROR:
                 resID = R.string.callFailed_server_error;
                 break;
 
-            case OUT_OF_NETWORK:
+            case DisconnectCause.OUT_OF_NETWORK:
                 resID = R.string.callFailed_out_of_network;
                 break;
 
-            case LOST_SIGNAL:
-            case CDMA_DROP:
+            case DisconnectCause.LOST_SIGNAL:
+            case DisconnectCause.CDMA_DROP:
                 resID = R.string.callFailed_noSignal;
                 break;
 
-            case LIMIT_EXCEEDED:
+            case DisconnectCause.LIMIT_EXCEEDED:
                 resID = R.string.callFailed_limitExceeded;
                 break;
 
-            case POWER_OFF:
+            case DisconnectCause.POWER_OFF:
                 resID = R.string.callFailed_powerOff;
                 break;
 
-            case ICC_ERROR:
+            case DisconnectCause.ICC_ERROR:
                 resID = R.string.callFailed_simError;
                 break;
 
-            case OUT_OF_SERVICE:
+            case DisconnectCause.OUT_OF_SERVICE:
                 resID = R.string.callFailed_outOfService;
                 break;
 
-            case INVALID_NUMBER:
-            case UNOBTAINABLE_NUMBER:
+            case DisconnectCause.INVALID_NUMBER:
+            case DisconnectCause.UNOBTAINABLE_NUMBER:
                 resID = R.string.callFailed_unobtainable_number;
                 break;
 
diff --git a/src/com/android/incallui/CallCardPresenter.java b/src/com/android/incallui/CallCardPresenter.java
index 949d718..4e9fe96 100644
--- a/src/com/android/incallui/CallCardPresenter.java
+++ b/src/com/android/incallui/CallCardPresenter.java
@@ -21,6 +21,7 @@
 import android.content.pm.PackageManager;
 import android.graphics.drawable.Drawable;
 import android.graphics.Bitmap;
+import android.telephony.DisconnectCause;
 import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 import android.text.format.DateUtils;
@@ -191,7 +192,7 @@
             ui.setCallState(mPrimary.getState(), mPrimary.getDisconnectCause(), bluetoothOn,
                     getGatewayLabel(), getGatewayNumber());
         } else {
-            ui.setCallState(Call.State.IDLE, Call.DisconnectCause.UNKNOWN, false, null, null);
+            ui.setCallState(Call.State.IDLE, DisconnectCause.NOT_VALID, false, null, null);
         }
     }
 
@@ -462,7 +463,7 @@
         void setSecondary(boolean show, String name, boolean nameIsNumber, String label,
                 Drawable photo, boolean isConference, boolean isGeneric);
         void setSecondaryImage(Drawable image);
-        void setCallState(int state, Call.DisconnectCause cause, boolean bluetoothOn,
+        void setCallState(int state, int cause, boolean bluetoothOn,
                 String gatewayLabel, String gatewayNumber);
         void setPrimaryCallElapsedTime(boolean show, String duration);
         void setPrimaryName(String name, boolean nameIsNumber);
diff --git a/src/com/android/incallui/CallList.java b/src/com/android/incallui/CallList.java
index dee2755..c161058 100644
--- a/src/com/android/incallui/CallList.java
+++ b/src/com/android/incallui/CallList.java
@@ -23,9 +23,9 @@
 
 import android.os.Handler;
 import android.os.Message;
+import android.telephony.DisconnectCause;
 
 import com.android.services.telephony.common.Call;
-import com.android.services.telephony.common.Call.DisconnectCause;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -313,7 +313,7 @@
                     state != Call.State.DISCONNECTED) {
 
                 call.setState(Call.State.DISCONNECTED);
-                call.setDisconnectCause(DisconnectCause.UNKNOWN);
+                call.setDisconnectCause(DisconnectCause.NOT_VALID);
                 updateCallInMap(call);
             }
         }
@@ -376,18 +376,17 @@
         Preconditions.checkState(call.getState() == Call.State.DISCONNECTED);
 
 
-        final Call.DisconnectCause cause = call.getDisconnectCause();
+        final int cause = call.getDisconnectCause();
         final int delay;
         switch (cause) {
-            case LOCAL:
+            case DisconnectCause.LOCAL:
                 delay = DISCONNECTED_CALL_SHORT_TIMEOUT_MS;
                 break;
-            case NORMAL:
-            case UNKNOWN:
+            case DisconnectCause.NORMAL:
                 delay = DISCONNECTED_CALL_MEDIUM_TIMEOUT_MS;
                 break;
-            case INCOMING_REJECTED:
-            case INCOMING_MISSED:
+            case DisconnectCause.INCOMING_REJECTED:
+            case DisconnectCause.INCOMING_MISSED:
                 // no delay for missed/rejected incoming calls
                 delay = 0;
                 break;
diff --git a/src/com/android/incallui/InCallActivity.java b/src/com/android/incallui/InCallActivity.java
index c34d854..d41cc99 100644
--- a/src/com/android/incallui/InCallActivity.java
+++ b/src/com/android/incallui/InCallActivity.java
@@ -28,6 +28,7 @@
 import android.content.Intent;
 import android.content.res.Configuration;
 import android.os.Bundle;
+import android.telephony.DisconnectCause;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.Window;
@@ -439,7 +440,10 @@
         return super.dispatchPopulateAccessibilityEvent(event);
     }
 
-    public void maybeShowErrorDialogOnDisconnect(Call.DisconnectCause cause) {
+    /**
+     * @param cause disconnect cause as defined in {@link DisconnectCause}
+     */
+    public void maybeShowErrorDialogOnDisconnect(int cause) {
         Log.d(this, "maybeShowErrorDialogOnDisconnect");
 
         if (!isFinishing()) {
@@ -485,18 +489,18 @@
         mDialog.show();
     }
 
-    private int getResIdForDisconnectCause(Call.DisconnectCause cause) {
+    private int getResIdForDisconnectCause(int cause) {
         int resId = INVALID_RES_ID;
 
-        if (cause == Call.DisconnectCause.CALL_BARRED) {
+        if (cause == DisconnectCause.CALL_BARRED) {
             resId = R.string.callFailed_cb_enabled;
-        } else if (cause == Call.DisconnectCause.FDN_BLOCKED) {
+        } else if (cause == DisconnectCause.FDN_BLOCKED) {
             resId = R.string.callFailed_fdn_only;
-        } else if (cause == Call.DisconnectCause.CS_RESTRICTED) {
+        } else if (cause == DisconnectCause.CS_RESTRICTED) {
             resId = R.string.callFailed_dsac_restricted;
-        } else if (cause == Call.DisconnectCause.CS_RESTRICTED_EMERGENCY) {
+        } else if (cause == DisconnectCause.CS_RESTRICTED_EMERGENCY) {
             resId = R.string.callFailed_dsac_restricted_emergency;
-        } else if (cause == Call.DisconnectCause.CS_RESTRICTED_NORMAL) {
+        } else if (cause == DisconnectCause.CS_RESTRICTED_NORMAL) {
             resId = R.string.callFailed_dsac_restricted_normal;
         }