Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 672c671a authored by Nate Myren's avatar Nate Myren
Browse files

Propagate the assoicatedUser of a Call to the call extras

Bug: 31819719
Test: atest CallDetailsTest
Flag: EXEMPT minor bugfix
Change-Id: I8024be31ee8866c46b3f4f311a88e84dcb1db744
parent 909cc533
Loading
Loading
Loading
Loading
+23 −5
Original line number Diff line number Diff line
@@ -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);
            }
+30 −2
Original line number Diff line number Diff line
@@ -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