Perform clean up when a call-service dies.

Also add some test call service logic to make this logic
easily testable.

Bug: 13546896

Change-Id: I7e1518488b4cd2d7752c3fee32816cecf734e388
diff --git a/src/com/android/telecomm/IncomingCallsManager.java b/src/com/android/telecomm/IncomingCallsManager.java
index 6edbbbf..0d98dc4 100644
--- a/src/com/android/telecomm/IncomingCallsManager.java
+++ b/src/com/android/telecomm/IncomingCallsManager.java
@@ -63,7 +63,7 @@
 
         Runnable errorCallback = new Runnable() {
             @Override public void run() {
-                handleFailedIncomingCall(call);
+                handleFailedIncomingCall(callId);
             }
         };
 
@@ -89,12 +89,13 @@
     /**
      * Notifies switchboard of the failed incoming call after removing it from the pending list.
      *
-     * @param call The call.
+     * @param callId The ID of the call.
      */
-    private void handleFailedIncomingCall(Call call) {
+    void handleFailedIncomingCall(String callId) {
         ThreadUtil.checkOnMainThread();
 
-        if (mPendingIncomingCalls.remove(call.getId()) != null) {
+        Call call = mPendingIncomingCalls.remove(callId);
+        if (call != null) {
             Log.i(this, "Failed to get details for incoming call %s", call);
             // The call was found still waiting for details. Consider it failed.
             mSwitchboard.handleFailedIncomingCall(call);