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

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

Merge "Add ability to add existing connection AND set parent at the same time." into oc-dev

parents 975ee1f2 78da7816
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -522,6 +522,26 @@ public abstract class Connection extends Conferenceable {
     */
    public static final String EVENT_CALL_MERGE_FAILED = "android.telecom.event.CALL_MERGE_FAILED";

    /**
     * Connection event used to inform {@link InCallService}s when the process of merging a
     * Connection into a conference has begun.
     * <p>
     * Sent via {@link #sendConnectionEvent(String, Bundle)}.  The {@link Bundle} parameter is
     * expected to be null when this connection event is used.
     * @hide
     */
    public static final String EVENT_MERGE_START = "android.telecom.event.MERGE_START";

    /**
     * Connection event used to inform {@link InCallService}s when the process of merging a
     * Connection into a conference has completed.
     * <p>
     * Sent via {@link #sendConnectionEvent(String, Bundle)}.  The {@link Bundle} parameter is
     * expected to be null when this connection event is used.
     * @hide
     */
    public static final String EVENT_MERGE_COMPLETE = "android.telecom.event.MERGE_COMPLETE";

    /**
     * Connection event used to inform {@link InCallService}s when a call has been put on hold by
     * the remote party.
+20 −1
Original line number Diff line number Diff line
@@ -1823,10 +1823,28 @@ public abstract class ConnectionService extends Service {
     */
    public final void addExistingConnection(PhoneAccountHandle phoneAccountHandle,
            Connection connection) {
        addExistingConnection(phoneAccountHandle, connection, null /* conference */);
    }

    /**
     * Adds a connection created by the {@link ConnectionService} and informs telecom of the new
     * connection.
     *
     * @param phoneAccountHandle The phone account handle for the connection.
     * @param connection The connection to add.
     * @param conference The parent conference of the new connection.
     * @hide
     */
    public final void addExistingConnection(PhoneAccountHandle phoneAccountHandle,
            Connection connection, Conference conference) {

        String id = addExistingConnectionInternal(phoneAccountHandle, connection);
        if (id != null) {
            List<String> emptyList = new ArrayList<>(0);
            String conferenceId = null;
            if (conference != null) {
                conferenceId = mIdByConference.get(conference);
            }

            ParcelableConnection parcelableConnection = new ParcelableConnection(
                    phoneAccountHandle,
@@ -1847,7 +1865,8 @@ public abstract class ConnectionService extends Service {
                    connection.getStatusHints(),
                    connection.getDisconnectCause(),
                    emptyList,
                    connection.getExtras());
                    connection.getExtras(),
                    conferenceId);
            mAdapter.addExistingConnection(id, parcelableConnection);
        }
    }
+40 −1
Original line number Diff line number Diff line
@@ -51,6 +51,35 @@ public final class ParcelableConnection implements Parcelable {
    private final DisconnectCause mDisconnectCause;
    private final List<String> mConferenceableConnectionIds;
    private final Bundle mExtras;
    private String mParentCallId;

    /** @hide */
    public ParcelableConnection(
            PhoneAccountHandle phoneAccount,
            int state,
            int capabilities,
            int properties,
            int supportedAudioRoutes,
            Uri address,
            int addressPresentation,
            String callerDisplayName,
            int callerDisplayNamePresentation,
            IVideoProvider videoProvider,
            int videoState,
            boolean ringbackRequested,
            boolean isVoipAudioMode,
            long connectTimeMillis,
            StatusHints statusHints,
            DisconnectCause disconnectCause,
            List<String> conferenceableConnectionIds,
            Bundle extras,
            String parentCallId) {
        this(phoneAccount, state, capabilities, properties, supportedAudioRoutes, address,
                addressPresentation, callerDisplayName, callerDisplayNamePresentation,
                videoProvider, videoState, ringbackRequested, isVoipAudioMode, connectTimeMillis,
                statusHints, disconnectCause, conferenceableConnectionIds, extras);
        mParentCallId = parentCallId;
    }

    /** @hide */
    public ParcelableConnection(
@@ -90,6 +119,7 @@ public final class ParcelableConnection implements Parcelable {
        mDisconnectCause = disconnectCause;
        mConferenceableConnectionIds = conferenceableConnectionIds;
        mExtras = extras;
        mParentCallId = null;
    }

    public PhoneAccountHandle getPhoneAccount() {
@@ -176,6 +206,10 @@ public final class ParcelableConnection implements Parcelable {
        return mExtras;
    }

    public final String getParentCallId() {
        return mParentCallId;
    }

    @Override
    public String toString() {
        return new StringBuilder()
@@ -189,6 +223,8 @@ public final class ParcelableConnection implements Parcelable {
                .append(Connection.propertiesToString(mConnectionProperties))
                .append(", extras:")
                .append(mExtras)
                .append(", parent:")
                .append(mParentCallId)
                .toString();
    }

@@ -218,6 +254,7 @@ public final class ParcelableConnection implements Parcelable {
            Bundle extras = Bundle.setDefusable(source.readBundle(classLoader), true);
            int properties = source.readInt();
            int supportedAudioRoutes = source.readInt();
            String parentCallId = source.readString();

            return new ParcelableConnection(
                    phoneAccount,
@@ -237,7 +274,8 @@ public final class ParcelableConnection implements Parcelable {
                    statusHints,
                    disconnectCause,
                    conferenceableConnectionIds,
                    extras);
                    extras,
                    parentCallId);
        }

        @Override
@@ -274,5 +312,6 @@ public final class ParcelableConnection implements Parcelable {
        destination.writeBundle(mExtras);
        destination.writeInt(mConnectionProperties);
        destination.writeInt(mSupportedAudioRoutes);
        destination.writeString(mParentCallId);
    }
}