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

Commit f453dc5c authored by Christine Franks's avatar Christine Franks Committed by Automerger Merge Worker
Browse files

Merge "Change id type to string and extract control enum" into udc-dev am:...

Merge "Change id type to string and extract control enum" into udc-dev am: ea854aec am: 9840a031 am: 899050e7

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22959086



Change-Id: I9ae33d7cb04c043e0a82b83927d013d8b7bc953d
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 82c5c441 899050e7
Loading
Loading
Loading
Loading
+15 −14
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ message Telecom {
  // Next index: 6
  message Call {
    // UUID representing this call
    int64 id = 1;
    string id = 1;

    message Origin {
      // Caller's name and/or phone number; what a user would see displayed when receiving an
@@ -48,6 +48,9 @@ message Telecom {
    }
    Status status = 3;

    repeated Control controls = 4;
  }

  enum Control {
    UNKNOWN_CONTROL = 0;
    ACCEPT = 1;
@@ -61,8 +64,6 @@ message Telecom {
    REJECT_AND_BLOCK = 9;
    IGNORE = 10;
  }
    repeated Control controls = 4;
  }

  // The list of active calls.
  repeated Call calls = 1;
+21 −28
Original line number Diff line number Diff line
@@ -128,9 +128,9 @@ public class CallMetadataSyncConnectionService extends ConnectionService {

    private static final class CallMetadataSyncConnectionIdentifier {
        private final int mAssociationId;
        private final long mCallId;
        private final String mCallId;

        CallMetadataSyncConnectionIdentifier(int associationId, long callId) {
        CallMetadataSyncConnectionIdentifier(int associationId, String callId) {
            mAssociationId = associationId;
            mCallId = callId;
        }
@@ -139,7 +139,7 @@ public class CallMetadataSyncConnectionService extends ConnectionService {
            return mAssociationId;
        }

        public long getCallId() {
        public String getCallId() {
            return mCallId;
        }

@@ -161,9 +161,7 @@ public class CallMetadataSyncConnectionService extends ConnectionService {

    private abstract static class CallMetadataSyncConnectionCallback {

        abstract void sendCallAction(int associationId, long callId, int action);

        abstract void sendStateChange(int associationId, long callId, int newState);
        abstract void sendCallAction(int associationId, String callId, int action);
    }

    private static class CallMetadataSyncConnection extends Connection {
@@ -184,7 +182,7 @@ public class CallMetadataSyncConnectionService extends ConnectionService {
            mCallback = callback;
        }

        public long getCallId() {
        public String getCallId() {
            return mCall.getId();
        }

@@ -205,22 +203,22 @@ public class CallMetadataSyncConnectionService extends ConnectionService {
            }

            final Bundle extras = new Bundle();
            extras.putLong(CrossDeviceCall.EXTRA_CALL_ID, mCall.getId());
            extras.putString(CrossDeviceCall.EXTRA_CALL_ID, mCall.getId());
            putExtras(extras);

            int capabilities = getConnectionCapabilities();
            if (mCall.hasControl(android.companion.Telecom.Call.PUT_ON_HOLD)) {
            if (mCall.hasControl(android.companion.Telecom.PUT_ON_HOLD)) {
                capabilities |= CAPABILITY_HOLD;
            } else {
                capabilities &= ~CAPABILITY_HOLD;
            }
            if (mCall.hasControl(android.companion.Telecom.Call.MUTE)) {
            if (mCall.hasControl(android.companion.Telecom.MUTE)) {
                capabilities |= CAPABILITY_MUTE;
            } else {
                capabilities &= ~CAPABILITY_MUTE;
            }
            mAudioManager.setMicrophoneMute(
                    mCall.hasControl(android.companion.Telecom.Call.UNMUTE));
                    mCall.hasControl(android.companion.Telecom.UNMUTE));
            if (capabilities != getConnectionCapabilities()) {
                setConnectionCapabilities(capabilities);
            }
@@ -248,8 +246,8 @@ public class CallMetadataSyncConnectionService extends ConnectionService {

            int capabilities = getConnectionCapabilities();
            final boolean hasHoldControl = mCall.hasControl(
                    android.companion.Telecom.Call.PUT_ON_HOLD)
                    || mCall.hasControl(android.companion.Telecom.Call.TAKE_OFF_HOLD);
                    android.companion.Telecom.PUT_ON_HOLD)
                    || mCall.hasControl(android.companion.Telecom.TAKE_OFF_HOLD);
            if (hasHoldControl != ((getConnectionCapabilities() & CAPABILITY_HOLD)
                    == CAPABILITY_HOLD)) {
                if (hasHoldControl) {
@@ -258,7 +256,7 @@ public class CallMetadataSyncConnectionService extends ConnectionService {
                    capabilities &= ~CAPABILITY_HOLD;
                }
            }
            final boolean hasMuteControl = mCall.hasControl(android.companion.Telecom.Call.MUTE);
            final boolean hasMuteControl = mCall.hasControl(android.companion.Telecom.MUTE);
            if (hasMuteControl != ((getConnectionCapabilities() & CAPABILITY_MUTE)
                    == CAPABILITY_MUTE)) {
                if (hasMuteControl) {
@@ -268,7 +266,7 @@ public class CallMetadataSyncConnectionService extends ConnectionService {
                }
            }
            mAudioManager.setMicrophoneMute(
                    mCall.hasControl(android.companion.Telecom.Call.UNMUTE));
                    mCall.hasControl(android.companion.Telecom.UNMUTE));
            if (capabilities != getConnectionCapabilities()) {
                setConnectionCapabilities(capabilities);
            }
@@ -276,12 +274,12 @@ public class CallMetadataSyncConnectionService extends ConnectionService {

        @Override
        public void onAnswer(int videoState) {
            sendCallAction(android.companion.Telecom.Call.ACCEPT);
            sendCallAction(android.companion.Telecom.ACCEPT);
        }

        @Override
        public void onReject() {
            sendCallAction(android.companion.Telecom.Call.REJECT);
            sendCallAction(android.companion.Telecom.REJECT);
        }

        @Override
@@ -296,33 +294,28 @@ public class CallMetadataSyncConnectionService extends ConnectionService {

        @Override
        public void onSilence() {
            sendCallAction(android.companion.Telecom.Call.SILENCE);
            sendCallAction(android.companion.Telecom.SILENCE);
        }

        @Override
        public void onHold() {
            sendCallAction(android.companion.Telecom.Call.PUT_ON_HOLD);
            sendCallAction(android.companion.Telecom.PUT_ON_HOLD);
        }

        @Override
        public void onUnhold() {
            sendCallAction(android.companion.Telecom.Call.TAKE_OFF_HOLD);
            sendCallAction(android.companion.Telecom.TAKE_OFF_HOLD);
        }

        @Override
        public void onMuteStateChanged(boolean isMuted) {
            sendCallAction(isMuted ? android.companion.Telecom.Call.MUTE
                    : android.companion.Telecom.Call.UNMUTE);
            sendCallAction(isMuted ? android.companion.Telecom.MUTE
                    : android.companion.Telecom.UNMUTE);
        }

        @Override
        public void onDisconnect() {
            sendCallAction(android.companion.Telecom.Call.END);
        }

        @Override
        public void onStateChanged(int state) {
            mCallback.sendStateChange(mAssociationId, mCall.getId(), state);
            sendCallAction(android.companion.Telecom.END);
        }

        private void sendCallAction(int action) {
+8 −8
Original line number Diff line number Diff line
@@ -33,14 +33,14 @@ import java.util.Set;
/** A read-only snapshot of an {@link ContextSyncMessage}. */
class CallMetadataSyncData {

    final Map<Long, CallMetadataSyncData.Call> mCalls = new HashMap<>();
    final Map<String, CallMetadataSyncData.Call> mCalls = new HashMap<>();
    final List<CallMetadataSyncData.Call> mRequests = new ArrayList<>();

    public void addCall(CallMetadataSyncData.Call call) {
        mCalls.put(call.getId(), call);
    }

    public boolean hasCall(long id) {
    public boolean hasCall(String id) {
        return mCalls.containsKey(id);
    }

@@ -57,7 +57,7 @@ class CallMetadataSyncData {
    }

    public static class Call implements Parcelable {
        private long mId;
        private String mId;
        private String mCallerId;
        private byte[] mAppIcon;
        private String mAppName;
@@ -67,7 +67,7 @@ class CallMetadataSyncData {

        public static Call fromParcel(Parcel parcel) {
            final Call call = new Call();
            call.setId(parcel.readLong());
            call.setId(parcel.readString());
            call.setCallerId(parcel.readString());
            call.setAppIcon(parcel.readBlob());
            call.setAppName(parcel.readString());
@@ -82,7 +82,7 @@ class CallMetadataSyncData {

        @Override
        public void writeToParcel(Parcel parcel, int parcelableFlags) {
            parcel.writeLong(mId);
            parcel.writeString(mId);
            parcel.writeString(mCallerId);
            parcel.writeBlob(mAppIcon);
            parcel.writeString(mAppName);
@@ -94,7 +94,7 @@ class CallMetadataSyncData {
            }
        }

        void setId(long id) {
        void setId(String id) {
            mId = id;
        }

@@ -122,7 +122,7 @@ class CallMetadataSyncData {
            mControls.add(control);
        }

        long getId() {
        String getId() {
            return mId;
        }

@@ -157,7 +157,7 @@ class CallMetadataSyncData {
        @Override
        public boolean equals(Object other) {
            if (other instanceof CallMetadataSyncData.Call) {
                return ((Call) other).getId() == getId();
                return mId != null && mId.equals(((Call) other).getId());
            }
            return false;
        }
+13 −14
Original line number Diff line number Diff line
@@ -41,7 +41,6 @@ import java.util.stream.Collectors;
public class CallMetadataSyncInCallService extends InCallService {

    private static final String TAG = "CallMetadataIcs";
    private static final long NOT_VALID = -1L;

    private CompanionDeviceManagerServiceInternal mCdmsi;

@@ -71,7 +70,7 @@ public class CallMetadataSyncInCallService extends InCallService {
                            callMetadataSyncData.getRequests().iterator();
                    while (iterator.hasNext()) {
                        final CallMetadataSyncData.Call call = iterator.next();
                        if (call.getId() != 0) {
                        if (call.getId() != null) {
                            // The call is already assigned an id; treat as control invocations.
                            for (int control : call.getControls()) {
                                processCallControlAction(call.getId(), control);
@@ -81,41 +80,41 @@ public class CallMetadataSyncInCallService extends InCallService {
                    }
                }

                private void processCallControlAction(long crossDeviceCallId,
                private void processCallControlAction(String crossDeviceCallId,
                        int callControlAction) {
                    final CrossDeviceCall crossDeviceCall = getCallForId(crossDeviceCallId,
                            mCurrentCalls.values());
                    switch (callControlAction) {
                        case android.companion.Telecom.Call.ACCEPT:
                        case android.companion.Telecom.ACCEPT:
                            if (crossDeviceCall != null) {
                                crossDeviceCall.doAccept();
                            }
                            break;
                        case android.companion.Telecom.Call.REJECT:
                        case android.companion.Telecom.REJECT:
                            if (crossDeviceCall != null) {
                                crossDeviceCall.doReject();
                            }
                            break;
                        case android.companion.Telecom.Call.SILENCE:
                        case android.companion.Telecom.SILENCE:
                            doSilence();
                            break;
                        case android.companion.Telecom.Call.MUTE:
                        case android.companion.Telecom.MUTE:
                            doMute();
                            break;
                        case android.companion.Telecom.Call.UNMUTE:
                        case android.companion.Telecom.UNMUTE:
                            doUnmute();
                            break;
                        case android.companion.Telecom.Call.END:
                        case android.companion.Telecom.END:
                            if (crossDeviceCall != null) {
                                crossDeviceCall.doEnd();
                            }
                            break;
                        case android.companion.Telecom.Call.PUT_ON_HOLD:
                        case android.companion.Telecom.PUT_ON_HOLD:
                            if (crossDeviceCall != null) {
                                crossDeviceCall.doPutOnHold();
                            }
                            break;
                        case android.companion.Telecom.Call.TAKE_OFF_HOLD:
                        case android.companion.Telecom.TAKE_OFF_HOLD:
                            if (crossDeviceCall != null) {
                                crossDeviceCall.doTakeOffHold();
                            }
@@ -171,12 +170,12 @@ public class CallMetadataSyncInCallService extends InCallService {

    @Nullable
    @VisibleForTesting
    CrossDeviceCall getCallForId(long crossDeviceCallId, Collection<CrossDeviceCall> calls) {
        if (crossDeviceCallId == NOT_VALID) {
    CrossDeviceCall getCallForId(String crossDeviceCallId, Collection<CrossDeviceCall> calls) {
        if (crossDeviceCallId == null) {
            return null;
        }
        for (CrossDeviceCall crossDeviceCall : calls) {
            if (crossDeviceCall.getId() == crossDeviceCallId) {
            if (crossDeviceCallId.equals(crossDeviceCall.getId())) {
                return crossDeviceCall;
            }
        }
+16 −19
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.telecom.Call;
import android.telecom.CallAudioState;
import android.telecom.VideoProfile;
@@ -34,7 +33,7 @@ import com.android.internal.annotations.VisibleForTesting;
import java.io.ByteArrayOutputStream;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.atomic.AtomicLong;
import java.util.UUID;

/** Data holder for a telecom call and additional metadata. */
public class CrossDeviceCall {
@@ -45,9 +44,7 @@ public class CrossDeviceCall {
            "com.android.companion.datatransfer.contextsync.extra.CALL_ID";
    private static final int APP_ICON_BITMAP_DIMENSION = 256;

    private static final AtomicLong sNextId = new AtomicLong(1);

    private final long mId;
    private final String mId;
    private Call mCall;
    @VisibleForTesting boolean mIsEnterprise;
    @VisibleForTesting boolean mIsOtt;
@@ -64,14 +61,14 @@ public class CrossDeviceCall {
            CallAudioState callAudioState) {
        this(packageManager, call.getDetails(), callAudioState);
        mCall = call;
        final Bundle extras = new Bundle();
        extras.putLong(EXTRA_CALL_ID, mId);
        call.putExtras(extras);
        call.putExtra(EXTRA_CALL_ID, mId);
    }

    CrossDeviceCall(PackageManager packageManager, Call.Details callDetails,
            CallAudioState callAudioState) {
        mId = sNextId.getAndIncrement();
        final String predefinedId = callDetails.getIntentExtras() != null
                ? callDetails.getIntentExtras().getString(EXTRA_CALL_ID) : null;
        mId = predefinedId != null ? predefinedId : UUID.randomUUID().toString();
        mCallingAppPackageName =
                callDetails.getAccountHandle().getComponentName().getPackageName();
        mIsOtt = (callDetails.getCallCapabilities() & Call.Details.PROPERTY_SELF_MANAGED)
@@ -145,7 +142,7 @@ public class CrossDeviceCall {
        if (mStatus == android.companion.Telecom.Call.RINGING) {
            mStatus = android.companion.Telecom.Call.RINGING_SILENCED;
        }
        mControls.remove(android.companion.Telecom.Call.SILENCE);
        mControls.remove(android.companion.Telecom.SILENCE);
    }

    @VisibleForTesting
@@ -156,26 +153,26 @@ public class CrossDeviceCall {
        mControls.clear();
        if (mStatus == android.companion.Telecom.Call.RINGING
                || mStatus == android.companion.Telecom.Call.RINGING_SILENCED) {
            mControls.add(android.companion.Telecom.Call.ACCEPT);
            mControls.add(android.companion.Telecom.Call.REJECT);
            mControls.add(android.companion.Telecom.ACCEPT);
            mControls.add(android.companion.Telecom.REJECT);
            if (mStatus == android.companion.Telecom.Call.RINGING) {
                mControls.add(android.companion.Telecom.Call.SILENCE);
                mControls.add(android.companion.Telecom.SILENCE);
            }
        }
        if (mStatus == android.companion.Telecom.Call.ONGOING
                || mStatus == android.companion.Telecom.Call.ON_HOLD) {
            mControls.add(android.companion.Telecom.Call.END);
            mControls.add(android.companion.Telecom.END);
            if (callDetails.can(Call.Details.CAPABILITY_HOLD)) {
                mControls.add(
                        mStatus == android.companion.Telecom.Call.ON_HOLD
                                ? android.companion.Telecom.Call.TAKE_OFF_HOLD
                                : android.companion.Telecom.Call.PUT_ON_HOLD);
                                ? android.companion.Telecom.TAKE_OFF_HOLD
                                : android.companion.Telecom.PUT_ON_HOLD);
            }
        }
        if (mStatus == android.companion.Telecom.Call.ONGOING && callDetails.can(
                Call.Details.CAPABILITY_MUTE)) {
            mControls.add(mIsMuted ? android.companion.Telecom.Call.UNMUTE
                    : android.companion.Telecom.Call.MUTE);
            mControls.add(mIsMuted ? android.companion.Telecom.UNMUTE
                    : android.companion.Telecom.MUTE);
        }
    }

@@ -212,7 +209,7 @@ public class CrossDeviceCall {
        }
    }

    public long getId() {
    public String getId() {
        return mId;
    }

Loading