Add disconnect cause and message to PhoneStateBroadcaster

Change-Id: Ibb857e16b578e8acc7fc20bd3ab6693afcab318e
diff --git a/src/com/android/telecomm/PhoneStateBroadcaster.java b/src/com/android/telecomm/PhoneStateBroadcaster.java
index ff0a836..f929f1f 100644
--- a/src/com/android/telecomm/PhoneStateBroadcaster.java
+++ b/src/com/android/telecomm/PhoneStateBroadcaster.java
@@ -21,6 +21,7 @@
 import android.telecomm.CallService;
 import android.telecomm.CallState;
 import android.telecomm.TelecommConstants;
+import android.telephony.DisconnectCause;
 import android.telephony.TelephonyManager;
 
 /**
@@ -69,6 +70,21 @@
         if (callService != null) {
             intent.putExtra(CallService.class.getName(), callService.getComponentName());
         }
+
+        // TODO: Replace these with real constants once this API has been vetted.
+        int disconnectCause = call.getDisconnectCause();
+        String disconnectMessage = call.getDisconnectMessage();
+        if (disconnectCause != DisconnectCause.NOT_VALID) {
+            intent.putExtra(TelecommConstants.EXTRA_CALL_DISCONNECT_CAUSE, disconnectCause);
+            if (disconnectMessage == null) {
+                disconnectMessage = DisconnectCause.toString(disconnectCause);
+            }
+        }
+        if (disconnectMessage != null) {
+            intent.putExtra(TelecommConstants.EXTRA_CALL_DISCONNECT_MESSAGE,
+                    call.getDisconnectMessage());
+        }
+
         TelecommApp.getInstance().sendBroadcast(intent, Manifest.permission.READ_PHONE_STATE);
         Log.i(this, "Broadcasted state change: %s", phoneState);
     }