Implement Connection.setStatus
Change-Id: I125628b74784d2303b9a429038a9f7ee604f241e
diff --git a/src/com/android/telecomm/Call.java b/src/com/android/telecomm/Call.java
index 99e4b07..49e72b2 100644
--- a/src/com/android/telecomm/Call.java
+++ b/src/com/android/telecomm/Call.java
@@ -29,6 +29,7 @@
import android.telecomm.GatewayInfo;
import android.telecomm.PhoneAccount;
import android.telecomm.Response;
+import android.telecomm.StatusHints;
import android.telecomm.TelecommConstants;
import android.telephony.DisconnectCause;
import android.telephony.PhoneNumberUtils;
@@ -76,6 +77,7 @@
void onFeaturesChanged(Call call);
void onCallerInfoChanged(Call call);
void onAudioModeIsVoipChanged(Call call);
+ void onStatusHintsChanged(Call call);
}
abstract static class ListenerBase implements Listener {
@@ -113,6 +115,8 @@
public void onCallerInfoChanged(Call call) {}
@Override
public void onAudioModeIsVoipChanged(Call call) {}
+ @Override
+ public void onStatusHintsChanged(Call call) {}
}
private static final OnQueryCompleteListener sCallerInfoQueryListener =
@@ -232,6 +236,7 @@
private int mFeatures;
private boolean mAudioModeIsVoip;
+ private StatusHints mStatusHints;
/**
* Creates an empty call object.
@@ -1071,7 +1076,18 @@
public void setAudioModeIsVoip(boolean audioModeIsVoip) {
mAudioModeIsVoip = audioModeIsVoip;
for (Listener l : mListeners) {
- l.onAudioModeIsVoipChanged(Call.this);
+ l.onAudioModeIsVoipChanged(this);
+ }
+ }
+
+ public StatusHints getStatusHints() {
+ return mStatusHints;
+ }
+
+ public void setStatusHints(StatusHints statusHints) {
+ mStatusHints = statusHints;
+ for (Listener l : mListeners) {
+ l.onStatusHintsChanged(this);
}
}
}
diff --git a/src/com/android/telecomm/CallsManager.java b/src/com/android/telecomm/CallsManager.java
index d451162..ec23222 100644
--- a/src/com/android/telecomm/CallsManager.java
+++ b/src/com/android/telecomm/CallsManager.java
@@ -23,6 +23,7 @@
import android.telecomm.CallState;
import android.telecomm.GatewayInfo;
import android.telecomm.PhoneAccount;
+import android.telecomm.StatusHints;
import android.telephony.DisconnectCause;
import com.google.common.base.Preconditions;
@@ -62,6 +63,7 @@
void onCallVideoProviderChanged(Call call);
void onFeaturesChanged(Call call);
void onAudioModeIsVoipChanged(Call call);
+ void onStatusHintsChanged(Call call);
}
private static final CallsManager INSTANCE = new CallsManager();
@@ -234,6 +236,13 @@
}
}
+ @Override
+ public void onStatusHintsChanged(Call call) {
+ for (CallsManagerListener listener : mListeners) {
+ listener.onStatusHintsChanged(call);
+ }
+ }
+
ImmutableCollection<Call> getCalls() {
return ImmutableList.copyOf(mCalls);
}
diff --git a/src/com/android/telecomm/CallsManagerListenerBase.java b/src/com/android/telecomm/CallsManagerListenerBase.java
index b6eb3b9..77dc7b6 100644
--- a/src/com/android/telecomm/CallsManagerListenerBase.java
+++ b/src/com/android/telecomm/CallsManagerListenerBase.java
@@ -20,6 +20,7 @@
import android.telecomm.CallAudioState;
import android.telecomm.CallServiceDescriptor;
import android.telecomm.CallState;
+import android.telecomm.StatusHints;
/**
* Provides a default implementation for listeners of CallsManager.
@@ -87,4 +88,8 @@
@Override
public void onAudioModeIsVoipChanged(Call call) {
}
+
+ @Override
+ public void onStatusHintsChanged(Call call) {
+ }
}
diff --git a/src/com/android/telecomm/ConnectionServiceWrapper.java b/src/com/android/telecomm/ConnectionServiceWrapper.java
index 1bad6fd..e355890 100644
--- a/src/com/android/telecomm/ConnectionServiceWrapper.java
+++ b/src/com/android/telecomm/ConnectionServiceWrapper.java
@@ -27,11 +27,11 @@
import android.telecomm.CallServiceDescriptor;
import android.telecomm.ConnectionRequest;
import android.telecomm.GatewayInfo;
+import android.telecomm.StatusHints;
import android.telecomm.TelecommConstants;
import android.telephony.DisconnectCause;
import com.android.internal.os.SomeArgs;
-
import com.android.internal.telecomm.IConnectionService;
import com.android.internal.telecomm.IConnectionServiceAdapter;
import com.android.internal.telecomm.ICallServiceProvider;
@@ -77,6 +77,7 @@
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 final Handler mHandler = new Handler() {
@Override
@@ -311,6 +312,19 @@
}
break;
}
+ case MSG_SET_STATUS_HINTS: {
+ SomeArgs args = (SomeArgs) msg.obj;
+ try {
+ call = mCallIdMapper.getCall(args.arg1);
+ StatusHints statusHints = (StatusHints) args.arg2;
+ if (call != null) {
+ call.setStatusHints(statusHints);
+ }
+ } finally {
+ args.recycle();
+ }
+ break;
+ }
}
}
};
@@ -490,6 +504,16 @@
args.argi1 = isVoip ? 1 : 0;
mHandler.obtainMessage(MSG_SET_AUDIO_MODE_IS_VOIP, args).sendToTarget();
}
+
+ @Override
+ public void setStatusHints(String callId, StatusHints statusHints) {
+ logIncoming("setStatusHints %s %s", callId, statusHints);
+ mCallIdMapper.checkValidCallId(callId);
+ SomeArgs args = SomeArgs.obtain();
+ args.arg1 = callId;
+ args.arg2 = statusHints;
+ mHandler.obtainMessage(MSG_SET_STATUS_HINTS, args).sendToTarget();
+ }
}
private final Adapter mAdapter = new Adapter();
diff --git a/src/com/android/telecomm/InCallController.java b/src/com/android/telecomm/InCallController.java
index d1215ae..c80e5af 100644
--- a/src/com/android/telecomm/InCallController.java
+++ b/src/com/android/telecomm/InCallController.java
@@ -159,6 +159,11 @@
updateCall(call);
}
+ @Override
+ public void onStatusHintsChanged(Call call) {
+ updateCall(call);
+ }
+
void bringToForeground(boolean showDialpad) {
if (mInCallService != null) {
try {
@@ -300,7 +305,7 @@
return new InCallCall(callId, state, call.getDisconnectCause(), call.getDisconnectMessage(),
call.getCannedSmsResponses(), capabilities, connectTimeMillis, call.getHandle(),
call.getGatewayInfo(), call.getAccount(), descriptor, call.getCallVideoProvider(),
- parentCallId, childCallIds, call.getFeatures());
+ parentCallId, childCallIds, call.getFeatures(), call.getStatusHints());
}
}