Merge "Add a new call direction parameter to conferences for multiparty" am: f5ed9171e6

Change-Id: I5777d43fc258651890fe4dbfb15d9dc21dece9b0
This commit is contained in:
Brad Ebinger
2020-04-23 15:57:12 +00:00
committed by Automerger Merge Worker
3 changed files with 175 additions and 82 deletions

View File

@@ -1092,16 +1092,16 @@ public abstract class Conference extends Conferenceable {
* This is applicable in two cases: * This is applicable in two cases:
* <ol> * <ol>
* <li>When {@link #setConferenceState(boolean)} is used to mark a conference as * <li>When {@link #setConferenceState(boolean)} is used to mark a conference as
* temporarily "not a conference"; we need to present the correct address in the in-call * temporarily "not a conference"; we need to present the correct address presentation in
* UI.</li> * the in-call UI.</li>
* <li>When the conference is not hosted on the current device, we need to know the address * <li>When the conference is not hosted on the current device, we need to know the address
* information for the purpose of showing the original address to the user, as well as for * presentation information for the purpose of showing the original address to the user, as
* logging to the call log.</li> * well as for logging to the call log.</li>
* </ol> * </ol>
* @return The address of the conference, or {@code null} if not applicable. * @return The address presentation of the conference.
* @hide * @hide
*/ */
public final int getAddressPresentation() { public final @TelecomManager.Presentation int getAddressPresentation() {
return mAddressPresentation; return mAddressPresentation;
} }

View File

@@ -1865,25 +1865,23 @@ public abstract class ConnectionService extends Service {
mConferenceById.put(callId, conference); mConferenceById.put(callId, conference);
mIdByConference.put(conference, callId); mIdByConference.put(conference, callId);
conference.addListener(mConferenceListener); conference.addListener(mConferenceListener);
ParcelableConference parcelableConference = new ParcelableConference( ParcelableConference parcelableConference = new ParcelableConference.Builder(
request.getAccountHandle(), request.getAccountHandle(), conference.getState())
conference.getState(), .setConnectionCapabilities(conference.getConnectionCapabilities())
conference.getConnectionCapabilities(), .setConnectionProperties(conference.getConnectionProperties())
conference.getConnectionProperties(), .setVideoAttributes(conference.getVideoProvider() == null
Collections.<String>emptyList(), //connectionIds ? null : conference.getVideoProvider().getInterface(),
conference.getVideoProvider() == null ? conference.getVideoState())
null : conference.getVideoProvider().getInterface(), .setConnectTimeMillis(conference.getConnectTimeMillis(),
conference.getVideoState(), conference.getConnectionStartElapsedRealtimeMillis())
conference.getConnectTimeMillis(), .setStatusHints(conference.getStatusHints())
conference.getConnectionStartElapsedRealtimeMillis(), .setExtras(conference.getExtras())
conference.getStatusHints(), .setAddress(conference.getAddress(), conference.getAddressPresentation())
conference.getExtras(), .setCallerDisplayName(conference.getCallerDisplayName(),
conference.getAddress(), conference.getCallerDisplayNamePresentation())
conference.getAddressPresentation(), .setDisconnectCause(conference.getDisconnectCause())
conference.getCallerDisplayName(), .setRingbackRequested(conference.isRingbackRequested())
conference.getCallerDisplayNamePresentation(), .build();
conference.getDisconnectCause(),
conference.isRingbackRequested());
if (conference.getState() != Connection.STATE_DISCONNECTED) { if (conference.getState() != Connection.STATE_DISCONNECTED) {
conference.setTelecomCallId(callId); conference.setTelecomCallId(callId);
mAdapter.setVideoProvider(callId, conference.getVideoProvider()); mAdapter.setVideoProvider(callId, conference.getVideoProvider());
@@ -2484,23 +2482,25 @@ public abstract class ConnectionService extends Service {
} }
} }
conference.setTelecomCallId(id); conference.setTelecomCallId(id);
ParcelableConference parcelableConference = new ParcelableConference( ParcelableConference parcelableConference = new ParcelableConference.Builder(
conference.getPhoneAccountHandle(), conference.getPhoneAccountHandle(), conference.getState())
conference.getState(), .setConnectionCapabilities(conference.getConnectionCapabilities())
conference.getConnectionCapabilities(), .setConnectionProperties(conference.getConnectionProperties())
conference.getConnectionProperties(), .setConnectionIds(connectionIds)
connectionIds, .setVideoAttributes(conference.getVideoProvider() == null
conference.getVideoProvider() == null ? ? null : conference.getVideoProvider().getInterface(),
null : conference.getVideoProvider().getInterface(), conference.getVideoState())
conference.getVideoState(), .setConnectTimeMillis(conference.getConnectTimeMillis(),
conference.getConnectTimeMillis(), conference.getConnectionStartElapsedRealtimeMillis())
conference.getConnectionStartElapsedRealtimeMillis(), .setStatusHints(conference.getStatusHints())
conference.getStatusHints(), .setExtras(conference.getExtras())
conference.getExtras(), .setAddress(conference.getAddress(), conference.getAddressPresentation())
conference.getAddress(), .setCallerDisplayName(conference.getCallerDisplayName(),
conference.getAddressPresentation(), conference.getCallerDisplayNamePresentation())
conference.getCallerDisplayName(), .setDisconnectCause(conference.getDisconnectCause())
conference.getCallerDisplayNamePresentation()); .setRingbackRequested(conference.isRingbackRequested())
.setCallDirection(conference.getCallDirection())
.build();
mAdapter.addConferenceCall(id, parcelableConference); mAdapter.addConferenceCall(id, parcelableConference);
mAdapter.setVideoProvider(id, conference.getVideoProvider()); mAdapter.setVideoProvider(id, conference.getVideoProvider());

View File

@@ -22,6 +22,7 @@ import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import com.android.internal.telecom.IVideoProvider; import com.android.internal.telecom.IVideoProvider;
@@ -32,25 +33,130 @@ import com.android.internal.telecom.IVideoProvider;
*/ */
public final class ParcelableConference implements Parcelable { public final class ParcelableConference implements Parcelable {
private PhoneAccountHandle mPhoneAccount; public static final class Builder {
private int mState; private final PhoneAccountHandle mPhoneAccount;
private int mConnectionCapabilities; private final int mState;
private int mConnectionProperties; private int mConnectionCapabilities;
private List<String> mConnectionIds; private int mConnectionProperties;
private long mConnectTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED; private List<String> mConnectionIds = Collections.emptyList();
private long mConnectTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
private IVideoProvider mVideoProvider;
private int mVideoState = VideoProfile.STATE_AUDIO_ONLY;
private StatusHints mStatusHints;
private Bundle mExtras;
private long mConnectElapsedTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
private Uri mAddress;
private int mAddressPresentation = TelecomManager.PRESENTATION_UNKNOWN;
private String mCallerDisplayName;
private int mCallerDisplayNamePresentation = TelecomManager.PRESENTATION_UNKNOWN;;
private DisconnectCause mDisconnectCause;
private boolean mRingbackRequested;
private int mCallDirection = Call.Details.DIRECTION_UNKNOWN;
public Builder(
PhoneAccountHandle phoneAccount,
int state) {
mPhoneAccount = phoneAccount;
mState = state;
}
public Builder setDisconnectCause(DisconnectCause cause) {
mDisconnectCause = cause;
return this;
}
public Builder setRingbackRequested(boolean requested) {
mRingbackRequested = requested;
return this;
}
public Builder setCallerDisplayName(String callerDisplayName,
@TelecomManager.Presentation int callerDisplayNamePresentation) {
mCallerDisplayName = callerDisplayName;
mCallerDisplayNamePresentation = callerDisplayNamePresentation;
return this;
}
public Builder setAddress(Uri address,
@TelecomManager.Presentation int addressPresentation) {
mAddress = address;
mAddressPresentation = addressPresentation;
return this;
}
public Builder setExtras(Bundle extras) {
mExtras = extras;
return this;
}
public Builder setStatusHints(StatusHints hints) {
mStatusHints = hints;
return this;
}
public Builder setConnectTimeMillis(long connectTimeMillis, long connectElapsedTimeMillis) {
mConnectTimeMillis = connectTimeMillis;
mConnectElapsedTimeMillis = connectElapsedTimeMillis;
return this;
}
public Builder setVideoAttributes(IVideoProvider provider,
@VideoProfile.VideoState int videoState) {
mVideoProvider = provider;
mVideoState = videoState;
return this;
}
public Builder setConnectionIds(List<String> connectionIds) {
mConnectionIds = connectionIds;
return this;
}
public Builder setConnectionProperties(int properties) {
mConnectionProperties = properties;
return this;
}
public Builder setConnectionCapabilities(int capabilities) {
mConnectionCapabilities = capabilities;
return this;
}
public Builder setCallDirection(int callDirection) {
mCallDirection = callDirection;
return this;
}
public ParcelableConference build() {
return new ParcelableConference(mPhoneAccount, mState, mConnectionCapabilities,
mConnectionProperties, mConnectionIds, mVideoProvider, mVideoState,
mConnectTimeMillis, mConnectElapsedTimeMillis, mStatusHints, mExtras, mAddress,
mAddressPresentation, mCallerDisplayName, mCallerDisplayNamePresentation,
mDisconnectCause, mRingbackRequested, mCallDirection);
}
}
private final PhoneAccountHandle mPhoneAccount;
private final int mState;
private final int mConnectionCapabilities;
private final int mConnectionProperties;
private final List<String> mConnectionIds;
private final long mConnectTimeMillis;
private final IVideoProvider mVideoProvider; private final IVideoProvider mVideoProvider;
private final int mVideoState; private final int mVideoState;
private StatusHints mStatusHints; private final StatusHints mStatusHints;
private Bundle mExtras; private final Bundle mExtras;
private long mConnectElapsedTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED; private final long mConnectElapsedTimeMillis;
private final Uri mAddress; private final Uri mAddress;
private final int mAddressPresentation; private final int mAddressPresentation;
private final String mCallerDisplayName; private final String mCallerDisplayName;
private final int mCallerDisplayNamePresentation; private final int mCallerDisplayNamePresentation;
private DisconnectCause mDisconnectCause; private final DisconnectCause mDisconnectCause;
private boolean mRingbackRequested; private final boolean mRingbackRequested;
private final int mCallDirection;
public ParcelableConference( private ParcelableConference(
PhoneAccountHandle phoneAccount, PhoneAccountHandle phoneAccount,
int state, int state,
int connectionCapabilities, int connectionCapabilities,
@@ -67,31 +173,8 @@ public final class ParcelableConference implements Parcelable {
String callerDisplayName, String callerDisplayName,
int callerDisplayNamePresentation, int callerDisplayNamePresentation,
DisconnectCause disconnectCause, DisconnectCause disconnectCause,
boolean ringbackRequested) { boolean ringbackRequested,
this(phoneAccount, state, connectionCapabilities, connectionProperties, connectionIds, int callDirection) {
videoProvider, videoState, connectTimeMillis, connectElapsedTimeMillis,
statusHints, extras, address, addressPresentation, callerDisplayName,
callerDisplayNamePresentation);
mDisconnectCause = disconnectCause;
mRingbackRequested = ringbackRequested;
}
public ParcelableConference(
PhoneAccountHandle phoneAccount,
int state,
int connectionCapabilities,
int connectionProperties,
List<String> connectionIds,
IVideoProvider videoProvider,
int videoState,
long connectTimeMillis,
long connectElapsedTimeMillis,
StatusHints statusHints,
Bundle extras,
Uri address,
int addressPresentation,
String callerDisplayName,
int callerDisplayNamePresentation) {
mPhoneAccount = phoneAccount; mPhoneAccount = phoneAccount;
mState = state; mState = state;
mConnectionCapabilities = connectionCapabilities; mConnectionCapabilities = connectionCapabilities;
@@ -107,8 +190,9 @@ public final class ParcelableConference implements Parcelable {
mAddressPresentation = addressPresentation; mAddressPresentation = addressPresentation;
mCallerDisplayName = callerDisplayName; mCallerDisplayName = callerDisplayName;
mCallerDisplayNamePresentation = callerDisplayNamePresentation; mCallerDisplayNamePresentation = callerDisplayNamePresentation;
mDisconnectCause = null; mDisconnectCause = disconnectCause;
mRingbackRequested = false; mRingbackRequested = ringbackRequested;
mCallDirection = callDirection;
} }
@Override @Override
@@ -134,6 +218,8 @@ public final class ParcelableConference implements Parcelable {
.append(mRingbackRequested) .append(mRingbackRequested)
.append(", disconnectCause: ") .append(", disconnectCause: ")
.append(mDisconnectCause) .append(mDisconnectCause)
.append(", callDirection: ")
.append(mCallDirection)
.toString(); .toString();
} }
@@ -192,10 +278,15 @@ public final class ParcelableConference implements Parcelable {
public boolean isRingbackRequested() { public boolean isRingbackRequested() {
return mRingbackRequested; return mRingbackRequested;
} }
public int getHandlePresentation() { public int getHandlePresentation() {
return mAddressPresentation; return mAddressPresentation;
} }
public int getCallDirection() {
return mCallDirection;
}
public static final @android.annotation.NonNull Parcelable.Creator<ParcelableConference> CREATOR = public static final @android.annotation.NonNull Parcelable.Creator<ParcelableConference> CREATOR =
new Parcelable.Creator<ParcelableConference> () { new Parcelable.Creator<ParcelableConference> () {
@Override @Override
@@ -220,12 +311,13 @@ public final class ParcelableConference implements Parcelable {
int callerDisplayNamePresentation = source.readInt(); int callerDisplayNamePresentation = source.readInt();
DisconnectCause disconnectCause = source.readParcelable(classLoader); DisconnectCause disconnectCause = source.readParcelable(classLoader);
boolean isRingbackRequested = source.readInt() == 1; boolean isRingbackRequested = source.readInt() == 1;
int callDirection = source.readInt();
return new ParcelableConference(phoneAccount, state, capabilities, properties, return new ParcelableConference(phoneAccount, state, capabilities, properties,
connectionIds, videoCallProvider, videoState, connectTimeMillis, connectionIds, videoCallProvider, videoState, connectTimeMillis,
connectElapsedTimeMillis, statusHints, extras, address, addressPresentation, connectElapsedTimeMillis, statusHints, extras, address, addressPresentation,
callerDisplayName, callerDisplayNamePresentation, disconnectCause, callerDisplayName, callerDisplayNamePresentation, disconnectCause,
isRingbackRequested); isRingbackRequested, callDirection);
} }
@Override @Override
@@ -261,5 +353,6 @@ public final class ParcelableConference implements Parcelable {
destination.writeInt(mCallerDisplayNamePresentation); destination.writeInt(mCallerDisplayNamePresentation);
destination.writeParcelable(mDisconnectCause, 0); destination.writeParcelable(mDisconnectCause, 0);
destination.writeInt(mRingbackRequested ? 1 : 0); destination.writeInt(mRingbackRequested ? 1 : 0);
destination.writeInt(mCallDirection);
} }
} }