Merge "Changing the point where the call state is set." into lmp-dev
diff --git a/src/com/android/telecomm/Call.java b/src/com/android/telecomm/Call.java
index 82827ad..6cfaeda 100644
--- a/src/com/android/telecomm/Call.java
+++ b/src/com/android/telecomm/Call.java
@@ -65,7 +65,7 @@
      * Listener for events on the call.
      */
     interface Listener {
-        void onSuccessfulOutgoingCall(Call call);
+        void onSuccessfulOutgoingCall(Call call, CallState callState);
         void onFailedOutgoingCall(Call call, int errorCode, String errorMsg);
         void onCancelledOutgoingCall(Call call);
         void onSuccessfulIncomingCall(Call call);
@@ -94,7 +94,7 @@
 
     abstract static class ListenerBase implements Listener {
         @Override
-        public void onSuccessfulOutgoingCall(Call call) {}
+        public void onSuccessfulOutgoingCall(Call call, CallState callState) {}
         @Override
         public void onFailedOutgoingCall(Call call, int errorCode, String errorMsg) {}
         @Override
@@ -623,7 +623,6 @@
             ConnectionRequest request, ParcelableConnection connection) {
         Log.v(this, "handleCreateConnectionSuccessful %s", connection);
         mCreateConnectionProcessor = null;
-        setState(getStateFromConnectionState(connection.getState()));
         setTargetPhoneAccount(connection.getPhoneAccount());
         setHandle(connection.getHandle(), connection.getHandlePresentation());
         setCallerDisplayName(
@@ -644,7 +643,8 @@
             mHandler.postDelayed(mDirectToVoicemailRunnable, Timeouts.getDirectToVoicemailMillis());
         } else {
             for (Listener l : mListeners) {
-                l.onSuccessfulOutgoingCall(this);
+                l.onSuccessfulOutgoingCall(this,
+                        getStateFromConnectionState(connection.getState()));
             }
         }
     }
@@ -676,7 +676,6 @@
         if (mIsIncoming) {
             clearConnectionService();
             setDisconnectCause(DisconnectCause.OUTGOING_CANCELED, null);
-            setState(CallState.DISCONNECTED);
 
             Listener[] listeners = mListeners.toArray(new Listener[mListeners.size()]);
             for (int i = 0; i < listeners.length; i++) {
diff --git a/src/com/android/telecomm/CallsManager.java b/src/com/android/telecomm/CallsManager.java
index b7cc233..d9d3ef9 100644
--- a/src/com/android/telecomm/CallsManager.java
+++ b/src/com/android/telecomm/CallsManager.java
@@ -123,8 +123,9 @@
     }
 
     @Override
-    public void onSuccessfulOutgoingCall(Call call) {
+    public void onSuccessfulOutgoingCall(Call call, CallState callState) {
         Log.v(this, "onSuccessfulOutgoingCall, %s", call);
+        setCallState(call, callState);
         if (mCalls.contains(call)) {
             // The call's ConnectionService has been updated.
             for (CallsManagerListener listener : mListeners) {
@@ -161,6 +162,7 @@
 
     @Override
     public void onFailedIncomingCall(Call call) {
+        setCallState(call, CallState.DISCONNECTED);
         call.removeListener(this);
     }