Synchronize onCallAdded with onCallRemoved.

In cases of very quick call and hangup we can sometimes get call
disconnected (and onCallRemoved) status chagned before we get
onCallAdded. This is because onCallAdded currently does not hold the
lock.

Bug: b/28969591
Change-Id: Ic2f291dff9dd61c54b1ada3b21c61e24bca65ebc
diff --git a/src/com/android/server/telecom/InCallController.java b/src/com/android/server/telecom/InCallController.java
index e5a9bac..0a14ffb 100644
--- a/src/com/android/server/telecom/InCallController.java
+++ b/src/com/android/server/telecom/InCallController.java
@@ -84,27 +84,31 @@
             @Override
             public void onServiceConnected(ComponentName name, IBinder service) {
                 Log.startSession("ICSBC.oSC");
-                try {
-                    Log.d(this, "onServiceConnected: %s %b %b", name, mIsBound, mIsConnected);
-                    mIsBound = true;
-                    if (mIsConnected) {
-                        // Only proceed if we are supposed to be connected.
-                        onConnected(service);
+                synchronized (mLock) {
+                    try {
+                        Log.d(this, "onServiceConnected: %s %b %b", name, mIsBound, mIsConnected);
+                        mIsBound = true;
+                        if (mIsConnected) {
+                            // Only proceed if we are supposed to be connected.
+                            onConnected(service);
+                        }
+                    } finally {
+                        Log.endSession();
                     }
-                } finally {
-                    Log.endSession();
                 }
             }
 
             @Override
             public void onServiceDisconnected(ComponentName name) {
                 Log.startSession("ICSBC.oSD");
-                try {
-                    Log.d(this, "onDisconnected: %s", name);
-                    mIsBound = false;
-                    onDisconnected();
-                } finally {
-                    Log.endSession();
+                synchronized (mLock) {
+                    try {
+                        Log.d(this, "onDisconnected: %s", name);
+                        mIsBound = false;
+                        onDisconnected();
+                    } finally {
+                        Log.endSession();
+                    }
                 }
             }
         };