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

Commit ac4f7edb authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge changes from topic "add_participant" am: fdfc58fc

Change-Id: Iad1475ff41b45eda92075612afff7036089d793e
parents cc1cf073 fdfc58fc
Loading
Loading
Loading
Loading
+22 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package android.telecom;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.annotation.TestApi;
@@ -458,8 +459,14 @@ public final class Call {
        /** Call supports the deflect feature. */
        public static final int CAPABILITY_SUPPORT_DEFLECT = 0x01000000;

        /**
         * Call supports adding participants to the call via
         * {@link #addConferenceParticipants(List)}.
         * @hide
         */
        public static final int CAPABILITY_ADD_PARTICIPANT = 0x02000000;
        //******************************************************************************************
        // Next CAPABILITY value: 0x02000000
        // Next CAPABILITY value: 0x04000000
        //******************************************************************************************

        /**
@@ -689,6 +696,9 @@ public final class Call {
            if (can(capabilities, CAPABILITY_SUPPORT_DEFLECT)) {
                builder.append(" CAPABILITY_SUPPORT_DEFLECT");
            }
            if (can(capabilities, CAPABILITY_ADD_PARTICIPANT)) {
                builder.append(" CAPABILITY_ADD_PARTICIPANT");
            }
            builder.append("]");
            return builder.toString();
        }
@@ -1702,6 +1712,17 @@ public final class Call {
        mInCallAdapter.swapConference(mTelecomCallId);
    }

    /**
     * Pulls participants to existing call by forming a conference call.
     * See {@link Details#CAPABILITY_ADD_PARTICIPANT}.
     *
     * @param participants participants to be pulled to existing call.
     * @hide
     */
    public void addConferenceParticipants(@NonNull List<Uri> participants) {
        mInCallAdapter.addConferenceParticipants(mTelecomCallId, participants);
    }

    /**
     * Initiates a request to the {@link ConnectionService} to pull an external call to the local
     * device.
+7 −0
Original line number Diff line number Diff line
@@ -318,6 +318,13 @@ public abstract class Conference extends Conferenceable {
     */
    public void onConnectionAdded(Connection connection) {}

    /**
     * Notifies the {@link Conference} of a request to add a new participants to the conference call
     * @param participants that will be added to this conference call
     * @hide
     */
    public void onAddConferenceParticipants(@NonNull List<Uri> participants) {}

    /**
     * Notifies this Conference, which is in {@code STATE_RINGING}, of
     * a request to accept.
+18 −2
Original line number Diff line number Diff line
@@ -376,8 +376,14 @@ public abstract class Connection extends Conferenceable {
    /** Call supports the deflect feature. */
    public static final int CAPABILITY_SUPPORT_DEFLECT = 0x02000000;

    /**
     * When set, indicates that this {@link Connection} supports initiation of a conference call
     * by directly adding participants using {@link #onAddConferenceParticipants(List)}.
     * @hide
     */
    public static final int CAPABILITY_ADD_PARTICIPANT = 0x04000000;
    //**********************************************************************************************
    // Next CAPABILITY value: 0x04000000
    // Next CAPABILITY value: 0x08000000
    //**********************************************************************************************

    /**
@@ -953,7 +959,9 @@ public abstract class Connection extends Conferenceable {
        if ((capabilities & CAPABILITY_SUPPORT_DEFLECT) == CAPABILITY_SUPPORT_DEFLECT) {
            builder.append(isLong ? " CAPABILITY_SUPPORT_DEFLECT" : " sup_def");
        }

        if ((capabilities & CAPABILITY_ADD_PARTICIPANT) == CAPABILITY_ADD_PARTICIPANT) {
            builder.append(isLong ? " CAPABILITY_ADD_PARTICIPANT" : " add_participant");
        }
        builder.append("]");
        return builder.toString();
    }
@@ -2952,6 +2960,14 @@ public abstract class Connection extends Conferenceable {
     */
    public void onSeparate() {}

    /**
     * Supports initiation of a conference call by directly adding participants to an ongoing call.
     *
     * @param participants with which conference call will be formed.
     * @hide
     */
    public void onAddConferenceParticipants(@NonNull List<Uri> participants) {}

    /**
     * Notifies this Connection of a request to abort.
     */
+41 −0
Original line number Diff line number Diff line
@@ -142,6 +142,7 @@ public abstract class ConnectionService extends Service {
    private static final String SESSION_SPLIT_CONFERENCE = "CS.sFC";
    private static final String SESSION_MERGE_CONFERENCE = "CS.mC";
    private static final String SESSION_SWAP_CONFERENCE = "CS.sC";
    private static final String SESSION_ADD_PARTICIPANT = "CS.aP";
    private static final String SESSION_POST_DIAL_CONT = "CS.oPDC";
    private static final String SESSION_PULL_EXTERNAL_CALL = "CS.pEC";
    private static final String SESSION_SEND_CALL_EVENT = "CS.sCE";
@@ -195,6 +196,7 @@ public abstract class ConnectionService extends Service {
    private static final int MSG_CREATE_CONFERENCE_COMPLETE = 36;
    private static final int MSG_CREATE_CONFERENCE_FAILED = 37;
    private static final int MSG_REJECT_WITH_REASON = 38;
    private static final int MSG_ADD_PARTICIPANT = 39;

    private static Connection sNullConnection;

@@ -626,6 +628,21 @@ public abstract class ConnectionService extends Service {
            }
        }

        @Override
        public void addConferenceParticipants(String callId, List<Uri> participants,
                Session.Info sessionInfo) {
            Log.startSession(sessionInfo, SESSION_ADD_PARTICIPANT);
            try {
                SomeArgs args = SomeArgs.obtain();
                args.arg1 = callId;
                args.arg2 = participants;
                args.arg3 = Log.createSubsession();
                mHandler.obtainMessage(MSG_ADD_PARTICIPANT, args).sendToTarget();
            } finally {
                Log.endSession();
            }
        }

        @Override
        public void onPostDialContinue(String callId, boolean proceed, Session.Info sessionInfo) {
            Log.startSession(sessionInfo, SESSION_POST_DIAL_CONT);
@@ -1224,6 +1241,19 @@ public abstract class ConnectionService extends Service {
                    }
                    break;
                }
                case MSG_ADD_PARTICIPANT: {
                    SomeArgs args = (SomeArgs) msg.obj;
                    try {
                        Log.continueSession((Session) args.arg3,
                                SESSION_HANDLER + SESSION_ADD_PARTICIPANT);
                        addConferenceParticipants((String) args.arg1, (List<Uri>)args.arg2);
                    } finally {
                        args.recycle();
                        Log.endSession();
                    }
                    break;
                }

                case MSG_ON_POST_DIAL_CONTINUE: {
                    SomeArgs args = (SomeArgs) msg.obj;
                    try {
@@ -2152,6 +2182,17 @@ public abstract class ConnectionService extends Service {
        }
    }

    private void addConferenceParticipants(String callId, List<Uri> participants) {
        Log.d(this, "addConferenceParticipants(%s)", callId);
        if (mConnectionById.containsKey(callId)) {
            findConnectionForAction(callId, "addConferenceParticipants")
                    .onAddConferenceParticipants(participants);
        } else {
            findConferenceForAction(callId, "addConferenceParticipants")
                    .onAddConferenceParticipants(participants);
        }
    }

    /**
     * Notifies a {@link Connection} of a request to pull an external call.
     *
+14 −0
Original line number Diff line number Diff line
@@ -282,6 +282,20 @@ public final class InCallAdapter {
        }
    }

    /**
     * Instructs Telecom to pull participants to existing call
     *
     * @param callId The unique ID of the call.
     * @param participants participants to be pulled to existing call.
     */
    public void addConferenceParticipants(String callId, List<Uri> participants) {
        try {
            mAdapter.addConferenceParticipants(callId, participants);
        } catch (RemoteException ignored) {
        }
    }


    /**
     * Instructs Telecom to split the specified call from any conference call with which it may be
     * connected.
Loading