Misc Telecomm API changes - impl
This CL contains plumbing for Telecomm API changes made in
ag/501321.
As a cleanup I also made InCallController listen to changes
to calls directly instead of using CallsManager.
Change-Id: Iaffe0b84cea6003f2a9b9d8b30676743d2b236d4
diff --git a/src/com/android/telecomm/ConnectionServiceWrapper.java b/src/com/android/telecomm/ConnectionServiceWrapper.java
index 9d59aed..e131e07 100644
--- a/src/com/android/telecomm/ConnectionServiceWrapper.java
+++ b/src/com/android/telecomm/ConnectionServiceWrapper.java
@@ -17,6 +17,7 @@
package com.android.telecomm;
import android.content.ComponentName;
+import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
@@ -75,9 +76,10 @@
private static final int MSG_ON_POST_DIAL_WAIT = 15;
private static final int MSG_QUERY_REMOTE_CALL_SERVICES = 16;
private static final int MSG_SET_CALL_VIDEO_PROVIDER = 17;
- private static final int MSG_SET_FEATURES = 18;
- private static final int MSG_SET_AUDIO_MODE_IS_VOIP = 19;
- private static final int MSG_SET_STATUS_HINTS = 20;
+ private static final int MSG_SET_AUDIO_MODE_IS_VOIP = 18;
+ private static final int MSG_SET_STATUS_HINTS = 19;
+ private static final int MSG_SET_HANDLE = 20;
+ private static final int MSG_SET_CALLER_DISPLAY_NAME = 21;
private final Handler mHandler = new Handler() {
@Override
@@ -286,13 +288,6 @@
}
break;
}
- case MSG_SET_FEATURES: {
- call = mCallIdMapper.getCall(msg.obj);
- if (call != null) {
- call.setFeatures(msg.arg1);
- }
- break;
- }
case MSG_SET_AUDIO_MODE_IS_VOIP: {
call = mCallIdMapper.getCall(msg.obj);
if (call != null) {
@@ -313,12 +308,35 @@
}
break;
}
+ case MSG_SET_HANDLE: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ try {
+ call = mCallIdMapper.getCall(args.arg1);
+ if (call != null) {
+ call.setHandle((Uri) args.arg2, args.argi1);
+ }
+ } finally {
+ args.recycle();
+ }
+ break;
+ }
+ case MSG_SET_CALLER_DISPLAY_NAME: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ try {
+ call = mCallIdMapper.getCall(args.arg1);
+ if (call != null) {
+ call.setCallerDisplayName((String) args.arg2, args.argi1);
+ }
+ } finally {
+ args.recycle();
+ }
+ break;
+ }
}
}
};
private final class Adapter extends IConnectionServiceAdapter.Stub {
- /** {@inheritDoc} */
@Override
public void notifyIncomingCall(ConnectionRequest request) {
logIncoming("notifyIncomingCall %s", request);
@@ -326,7 +344,6 @@
mHandler.obtainMessage(MSG_NOTIFY_INCOMING_CALL, request).sendToTarget();
}
- /** {@inheritDoc} */
@Override
public void handleSuccessfulOutgoingCall(ConnectionRequest request) {
logIncoming("handleSuccessfulOutgoingCall %s", request);
@@ -334,7 +351,6 @@
mHandler.obtainMessage(MSG_HANDLE_SUCCESSFUL_OUTGOING_CALL, request).sendToTarget();
}
- /** {@inheritDoc} */
@Override
public void handleFailedOutgoingCall(
ConnectionRequest request,
@@ -349,7 +365,6 @@
mHandler.obtainMessage(MSG_HANDLE_FAILED_OUTGOING_CALL, args).sendToTarget();
}
- /** {@inheritDoc} */
@Override
public void cancelOutgoingCall(ConnectionRequest request) {
logIncoming("cancelOutgoingCall %s", request);
@@ -357,7 +372,6 @@
mHandler.obtainMessage(MSG_CANCEL_OUTGOING_CALL, request).sendToTarget();
}
- /** {@inheritDoc} */
@Override
public void setActive(String callId) {
logIncoming("setActive %s", callId);
@@ -365,7 +379,6 @@
mHandler.obtainMessage(MSG_SET_ACTIVE, callId).sendToTarget();
}
- /** {@inheritDoc} */
@Override
public void setRinging(String callId) {
logIncoming("setRinging %s", callId);
@@ -373,7 +386,6 @@
mHandler.obtainMessage(MSG_SET_RINGING, callId).sendToTarget();
}
- /** {@inheritDoc} */
@Override
public void setCallVideoProvider(String callId, ICallVideoProvider callVideoProvider) {
logIncoming("setCallVideoProvider %s", callId);
@@ -384,7 +396,6 @@
mHandler.obtainMessage(MSG_SET_CALL_VIDEO_PROVIDER, args).sendToTarget();
}
- /** {@inheritDoc} */
@Override
public void setDialing(String callId) {
logIncoming("setDialing %s", callId);
@@ -392,7 +403,6 @@
mHandler.obtainMessage(MSG_SET_DIALING, callId).sendToTarget();
}
- /** {@inheritDoc} */
@Override
public void setDisconnected(
String callId, int disconnectCause, String disconnectMessage) {
@@ -405,7 +415,6 @@
mHandler.obtainMessage(MSG_SET_DISCONNECTED, args).sendToTarget();
}
- /** {@inheritDoc} */
@Override
public void setOnHold(String callId) {
logIncoming("setOnHold %s", callId);
@@ -413,7 +422,6 @@
mHandler.obtainMessage(MSG_SET_ON_HOLD, callId).sendToTarget();
}
- /** {@inheritDoc} */
@Override
public void setRequestingRingback(String callId, boolean ringback) {
logIncoming("setRequestingRingback %s %b", callId, ringback);
@@ -424,13 +432,11 @@
mHandler.obtainMessage(MSG_SET_REQUESTING_RINGBACK, args).sendToTarget();
}
- /** ${inheritDoc} */
@Override
public void removeCall(String callId) {
logIncoming("removeCall %s", callId);
}
- /** ${inheritDoc} */
@Override
public void setCallCapabilities(String callId, int callCapabilities) {
logIncoming("setCallCapabilities %s %d", callId, callCapabilities);
@@ -438,7 +444,6 @@
.sendToTarget();
}
- /** ${inheritDoc} */
@Override
public void setIsConferenced(String callId, String conferenceCallId) {
logIncoming("setIsConferenced %s %s", callId, conferenceCallId);
@@ -448,7 +453,6 @@
mHandler.obtainMessage(MSG_SET_IS_CONFERENCED, args).sendToTarget();
}
- /** ${InheritDoc} */
@Override
public void addConferenceCall(String callId) {
logIncoming("addConferenceCall %s", callId);
@@ -466,7 +470,6 @@
mHandler.obtainMessage(MSG_ON_POST_DIAL_WAIT, args).sendToTarget();
}
- /** ${inheritDoc} */
@Override
public void queryRemoteConnectionServices(RemoteServiceCallback callback) {
logIncoming("queryRemoteCSs");
@@ -474,13 +477,6 @@
}
@Override
- public void setFeatures(String callId, int features) {
- logIncoming("setFeatures %s %d", callId, features);
- mCallIdMapper.checkValidCallId(callId);
- mHandler.obtainMessage(MSG_SET_FEATURES, features, 0, callId).sendToTarget();
- }
-
- @Override
public void setAudioModeIsVoip(String callId, boolean isVoip) {
logIncoming("setAudioModeIsVoip %s %b", callId, isVoip);
mCallIdMapper.checkValidCallId(callId);
@@ -497,6 +493,29 @@
args.arg2 = statusHints;
mHandler.obtainMessage(MSG_SET_STATUS_HINTS, args).sendToTarget();
}
+
+ @Override
+ public void setHandle(String callId, Uri handle, int presentation) {
+ logIncoming("setHandle %s %s %d", callId, handle, presentation);
+ mCallIdMapper.checkValidCallId(callId);
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = handle;
+ args.argi1 = presentation;
+ mHandler.obtainMessage(MSG_SET_HANDLE, args).sendToTarget();
+ }
+
+ @Override
+ public void setCallerDisplayName(
+ String callId, String callerDisplayName, int presentation) {
+ logIncoming("setCallerDisplayName %s %s %d", callId, callerDisplayName, presentation);
+ mCallIdMapper.checkValidCallId(callId);
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = callerDisplayName;
+ args.argi1 = presentation;
+ mHandler.obtainMessage(MSG_SET_CALLER_DISPLAY_NAME, args).sendToTarget();
+ }
}
private final Adapter mAdapter = new Adapter();
@@ -569,7 +588,12 @@
NewOutgoingCallIntentBroadcaster.EXTRA_GATEWAY_ORIGINAL_URI,
gatewayInfo.getOriginalHandle());
}
- ConnectionRequest request = new ConnectionRequest(callId, call.getHandle(), extras,
+ ConnectionRequest request = new ConnectionRequest(
+ call.getPhoneAccount(),
+ callId,
+ call.getHandle(),
+ call.getHandlePresentation(),
+ extras,
call.getVideoState());
try {
@@ -663,7 +687,12 @@
String callId = mCallIdMapper.getCallId(call);
logOutgoing("createIncomingCall %s %s", callId, extras);
ConnectionRequest request = new ConnectionRequest(
- callId, call.getHandle(), extras, call.getVideoState());
+ call.getPhoneAccount(),
+ callId,
+ call.getHandle(),
+ call.getHandlePresentation(),
+ extras,
+ call.getVideoState());
try {
mServiceInterface.createIncomingCall(request);
} catch (RemoteException e) {
@@ -816,6 +845,16 @@
}
}
+ void swapWithBackgroundCall(Call call) {
+ if (isServiceValid("swapWithBackgroundCall")) {
+ try {
+ logOutgoing("swapWithBackgroundCall %s", mCallIdMapper.getCallId(call));
+ mServiceInterface.swapWithBackgroundCall(mCallIdMapper.getCallId(call));
+ } catch (RemoteException ignored) {
+ }
+ }
+ }
+
/** {@inheritDoc} */
@Override
protected void setServiceInterface(IBinder binder) {