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

Commit 4eaad56d authored by Brad Ebinger's avatar Brad Ebinger Committed by Automerger Merge Worker
Browse files

Merge "Add a new call direction parameter to conferences for multiparty" into...

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

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


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


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


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


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


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


    public ParcelableConference(
    private ParcelableConference(
            PhoneAccountHandle phoneAccount,
            PhoneAccountHandle phoneAccount,
            int state,
            int state,
            int connectionCapabilities,
            int connectionCapabilities,
@@ -67,31 +173,8 @@ public final class ParcelableConference implements Parcelable {
            String callerDisplayName,
            String callerDisplayName,
            int callerDisplayNamePresentation,
            int callerDisplayNamePresentation,
            DisconnectCause disconnectCause,
            DisconnectCause disconnectCause,
            boolean ringbackRequested) {
            boolean ringbackRequested,
        this(phoneAccount, state, connectionCapabilities, connectionProperties, connectionIds,
            int callDirection) {
                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) {
        mPhoneAccount = phoneAccount;
        mPhoneAccount = phoneAccount;
        mState = state;
        mState = state;
        mConnectionCapabilities = connectionCapabilities;
        mConnectionCapabilities = connectionCapabilities;
@@ -107,8 +190,9 @@ public final class ParcelableConference implements Parcelable {
        mAddressPresentation = addressPresentation;
        mAddressPresentation = addressPresentation;
        mCallerDisplayName = callerDisplayName;
        mCallerDisplayName = callerDisplayName;
        mCallerDisplayNamePresentation = callerDisplayNamePresentation;
        mCallerDisplayNamePresentation = callerDisplayNamePresentation;
        mDisconnectCause = null;
        mDisconnectCause = disconnectCause;
        mRingbackRequested = false;
        mRingbackRequested = ringbackRequested;
        mCallDirection = callDirection;
    }
    }


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


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

    public int getHandlePresentation() {
    public int getHandlePresentation() {
        return mAddressPresentation;
        return mAddressPresentation;
    }
    }


    public int getCallDirection() {
        return mCallDirection;
    }

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


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


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