Reduce latency for InCallUI by adding an intermediate state

Immediately add a call to Telecomm before the outgoing call broadcast
intent returns, this will reduce the latency for the InCallUI by
allowing the InCallActivity to start before Telecomm has responded.

Bug: 16396523

Change-Id: I4edd533083d3d7edb7a14d179c174223374a4282
diff --git a/src/com/android/telecomm/NewOutgoingCallIntentBroadcaster.java b/src/com/android/telecomm/NewOutgoingCallIntentBroadcaster.java
index 410cbfd..71d8a96 100644
--- a/src/com/android/telecomm/NewOutgoingCallIntentBroadcaster.java
+++ b/src/com/android/telecomm/NewOutgoingCallIntentBroadcaster.java
@@ -69,6 +69,7 @@
     private static final String SCHEME_SIP = "sip";
 
     private final CallsManager mCallsManager;
+    private final Call mCall;
     private final Intent mIntent;
     /*
      * Whether or not the outgoing call intent originated from the default phone application. If
@@ -76,9 +77,10 @@
      */
     private final boolean mIsDefaultOrSystemPhoneApp;
 
-    NewOutgoingCallIntentBroadcaster(CallsManager callsManager, Intent intent,
+    NewOutgoingCallIntentBroadcaster(CallsManager callsManager, Call call, Intent intent,
             boolean isDefaultPhoneApp) {
         mCallsManager = callsManager;
+        mCall = call;
         mIntent = intent;
         mIsDefaultOrSystemPhoneApp = isDefaultPhoneApp;
     }
@@ -124,7 +126,7 @@
 
             GatewayInfo gatewayInfo = getGateWayInfoFromIntent(intent, resultHandleUri);
             PhoneAccountHandle accountHandle = getAccountHandleFromIntent(intent);
-            mCallsManager.placeOutgoingCall(resultHandleUri, gatewayInfo, accountHandle,
+            mCallsManager.placeOutgoingCall(mCall, resultHandleUri, gatewayInfo, accountHandle,
                     mIntent.getBooleanExtra(TelecommManager.EXTRA_START_CALL_WITH_SPEAKERPHONE,
                             false),
                     mIntent.getIntExtra(TelecommManager.EXTRA_START_CALL_WITH_VIDEO_STATE,
@@ -205,8 +207,8 @@
             int videoState = mIntent.getIntExtra(
                     TelecommManager.EXTRA_START_CALL_WITH_VIDEO_STATE,
                     VideoCallProfile.VideoState.AUDIO_ONLY);
-            mCallsManager.placeOutgoingCall(
-                    Uri.fromParts(scheme, handle, null), null, null, speakerphoneOn, videoState);
+            mCallsManager.placeOutgoingCall(mCall, Uri.fromParts(scheme, handle, null), null, null,
+                    speakerphoneOn, videoState);
 
             // Don't return but instead continue and send the ACTION_NEW_OUTGOING_CALL broadcast
             // so that third parties can still inspect (but not intercept) the outgoing call. When