Include more state in ParcelableConnection
This fixes a bug where setting status hints wouldn't
work.
Bug: 17044602
Change-Id: Ife85b2d53ead38f54dac350adc09b8c9d052fda4
diff --git a/telecomm/java/android/telecomm/ConnectionService.java b/telecomm/java/android/telecomm/ConnectionService.java
index d5e4f1b..44aacfc 100644
--- a/telecomm/java/android/telecomm/ConnectionService.java
+++ b/telecomm/java/android/telecomm/ConnectionService.java
@@ -539,7 +539,10 @@
connection.getCallerDisplayNamePresentation(),
connection.getVideoProvider() == null ?
null : connection.getVideoProvider().getInterface(),
- connection.getVideoState()));
+ connection.getVideoState(),
+ connection.isRequestingRingback(),
+ connection.getAudioModeIsVoip(),
+ connection.getStatusHints()));
}
private void abort(String callId) {
diff --git a/telecomm/java/android/telecomm/ParcelableConnection.java b/telecomm/java/android/telecomm/ParcelableConnection.java
index 78dd64a..7a87b87 100644
--- a/telecomm/java/android/telecomm/ParcelableConnection.java
+++ b/telecomm/java/android/telecomm/ParcelableConnection.java
@@ -38,6 +38,9 @@
private int mCallerDisplayNamePresentation;
private IVideoProvider mVideoProvider;
private int mVideoState;
+ private boolean mRequestingRingback;
+ private boolean mAudioModeIsVoip;
+ private StatusHints mStatusHints;
/** @hide */
public ParcelableConnection(
@@ -49,7 +52,10 @@
String callerDisplayName,
int callerDisplayNamePresentation,
IVideoProvider videoProvider,
- int videoState) {
+ int videoState,
+ boolean requestingRingback,
+ boolean audioModeIsVoip,
+ StatusHints statusHints) {
mPhoneAccount = phoneAccount;
mState = state;
mCapabilities = capabilities;
@@ -59,6 +65,9 @@
mCallerDisplayNamePresentation = callerDisplayNamePresentation;
mVideoProvider = videoProvider;
mVideoState = videoState;
+ mRequestingRingback = requestingRingback;
+ mAudioModeIsVoip = audioModeIsVoip;
+ mStatusHints = statusHints;
}
public PhoneAccountHandle getPhoneAccount() {
@@ -98,6 +107,18 @@
return mVideoState;
}
+ public boolean isRequestingRingback() {
+ return mRequestingRingback;
+ }
+
+ public boolean getAudioModeIsVoip() {
+ return mAudioModeIsVoip;
+ }
+
+ public final StatusHints getStatusHints() {
+ return mStatusHints;
+ }
+
@Override
public String toString() {
return new StringBuilder()
@@ -126,6 +147,9 @@
IVideoProvider videoCallProvider =
IVideoProvider.Stub.asInterface(source.readStrongBinder());
int videoState = source.readInt();
+ boolean requestingRingback = source.readByte() == 1;
+ boolean audioModeIsVoip = source.readByte() == 1;
+ StatusHints statusHints = source.readParcelable(classLoader);
return new ParcelableConnection(
phoneAccount,
@@ -136,7 +160,10 @@
callerDisplayName,
callerDisplayNamePresentation,
videoCallProvider,
- videoState);
+ videoState,
+ requestingRingback,
+ audioModeIsVoip,
+ statusHints);
}
@Override
@@ -164,5 +191,8 @@
destination.writeStrongBinder(
mVideoProvider != null ? mVideoProvider.asBinder() : null);
destination.writeInt(mVideoState);
+ destination.writeByte((byte) (mRequestingRingback ? 1 : 0));
+ destination.writeByte((byte) (mAudioModeIsVoip ? 1 : 0));
+ destination.writeParcelable(mStatusHints, 0);
}
}