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

Commit 2e46eac0 authored by Tyler Gunn's avatar Tyler Gunn Committed by Gerrit Code Review
Browse files

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

parents c26ad188 1036237b
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()) {