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

Commit 4bbcb5c5 authored by Tyler Gunn's avatar Tyler Gunn Committed by Android (Google) Code Review
Browse files

Merge "Track conference start in system elapsed time." into oc-mr1-dev

parents 5e122f00 40f5ccd1
Loading
Loading
Loading
Loading
+34 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.os.Bundle;
import android.os.SystemClock;
import android.telecom.Connection.VideoProvider;
import android.util.ArraySet;

@@ -81,6 +82,7 @@ public abstract class Conference extends Conferenceable {
    private int mConnectionProperties;
    private String mDisconnectMessage;
    private long mConnectTimeMillis = CONNECT_TIME_NOT_SPECIFIED;
    private long mConnectElapsedTimeMillis = CONNECT_TIME_NOT_SPECIFIED;
    private StatusHints mStatusHints;
    private Bundle mExtras;
    private Set<String> mPreviousExtraKeys;
@@ -582,7 +584,8 @@ public abstract class Conference extends Conferenceable {
    }

    /**
     * Sets the connection start time of the {@code Conference}.
     * Sets the connection start time of the {@code Conference}.  Should be specified in wall-clock
     * time returned by {@link System#currentTimeMillis()}.
     *
     * @param connectionTimeMillis The connection time, in milliseconds.
     */
@@ -590,6 +593,21 @@ public abstract class Conference extends Conferenceable {
        mConnectTimeMillis = connectionTimeMillis;
    }

    /**
     * Sets the elapsed time since system boot when the {@link Conference} was connected.
     * This is used to determine the duration of the {@link Conference}.
     * <p>
     * When setting the connection elapsed time, you should always set the connection time via
     * {@link #setConnectionTime(long)}.
     *
     * @param connectionElapsedTime The connection time, as measured by
     * {@link SystemClock#elapsedRealtime()}.
     * @hide
     */
    public final void setConnectionElapsedTime(long connectionElapsedTime) {
        mConnectElapsedTimeMillis = connectionElapsedTime;
    }

    /**
     * @hide
     * @deprecated Use {@link #getConnectionTime}.
@@ -611,6 +629,21 @@ public abstract class Conference extends Conferenceable {
        return mConnectTimeMillis;
    }

    /**
     * Retrieves the connection start time of the {@link Conference}, if specified.  A value of
     * {@link #CONNECT_TIME_NOT_SPECIFIED} indicates that Telecom should determine the start time
     * of the conference.
     *
     * This is based on the value of {@link SystemClock#elapsedRealtime()} to ensure that it is not
     * impacted by wall clock changes (user initiated, network initiated, time zone change, etc).
     *
     * @return The elapsed time at which the {@link Conference} was connected.
     * @hide
     */
    public final long getConnectElapsedTime() {
        return mConnectElapsedTimeMillis;
    }

    /**
     * Inform this Conference that the state of its audio output has been changed externally.
     *
+33 −4
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import com.android.internal.os.SomeArgs;
import com.android.internal.telecom.IVideoCallback;
import com.android.internal.telecom.IVideoProvider;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
@@ -37,14 +36,13 @@ import android.os.Looper;
import android.os.Message;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.os.SystemClock;
import android.util.ArraySet;
import android.view.Surface;

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -1696,6 +1694,7 @@ public abstract class Connection extends Conferenceable {
    private VideoProvider mVideoProvider;
    private boolean mAudioModeIsVoip;
    private long mConnectTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
    private long mConnectElapsedTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
    private StatusHints mStatusHints;
    private int mVideoState;
    private DisconnectCause mDisconnectCause;
@@ -1839,6 +1838,22 @@ public abstract class Connection extends Conferenceable {
        return mConnectTimeMillis;
    }

    /**
     * Retrieves the connection start time of the {@link Connection}, if specified.  A value of
     * {@link Conference#CONNECT_TIME_NOT_SPECIFIED} indicates that Telecom should determine the
     * start time of the conference.
     *
     * Based on the value of {@link SystemClock#elapsedRealtime()}, which ensures that wall-clock
     * changes do not impact the call duration.
     *
     * @return The time at which the {@link Connection} was connected.
     *
     * @hide
     */
    public final long getConnectElapsedTimeMillis() {
        return mConnectElapsedTimeMillis;
    }

    /**
     * @return The status hints for this connection.
     */
@@ -2250,7 +2265,8 @@ 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.
     * @param connectTimeMillis The connection time, in milliseconds.  Should be set using a value
     *                          obtained from {@link System#currentTimeMillis()}.
     *
     * @hide
     */
@@ -2258,6 +2274,19 @@ public abstract class Connection extends Conferenceable {
        mConnectTimeMillis = connectTimeMillis;
    }

    /**
     * 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 connectElapsedTimeMillis The connection time, in milliseconds.  Stored in the format
     *                              {@link SystemClock#elapsedRealtime()}.
     *
     * @hide
     */
    public final void setConnectElapsedTimeMillis(long connectElapsedTimeMillis) {
        mConnectElapsedTimeMillis = connectElapsedTimeMillis;
    }

    /**
     * Sets the label and icon status to display in the in-call UI.
     *
+3 −0
Original line number Diff line number Diff line
@@ -1405,6 +1405,7 @@ public abstract class ConnectionService extends Service {
                        connection.isRingbackRequested(),
                        connection.getAudioModeIsVoip(),
                        connection.getConnectTimeMillis(),
                        connection.getConnectElapsedTimeMillis(),
                        connection.getStatusHints(),
                        connection.getDisconnectCause(),
                        createIdList(connection.getConferenceables()),
@@ -1822,6 +1823,7 @@ public abstract class ConnectionService extends Service {
                            null : conference.getVideoProvider().getInterface(),
                    conference.getVideoState(),
                    conference.getConnectTimeMillis(),
                    conference.getConnectElapsedTime(),
                    conference.getStatusHints(),
                    conference.getExtras());

@@ -1887,6 +1889,7 @@ public abstract class ConnectionService extends Service {
                    connection.isRingbackRequested(),
                    connection.getAudioModeIsVoip(),
                    connection.getConnectTimeMillis(),
                    connection.getConnectElapsedTimeMillis(),
                    connection.getStatusHints(),
                    connection.getDisconnectCause(),
                    emptyList,
+12 −3
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ public final class ParcelableConference implements Parcelable {
    private final int mVideoState;
    private StatusHints mStatusHints;
    private Bundle mExtras;
    private long mConnectElapsedTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;

    public ParcelableConference(
            PhoneAccountHandle phoneAccount,
@@ -51,6 +52,7 @@ public final class ParcelableConference implements Parcelable {
            IVideoProvider videoProvider,
            int videoState,
            long connectTimeMillis,
            long connectElapsedTimeMillis,
            StatusHints statusHints,
            Bundle extras) {
        mPhoneAccount = phoneAccount;
@@ -58,12 +60,12 @@ public final class ParcelableConference implements Parcelable {
        mConnectionCapabilities = connectionCapabilities;
        mConnectionProperties = connectionProperties;
        mConnectionIds = connectionIds;
        mConnectTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
        mVideoProvider = videoProvider;
        mVideoState = videoState;
        mConnectTimeMillis = connectTimeMillis;
        mStatusHints = statusHints;
        mExtras = extras;
        mConnectElapsedTimeMillis = connectElapsedTimeMillis;
    }

    @Override
@@ -111,6 +113,11 @@ public final class ParcelableConference implements Parcelable {
    public long getConnectTimeMillis() {
        return mConnectTimeMillis;
    }

    public long getConnectElapsedTimeMillis() {
        return mConnectElapsedTimeMillis;
    }

    public IVideoProvider getVideoProvider() {
        return mVideoProvider;
    }
@@ -144,10 +151,11 @@ public final class ParcelableConference implements Parcelable {
            StatusHints statusHints = source.readParcelable(classLoader);
            Bundle extras = source.readBundle(classLoader);
            int properties = source.readInt();
            long connectElapsedTimeMillis = source.readLong();

            return new ParcelableConference(phoneAccount, state, capabilities, properties,
                    connectionIds, videoCallProvider, videoState, connectTimeMillis, statusHints,
                    extras);
                    connectionIds, videoCallProvider, videoState, connectTimeMillis,
                    connectElapsedTimeMillis, statusHints, extras);
        }

        @Override
@@ -176,5 +184,6 @@ public final class ParcelableConference implements Parcelable {
        destination.writeParcelable(mStatusHints, 0);
        destination.writeBundle(mExtras);
        destination.writeInt(mConnectionProperties);
        destination.writeLong(mConnectElapsedTimeMillis);
    }
}
+13 −1
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ public final class ParcelableConnection implements Parcelable {
    private final boolean mRingbackRequested;
    private final boolean mIsVoipAudioMode;
    private final long mConnectTimeMillis;
    private final long mConnectElapsedTimeMillis;
    private final StatusHints mStatusHints;
    private final DisconnectCause mDisconnectCause;
    private final List<String> mConferenceableConnectionIds;
@@ -69,6 +70,7 @@ public final class ParcelableConnection implements Parcelable {
            boolean ringbackRequested,
            boolean isVoipAudioMode,
            long connectTimeMillis,
            long connectElapsedTimeMillis,
            StatusHints statusHints,
            DisconnectCause disconnectCause,
            List<String> conferenceableConnectionIds,
@@ -77,7 +79,8 @@ public final class ParcelableConnection implements Parcelable {
        this(phoneAccount, state, capabilities, properties, supportedAudioRoutes, address,
                addressPresentation, callerDisplayName, callerDisplayNamePresentation,
                videoProvider, videoState, ringbackRequested, isVoipAudioMode, connectTimeMillis,
                statusHints, disconnectCause, conferenceableConnectionIds, extras);
                connectElapsedTimeMillis, statusHints, disconnectCause, conferenceableConnectionIds,
                extras);
        mParentCallId = parentCallId;
    }

@@ -97,6 +100,7 @@ public final class ParcelableConnection implements Parcelable {
            boolean ringbackRequested,
            boolean isVoipAudioMode,
            long connectTimeMillis,
            long connectElapsedTimeMillis,
            StatusHints statusHints,
            DisconnectCause disconnectCause,
            List<String> conferenceableConnectionIds,
@@ -115,6 +119,7 @@ public final class ParcelableConnection implements Parcelable {
        mRingbackRequested = ringbackRequested;
        mIsVoipAudioMode = isVoipAudioMode;
        mConnectTimeMillis = connectTimeMillis;
        mConnectElapsedTimeMillis = connectElapsedTimeMillis;
        mStatusHints = statusHints;
        mDisconnectCause = disconnectCause;
        mConferenceableConnectionIds = conferenceableConnectionIds;
@@ -190,6 +195,10 @@ public final class ParcelableConnection implements Parcelable {
        return mConnectTimeMillis;
    }

    public long getConnectElapsedTimeMillis() {
        return mConnectElapsedTimeMillis;
    }

    public final StatusHints getStatusHints() {
        return mStatusHints;
    }
@@ -255,6 +264,7 @@ public final class ParcelableConnection implements Parcelable {
            int properties = source.readInt();
            int supportedAudioRoutes = source.readInt();
            String parentCallId = source.readString();
            long connectElapsedTimeMillis = source.readLong();

            return new ParcelableConnection(
                    phoneAccount,
@@ -271,6 +281,7 @@ public final class ParcelableConnection implements Parcelable {
                    ringbackRequested,
                    audioModeIsVoip,
                    connectTimeMillis,
                    connectElapsedTimeMillis,
                    statusHints,
                    disconnectCause,
                    conferenceableConnectionIds,
@@ -313,5 +324,6 @@ public final class ParcelableConnection implements Parcelable {
        destination.writeInt(mConnectionProperties);
        destination.writeInt(mSupportedAudioRoutes);
        destination.writeString(mParentCallId);
        destination.writeLong(mConnectElapsedTimeMillis);
    }
}