Add CONNECTION_MANAGER_NOT_SUPPORTED to DisconnectCause

This CL adds a new disconnect cause. Connection managers
can specify this disconnect cause when it doesn't want
to route calls.

Bug: 16903083
Change-Id: I05822991c5c34ca3533652a10fbcb8845a604925
diff --git a/telecomm/java/android/telecom/DisconnectCause.java b/telecomm/java/android/telecom/DisconnectCause.java
index 206046d..73bcd0c 100644
--- a/telecomm/java/android/telecom/DisconnectCause.java
+++ b/telecomm/java/android/telecom/DisconnectCause.java
@@ -58,6 +58,11 @@
     public static final int RESTRICTED = 8;
     /** Disconnected for reason not described by other disconnect codes. */
     public static final int OTHER = 9;
+    /**
+     * Disconnected because the connection manager did not support the call. The call will be tried
+     * again without a connection manager. See {@link PhoneAccount#CAPABILITY_CONNECTION_MANAGER}.
+     */
+    public static final int CONNECTION_MANAGER_NOT_SUPPORTED = 10;
 
     private int mDisconnectCode;
     private CharSequence mDisconnectLabel;
@@ -220,7 +225,10 @@
     @Override
     public String toString() {
         String code = "";
-        switch (getCode()) {
+        switch (mDisconnectCode) {
+            case UNKNOWN:
+                code = "UNKNOWN";
+                break;
             case ERROR:
                 code = "ERROR";
                 break;
@@ -230,6 +238,9 @@
             case REMOTE:
                 code = "REMOTE";
                 break;
+            case CANCELED:
+                code = "CANCELED";
+                break;
             case MISSED:
                 code = "MISSED";
                 break;
@@ -245,9 +256,12 @@
             case OTHER:
                 code = "OTHER";
                 break;
-            case UNKNOWN:
+            case CONNECTION_MANAGER_NOT_SUPPORTED:
+                code = "CONNECTION_MANAGER_NOT_SUPPORTED";
+                break;
             default:
-                code = "UNKNOWN";
+                code = "invalid code: " + mDisconnectCode;
+                break;
         }
         String label = mDisconnectLabel == null ? "" : mDisconnectLabel.toString();
         String description = mDisconnectDescription == null