Merge "add setDefaultExecutor to ImsCallSessionListener to set the executor when a conference call is established"
This commit is contained in:
@@ -31,6 +31,7 @@ import com.android.ims.internal.IImsCallSession;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
/**
|
||||
* Listener interface for notifying the Framework's {@link ImsCallSession} for updates to an ongoing
|
||||
@@ -44,8 +45,8 @@ import java.util.Set;
|
||||
// ImsCallSessionListenerConverter is also changed.
|
||||
@SystemApi
|
||||
public class ImsCallSessionListener {
|
||||
|
||||
private final IImsCallSessionListener mListener;
|
||||
private Executor mExecutor = null;
|
||||
|
||||
/** @hide */
|
||||
public ImsCallSessionListener(IImsCallSessionListener l) {
|
||||
@@ -243,6 +244,9 @@ public class ImsCallSessionListener {
|
||||
public void callSessionMergeStarted(ImsCallSessionImplBase newSession, ImsCallProfile profile)
|
||||
{
|
||||
try {
|
||||
if (newSession != null && mExecutor != null) {
|
||||
newSession.setDefaultExecutor(mExecutor);
|
||||
}
|
||||
mListener.callSessionMergeStarted(newSession != null ?
|
||||
newSession.getServiceImpl() : null, profile);
|
||||
} catch (RemoteException e) {
|
||||
@@ -274,6 +278,9 @@ public class ImsCallSessionListener {
|
||||
*/
|
||||
public void callSessionMergeComplete(ImsCallSessionImplBase newSession) {
|
||||
try {
|
||||
if (newSession != null && mExecutor != null) {
|
||||
newSession.setDefaultExecutor(mExecutor);
|
||||
}
|
||||
mListener.callSessionMergeComplete(newSession != null ?
|
||||
newSession.getServiceImpl() : null);
|
||||
} catch (RemoteException e) {
|
||||
@@ -361,6 +368,9 @@ public class ImsCallSessionListener {
|
||||
public void callSessionConferenceExtended(ImsCallSessionImplBase newSession,
|
||||
ImsCallProfile profile) {
|
||||
try {
|
||||
if (newSession != null && mExecutor != null) {
|
||||
newSession.setDefaultExecutor(mExecutor);
|
||||
}
|
||||
mListener.callSessionConferenceExtended(
|
||||
newSession != null ? newSession.getServiceImpl() : null, profile);
|
||||
} catch (RemoteException e) {
|
||||
@@ -406,6 +416,9 @@ public class ImsCallSessionListener {
|
||||
public void callSessionConferenceExtendReceived(ImsCallSessionImplBase newSession,
|
||||
ImsCallProfile profile) {
|
||||
try {
|
||||
if (newSession != null && mExecutor != null) {
|
||||
newSession.setDefaultExecutor(mExecutor);
|
||||
}
|
||||
mListener.callSessionConferenceExtendReceived(newSession != null
|
||||
? newSession.getServiceImpl() : null, profile);
|
||||
} catch (RemoteException e) {
|
||||
@@ -808,5 +821,19 @@ public class ImsCallSessionListener {
|
||||
e.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set default Executor from ImsService.
|
||||
* @param executor The default executor to use when executing the methods by the vendor
|
||||
* implementation of {@link ImsCallSessionImplBase} for conference call.
|
||||
* This executor is dedicated to set vendor CallSessionImpl
|
||||
* only when conference call is established.
|
||||
* @hide
|
||||
*/
|
||||
public final void setDefaultExecutor(@NonNull Executor executor) {
|
||||
if (mExecutor == null) {
|
||||
mExecutor = executor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -644,6 +644,7 @@ public class MmTelFeature extends ImsFeature {
|
||||
throw new IllegalStateException("Session is not available.");
|
||||
}
|
||||
try {
|
||||
c.setDefaultExecutor(MmTelFeature.this.mExecutor);
|
||||
listener.onIncomingCall(c.getServiceImpl(), extras);
|
||||
} catch (RemoteException e) {
|
||||
throw new RuntimeException(e);
|
||||
|
||||
@@ -173,8 +173,9 @@ public class ImsCallSessionImplBase implements AutoCloseable {
|
||||
|
||||
@Override
|
||||
public void setListener(IImsCallSessionListener listener) {
|
||||
executeMethodAsync(() -> ImsCallSessionImplBase.this.setListener(
|
||||
new ImsCallSessionListener(listener)), "setListener");
|
||||
ImsCallSessionListener iCSL = new ImsCallSessionListener(listener);
|
||||
iCSL.setDefaultExecutor(mExecutor);
|
||||
executeMethodAsync(() -> ImsCallSessionImplBase.this.setListener(iCSL), "setListener");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user