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

Commit 08ca4692 authored by Brad Ebinger's avatar Brad Ebinger Committed by Android (Google) Code Review
Browse files

Merge "Add a new call direction parameter to conferences for multiparty" into rvc-dev

parents 3c5ea9cd 43e02659
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -1092,16 +1092,16 @@ public abstract class Conference extends Conferenceable {
     * This is applicable in two cases:
     * <ol>
     *     <li>When {@link #setConferenceState(boolean)} is used to mark a conference as
     *     temporarily "not a conference"; we need to present the correct address in the in-call
     *     UI.</li>
     *     temporarily "not a conference"; we need to present the correct address presentation in
     *     the in-call UI.</li>
     *     <li>When the conference is not hosted on the current device, we need to know the address
     *     information for the purpose of showing the original address to the user, as well as for
     *     logging to the call log.</li>
     *     presentation information for the purpose of showing the original address to the user, as
     *     well as for logging to the call log.</li>
     * </ol>
     * @return The address of the conference, or {@code null} if not applicable.
     * @return The address presentation of the conference.
     * @hide
     */
    public final int getAddressPresentation() {
    public final @TelecomManager.Presentation int getAddressPresentation() {
        return mAddressPresentation;
    }

+36 −36
Original line number Diff line number Diff line
@@ -1865,25 +1865,23 @@ public abstract class ConnectionService extends Service {
        mConferenceById.put(callId, conference);
        mIdByConference.put(conference, callId);
        conference.addListener(mConferenceListener);
        ParcelableConference parcelableConference = new ParcelableConference(
                request.getAccountHandle(),
                conference.getState(),
                conference.getConnectionCapabilities(),
                conference.getConnectionProperties(),
                Collections.<String>emptyList(), //connectionIds
                conference.getVideoProvider() == null ?
                        null : conference.getVideoProvider().getInterface(),
                conference.getVideoState(),
                conference.getConnectTimeMillis(),
                conference.getConnectionStartElapsedRealtimeMillis(),
                conference.getStatusHints(),
                conference.getExtras(),
                conference.getAddress(),
                conference.getAddressPresentation(),
                conference.getCallerDisplayName(),
                conference.getCallerDisplayNamePresentation(),
                conference.getDisconnectCause(),
                conference.isRingbackRequested());
        ParcelableConference parcelableConference = new ParcelableConference.Builder(
                request.getAccountHandle(), conference.getState())
                .setConnectionCapabilities(conference.getConnectionCapabilities())
                .setConnectionProperties(conference.getConnectionProperties())
                .setVideoAttributes(conference.getVideoProvider() == null
                                ? null : conference.getVideoProvider().getInterface(),
                        conference.getVideoState())
                .setConnectTimeMillis(conference.getConnectTimeMillis(),
                        conference.getConnectionStartElapsedRealtimeMillis())
                .setStatusHints(conference.getStatusHints())
                .setExtras(conference.getExtras())
                .setAddress(conference.getAddress(), conference.getAddressPresentation())
                .setCallerDisplayName(conference.getCallerDisplayName(),
                        conference.getCallerDisplayNamePresentation())
                .setDisconnectCause(conference.getDisconnectCause())
                .setRingbackRequested(conference.isRingbackRequested())
                .build();
        if (conference.getState() != Connection.STATE_DISCONNECTED) {
            conference.setTelecomCallId(callId);
            mAdapter.setVideoProvider(callId, conference.getVideoProvider());
@@ -2484,23 +2482,25 @@ public abstract class ConnectionService extends Service {
                }
            }
            conference.setTelecomCallId(id);
            ParcelableConference parcelableConference = new ParcelableConference(
                    conference.getPhoneAccountHandle(),
                    conference.getState(),
                    conference.getConnectionCapabilities(),
                    conference.getConnectionProperties(),
                    connectionIds,
                    conference.getVideoProvider() == null ?
                            null : conference.getVideoProvider().getInterface(),
                    conference.getVideoState(),
                    conference.getConnectTimeMillis(),
                    conference.getConnectionStartElapsedRealtimeMillis(),
                    conference.getStatusHints(),
                    conference.getExtras(),
                    conference.getAddress(),
                    conference.getAddressPresentation(),
                    conference.getCallerDisplayName(),
                    conference.getCallerDisplayNamePresentation());
            ParcelableConference parcelableConference = new ParcelableConference.Builder(
                    conference.getPhoneAccountHandle(), conference.getState())
                    .setConnectionCapabilities(conference.getConnectionCapabilities())
                    .setConnectionProperties(conference.getConnectionProperties())
                    .setConnectionIds(connectionIds)
                    .setVideoAttributes(conference.getVideoProvider() == null
                                    ? null : conference.getVideoProvider().getInterface(),
                            conference.getVideoState())
                    .setConnectTimeMillis(conference.getConnectTimeMillis(),
                            conference.getConnectionStartElapsedRealtimeMillis())
                    .setStatusHints(conference.getStatusHints())
                    .setExtras(conference.getExtras())
                    .setAddress(conference.getAddress(), conference.getAddressPresentation())
                    .setCallerDisplayName(conference.getCallerDisplayName(),
                            conference.getCallerDisplayNamePresentation())
                    .setDisconnectCause(conference.getDisconnectCause())
                    .setRingbackRequested(conference.isRingbackRequested())
                    .setCallDirection(conference.getCallDirection())
                    .build();

            mAdapter.addConferenceCall(id, parcelableConference);
            mAdapter.setVideoProvider(id, conference.getVideoProvider());
+133 −40
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.os.Parcel;
import android.os.Parcelable;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import com.android.internal.telecom.IVideoProvider;
@@ -32,25 +33,130 @@ import com.android.internal.telecom.IVideoProvider;
 */
public final class ParcelableConference implements Parcelable {

    private PhoneAccountHandle mPhoneAccount;
    private int mState;
    public static final class Builder {
        private final PhoneAccountHandle mPhoneAccount;
        private final int mState;
        private int mConnectionCapabilities;
        private int mConnectionProperties;
    private List<String> mConnectionIds;
        private List<String> mConnectionIds = Collections.emptyList();
        private long mConnectTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
    private final IVideoProvider mVideoProvider;
    private final int mVideoState;
        private IVideoProvider mVideoProvider;
        private int mVideoState = VideoProfile.STATE_AUDIO_ONLY;
        private StatusHints mStatusHints;
        private Bundle mExtras;
        private long mConnectElapsedTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
        private Uri mAddress;
        private int mAddressPresentation = TelecomManager.PRESENTATION_UNKNOWN;
        private String mCallerDisplayName;
        private int mCallerDisplayNamePresentation = TelecomManager.PRESENTATION_UNKNOWN;;
        private DisconnectCause mDisconnectCause;
        private boolean mRingbackRequested;
        private int mCallDirection = Call.Details.DIRECTION_UNKNOWN;

        public Builder(
                PhoneAccountHandle phoneAccount,
                int state) {
            mPhoneAccount = phoneAccount;
            mState = state;
        }

        public Builder setDisconnectCause(DisconnectCause cause) {
            mDisconnectCause = cause;
            return this;
        }

        public Builder setRingbackRequested(boolean requested) {
            mRingbackRequested = requested;
            return this;
        }

        public Builder setCallerDisplayName(String callerDisplayName,
                @TelecomManager.Presentation int callerDisplayNamePresentation) {
            mCallerDisplayName = callerDisplayName;
            mCallerDisplayNamePresentation = callerDisplayNamePresentation;
            return this;
        }

        public Builder setAddress(Uri address,
                @TelecomManager.Presentation int addressPresentation) {
            mAddress = address;
            mAddressPresentation = addressPresentation;
            return this;
        }

        public Builder setExtras(Bundle extras) {
            mExtras = extras;
            return this;
        }

        public Builder setStatusHints(StatusHints hints) {
            mStatusHints = hints;
            return this;
        }

        public Builder setConnectTimeMillis(long connectTimeMillis, long connectElapsedTimeMillis) {
            mConnectTimeMillis = connectTimeMillis;
            mConnectElapsedTimeMillis = connectElapsedTimeMillis;
            return this;
        }

        public Builder setVideoAttributes(IVideoProvider provider,
                @VideoProfile.VideoState int videoState) {
            mVideoProvider = provider;
            mVideoState = videoState;
            return this;
        }

        public Builder setConnectionIds(List<String> connectionIds) {
            mConnectionIds = connectionIds;
            return this;
        }

        public Builder setConnectionProperties(int properties) {
            mConnectionProperties = properties;
            return this;
        }

        public Builder setConnectionCapabilities(int capabilities) {
            mConnectionCapabilities = capabilities;
            return this;
        }

        public Builder setCallDirection(int callDirection) {
            mCallDirection = callDirection;
            return this;
        }

        public ParcelableConference build() {
            return new ParcelableConference(mPhoneAccount, mState, mConnectionCapabilities,
                    mConnectionProperties, mConnectionIds, mVideoProvider, mVideoState,
                    mConnectTimeMillis, mConnectElapsedTimeMillis, mStatusHints, mExtras, mAddress,
                    mAddressPresentation, mCallerDisplayName, mCallerDisplayNamePresentation,
                    mDisconnectCause, mRingbackRequested, mCallDirection);
        }
    }


    private final PhoneAccountHandle mPhoneAccount;
    private final int mState;
    private final int mConnectionCapabilities;
    private final int mConnectionProperties;
    private final List<String> mConnectionIds;
    private final long mConnectTimeMillis;
    private final IVideoProvider mVideoProvider;
    private final int mVideoState;
    private final StatusHints mStatusHints;
    private final Bundle mExtras;
    private final long mConnectElapsedTimeMillis;
    private final Uri mAddress;
    private final int mAddressPresentation;
    private final String mCallerDisplayName;
    private final int mCallerDisplayNamePresentation;
    private DisconnectCause mDisconnectCause;
    private boolean mRingbackRequested;
    private final DisconnectCause mDisconnectCause;
    private final boolean mRingbackRequested;
    private final int mCallDirection;

    public ParcelableConference(
    private ParcelableConference(
            PhoneAccountHandle phoneAccount,
            int state,
            int connectionCapabilities,
@@ -67,31 +173,8 @@ public final class ParcelableConference implements Parcelable {
            String callerDisplayName,
            int callerDisplayNamePresentation,
            DisconnectCause disconnectCause,
            boolean ringbackRequested) {
        this(phoneAccount, state, connectionCapabilities, connectionProperties, connectionIds,
                videoProvider, videoState, connectTimeMillis, connectElapsedTimeMillis,
                statusHints, extras, address, addressPresentation, callerDisplayName,
                callerDisplayNamePresentation);
        mDisconnectCause = disconnectCause;
        mRingbackRequested = ringbackRequested;
    }

    public ParcelableConference(
            PhoneAccountHandle phoneAccount,
            int state,
            int connectionCapabilities,
            int connectionProperties,
            List<String> connectionIds,
            IVideoProvider videoProvider,
            int videoState,
            long connectTimeMillis,
            long connectElapsedTimeMillis,
            StatusHints statusHints,
            Bundle extras,
            Uri address,
            int addressPresentation,
            String callerDisplayName,
            int callerDisplayNamePresentation) {
            boolean ringbackRequested,
            int callDirection) {
        mPhoneAccount = phoneAccount;
        mState = state;
        mConnectionCapabilities = connectionCapabilities;
@@ -107,8 +190,9 @@ public final class ParcelableConference implements Parcelable {
        mAddressPresentation = addressPresentation;
        mCallerDisplayName = callerDisplayName;
        mCallerDisplayNamePresentation = callerDisplayNamePresentation;
        mDisconnectCause = null;
        mRingbackRequested = false;
        mDisconnectCause = disconnectCause;
        mRingbackRequested = ringbackRequested;
        mCallDirection = callDirection;
    }

    @Override
@@ -134,6 +218,8 @@ public final class ParcelableConference implements Parcelable {
                .append(mRingbackRequested)
                .append(", disconnectCause: ")
                .append(mDisconnectCause)
                .append(", callDirection: ")
                .append(mCallDirection)
                .toString();
    }

@@ -192,10 +278,15 @@ public final class ParcelableConference implements Parcelable {
    public boolean isRingbackRequested() {
        return mRingbackRequested;
    }

    public int getHandlePresentation() {
        return mAddressPresentation;
    }

    public int getCallDirection() {
        return mCallDirection;
    }

    public static final @android.annotation.NonNull Parcelable.Creator<ParcelableConference> CREATOR =
            new Parcelable.Creator<ParcelableConference> () {
        @Override
@@ -220,12 +311,13 @@ public final class ParcelableConference implements Parcelable {
            int callerDisplayNamePresentation = source.readInt();
            DisconnectCause disconnectCause = source.readParcelable(classLoader);
            boolean isRingbackRequested = source.readInt() == 1;
            int callDirection = source.readInt();

            return new ParcelableConference(phoneAccount, state, capabilities, properties,
                    connectionIds, videoCallProvider, videoState, connectTimeMillis,
                    connectElapsedTimeMillis, statusHints, extras, address, addressPresentation,
                    callerDisplayName, callerDisplayNamePresentation, disconnectCause,
                    isRingbackRequested);
                    isRingbackRequested, callDirection);
        }

        @Override
@@ -261,5 +353,6 @@ public final class ParcelableConference implements Parcelable {
        destination.writeInt(mCallerDisplayNamePresentation);
        destination.writeParcelable(mDisconnectCause, 0);
        destination.writeInt(mRingbackRequested ? 1 : 0);
        destination.writeInt(mCallDirection);
    }
}