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

Commit e927ec02 authored by Roshan Pius's avatar Roshan Pius
Browse files

Maintain call time across SRVCC (2/3).

When an IMS conference call encounters an SRVCC event requiring a
fallback to GSM/CDMA, we need to maintain the call time for the
conference host across this fallback. So, adding a connectTime attribute
in the underlying conference host's connection object which can be used
to account for the call time from the now inactive conference call into
the new call created.

BUG: 21918593
Change-Id: I13e7ae6e31f004e798776c02ac7a6ac09a10f0bd
parent 4155d9f3
Loading
Loading
Loading
Loading
+26 −0
Original line number Original line Diff line number Diff line
@@ -1050,6 +1050,7 @@ public abstract class Connection extends Conferenceable {
    private int mConnectionCapabilities;
    private int mConnectionCapabilities;
    private VideoProvider mVideoProvider;
    private VideoProvider mVideoProvider;
    private boolean mAudioModeIsVoip;
    private boolean mAudioModeIsVoip;
    private long mConnectTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
    private StatusHints mStatusHints;
    private StatusHints mStatusHints;
    private int mVideoState;
    private int mVideoState;
    private DisconnectCause mDisconnectCause;
    private DisconnectCause mDisconnectCause;
@@ -1161,6 +1162,19 @@ public abstract class Connection extends Conferenceable {
        return mAudioModeIsVoip;
        return mAudioModeIsVoip;
    }
    }


    /**
     * Retrieves the connection start time of the {@code Connnection}, if specified.  A value of
     * {@link Conference#CONNECT_TIME_NOT_SPECIFIED} indicates that Telecom should determine the
     * start time of the conference.
     *
     * @return The time at which the {@code Connnection} was connected.
     *
     * @hide
     */
    public final long getConnectTimeMillis() {
        return mConnectTimeMillis;
    }

    /**
    /**
     * @return The status hints for this connection.
     * @return The status hints for this connection.
     */
     */
