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

Commit 31a0f2f5 authored by Tyler Gunn's avatar Tyler Gunn Committed by Automerger Merge Worker
Browse files

Merge "Ensure conference state is posted to Telecom for new conferences." into...

Merge "Ensure conference state is posted to Telecom for new conferences." into rvc-dev am: cd5d9b29

Change-Id: I2446ebb3827871b5f3d8c8731d943fe4995c0b5c
parents 4f6f8bdd cd5d9b29
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -106,6 +106,7 @@ public abstract class Conference extends Conferenceable {
    private int mCallerDisplayNamePresentation;
    private int mCallDirection;
    private boolean mRingbackRequested = false;
    private boolean mIsMultiparty = true;

    private final Connection.Listener mConnectionDeathListener = new Connection.Listener() {
        @Override
@@ -998,8 +999,8 @@ public abstract class Conference extends Conferenceable {
    public void onExtrasChanged(Bundle extras) {}

    /**
     * Set whether Telecom should treat this {@link Conference} as a conference call or if it
     * should treat it as a single-party call.
     * Set whether Telecom should treat this {@link Conference} as a multiparty conference call or
     * if it should treat it as a single-party call.
     * This method is used as part of a workaround regarding IMS conference calls and user
     * expectation.  In IMS, once a conference is formed, the UE is connected to an IMS conference
     * server.  If all participants of the conference drop out of the conference except for one, the
@@ -1020,6 +1021,7 @@ public abstract class Conference extends Conferenceable {
    @TestApi
    @RequiresPermission(MODIFY_PHONE_STATE)
    public void setConferenceState(boolean isConference) {
        mIsMultiparty = isConference;
        for (Listener l : mListeners) {
            l.onConferenceStateChanged(this, isConference);
        }
@@ -1043,6 +1045,20 @@ public abstract class Conference extends Conferenceable {
        }
    }

    /**
     * Determines if the {@link Conference} is considered "multiparty" or not.  By default all
     * conferences are considered multiparty.  A multiparty conference is one where there are
     * multiple conference participants (other than the host) in the conference.
     * This is tied to {@link #setConferenceState(boolean)}, which is used for some use cases to
     * have a conference appear as if it is a standalone call, in which case the conference will
     * no longer be multiparty.
     * @return {@code true} if conference is treated as a conference (i.e. it is multiparty),
     * {@code false} if it should emulate a standalone call (i.e. not multiparty).
     * @hide
     */
    public boolean isMultiparty() {
        return mIsMultiparty;
    }

    /**
     * Sets the address of this {@link Conference}.  Used when {@link #setConferenceState(boolean)}
+5 −0
Original line number Diff line number Diff line
@@ -2505,6 +2505,11 @@ public abstract class ConnectionService extends Service {
            mAdapter.addConferenceCall(id, parcelableConference);
            mAdapter.setVideoProvider(id, conference.getVideoProvider());
            mAdapter.setVideoState(id, conference.getVideoState());
            // In some instances a conference can start its life as a standalone call with just a
            // single participant; ensure we signal to Telecom in this case.
            if (!conference.isMultiparty()) {
                mAdapter.setConferenceState(id, conference.isMultiparty());
            }

            // Go through any child calls and set the parent.
            for (Connection connection : conference.getConnections()) {