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

Commit 3fa819c2 authored by Tyler Gunn's avatar Tyler Gunn
Browse files

Track conference start in system elapsed time.

This is important so that Telecom can track the duration of the call,
which is tracked using wall clock time.

Test: Manual, unit test
Bug: 64068300
Change-Id: If642d282cd8134060acf6ffe8d81215c394d800c
parent 6645fdad
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -38833,6 +38833,7 @@ package android.telecom {
    method public final void setActive();
    method public final void setConferenceableConnections(java.util.List<android.telecom.Connection>);
    method public final void setConnectionCapabilities(int);
    method public final void setConnectionElapsedTime(long);
    method public final void setConnectionProperties(int);
    method public final void setConnectionTime(long);
    method public final void setDialing();
+1 −0
Original line number Diff line number Diff line
@@ -42075,6 +42075,7 @@ package android.telecom {
    method public final void setConferenceableConnections(java.util.List<android.telecom.Connection>);
    method public final deprecated void setConnectTimeMillis(long);
    method public final void setConnectionCapabilities(int);
    method public final void setConnectionElapsedTime(long);
    method public final void setConnectionProperties(int);
    method public final void setConnectionTime(long);
    method public final void setDialing();
+1 −0
Original line number Diff line number Diff line
@@ -39039,6 +39039,7 @@ package android.telecom {
    method public final void setActive();
    method public final void setConferenceableConnections(java.util.List<android.telecom.Connection>);
    method public final void setConnectionCapabilities(int);
    method public final void setConnectionElapsedTime(long);
    method public final void setConnectionProperties(int);
    method public final void setConnectionTime(long);
    method public final void setDialing();
+36 −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;
@@ -586,7 +588,11 @@ 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()}.
     * <p>
     * When setting the connection time, you should always set the connection elapsed time via
     * {@link #setConnectionElapsedTime(long)}.
     *
     * @param connectionTimeMillis The connection time, in milliseconds.
     */
@@ -594,6 +600,20 @@ 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()}.
     */
    public final void setConnectionElapsedTime(long connectionElapsedTime) {
        mConnectElapsedTimeMillis = connectionElapsedTime;
    }

    /**
     * @hide
     * @deprecated Use {@link #getConnectionTime}.
@@ -615,6 +635,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;
@@ -1678,6 +1676,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;
@@ -1821,6 +1820,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.
     */
@@ -2232,7 +2247,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
     */
@@ -2240,6 +2256,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.
     *
Loading