Fix black screen flashing during sip calls

Add the same delayed finish logic that is in OutgoingCallBroadcaster
to SipCallOptionHandler. This is needed because SipCallOptionHandler now
lives in a separate process from InCallActivity, so calling finish
immediately would cause a black screen before the InCallUI comes up.

Bug: 10626098
Change-Id: I84295a0a1dc5d6fa3606a6ab768f84e0d0423c30
diff --git a/src/com/android/phone/SipCallOptionHandler.java b/src/com/android/phone/SipCallOptionHandler.java
index 295e886..5a7e91f 100644
--- a/src/com/android/phone/SipCallOptionHandler.java
+++ b/src/com/android/phone/SipCallOptionHandler.java
@@ -36,6 +36,8 @@
 import android.net.sip.SipManager;
 import android.net.sip.SipProfile;
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
 import android.os.SystemProperties;
 import android.provider.Settings;
 import android.telephony.PhoneNumberUtils;
@@ -85,6 +87,21 @@
     private boolean mUseSipPhone = false;
     private boolean mMakePrimary = false;
 
+    private static final int EVENT_DELAYED_FINISH = 1;
+
+    private static final int DELAYED_FINISH_TIME = 2000; // msec
+
+    private final Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            if (msg.what == EVENT_DELAYED_FINISH) {
+                finish();
+            } else {
+                Log.wtf(TAG, "Unknown message id: " + msg.what);
+            }
+        }
+    };
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -208,6 +225,14 @@
         setResultAndFinish();
     }
 
+    /**
+     * Starts a delayed finish() in order to give the UI
+     * some time to start up.
+     */
+    private void startDelayedFinish() {
+        mHandler.sendEmptyMessageDelayed(EVENT_DELAYED_FINISH, DELAYED_FINISH_TIME);
+    }
+
     @Override
     public void onPause() {
         super.onPause();
@@ -394,7 +419,7 @@
                     // Woo hoo -- it's finally OK to initiate the outgoing call!
                     PhoneGlobals.getInstance().callController.placeCall(mIntent);
                 }
-                finish();
+                startDelayedFinish();
             }
         });
     }