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);
     }
 }