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

Commit 1e406ca2 authored by Tyler Gunn's avatar Tyler Gunn
Browse files

Move Call state into Call.Details

The Telecom Call object is primarily a control object which allows
control of a call and receipt of events related to a call.  The actual
properties and data pertaining to a call all exists in Call.Details...
except for the call state (RINGING,ACTIVE, HOLD, etc).
This CL moves the call state to the Call.Details class to remove this
one dangling property of the base Call class.

Test: Run Telecom CTS test suite.
Bug: 163085177
Change-Id: I59413d3e14d03b48263a5cb351fe4e9a553b578e
parent 6989c4d0
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -39093,7 +39093,7 @@ package android.telecom {
    method public android.telecom.Call getParent();
    method public String getRemainingPostDialSequence();
    method @Nullable public android.telecom.Call.RttCall getRttCall();
    method public int getState();
    method @Deprecated public int getState();
    method public android.telecom.InCallService.VideoCall getVideoCall();
    method public void handoverTo(android.telecom.PhoneAccountHandle, int, android.os.Bundle);
    method public void hold();
@@ -39188,6 +39188,7 @@ package android.telecom {
    method public android.net.Uri getHandle();
    method public int getHandlePresentation();
    method public android.os.Bundle getIntentExtras();
    method public final int getState();
    method public android.telecom.StatusHints getStatusHints();
    method public int getVideoState();
    method public static boolean hasProperty(int, int);
+66 −4
Original line number Diff line number Diff line
@@ -137,6 +137,27 @@ public final class Call {
     */
    public static final int STATE_SIMULATED_RINGING = 13;

    /**
     * @hide
     */
    @IntDef(prefix = { "STATE_" },
            value = {
                    STATE_NEW,
                    STATE_DIALING,
                    STATE_RINGING,
                    STATE_HOLDING,
                    STATE_ACTIVE,
                    STATE_DISCONNECTED,
                    STATE_SELECT_PHONE_ACCOUNT,
                    STATE_CONNECTING,
                    STATE_DISCONNECTING,
                    STATE_PULLING_CALL,
                    STATE_AUDIO_PROCESSING,
                    STATE_SIMULATED_RINGING
            })
    @Retention(RetentionPolicy.SOURCE)
    public @interface CallState {};

    /**
     * The key to retrieve the optional {@code PhoneAccount}s Telecom can bundle with its Call
     * extras. Used to pass the phone accounts to display on the front end to the user in order to
@@ -674,6 +695,7 @@ public final class Call {
        // Next PROPERTY value: 0x00004000
        //******************************************************************************************

        private final @CallState int mState;
        private final String mTelecomCallId;
        private final Uri mHandle;
        private final int mHandlePresentation;
@@ -868,6 +890,13 @@ public final class Call {
            return builder.toString();
        }

        /**
         * @return the state of the {@link Call} represented by this {@link Call.Details}.
         */
        public final @CallState int getState() {
            return mState;
        }

        /** {@hide} */
        @TestApi
        public String getTelecomCallId() {
@@ -1069,6 +1098,7 @@ public final class Call {
            if (o instanceof Details) {
                Details d = (Details) o;
                return
                        Objects.equals(mState, d.mState) &&
                        Objects.equals(mHandle, d.mHandle) &&
                        Objects.equals(mHandlePresentation, d.mHandlePresentation) &&
                        Objects.equals(mCallerDisplayName, d.mCallerDisplayName) &&
@@ -1095,7 +1125,8 @@ public final class Call {

        @Override
        public int hashCode() {
            return Objects.hash(mHandle,
            return Objects.hash(mState,
                            mHandle,
                            mHandlePresentation,
                            mCallerDisplayName,
                            mCallerDisplayNamePresentation,
@@ -1117,6 +1148,7 @@ public final class Call {

        /** {@hide} */
        public Details(
                @CallState int state,
                String telecomCallId,
                Uri handle,
                int handlePresentation,
@@ -1136,6 +1168,7 @@ public final class Call {
                String contactDisplayName,
                int callDirection,
                int callerNumberVerificationStatus) {
            mState = state;
            mTelecomCallId = telecomCallId;
            mHandle = handle;
            mHandlePresentation = handlePresentation;
@@ -1160,6 +1193,7 @@ public final class Call {
        /** {@hide} */
        public static Details createFromParcelableCall(ParcelableCall parcelableCall) {
            return new Details(
                    parcelableCall.getState(),
                    parcelableCall.getId(),
                    parcelableCall.getHandle(),
                    parcelableCall.getHandlePresentation(),
@@ -1186,6 +1220,8 @@ public final class Call {
            StringBuilder sb = new StringBuilder();
            sb.append("[id: ");
            sb.append(mTelecomCallId);
            sb.append(", state: ");
            sb.append(Call.stateToString(mState));
            sb.append(", pa: ");
            sb.append(mAccountHandle);
            sb.append(", hdl: ");
@@ -1302,7 +1338,7 @@ public final class Call {
         * @param call The {@code Call} invoking this method.
         * @param state The new state of the {@code Call}.
         */
        public void onStateChanged(Call call, int state) {}
        public void onStateChanged(Call call, @CallState int state) {}

        /**
         * Invoked when the parent of this {@code Call} has changed. See {@link #getParent()}.
@@ -2171,9 +2207,11 @@ public final class Call {
    /**
     * Obtains the state of this {@code Call}.
     *
     * @return A state value, chosen from the {@code STATE_*} constants.
     * @return The call state.
     * @deprecated The call state is available via {@link Call.Details#getState()}.
     */
    public int getState() {
    @Deprecated
    public @CallState int getState() {
        return mState;
    }

@@ -2551,6 +2589,30 @@ public final class Call {
    final void internalSetDisconnected() {
        if (mState != Call.STATE_DISCONNECTED) {
            mState = Call.STATE_DISCONNECTED;
            if (mDetails != null) {
                mDetails = new Details(mState,
                        mDetails.getTelecomCallId(),
                        mDetails.getHandle(),
                        mDetails.getHandlePresentation(),
                        mDetails.getCallerDisplayName(),
                        mDetails.getCallerDisplayNamePresentation(),
                        mDetails.getAccountHandle(),
                        mDetails.getCallCapabilities(),
                        mDetails.getCallProperties(),
                        mDetails.getDisconnectCause(),
                        mDetails.getConnectTimeMillis(),
                        mDetails.getGatewayInfo(),
                        mDetails.getVideoState(),
                        mDetails.getStatusHints(),
                        mDetails.getExtras(),
                        mDetails.getIntentExtras(),
                        mDetails.getCreationTimeMillis(),
                        mDetails.getContactDisplayName(),
                        mDetails.getCallDirection(),
                        mDetails.getCallerNumberVerificationStatus()
                        );
                fireDetailsChanged(mDetails);
            }
            fireStateChanged(mState);
            fireCallDestroyed();
        }
+1 −1
Original line number Diff line number Diff line
@@ -399,7 +399,7 @@ public final class ParcelableCall implements Parcelable {
    }

    /** The current state of the call. */
    public int getState() {
    public @Call.CallState int getState() {
        return mState;
    }