diff options
author | 2025-02-26 14:31:52 -0800 | |
---|---|---|
committer | 2025-02-28 14:45:25 -0800 | |
commit | 672c671a1db10facc896101ad1dd46eaef9d4888 (patch) | |
tree | ec25c8ab5781a01c62fedb28ed0bf6115b6a8d96 | |
parent | 909cc533175b236d072737169b2e4a5610315d67 (diff) |
Propagate the assoicatedUser of a Call to the call extras
Bug: 31819719
Test: atest CallDetailsTest
Flag: EXEMPT minor bugfix
Change-Id: I8024be31ee8866c46b3f4f311a88e84dcb1db744
-rw-r--r-- | telecomm/java/android/telecom/Call.java | 28 | ||||
-rw-r--r-- | telecomm/java/android/telecom/ParcelableCall.java | 32 |
2 files changed, 53 insertions, 7 deletions
diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java index 531f51604507..9e57fd3c1a7b 100644 --- a/telecomm/java/android/telecom/Call.java +++ b/telecomm/java/android/telecom/Call.java @@ -30,6 +30,7 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.ParcelFileDescriptor; +import android.os.UserHandle; import com.android.internal.telecom.IVideoProvider; import com.android.server.telecom.flags.Flags; @@ -680,6 +681,7 @@ public final class Call { private final @CallDirection int mCallDirection; private final @Connection.VerificationStatus int mCallerNumberVerificationStatus; private final Uri mContactPhotoUri; + private final UserHandle mAssociatedUser; /** * Whether the supplied capabilities supports the specified capability. @@ -1081,6 +1083,16 @@ public final class Call { return mCallerNumberVerificationStatus; } + /** + * Gets the user that originated the call + * @return The user + * + * @hide + */ + public UserHandle getAssociatedUser() { + return mAssociatedUser; + } + @Override public boolean equals(Object o) { if (o instanceof Details) { @@ -1107,7 +1119,8 @@ public final class Call { Objects.equals(mCallDirection, d.mCallDirection) && Objects.equals(mCallerNumberVerificationStatus, d.mCallerNumberVerificationStatus) && - Objects.equals(mContactPhotoUri, d.mContactPhotoUri); + Objects.equals(mContactPhotoUri, d.mContactPhotoUri) && + Objects.equals(mAssociatedUser, d.mAssociatedUser); } return false; } @@ -1133,7 +1146,8 @@ public final class Call { mContactDisplayName, mCallDirection, mCallerNumberVerificationStatus, - mContactPhotoUri); + mContactPhotoUri, + mAssociatedUser); } /** {@hide} */ @@ -1158,7 +1172,8 @@ public final class Call { String contactDisplayName, int callDirection, int callerNumberVerificationStatus, - Uri contactPhotoUri) { + Uri contactPhotoUri, + UserHandle originatingUser) { mState = state; mTelecomCallId = telecomCallId; mHandle = handle; @@ -1180,6 +1195,7 @@ public final class Call { mCallDirection = callDirection; mCallerNumberVerificationStatus = callerNumberVerificationStatus; mContactPhotoUri = contactPhotoUri; + mAssociatedUser = originatingUser; } /** {@hide} */ @@ -1205,7 +1221,8 @@ public final class Call { parcelableCall.getContactDisplayName(), parcelableCall.getCallDirection(), parcelableCall.getCallerNumberVerificationStatus(), - parcelableCall.getContactPhotoUri() + parcelableCall.getContactPhotoUri(), + parcelableCall.getAssociatedUser() ); } @@ -2631,7 +2648,8 @@ public final class Call { mDetails.getContactDisplayName(), mDetails.getCallDirection(), mDetails.getCallerNumberVerificationStatus(), - mDetails.getContactPhotoUri() + mDetails.getContactPhotoUri(), + mDetails.getAssociatedUser() ); fireDetailsChanged(mDetails); } diff --git a/telecomm/java/android/telecom/ParcelableCall.java b/telecomm/java/android/telecom/ParcelableCall.java index 6a1318982e77..bd004e5e6231 100644 --- a/telecomm/java/android/telecom/ParcelableCall.java +++ b/telecomm/java/android/telecom/ParcelableCall.java @@ -16,14 +16,17 @@ package android.telecom; +import android.annotation.NonNull; import android.annotation.Nullable; import android.compat.annotation.UnsupportedAppUsage; +import android.content.Intent; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import android.os.RemoteException; +import android.os.UserHandle; import android.telecom.Call.Details.CallDirection; import com.android.internal.telecom.IVideoProvider; @@ -70,6 +73,7 @@ public final class ParcelableCall implements Parcelable { private String mContactDisplayName; private String mActiveChildCallId; private Uri mContactPhotoUri; + private UserHandle mAssociatedUser; public ParcelableCallBuilder setId(String id) { mId = id; @@ -230,6 +234,11 @@ public final class ParcelableCall implements Parcelable { return this; } + public ParcelableCallBuilder setAssociatedUser(UserHandle user) { + mAssociatedUser = user; + return this; + } + public ParcelableCall createParcelableCall() { return new ParcelableCall( mId, @@ -262,7 +271,8 @@ public final class ParcelableCall implements Parcelable { mCallerNumberVerificationStatus, mContactDisplayName, mActiveChildCallId, - mContactPhotoUri); + mContactPhotoUri, + mAssociatedUser); } public static ParcelableCallBuilder fromParcelableCall(ParcelableCall parcelableCall) { @@ -300,6 +310,7 @@ public final class ParcelableCall implements Parcelable { newBuilder.mContactDisplayName = parcelableCall.mContactDisplayName; newBuilder.mActiveChildCallId = parcelableCall.mActiveChildCallId; newBuilder.mContactPhotoUri = parcelableCall.mContactPhotoUri; + newBuilder.mAssociatedUser = parcelableCall.mAssociatedUser; return newBuilder; } } @@ -336,6 +347,7 @@ public final class ParcelableCall implements Parcelable { private final String mContactDisplayName; private final String mActiveChildCallId; // Only valid for CDMA conferences private final Uri mContactPhotoUri; + private final UserHandle mAssociatedUser; public ParcelableCall( String id, @@ -368,7 +380,8 @@ public final class ParcelableCall implements Parcelable { int callerNumberVerificationStatus, String contactDisplayName, String activeChildCallId, - Uri contactPhotoUri + Uri contactPhotoUri, + UserHandle associatedUser ) { mId = id; mState = state; @@ -401,6 +414,7 @@ public final class ParcelableCall implements Parcelable { mContactDisplayName = contactDisplayName; mActiveChildCallId = activeChildCallId; mContactPhotoUri = contactPhotoUri; + mAssociatedUser = associatedUser; } /** The unique ID of the call. */ @@ -624,6 +638,13 @@ public final class ParcelableCall implements Parcelable { return mContactPhotoUri; } + /** + * @return the originating user + */ + public @NonNull UserHandle getAssociatedUser() { + return mAssociatedUser; + } + /** * @return On a CDMA conference with two participants, returns the ID of the child call that's @@ -666,6 +687,9 @@ public final class ParcelableCall implements Parcelable { source.readList(conferenceableCallIds, classLoader, java.lang.String.class); Bundle intentExtras = source.readBundle(classLoader); Bundle extras = source.readBundle(classLoader); + if (extras == null) { + extras = new Bundle(); + } int supportedAudioRoutes = source.readInt(); boolean isRttCallChanged = source.readByte() == 1; ParcelableRttCall rttCall = source.readParcelable(classLoader, android.telecom.ParcelableRttCall.class); @@ -675,6 +699,8 @@ public final class ParcelableCall implements Parcelable { String contactDisplayName = source.readString(); String activeChildCallId = source.readString(); Uri contactPhotoUri = source.readParcelable(classLoader, Uri.class); + UserHandle associatedUser = source.readParcelable(classLoader, UserHandle.class); + extras.putParcelable(Intent.EXTRA_USER_HANDLE, associatedUser); return new ParcelableCallBuilder() .setId(id) .setState(state) @@ -707,6 +733,7 @@ public final class ParcelableCall implements Parcelable { .setContactDisplayName(contactDisplayName) .setActiveChildCallId(activeChildCallId) .setContactPhotoUri(contactPhotoUri) + .setAssociatedUser(associatedUser) .createParcelableCall(); } @@ -757,6 +784,7 @@ public final class ParcelableCall implements Parcelable { destination.writeString(mContactDisplayName); destination.writeString(mActiveChildCallId); destination.writeParcelable(mContactPhotoUri, 0); + destination.writeParcelable(mAssociatedUser, 0); } @Override |