Making CallsManager interact with only Calls.
Eventually, I would like CallsManager to interact only with Call
objects. This is one move in that direction.
OLD:
CallsManager->Switchboard-+->Call-+->CallService
+-------+
NEW:
CallsManager->Call-+->Switchboard-+->CallService
+--------------+
This change also includes new direct listening to Call events by
CallsManager. At the moment includes only success/failure of incoming
and outgoing calls but should eventually be more generic as we implement
more of the Telecomm design.
Change-Id: I7a764706acd0872960642a7b16c71a2bc514f3b3
diff --git a/src/com/android/telecomm/Switchboard.java b/src/com/android/telecomm/Switchboard.java
index 82f94fa..81ab172 100644
--- a/src/com/android/telecomm/Switchboard.java
+++ b/src/com/android/telecomm/Switchboard.java
@@ -19,8 +19,6 @@
import android.content.ComponentName;
import android.os.Bundle;
import android.os.Handler;
-import android.os.Looper;
-
import android.os.Message;
import android.telecomm.CallInfo;
import android.telecomm.CallServiceDescriptor;
@@ -32,7 +30,6 @@
import com.google.common.collect.Sets;
import java.util.Collection;
-import java.util.Iterator;
import java.util.Set;
/**
@@ -45,7 +42,7 @@
final class Switchboard {
private final static int MSG_EXPIRE_STALE_CALL = 1;
- private final CallsManager mCallsManager;
+ private final static Switchboard sInstance = new Switchboard();
/** Used to place outgoing calls. */
private final OutgoingCallsManager mOutgoingCallsManager;
@@ -95,13 +92,17 @@
*/
private int mLookupId = 0;
+ /** Singleton accessor. */
+ static Switchboard getInstance() {
+ return sInstance;
+ }
+
/**
* Persists the specified parameters and initializes Switchboard.
*/
- Switchboard(CallsManager callsManager) {
+ private Switchboard() {
ThreadUtil.checkOnMainThread();
- mCallsManager = callsManager;
mOutgoingCallsManager = new OutgoingCallsManager(this);
mIncomingCallsManager = new IncomingCallsManager(this);
mSelectorRepository = new CallServiceSelectorRepository(this, mOutgoingCallsManager);
@@ -194,8 +195,8 @@
void handleSuccessfulOutgoingCall(Call call) {
Log.d(this, "handleSuccessfulOutgoingCall");
- mCallsManager.handleSuccessfulOutgoingCall(call);
finalizeOutgoingCall(call);
+ call.handleSuccessfulOutgoing();
}
/**
@@ -205,8 +206,8 @@
void handleFailedOutgoingCall(Call call, boolean isAborted) {
Log.d(this, "handleFailedOutgoingCall");
- mCallsManager.handleUnsuccessfulOutgoingCall(call, isAborted);
finalizeOutgoingCall(call);
+ call.handleFailedOutgoing(isAborted);
}
/**
@@ -216,8 +217,7 @@
*/
void handleSuccessfulIncomingCall(Call call, CallInfo callInfo) {
Log.d(this, "handleSuccessfulIncomingCall");
-
- mCallsManager.handleSuccessfulIncomingCall(call, callInfo);
+ call.handleSuccessfulIncoming(callInfo);
}
/**
@@ -231,8 +231,7 @@
// Since we set the call service before calling into incoming-calls manager, we clear it for
// good measure if an error is reported.
- call.clearCallService();
- mCallsManager.handleUnsuccessfulIncomingCall(call);
+ call.handleFailedIncoming();
// At the moment there is nothing more to do if an incoming call is not retrieved. We may at
// a future date bind to the in-call app optimistically during the incoming-call sequence
@@ -301,7 +300,7 @@
new CallServiceSelectorWrapper(
componentName.flattenToShortString(),
componentName,
- mCallsManager,
+ CallsManager.getInstance(),
mOutgoingCallsManager);
selectorsBuilder.add(emergencySelector);