@@ -1475,6 +1489,18 @@ public abstract class Connection extends Conferenceable {
        }
        }
    }
    }


    /**
     * Sets the time at which a call became active on this Connection. This is set only
     * when a conference call becomes active on this connection.
     *
     * @param connectionTimeMillis The connection time, in milliseconds.
     *
     * @hide
     */
    public final void setConnectTimeMillis(long connectTimeMillis) {
        mConnectTimeMillis = connectTimeMillis;
    }

    /**
    /**
     * Sets the label and icon status to display in the in-call UI.
     * Sets the label and icon status to display in the in-call UI.
     *
     *
+2 −0
Original line number Original line Diff line number Diff line
@@ -651,6 +651,7 @@ public abstract class ConnectionService extends Service {
                        connection.getVideoState(),
                        connection.getVideoState(),
                        connection.isRingbackRequested(),
                        connection.isRingbackRequested(),
                        connection.getAudioModeIsVoip(),
                        connection.getAudioModeIsVoip(),
                        connection.getConnectTimeMillis(),
                        connection.getStatusHints(),
                        connection.getStatusHints(),
                        connection.getDisconnectCause(),
                        connection.getDisconnectCause(),
                        createIdList(connection.getConferenceables()),
                        createIdList(connection.getConferenceables()),
@@ -979,6 +980,7 @@ public abstract class ConnectionService extends Service {
                    connection.getVideoState(),
                    connection.getVideoState(),
                    connection.isRingbackRequested(),
                    connection.isRingbackRequested(),
                    connection.getAudioModeIsVoip(),
                    connection.getAudioModeIsVoip(),
                    connection.getConnectTimeMillis(),
                    connection.getStatusHints(),
                    connection.getStatusHints(),
                    connection.getDisconnectCause(),
                    connection.getDisconnectCause(),
                    emptyList,
                    emptyList,
+10 −0
Original line number Original line Diff line number Diff line
@@ -44,6 +44,7 @@ public final class ParcelableConnection implements Parcelable {
    private final int mVideoState;
    private final int mVideoState;
    private final boolean mRingbackRequested;
    private final boolean mRingbackRequested;
    private final boolean mIsVoipAudioMode;
    private final boolean mIsVoipAudioMode;
    private final long mConnectTimeMillis;
    private final StatusHints mStatusHints;
    private final StatusHints mStatusHints;
    private final DisconnectCause mDisconnectCause;
    private final DisconnectCause mDisconnectCause;
    private final List<String> mConferenceableConnectionIds;
    private final List<String> mConferenceableConnectionIds;
@@ -62,6 +63,7 @@ public final class ParcelableConnection implements Parcelable {
            int videoState,
            int videoState,
            boolean ringbackRequested,
            boolean ringbackRequested,
            boolean isVoipAudioMode,
            boolean isVoipAudioMode,
            long connectTimeMillis,
            StatusHints statusHints,
            StatusHints statusHints,
            DisconnectCause disconnectCause,
            DisconnectCause disconnectCause,
            List<String> conferenceableConnectionIds,
            List<String> conferenceableConnectionIds,
@@ -77,6 +79,7 @@ public final class ParcelableConnection implements Parcelable {
        mVideoState = videoState;
        mVideoState = videoState;
        mRingbackRequested = ringbackRequested;
        mRingbackRequested = ringbackRequested;
        mIsVoipAudioMode = isVoipAudioMode;
        mIsVoipAudioMode = isVoipAudioMode;
        mConnectTimeMillis = connectTimeMillis;
        mStatusHints = statusHints;
        mStatusHints = statusHints;
        mDisconnectCause = disconnectCause;
        mDisconnectCause = disconnectCause;
        mConferenceableConnectionIds = conferenceableConnectionIds;
        mConferenceableConnectionIds = conferenceableConnectionIds;
@@ -128,6 +131,10 @@ public final class ParcelableConnection implements Parcelable {
        return mIsVoipAudioMode;
        return mIsVoipAudioMode;
    }
    }


    public long getConnectTimeMillis() {
        return mConnectTimeMillis;
    }

    public final StatusHints getStatusHints() {
    public final StatusHints getStatusHints() {
        return mStatusHints;
        return mStatusHints;
    }
    }
@@ -176,6 +183,7 @@ public final class ParcelableConnection implements Parcelable {
            int videoState = source.readInt();
            int videoState = source.readInt();
            boolean ringbackRequested = source.readByte() == 1;
            boolean ringbackRequested = source.readByte() == 1;
            boolean audioModeIsVoip = source.readByte() == 1;
            boolean audioModeIsVoip = source.readByte() == 1;
            long connectTimeMillis = source.readLong();
            StatusHints statusHints = source.readParcelable(classLoader);
            StatusHints statusHints = source.readParcelable(classLoader);
            DisconnectCause disconnectCause = source.readParcelable(classLoader);
            DisconnectCause disconnectCause = source.readParcelable(classLoader);
            List<String> conferenceableConnectionIds = new ArrayList<>();
            List<String> conferenceableConnectionIds = new ArrayList<>();
@@ -194,6 +202,7 @@ public final class ParcelableConnection implements Parcelable {
                    videoState,
                    videoState,
                    ringbackRequested,
                    ringbackRequested,
                    audioModeIsVoip,
                    audioModeIsVoip,
                    connectTimeMillis,
                    statusHints,
                    statusHints,
                    disconnectCause,
                    disconnectCause,
                    conferenceableConnectionIds,
                    conferenceableConnectionIds,
@@ -227,6 +236,7 @@ public final class ParcelableConnection implements Parcelable {
        destination.writeInt(mVideoState);
        destination.writeInt(mVideoState);
        destination.writeByte((byte) (mRingbackRequested ? 1 : 0));
        destination.writeByte((byte) (mRingbackRequested ? 1 : 0));
        destination.writeByte((byte) (mIsVoipAudioMode ? 1 : 0));
        destination.writeByte((byte) (mIsVoipAudioMode ? 1 : 0));
        destination.writeLong(mConnectTimeMillis);
        destination.writeParcelable(mStatusHints, 0);
        destination.writeParcelable(mStatusHints, 0);
        destination.writeParcelable(mDisconnectCause, 0);
        destination.writeParcelable(mDisconnectCause, 0);
        destination.writeStringList(mConferenceableConnectionIds);
        destination.writeStringList(mConferenceableConnectionIds);