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

Commit 5510923a authored by Omkar Kolangade's avatar Omkar Kolangade Committed by Linux Build Service Account
Browse files

IMS: Conference URI support.

Add Telephony extras EXTRAS_IS_CONFERENCE_URI,
EXTRA_DIAL_CONFERENCE_URI which will require by Telecomm,
TeleService, Telephony, Framework, IMS framework etc.

IMS: Allow placeCall with complete URI

Add extra "org.codeaurora.extra.SKIP_SCHEMA_PARSING".
Application need to set the intent extra to dial with
complete uri.

IMS: Add participant support.

Add Phone Capabilities ADD_PARTICIPANT and
Telephony Property ADD_PARTICIPANT_KEY.

IMS: Allow add participant with normal IMS call

We should allow add participant with normal IMS
call to make it conference.
Send add participant through existing connection
of normal IMS call.

IMS: Add Participant support.

Do not create new connection while adding participant
with existing call. Rather send add participant request
through IMSConference.

CRs-Fixed: 1023216
Change-Id: I5052710a2d11a57331bdfbe64247e6a39bf9147a
parent 7889706d
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -262,8 +262,14 @@ public final class Call {
         */
        public static final int CAPABILITY_VOICE_PRIVACY = 0x01000000;

        /**
         * Add participant in an active or conference call option
         * @hide
         */
        public static final int CAPABILITY_ADD_PARTICIPANT = 0x02000000;

        //******************************************************************************************
        // Next CAPABILITY value: 0x02000000
        // Next CAPABILITY value: 0x04000000
        //******************************************************************************************

        /**
@@ -422,6 +428,9 @@ public final class Call {
            if (can(capabilities, CAPABILITY_VOICE_PRIVACY)) {
                builder.append(" CAPABILITY_VOICE_PRIVACY");
            }
            if (can(capabilities, CAPABILITY_ADD_PARTICIPANT)) {
                builder.append(" CAPABILITY_ADD_PARTICIPANT");
            }
            builder.append("]");
            return builder.toString();
        }
+8 −0
Original line number Diff line number Diff line
@@ -267,6 +267,14 @@ public abstract class Conference extends Conferenceable {
     */
    public void onSeparate(Connection connection) {}

    /**
     * Invoked when the conference adds a participant to the conference call.
     *
     * @param participant The participant to be added with conference call.
     * @hide
     */
    public void onAddParticipant(String participant) {}

    /**
     * Invoked when the specified {@link Connection} should merged with the conference call.
     *
+7 −0
Original line number Diff line number Diff line
@@ -235,6 +235,13 @@ public abstract class Connection extends Conferenceable {
     */
    public static final int CAPABILITY_CAN_PAUSE_VIDEO = 0x00100000;

    /**
     * Add participant in an active or conference call option
     *
     * @hide
     */
    public static final int CAPABILITY_ADD_PARTICIPANT = 0x02000000;

    /**
     * For a conference, indicates the conference will not have child connections.
     * <p>
+45 −0
Original line number Diff line number Diff line
@@ -106,6 +106,8 @@ public abstract class ConnectionService extends Service {
    private static final int MSG_PULL_EXTERNAL_CALL = 22;
    private static final int MSG_SEND_CALL_EVENT = 23;
    private static final int MSG_ON_EXTRAS_CHANGED = 24;
    //Proprietary values starts after this.
    private static final int MSG_ADD_PARTICIPANT_WITH_CONFERENCE = 30;

    private static Connection sNullConnection;

@@ -231,6 +233,14 @@ public abstract class ConnectionService extends Service {
            mHandler.obtainMessage(MSG_SPLIT_FROM_CONFERENCE, callId).sendToTarget();
        }

        @Override
        public void addParticipantWithConference(String callId, String participant) {
            SomeArgs args = SomeArgs.obtain();
            args.arg1 = callId;
            args.arg2 = participant;
            mHandler.obtainMessage(MSG_ADD_PARTICIPANT_WITH_CONFERENCE, args).sendToTarget();
        }

        @Override
        public void mergeConference(String callId) {
            mHandler.obtainMessage(MSG_MERGE_CONFERENCE, callId).sendToTarget();
@@ -390,6 +400,17 @@ public abstract class ConnectionService extends Service {
                case MSG_SPLIT_FROM_CONFERENCE:
                    splitFromConference((String) msg.obj);
                    break;
                case MSG_ADD_PARTICIPANT_WITH_CONFERENCE: {
                    SomeArgs args = (SomeArgs) msg.obj;
                    try {
                        String callId = (String) args.arg1;
                        String participant = (String) args.arg2;
                        addParticipantWithConference(callId, participant);
                    } finally {
                        args.recycle();
                    }
                    break;
                }
                case MSG_MERGE_CONFERENCE:
                    mergeConference((String) msg.obj);
                    break;
@@ -940,6 +961,17 @@ public abstract class ConnectionService extends Service {
        }
    }

    private void addParticipantWithConference(String callId, String participant) {
        Log.d(this, "ConnectionService addParticipantWithConference(%s, %s)", participant, callId);
        Conference conference = findConferenceForAction(callId, "addParticipantWithConference");
        Connection connection = findConnectionForAction(callId, "addParticipantWithConnection");
        if (connection != getNullConnection()) {
            onAddParticipant(connection, participant);
        } else if (conference != getNullConference()) {
            conference.onAddParticipant(participant);
        }
    }

    private void mergeConference(String callId) {
        Log.d(this, "mergeConference(%s)", callId);
        Conference conference = findConferenceForAction(callId, "mergeConference");
@@ -1292,6 +1324,19 @@ public abstract class ConnectionService extends Service {
     */
    public void onConference(Connection connection1, Connection connection2) {}

    /**
     * Add participant with connection. Invoked when user has made a request to add
     * participant with specified connection. In response, the participant should add with
     * the connection.
     *
     * @param connection A connection where participant need to add.
     * @param participant Address of participant which will be added.
     * @return
     *
     * @hide
     */
    public void onAddParticipant(Connection connection, String participant) {}

    /**
     * Indicates that a remote conference has been created for existing {@link RemoteConnection}s.
     * When this method is invoked, this {@link ConnectionService} should create its own
+2 −0
Original line number Diff line number Diff line
@@ -81,4 +81,6 @@ oneway interface IConnectionService {
    void sendCallEvent(String callId, String event, in Bundle extras);

    void onExtrasChanged(String callId, in Bundle extras);

    void addParticipantWithConference(String callId, String recipients);
}
Loading